diff --git a/3p/integration.js b/3p/integration.js
index 99d75510a309..cbcf7d9f14e0 100644
--- a/3p/integration.js
+++ b/3p/integration.js
@@ -83,6 +83,7 @@ import {aja} from '#ads/vendors/aja';
import {amoad} from '#ads/vendors/amoad';
import {aniview} from '#ads/vendors/aniview';
import {anyclip} from '#ads/vendors/anyclip';
+import {appmonsta} from '#ads/vendors/appmonsta';
import {appnexus} from '#ads/vendors/appnexus';
import {appvador} from '#ads/vendors/appvador';
import {atomx} from '#ads/vendors/atomx';
@@ -367,6 +368,7 @@ register('aja', aja);
register('amoad', amoad);
register('aniview', aniview);
register('anyclip', anyclip);
+register('appmonsta', appmonsta);
register('appnexus', appnexus);
register('appvador', appvador);
register('atomx', atomx);
diff --git a/3p/vendors/appmonsta.js b/3p/vendors/appmonsta.js
new file mode 100644
index 000000000000..642b7b4717f8
--- /dev/null
+++ b/3p/vendors/appmonsta.js
@@ -0,0 +1,12 @@
+// src/polyfills.js must be the first import.
+import '#3p/polyfills';
+
+import {register} from '#3p/3p';
+import {draw3p, init} from '#3p/integration-lib';
+
+import {appmonsta} from '#ads/vendors/appmonsta';
+
+init(window);
+register('appmonsta', appmonsta);
+
+window.draw3p = draw3p;
diff --git a/ads/_config.js b/ads/_config.js
index 81fb78ac60c1..3ef0dda0665c 100755
--- a/ads/_config.js
+++ b/ads/_config.js
@@ -350,6 +350,10 @@ const adConfig = jsonConfiguration({
renderStartImplemented: true,
},
+ 'appmonsta': {
+ preconnect: 'https://ssp.appmonsta.ai',
+ },
+
'appnexus': {
prefetch: 'https://acdn.adnxs.com/ast/ast.js',
preconnect: 'https://ib.adnxs.com',
diff --git a/ads/vendors/appmonsta.js b/ads/vendors/appmonsta.js
new file mode 100644
index 000000000000..253f389dfa20
--- /dev/null
+++ b/ads/vendors/appmonsta.js
@@ -0,0 +1,30 @@
+import {validateData, writeScript} from '#3p/3p';
+
+/**
+ * @param {!Window} global
+ * @param {!Object} data
+ */
+export function appmonsta(global, data) {
+ validateData(data, ['placementId']);
+
+ const {location} = global.context;
+ let url = 'https://ssp.appmonsta.ai?c=b&m=amp';
+
+ const params = [
+ ['placementId', encodeURIComponent(data.placementId)],
+ ['ua', encodeURIComponent(global.navigator?.userAgent)],
+ ['w', data.width],
+ ['h', data.height],
+ ['domain', location.host],
+ ['page', location.pathname],
+ ['secure', location.protocol === 'https:' ? 1 : 0],
+ ['language', global.navigator?.language],
+ ];
+
+ for (let i = 0; i < params.length; i++) {
+ const param = params[i];
+ url = `${url}&${param[0]}=${param[1] ?? ''}`;
+ }
+
+ writeScript(global, url);
+}
diff --git a/ads/vendors/appmonsta.md b/ads/vendors/appmonsta.md
new file mode 100644
index 000000000000..e22783dce9d5
--- /dev/null
+++ b/ads/vendors/appmonsta.md
@@ -0,0 +1,17 @@
+# AppMonsta
+
+## Basic example
+
+```html
+