google-adstransparency.creative.get
Returns one Google creative's public detail for an advertiser and creative id pair: every ad variation and the regions and dates Google reports.
At a glance
- Endpoint ID
google-adstransparency.creative.get- Price
- 1 credit per call; failed calls are free
- Runs for up to
- 60 seconds
Request
Send the endpoint ID as capability and its fields as input. Set UPSCRAPE_API_KEY to your key first.
curl --request POST \ --url https://data.upscrape.com/execute \ --header "Authorization: Bearer $UPSCRAPE_API_KEY" \ --header "Content-Type: application/json" \ --header "Prefer: wait=30" \ --data '{ "capability": "google-adstransparency.creative.get", "input": { "advertiser_id": "AR12815412684405080065", "creative_id": "CR10007278137596968961" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "google-adstransparency.creative.get", "input": { "advertiser_id": "AR12815412684405080065", "creative_id": "CR10007278137596968961" }}''')response = requests.post( "https://data.upscrape.com/execute", headers={ "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}", "Content-Type": "application/json", "Prefer": "wait=30", }, json=payload,)response.raise_for_status()print(json.dumps(response.json(), indent=2))
const response = await fetch("https://data.upscrape.com/execute", { method: "POST", headers: { "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`, "Content-Type": "application/json", "Prefer": "wait=30", }, body: JSON.stringify({ "capability": "google-adstransparency.creative.get", "input": { "advertiser_id": "AR12815412684405080065", "creative_id": "CR10007278137596968961" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
Input
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
advertiser_id |
string | yes | Google advertiser id that owns the creative (e.g. "AR12815412684405080065"). Use field 1 of a creative from creative.search or advertiser-ads.list. | AR12815412684405080065 |
creative_id |
string | yes | Google creative id (e.g. "CR10007278137596968961"). Use field 2 of the same creative. A creative id with another advertiser's id answers not_found. | CR10007278137596968961 |
Response
A finished call answers with HTTP 200; the data is in results[0].data, and billing.credits_charged is what it cost. A call still running after the wait answers 202: see jobs and results.
This is results[0].data from a real run:
{ "creative": { "1": "AR12815412684405080065", "2": "CR10007278137596968961", "8": 1, "4": { "1": "1792150956", "2": 999786000 }, "17": [ { "1": 2840, "5": 20261016 } ], "5": [ { "5": true, "3": { "2": "<img src=\"https://tpc.googlesyndication.com/archive/simgad/1042557611142725945\" height=\"376\" width=\"348\">" } }, { "5": true, "3": { "2": "<img src=\"https://tpc.googlesyndication.com/archive/simgad/15929607272574382757\" height=\"180\" width=\"348\">" } } ] }}
Fields
| Field | Type | Example |
|---|---|---|
creative.5[].3 |
object | 1 fields |
creative.5[].5 |
boolean | true |
creative |
object | 6 fields |
creative.1 |
string | AR12815412684405080065 |
creative.17 |
array | 1 records |
creative.17[].1 |
integer | 2840 |
creative.17[].5 |
integer | 20,261,016 |
creative.2 |
string | CR10007278137596968961 |
creative.4 |
object | 2 fields |
creative.4.1 |
string | 1792150956 |
creative.4.2 |
integer | 999,786,000 |
creative.5 |
array | 3 records |
creative.8 |
integer | 1 |
If a call fails
A failed call costs nothing. The response carries an error.code you can branch on; Errors and retries lists every code and which ones to retry.
Other Google Ads Transparency endpoints
Something missing or unclear? Ask the team that builds the Google Ads Transparency endpoints.