Webmasters

GET /webmasters and GET /webmasters/{code} — find affiliate teams by code, domain, pixel, fan page and geo, get a webmaster dossier and their creative feed.

A webmaster is an affiliate team that MTWSPY groups by shared pixels, domains, fan pages and landing pages. Each one has a code like WM-ABCD-1234, the same as in the Webmasters section of the dashboard.

MethodPathPurpose
GET/webmastersSearch webmasters by filters
GET/webmasters/{code}Webmaster dossier
GET/creatives?webmaster={code}The webmaster's creatives

Free

Search and dossiers don't spend views. Full cards of a webmaster's ads come from /creatives?webmaster=, priced like any creative search.

Search webmasters

GET /public/v1/webmasters
curl -G https://app.mtwspy.com/public/v1/webmasters \
  -H "Authorization: Bearer mtw_live_your_key" \
  -d vertical=nutra -d geo=MX,CL -d min_active=20 -d sort=active

Parameters

All optional. Lists are comma-separated and match as "any of".

ParameterValues
qGeneral search: code, buyer, domain, pixel, landing path, tag, fan page name. A number of 6+ digits is also matched as a fan page id. You can paste a full URL. At least 2 characters
codeExact code WM-ABCD-1234
domainDomain or part of it
pixelPixel, matched from the start
landingLanding path, e.g. /flexo/mx
tagTag from the team's links
fanpageFan page id (digits) or part of the name
geoISO-2, comma-separated: MX,CL
verticalnutra, crypto, gambling, dating
days7, 30, 90 — active in the last N days
min_ads min_active min_hookedAt least this many ads: total / active / "hooked"
favorites1 — only the key owner's favorite webmasters
sortads (default), active, hooked, domains, pages, pixels, last
pagePage number, 1–20

24 webmasters per page, and you can't go past page 20 — narrow the search with filters instead.

Response

{
  "data": [
    {
      "code": "WM-KQZT-4821",
      "verticals": ["nutra"],
      "counters": {
        "ads": 1240, "active": 312, "hooked": 41, "hooked_basis": "reach",
        "pages": 58, "domains": 17, "pixels": 9
      },
      "geos": ["MX", "CL", "PE"],
      "first_seen": "2026-03-14",
      "last_seen": "2026-11-08",
      "previews": ["https://.../preview/....jpg"],
      "is_favorite": false,
      "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"
    }
  ],
  "meta": { "total": 37, "page": 1, "per_page": 24, "max_page": 2, "has_more": true, "sort": "active", "charged": 0 }
}
FieldDescription
counters.hookedAds that took off, by reach or by number of re-uploads (hooked_basis)
previewsUp to three previews of recent creatives
library_urlThe webmaster's creative feed in the MTWSPY dashboard
dossier_urlDossier via the API
creatives_urlThe webmaster's creatives via the API

Pixels, domains and fan pages aren't in the list — they're in the dossier.

Webmaster dossier

GET /public/v1/webmasters/{code}
curl https://app.mtwspy.com/public/v1/webmasters/WM-KQZT-4821 \
  -H "Authorization: Bearer mtw_live_your_key"

The query form works too: GET /public/v1/webmaster?code=WM-KQZT-4821.

Response

{
  "data": {
    "code": "WM-KQZT-4821",
    "verticals": ["nutra"],
    "first_seen": "2026-03-14",
    "last_seen": "2026-11-08",
    "counters": {
      "ads": 1240, "active": 312, "stopped": 928, "hooked": 41, "hooked_basis": "reach",
      "pages": 58, "buyers": 4, "domains": 17, "pixels": 9
    },
    "history": {
      "from": "2026-10-11", "to": "2026-11-09", "new_ads": 186,
      "days": [{ "date": "2026-10-11", "active": 280, "new": 5 }]
    },
    "geo": [{ "country": "MX", "ads": 610, "share": 49.2 }],
    "pixels": [{ "value": "1234567890123456", "ads": 402 }],
    "domains": [{ "value": "salud-hoy.shop", "ads": 233 }],
    "fanpages": [{ "id": "104512345678901", "name": "Salud Natural", "ads": 96 }],
    "buyers": [{ "name": "alex", "ads": 700 }],
    "landing_paths": [{ "path": "/flexo/mx", "ads": 120 }],
    "webmaster_ads": {
      "total": 1240,
      "items": [
        {
          "id": 48211773,
          "preview": "https://.../preview/....jpg",
          "format": "video",
          "geo": "MX",
          "published_at": "2026-11-07T00:00:00+03:00",
          "is_active": true
        }
      ]
    },
    "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",
    "is_favorite": false
  },
  "meta": { "charged": 0 }
}
BlockContents
countersAds total / active / stopped / hooked, fan pages, buyers, domains, pixels
historyPer day for 30 days: how many ads were active and how many were new
geoCountries by number of ads, with each one's share, %
pixels domainsUp to 50 most frequent, with ad counts
fanpagesUp to 50 fan pages: id, name, ad count
buyersUp to 15 of the team's buyers
landing_pathsUp to 50 landing paths. Empty for gambling teams
webmaster_adstotal and the 12 latest ads in short form
library_urlFeed of all the webmaster's creatives in the dashboard

webmaster_ads has no ad text, domain or landing page. For the full card use the id with /creatives/{id}, or get the whole feed from creatives_url.

Dossiers are cached for 15 minutes.

A webmaster's creatives

Creative search takes a webmaster parameter, which combines with any other filter:

curl -G https://app.mtwspy.com/public/v1/creatives \
  -H "Authorization: Bearer mtw_live_your_key" \
  -d webmaster=WM-KQZT-4821 -d sort=reach -d limit=20

Gambling isn't hidden in this case. Every creative card has a webmaster block with the code and the same links, so you can go from a creative to its team.

Limits

WhatLimit
SearchThe key's general rate limit, 24 per page, up to page 20
Dossier10 per minute and 200 per day per account. Requests for codes that don't exist count too

Errors

codeHTTPWhen
invalid_parameter422Code isn't WM-ABCD-1234, unknown vertical or sort, page outside 1–20
not_found404Webmaster not found
rate_limited429More than 10 dossiers per minute, or the general rate limit
daily_limit_reached429200 dossiers in a day

On this page