For developers

Ship ad data features without six scrapers.

Platforms change their libraries every few weeks. We keep the adapters working, so your integration talks to one stable REST API.
  • One schema

    Ads, advertisers and creatives look the same on every platform. Fields a platform does not publish are null, never guessed.id = <platform>:<platform_ad_id>
  • History built in

    Every response is stored and versioned. Ask for the history of an ad or the timeline of an advertiser, including ads the platform no longer shows.GET /v1/ads/{id}/history
  • Domain in, advertisers out

    Resolve a brand's domain to its advertiser ids on all platforms, each with a score and the reason for the match. Wrong match? Report it, and the fix applies for everyone.GET /v1/advertisers/resolve?domain=
  • Company profiles

    All ad accounts of a company across platforms and countries in one object, with combined counts, countries, formats and its longest-running ads. Agencies and resellers that run ads for the brand are listed apart.GET /v1/companies/{domain}
  • Webhooks, not polling

    Watchlists crawl on your interval and post advertiser.changes events, HMAC-signed, retried and redeliverable.POST /v1/watchlists
  • Batch jobs

    Hand over hundreds of lookups in one request and collect the results when the job is done.POST /v1/batch
  • Honest billing

    Credits per delivered result. Empty results, timeouts and upstream errors cost nothing. Usage per endpoint is one call away.GET /v1/usage

Response shape (abridged)

GET /v1/search?domain=nike.com&platform=meta,google&country=US&limit=2

{
  "data": [
    {
      "id": "meta:1037130442034659",
      "platform": "meta",
      "advertiser": { "id": "meta:15087023444", "name": "Nike" },
      "status": "inactive",
      "first_shown": "2026-07-21T00:00:00Z",
      "last_shown": "2026-08-14T00:00:00Z",
      "first_seen_by_us": "…",
      "countries": ["US"],
      "placements": ["instagram"],
      "creatives": [{ "type": "image", "text": "Pegasus Laufschuhe. …" }],
      "derived": { "days_running": 24, "variant_count": 1 }
    }
  ],
  "meta": { "count": 2, "platforms": ["meta", "google"], "errors": null },
  "next_cursor": "…"
}