Поиск креативов

GET /creatives — поиск по фильтрам, курсорная пагинация, дельта-фид.

GET /public/v1/creatives

Креативы по фильтрам, страницами по курсору. Каждая отданная карточка — один просмотр из пула аккаунта. Гемблинг в выдаче скрыт, пока его не запросили явно: через vertical=gambling, store, app_id или webmaster.

curl -G https://app.mtwspy.com/public/v1/creatives \
  -H "Authorization: Bearer mtw_live_ваш_ключ" \
  -d geo=PL,DE -d vertical=nutra -d since=2026-07-20 -d sort=reach -d limit=50

В списке есть домен, метрики и гео, но нет ссылки на лендинг оффера и архива лендинга — они только в карточке.

Параметры

Несколько значений перечисляются через запятую или | и работают как «любое из». В одном параметре — до 50 значений, у category — до 30.

Фильтры

ПараметрЗначения
geoISO-2 (PL, DE) или регионы EUROPE, LATAM, NORTH_AMERICA, ASIA, AFRICA, OCEANIA
verticalnutra, crypto, gambling
categoryСлаги тематик, список ниже
formatvideo, image, carousel
genderall, male, female
platformПлощадки: facebook, instagram и другие
ctaТип кнопки: SEE_DETAILS, LEARN_MORE и другие
storeМагазин приложений
languageКоды языков текста
offer / domainНазвание оффера / домен
qФраза в тексте объявления
urlНачало ссылки из кнопки объявления
fanpageid фанпейджа (цифры) или название
app_id / ipПриложение / IP сервера лендинга
min_reach / max_reachОхват; так же работают _likes, _views, _age
published_from / published_toДата публикации, YYYY-MM-DD или unix
min_active_days / max_active_daysСколько дней объявление крутится: от публикации до последнего показа, у активных — до сегодня
sinceДата добавления в базу, для дельта-фида
has_landing1 — только с архивом лендинга, 0 — только без, any — все. При vertical=nutra без этого параметра действует 1
webmasterКод вебмастера WM-ABCD-1234, см. Вебмастера
aff_networkid или названия партнёрских сетей; any — в любой сети. См. Партнёрские сети
aff_modeany (по умолч.) — оффер активен хотя бы в одной из сетей, all — во всех

Выдача

ПараметрЗначения
sortadded (по умолч.), published, reach, reactions
limit1–200, по умолчанию 50
cursormeta.next_cursor из прошлого ответа

Слаги категорий

alcoholism, infertility, varicose, hair_loss, gastritis, hemorrhoids, hypertension, fungus, diabetes, vision, teeth, smoking, lungs, urination, rejuvenation, parasites, liver, digestion, potency, weight_loss, prostatitis, psoriasis, hearing, joints, breast_enlargement, penis_enlargement, cystitis.

Ответ

{
  "data": [
    {
      "id": 2255582,
      "uuid": "4499ba18-431e-45a6-bf60-c0a0d2e1ac77",
      "vertical": "nutra",
      "category": "hearing",
      "offer": "Otinax Max",
      "geo": "PL",
      "format": "video",
      "media": { "type": "video", "preview": "https://.../vpreview/....jpg",
                 "items": [{ "url": "https://.../creative/....mp4", "type": "video", "index": 1 }] },
      "text": null,
      "cta": "SEE_DETAILS",
      "domain": "ad-domain.com",
      "has_landing": true,
      "app_id": null,
      "platforms": "facebook, instagram, audience_network, messenger",
      "page": { "id": "100094758680183", "name": "Concrete Canvas" },
      "ad_library_id": "120249694299460433",
      "aff_networks": [{ "id": 13, "name": "Dr.Cash", "url": "https://dr.cash", "logo": "https://.../logo.png" }],
      "webmaster": {
        "code": "WM-KQZT-4821",
        "library_url": "https://app.mtwspy.com/library?webmaster=WM-KQZT-4821",
        "dossier_url": "https://app.mtwspy.com/public/v1/webmasters/WM-KQZT-4821",
        "creatives_url": "https://app.mtwspy.com/public/v1/creatives?webmaster=WM-KQZT-4821"
      },
      "metrics": { "reach": 1601, "views": 0, "likes": 0, "shares": 0, "comments": 0, "spend_usd_est": 31.72 },
      "targeting": { "gender": "all", "age_min": 25, "age_max": 65 },
      "is_active": false,
      "published_at": "2026-07-21T10:00:00+03:00",
      "stopped_at": "2026-07-24T07:00:00+03:00",
      "last_seen_at": null,
      "added_at": "2026-07-22T09:14:00+03:00"
    }
  ],
  "meta": {
    "delivered": 50,
    "has_more": true,
    "next_cursor": "eyJzIjoiYWRkZWRhdCIsInYiOjE3ODQ4NzAxMDMsImkiOjIyNTU1ODJ9",
    "sort": "added",
    "charged": 50,
    "api_limit": { "period": "2026-11", "limit": 60000, "used": 12390, "remaining": 47610, "plan": "team_api", "unit": "views" }
  }
}
ПолеОписание
metrics.spend_usd_estОценка расхода по охвату, USD
aff_networksПартнёрские сети, где оффер сейчас активен. Пустой массив — ни в одной из известных
webmasterВебмастер объявления: код, лента в кабинете (library_url), досье и креативы через API. null — вебмастер не определён
meta.chargedСколько просмотров списано за этот запрос. 0 — выдача пустая или эту страницу уже запрашивали за последние 2 часа

Пагинация курсором

Страницы идут только по порядку, перейти сразу на десятую нельзя. Передавайте meta.next_cursor в cursor, пока has_more не станет false:

const BASE = 'https://app.mtwspy.com/public/v1';
const headers = { Authorization: 'Bearer mtw_live_ваш_ключ' };

async function* all(params) {
  let cursor = null;
  do {
    const qs = new URLSearchParams({ ...params, limit: '100', ...(cursor ? { cursor } : {}) });
    const { data, meta } = await (await fetch(`${BASE}/creatives?${qs}`, { headers })).json();
    yield* data;
    cursor = meta.has_more ? meta.next_cursor : null;
  } while (cursor);
}

Курсор работает только с той сортировкой, с которой получен. После смены sort начните с запроса без cursor, иначе придёт 422 invalid_parameter.

Дельта-фид (since)

since отбирает креативы по дате добавления в базу (added_at), то есть то, что появилось с прошлой проверки. Сохраните время проверки и в следующий раз передайте его в since.

curl -G https://app.mtwspy.com/public/v1/creatives \
  -H "Authorization: Bearer mtw_live_ваш_ключ" \
  -d since=2026-07-27 -d vertical=nutra -d geo=PL -d limit=100

On this page