Search the Google Ads Transparency Center. Pass a domain (webapi.group), an advertiser name (WebAPI Group), an advertiser id (AR10904289436120383489), or a full Transparency URL. 2 credits per call.
Each card includes the creative id, advertiser, format, preview image, and the first and last time the ad was shown. Pagination is { results, pagination }. Open results[].url with the ad endpoint to read the creative, including the text on the image.
GET https://api.piloterr.com/v2/googleadstransparency/search?query=webapi.group®ion=FR
GET https://api.piloterr.com/v2/googleadstransparency/search?query=https://adstransparency.google.com/advertiser/AR10904289436120383489®ion=FR
GET https://api.piloterr.com/v2/googleadstransparency/search?query=AR10904289436120383489®ion=FR
GET https://api.piloterr.com/v2/googleadstransparency/search?query=WebAPI%20Group®ion=FR
| Parameter |
Type |
Required |
Description |
query |
string |
yes |
Domain name (webapi.group), advertiser name, AR id, or full advertiser URL (/advertiser/AR...) |
domain |
string |
no |
Domain filter. Overrides the domain parsed from query |
advertiser_id |
string |
no |
Advertiser id (AR followed by digits) |
region |
string |
no |
ISO alpha-2 (FR, US), anywhere, or a region code (2250, 250). Omitted means no region filter |
format |
string |
no |
text, image, or video |
platform |
string |
no |
Comma-separated: play, maps, search, shopping, youtube |
preset_date |
string |
no |
today, yesterday, last_7_days, last_30_days. French labels such as 7 derniers jours are accepted |
start_date / end_date |
string |
no |
Inclusive dates, YYYY-MM-DD or YYYYMMDD |
topic |
string |
no |
commercial (default), political, shopping, travel_hotel, local_services |
page |
integer |
no |
Page number, 1 to 20. Default: 1 |
per_page |
integer |
no |
Page size, 1 to 100. Default: 40 |
cursor |
string |
no |
Opaque cursor from pagination.next. Required to reproduce a later page exactly |
| Field |
Type |
Description |
results[] |
array |
Creative cards |
results[].creative_id / advertiser_id |
string |
CR... and AR... |
results[].advertiser_name |
string | null |
Name shown by Google |
results[].domain |
string | null |
Matched domain |
results[].url |
string |
Creative URL. Pass it to the ad endpoint |
results[].format |
string |
text, image, or video |
results[].image_url / image_width / image_height |
string | number | null |
Preview image |
results[].preview_url |
string | null |
Image, or a content.js preview when Google does not send an image |
results[].first_shown_at / last_shown_at |
string | null |
ISO 8601 |
pagination.page / per_page |
integer |
Current page and page size |
pagination.total_results / total_pages |
integer | null |
Set when Google reports an exact count |
pagination.total_results_min / total_results_max |
integer | null |
Count range. Equal values mean the total is exact |
pagination.next |
string | null |
Next page URL, or null on the last page |
- A bare name such as
WebAPI Group is resolved to one advertiser. A bare brand that matches a domain, such as webapi, is resolved to that domain.
WebAPI Group is not webapi.group. The name lookup and the domain lookup are different searches.
- Dates you send are inclusive.
start_date and end_date on the same day return that day.
format, platform, and topic are lowercase in the response.
- A creative URL passed to search returns
400. Use the ad endpoint.
- An empty result returns
404, not an empty 200.
| Code |
Meaning |
400 |
Missing target, creative URL, unknown region, format, platform, topic, or date |
404 |
No creatives for these filters |
500 |
The Transparency request failed |
- List every creative a domain has run in one country
- Split text, image, and video ads, then open each card
- Compare today, the last 7 days, and the last 30 days