Ads library API
Google Ads Transparency Center API
a company's live ads, by domain
The ProspectAPIs ads library API takes a company's domain and returns the ads it runs on Google, read from the Ads Transparency Center: whether it is advertising now, how many ads are live, each ad's format, media and dates, and the verified advertiser behind them. Up to 500 ads cost $0.006, with every page after the first free, and a domain with no ads costs nothing.
The numbers
One lookup, in four figures. The price is read from our live price list each time this page renders.
- Per domain with ads
- $0.006
- Charged only when Google returns ads.
- Ads per lookup
- 500
- One price covers them all; no paging charge.
- Statuses that are free
- 4 of 5
- No ads, no advertiser, not covered, unreadable.
- Window
- 30 days
- Ads Google showed for the advertiser, worldwide.
Per our pre-launch check on 7 November 2026, Google answered all 20 of the 20 company domains we sent, 18 of them with live ads, and a fresh read took about 12 seconds at the median. That is a check of a fixed sample before opening, not a coverage rate.
Who reads a company's Google ads, and why
A company paying for Google ads has budget, a growth target and a message it is testing in public. That is a buying signal for some teams and competitive research for others:
- Sales teams qualifying accounts. Check every domain on a list before outreach. A company running ads now is spending on growth; one that stopped last month may be rethinking it.
- Agencies pitching new clients. Open with the ads the prospect is actually running and how long each has run, instead of a generic audit offer.
- Marketers watching competitors. See which formats a competitor runs, which creatives have lasted for months and when new ones appear.
- Data and RevOps teams. Write running_now and ads_live_total into the CRM and route accounts by them.
- AI agents. One HTTP call or one MCP tool turns a domain into a short answer an agent can reason about; our guide to researching prospects with an AI agent shows where a spend signal fits a brief.
How it compares
Other Google ads APIs charge per call or per search, mostly on monthly plans. Here one lookup covers up to 500 ads for $0.006, across free follow-on pages, only when there are ads, from a prepaid balance with no plan. Figures below are from each vendor's own pricing page, read on 7 November 2026.
| Provider | Input and billing | Price |
|---|---|---|
| ProspectAPIs | A domain in (an advertiser id is optional); the advertiser is resolved for you. Up to 500 ads a lookup, in pages of up to 100, later pages free. Prepaid, no plan. | $0.006 a domain with ads; empty is free |
| Adyntel | A domain in; Google returns 40 ads a call and each further page is another credit. Monthly credit plans or pay as you go. | 1 credit a call, $0.0064 to $0.0088 a credit on plans |
| SearchApi | A domain or advertiser id in. A domain search can return lookalike advertisers you filter yourself. Monthly plans. | $0.0018 to $0.004 a search, from $40 a month |
| SerpApi | An advertiser id, or free text you sort through. Monthly plans. | $0.025 a search at $25 a month; $0.01 or less from $150 a month |
Proof you can check yourself
No borrowed logos and no quotes we wrote ourselves. These are figures about the API and MCP server the ads routes ship on, each linked to the place it was read.
- MCP server downloads in the last 30 days
- 4,075
- The npm registry's own count, 2026-10-08 to 2026-11-06.
- See it on npm
- MCP tools your agent can call today
- 65
- Each one is a live endpoint with its price in the tool text.
- See every tool
- In the official MCP Registry
- Listed
- Published as com.prospectapis/prospectapis-mcp, status active.
- Open the listing
API results: what a lookup returns
A summary you can use as is, the advertiser, and the ads themselves. Every field, parameter and error is on the ads library docs.
| Field | Meaning | Use |
|---|---|---|
| summary.running_now, ads_live_total | Whether the company runs ads today and how many are live. | Qualify an account |
| summary.sentence | One line you can drop into a CRM field or an opener, such as "Running 12 ads on Google, first seen 2026-08-02". | Personalize |
| advertiser.id, advertiser.name | The verified advertiser behind the domain, with a link to its Transparency Center page. | Join key |
| format, media_urls | Text, image or video, and the creative's media. | Channel mix, creative research |
| first_seen, last_seen, status | When the ad first and last ran. Active means shown in the last 2 days. | How long a creative has run |
| source_url | The ad on Google's own Transparency Center page. | Proof |
Your first request
One domain, the Google library.
curl "https://api.prospectapis.com/v1/ads?domain=acme.com&platform=google" \ -H "Authorization: Bearer $PROSPECTAPIS_KEY"
This example answer shows a fictional company, trimmed to one ad:
{
"domain": "acme.com",
"summary": {
"running_now": true, "platforms_running": 1, "ads_live_total": 12,
"sentence": "Running 12 ads on Google, first seen 2026-08-02"
},
"platforms": [
{ "platform": "google", "status": "ok",
"advertiser": { "id": "AR01234567890123456789", "name": "Acme",
"page_url": "https://adstransparency.google.com/advertiser/AR01234567890123456789" } }
],
"data": [
{ "id": "google.AR01234567890123456789.CR0123456789", "platform": "google",
"advertiser_name": "Acme", "format": "image", "creative_text": null,
"media_urls": ["https://tpc.googlesyndication.com/archive/simgad/1234567890"],
"first_seen": "2026-08-02T00:00:00.000Z", "status": "active",
"source_url": "https://adstransparency.google.com/advertiser/AR01234567890123456789/creative/CR0123456789" }
],
"count": 1, "total": 12, "next_cursor": "eyJvIjoxLC...", "charged_usd": 0.006
}The same domain goes straight into a company profile, a funding search and an email check.
Date range: which ads come back
A lookup returns the ads Google showed for the verified advertiser in the last 30 days, worldwide, across search, display and YouTube. Each ad carries first_seen and last_seen, and its status is active when Google showed it in the last 2 days, inactive otherwise. An ad that has run for months next to one that started last week tells you which creative the advertiser keeps paying for. Older ads are not in a lookup; a watchlist sends each change to your webhook from the day you create it, so you can keep the history yourself.
You pay for ads, not for empty answers
Every library in the answer carries a status. Only ok is charged, so a sweep of a list where many companies do not advertise costs only for the ones that do.
| Status | Meaning | Charge |
|---|---|---|
| ok | We found the advertiser and it has ads. The ads are in the answer. | Charged |
| no_ads | We found the advertiser and it is not running ads right now. | Free |
| not_resolved | We could not tie the domain to an advertiser in the library. | Free |
| not_covered | The library does not cover this company. | Free |
| unreadable | The library could not be read right now, with the reason. Never an empty list; retry later. | Free |
Watch an advertiser
- 1
Create a watchlist
A watchlist with kind ads names a domain and your webhook. Creating it is free.
- 2
We read it again
We re-read the library on a schedule and compare it with the last read.
- 3
You get the change
A company that starts or stops advertising, or launches new creatives, arrives at your webhook as an event, $0.006 each and only when your endpoint answers 2xx.
Routes and prices
Prices come from GET /pricing. Every product is on the pricing page.
| Route | What it does | Price |
|---|---|---|
| GET /v1/ads | A company's live ads by domain, up to 500 per library, with a status per library and a one-line summary. | $0.006 per library that returns ads; every other status is free |
| GET /v1/ads/:id | One ad by its id, with the countries it ran in. | $0.006 when found; a 404 is free |
| POST /v1/watchlists | A watchlist with kind ads watches a domain and pushes each change to your webhook. | Free to create; $0.006 per event delivered, charged only on a 2xx |
What it does not do
- No spend or impressions. Google does not publish what an advertiser spends or how often an ad was shown, outside political ads, so neither do we.
- No ad copy for Google's list. Google's list shows each creative as media. You get the media and a link to the ad; creative_text is null.
- Not a full history. A lookup covers ads shown in the last 30 days. To build a history, watch the domain and keep the events.
Questions
Is there an official Google Ads Transparency Center API?
No. Google publishes the Ads Transparency Center as a website, and its Google Ads API is for managing your own campaigns, not for reading another company's ads. This API reads the public Transparency Center for you and returns the result as JSON.
Can I use it today?
Yes. The Google library is on sale at $0.006 per lookup that returns ads, from the same prepaid balance as every other ProspectAPIs API.
What does a lookup cost?
$0.006 when Google returns ads for the domain, for up to 500 ads, served in pages of up to 100 with every later page free. A domain with no ads, a domain we cannot tie to an advertiser and a library we could not read are all free. There is no monthly plan and no seat.
Do I need the advertiser id?
No. Send the company's domain and we find the verified advertiser behind it. If you already know the Google advertiser id (it starts with AR), pass it and we skip the lookup.
Which ads come back?
Ads Google shows for that verified advertiser in the last 30 days, worldwide, across search, display and YouTube. An ad counts as active when Google showed it in the last 2 days.
Does it return the ad copy?
For Google, the list Google publishes shows each creative as media, not text, so creative_text is null and the creative is in media_urls. The single ad read adds the countries it ran in.
Do you cover Meta, LinkedIn or TikTok ads?
Google is the library we sell today. Other libraries are added one at a time, and each appears on this page and in our price list the day it goes on sale.
Can an AI agent use it?
Yes. Any agent that can make an HTTP request can call it with your API key, and our MCP server has an ads_search tool on the same key and balance.