Google API: Get company ads
Finds a verified advertiser in the Google Ads Transparency Center by company name or website domain and returns its Google ads with dates, regions, previews and ad pages. Counts may be approximate; regions and media previews are read for the first 40 ads.
Unofficial. Not affiliated with or endorsed by Google.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Country optional
country Country name or two-letter country code, for example United States or US; all means all countries.
US
Default
all.- Ad Format optional
ad_format Ad type to include, for example video.
video
One of
all,text,image,video. Defaultall.- Advertiser, required
advertiser Company or brand name, or website domain, for example Nike or nike.com.
Nike
- Date Range optional
date_range When ads were shown, for example last_30_days.
any_time (default)
One of
any_time,last_7_days,last_30_days.- Max Results optional
max_results Maximum ads to return, for example 40.
105
Whole number from 1 to 200. Default
40.
Input as JSON
{ "country": "US", "ad_format": "video", "advertiser": "Nike", "max_results": 105}Output
{ "ads": [ { "ad_id": "CR10652972250883424257", "format": "video", "ad_text": null, "preview_url": "https://tpc.googlesyndication.com/simgad/6916328398620481038" , "ad_page_link": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR10652972250883424257" , "regions_shown": [ "United States", "Canada" ], "last_shown_date": "2026-09-29", "first_shown_date": "2026-07-07" }, { "ad_id": "CR07320027051652546561", "format": "video", "ad_text": null, "preview_url": "https://tpc.googlesyndication.com/simgad/6916328398620481038" , "ad_page_link": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR07320027051652546561" , "regions_shown": [ "United States", "Canada" ], "last_shown_date": "2026-09-28", "first_shown_date": "2026-07-07" }, { "ad_id": "CR02029141914422345729", "format": "video", "ad_text": null, "preview_url": "https://tpc.googlesyndication.com/simgad/1482435130401986799" , "ad_page_link": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR02029141914422345729" , "regions_shown": [ "United States" ], "last_shown_date": "2026-09-28", "first_shown_date": "2026-07-07" } ], "advertiser_id": "AR16735076323512287233", "advertiser_name": "Nike, Inc.", "total_ads_count": 100, "matched_advertiser": "Nike, Inc.", "advertiser_location": "United States", "advertiser_page_link": "https://adstransparency.google.com/advertiser/AR16735076323512287233" }Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"adstransparency.google.com/get_company_ads","input":{"country":"US","ad_format":"video","advertiser":"Nike","max_results":105}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "adstransparency.google.com/get_company_ads" , "input": { "country": "US", "ad_format": "video", "advertiser": "Nike", "max_results": 105 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "adstransparency.google.com/get_company_ads" , "input": { "country": "US", "ad_format": "video", "advertiser": "Nike", "max_results": 105 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run adstransparency.google.com/get_company_ads# with {"country":"US","ad_format":"video","advertiser":"Nike","max_results":105}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "advertiser" ], "properties": { "country": { "type": "string", "default": "all", "description": "Country name or two-letter country code, for example United States or US; all means all countries." }, "ad_format": { "enum": [ "all", "text", "image", "video" ], "type": "string", "default": "all", "description": "Ad type to include, for example video." }, "advertiser": { "type": "string", "description": "Company or brand name, or website domain, for example Nike or nike.com." }, "date_range": { "enum": [ "any_time", "last_7_days", "last_30_days" ], "type": "string", "default": "any_time", "description": "When ads were shown, for example last_30_days." }, "max_results": { "type": "integer", "default": 40, "maximum": 200, "minimum": 1, "description": "Maximum ads to return, for example 40." } }}Output schema
{ "type": "object", "required": [ "advertiser_name", "advertiser_location", "matched_advertiser", "advertiser_page_link", "total_ads_count", "advertiser_id", "ads" ], "properties": { "ads": { "type": "array", "items": { "type": "object", "required": [ "format", "first_shown_date", "last_shown_date", "regions_shown", "ad_text", "preview_url", "ad_page_link", "ad_id" ], "properties": { "ad_id": { "type": "string", "x-fous-developer": true }, "format": { "type": [ "string", "null" ] }, "ad_text": { "type": [ "string", "null" ] }, "preview_url": { "type": [ "string", "null" ] }, "ad_page_link": { "type": "string" }, "regions_shown": { "type": [ "array", "null" ], "items": { "type": "string" } }, "last_shown_date": { "type": [ "string", "null" ] }, "first_shown_date": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "advertiser_id": { "type": "string", "x-fous-developer": true }, "advertiser_name": { "type": "string" }, "total_ads_count": { "type": "integer" }, "matched_advertiser": { "type": "string" }, "advertiser_location": { "type": [ "string", "null" ] }, "advertiser_page_link": { "type": "string" } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
adstransparency.google.com/get_company_ads- Returns
- advertiser name, location, ad count, ads with format, dates, regions, text, preview URL, ad page link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method adstransparency.google.com/get_company_ads with the inputs above.
Ask your agent
- What video ads has Peloton been running in the United States over the last 30 days? I'd like dates and preview links.
- Pull up the Google Ads Transparency Center listing for hellofresh.com and show me their image ads shown in the UK, up to 60 of them.
- I'm doing competitor research on Allbirds — list every ad they've run in the past week, with the regions each one appeared in and the ad text.
- Check Google's ad transparency records for Duolingo: where's the advertiser based, roughly how many ads do they have, and give me the first 25 with their formats.
- Show me text ads from monday.com that ran in Germany, including when each started and stopped and a link to its ad page.
See more
All Google methodsSummarizes a company's public patents on Google Patents within filing dates (optionally narrowed by topic words): total found, filings per year, top technology areas and inventors across the 50 most recent records, and the most recent patents.
patents.google.com/list_company_patentsFinds Google Flights options for a route and date with prices, local times, stops and emissions. Round-trip searches list outbound choices with their displayed round-trip fares.
google.com/search_flightsFinds recent Google News articles about a company, person or topic for a country and language, in Google News order, optionally within a time window, with each article's publisher link resolved.
news.google.com/search_newsFinds Android apps on Google Play by keywords, in Play search order, with each listing's developer, star rating, price and currency for the chosen country, download range and link. Results are limited to apps shown on the public search page.
play.google.com/search_appsGets a public Google Play app listing by app name or Play Store link, with developer, rating, downloads, price, what's new, descriptions and data safety highlights.
play.google.com/get_appGets a company's quarterly or annual income statement, balance sheet or cash flow lines from its Google Finance quote page, with exact reported amounts and year-over-year changes.
google.com/get_company_financialsFinds places to stay in a city or area for given dates on Google Hotels, with nightly and total prices, hotel class, guest ratings, amenities, address and cheapest booking site. Optional filters for price, stars and rating; vacation rentals are left out. Prices and availability can change.
google.com/search_hotelsFinds Chrome Web Store extensions by keywords in store order, with each listing's developer, users, rating, rating count, short description and store link. Some listings omit developer, users or ratings.
chromewebstore.google.com/search_extensions