Google Ad Library

Google Company Ads API

Google publishes spend and impression ranges only for election ads; commercial advertisers omit both.

Google publishes spend and impression ranges only for election ads in regions that require disclosure; commercial advertisers omit both. isActive is derived from lastShown — true when the creative was seen within 7 UTC days. Pass an advertiser name, domain (nike.com), or AR… id from advertiser-search and get public commercial creatives as clean JSON: id, url, adFormat, firstShown/lastShown, advertiser, media[], isActive. A name/domain can match more than one Google AR… entity — ads[] and adsCountEstimate are always the single resolvedAdvertiser; siblings are otherMatches[{id, name}], not mixed into the list. ATC does not publish structured copy: adFormat=text is inferred from the absence of an image/video asset — those rows keep text/headline/cta/landingUrl as null (the parser still runs; inactive creatives are not skipped) — cta is null in practice because Google publishes no call-to-action. Image/video rows omit those keys (copy lives in the asset). advertiser.logo and advertiser.location are null in practice: the Transparency Center publishes neither (the keys stay for the shared ad-library schema). The same omit convention applies to spend/impressions (election-only) and empty country/countries. Supports country/region, start_date/end_date, sort=last_shown|first_shown, cursor pagination, adsCountEstimate. resolution is always keyed: not-in-library | resolved-no-ads | resolved-filtered-out when ads is empty; null when ads exist (null means the list is populated — it is not a leftover). Flat 2 credits when ads are returned; totalReturned=0 is 0 credits (max 200 per page).

Docs: https://captapi.com/apis/google-ad-library-company-ads

get/v1/ad-library/google/company-ads

Request

  • Base URL: https://api.captapi.com
  • URL: https://api.captapi.com/v1/ad-library/google/company-ads
  • Auth: one of:
    • HTTP bearer
    • API key in header X-API-Key

Query parameters

advertiserstring required

Advertiser name, domain (e.g. nike.com), or Google advertiser ID (AR…). Prefer AR… from advertiser-search.

countrystring

Two-letter ISO country / region code (soft filter). Default US. Alias: region. Non-ISO codes are a definitive 400 INVALID_COUNTRY.

regionstring

Alias for country.

limitinteger

Max items to return (default 20, max 200). Flat 2 credits when results are returned; 0 credits when totalReturned is 0.

cursorstring

Pagination cursor from nextCursor.

start_datestring

YYYY-MM-DD — keep creatives whose shown window overlaps this start.

end_datestring

YYYY-MM-DD — keep creatives whose shown window overlaps this end.

sort'last_shown' | 'first_shown'

Client-side sort: last_shown (recent activity first) or first_shown. Default is ATC order.

topicstring

Only "all" is supported (commercial ATC). Google publishes spend and impression ranges only for election ads; commercial advertisers omit both. isActive is true when lastShown is within 7 UTC days.

cacheboolean

Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh.

Response

Success. The data object for this endpoint.

successunknown required

Changes

No recorded changes to this operation across all 3 revisions of this API.