The Google Ads API on AdScrape gives you the same data the dashboard renders, exposed as a small REST surface. Every call returns JSON with consistent envelopes — there are no XML or form-encoded responses. Google Ads Transparency API endpoints and examples.
- REST + JSONUTF-8 JSON in/out. One envelope for success and errors.
- Advertiser typeaheadResolve a partial brand to the right Google advertiser_id with one call.
- Multi-surface coverageSearch, Display and YouTube placements share a single creative envelope.
- Pay per ad returned1 credit / creative delivered. Suggestions are 1 credit per result block.
- No Google API quotaWe talk to the Transparency Center directly. No Cloud project, no allowlist.
- Soft launchGoogle routes are preview today — billing flips on at GA.
- 1. Create a key. Settings → API Keys → Create. Copy the
sk_live_…once — you won't see it again. - 2. Resolve the advertiser. Hit
/google/suggestionswith the brand name to get a stableadvertiser_id. - 3. Scrape creatives. Pass the
advertiser_id+ region to/google/search.
# 1. Resolve advertiser
curl -X POST https://api.adscrape.in/api/v1/google/suggestions \
-H "X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-d '{"query":"shopify"}'
# 2. Scrape
curl -X POST https://api.adscrape.in/api/v1/google/search \
-H "X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"advertiser_id":"AR1234567890","region":"US","max_results":25}'Every call requires a key in the X-API-Key header (or a Bearer JWT from a dashboard session). Manage keys at Settings → API Keys.
curl -X POST https://api.adscrape.in/api/v1/google/search \
-H "X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"advertiser_id":"AR123","region":"US"}'Credit pricing is identical across AdScrape platforms — one wallet, transparent USD rates. Reads from cached records you already own are free. Topping up is per-credit with no monthly minimum.
POST /api/v1/google/searchper ad returned$0.05 / adCharged only for delivered creatives. Empty pages cost 0.
POST /api/v1/google/suggestionsper result block$0.01 / suggestionCached 1h on (query, region). Cache hits are free.
Limits apply per API key in 60-second windows. 429 responses include Retry-After. Need higher? Add a bring-your-own proxy and the cap lifts considerably.
- Free
30Plenty for occasional research.
- Starter
60Daily competitive monitoring across a few brands.
- Growth
120Agencies and growing teams.
- Scale
600Bulk pipelines and warehouse-feeding jobs.
Errors share a single envelope shape. A 5xx mid-request never debits you — credits are charged only after the response is successfully streamed.
400validation_errorBad body / query. Detail names the offending field.
401missing_keyNo X-API-Key header and no valid JWT cookie.
402insufficient_creditsWallet would go negative — top up or upgrade.
404advertiser_not_foundGoogle has no records for the advertiser_id + region pair.
429rate_limitedPer-minute cap exceeded. Honour Retry-After.
502upstream_errorGoogle Transparency Center returned a transient error. Retry with backoff.
/api/v1/google/suggestions 1 credit / batchResolve a partial advertiser name into Google's stable advertiser_id. Use the id from this response for the cleanest /search results.
queryrequiredstring1–80 chars. Partial brand or company name.regionoptionalstringISO 3166-1 alpha-2 region — affects ranking.Defaults to"US".limitoptionalintegerNumber of suggestions (1–20).Defaults to5.
curl -X POST https://api.adscrape.in/api/v1/google/suggestions \
-H "X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"query":"shopify","limit":5}'{
"suggestions": [
{ "advertiser_id": "AR1029384756", "name": "Shopify Inc.", "region": "US", "verified": true },
{ "advertiser_id": "AR9988776655", "name": "Shopify Plus", "region": "US", "verified": true },
{ "advertiser_id": "AR1122334455", "name": "Shop Pay", "region": "US", "verified": false }
],
"cached": true
}/api/v1/google/search 1 credit / adScrape Google Transparency Center creatives for one advertiser × region pair. Returns Search, Display, and YouTube units in a single normalized schema.
advertiser_idrequiredstringGoogle advertiser_id from /google/suggestions.regionrequiredstringISO 3166-1 alpha-2 region code.formatoptionalstring"search" | "display" | "video" | "all".Defaults to"all".max_resultsoptionalinteger1–100. Playground clamps to 5.Defaults to25.session_tokenoptionalstringPagination cursor from the previous response.
curl -X POST https://api.adscrape.in/api/v1/google/search \
-H "X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"advertiser_id":"AR1029384756","region":"US","max_results":25}'{
"summary": { "count": 23, "advertiser_id": "AR1029384756", "region": "US" },
"ads": [
{
"ad_archive_id": "g_AR1029_d_abc",
"advertiser": "Shopify Inc.",
"format": "display",
"headline": "Start your store today",
"destination_url": "https://shopify.com/free-trial",
"first_seen": "2026-02-11T14:00:00Z",
"last_seen": "2026-05-10T22:00:00Z",
"media_url": "https://api.adscrape.in/m/g_AR1029_d_abc"
}
],
"session_token": "g_sess_4a1c...",
"has_more": true
}Next steps
The dashboard, your keys, and your billing live one tab away.