SerpApi
Google's AI Mode answer for your city, the ads your competitors are running, and what people say about you on YouTube — with the transcript to prove it.
The facts a reader needs
| What it unlocks | Four things nothing else in the stack can do, all inside the reputation check: Google's AI Mode answer for your city, whether your category's sites are buying ads, who talks about you on YouTube, and your search-interest curve. DEEPEST SETTING ONLY, AND CITY-GATED: your Google Maps listing's own verbatim reviews (with the owner's replies), and — for the home-services/legal/healthcare brands Google's Local Services program actually covers — who holds the Google Guaranteed box in your city. Without it the report still maps your category's shelves — that sweep runs on DataForSEO — but loses the AI-answer surface and the panels above. |
| When it is called | WIRED 2026-08-18. Once per paid pull, last of all — after the SEO leg, because its category terms are that leg's industry-tier keywords, and after the reviews leg, because it needs the anchor's domain-verified city. Tier 1 buys the Trends line; tier 2 adds AI Mode, Ads Transparency, the YouTube search and the shelf sweep; tier 3 adds the video transcripts. A pull with no SERPAPI_API_KEY still runs the sweep on DataForSEO alone and reports the four SerpApi units as no_key_configured rather than hiding them. |
| Cost basis | $0.01 per search on this account's grandfathered developer_v2 plan ($50/mo for 5,000). Every engine costs the same one search. AS WIRED the ceiling is 2 searches at tier 1, 9 at tier 2 and 15 at tier 3 — so one month's block covers roughly 330 pulls at the deepest tier. There is NO metered overage: exhausting it forces a full-price early renewal rather than a per-search top-up, which is why the lane reads the free /account.json balance BEFORE it spends and refuses the whole tier rather than draining the last of the block. A new key today is $0.015, not $0.01. |
| Environment | SERPAPI_API_KEY |
| Bring your own key | Yes. |
The recurring-domains sweep that maps which directories and listicles your whole category keeps appearing on — whose BULK queries are DataForSEO's, not SerpApi's. SerpApi contributes only the AI Mode reference list to it.
Endpoints we call
| Endpoint | Why we call it |
|---|---|
engine=google_trends | Search interest in your name over 12 months, weekly, plus the regional split. A 0-100 index of relative interest, not a search count. |
engine=google_ai_mode | What Google's AI tells someone in your city about your category, and the sources it drew on. One call, no page_token to chase. |
engine=google_ads_transparency_center | Whether you — and the directories outranking you — are buying Google ads. Free-text text= only: region=US is rejected by the API. |
engine=youtube | Videos matching your brand phrase, so a mention can be found before it is transcribed. |
engine=youtube_video_transcript | The timestamped transcript of a hit, so a quote points at the second it was said. NOT youtube_transcript — that name does not exist. |
engine=google_ai_overview | Opportunistic only — spent ONLY when a free page_token already exists from an engine=google search elsewhere in the pull, never bought to go fishing for one. As shipped this lane's bulk SERP rides DataForSEO, so no such call exists yet and this reports an honest, named skip. |
engine=google_maps then engine=google_maps_reviews | The anchor's own Google Maps listing, synchronously — rating, snippet, dates, likes, the reviewer's own local_guide status, and the owner's reply where one exists. City-gated: without a city, a bare name search returns whichever franchise Google Maps guesses is nearest, so this refuses rather than guess. |
engine=google_maps (city CID) then engine=google_local_services | Who holds the Google Guaranteed box for your category in your city. q is one of Google's own closed Local Services terms, not a free-text category — VERIFIED LIVE: an arbitrary category is rejected before billing — and the data_cid is the CITY's own Maps identity, resolved by a SEPARATE search from the business-level one above. |
GET /account.json | Free. Read before anything is spent, so an exhausted monthly block is refused out loud rather than discovered one failed unit at a time. |
Checks it powers
OpenAI
One language-model read of your own copy, turned into voice claims that each have to quote your text or be dropped — and, before any money is spent, a second opinion on whether a candidate business is really you.
Vercel AI Gateway
One door to every major language model — what GPT-5, Claude, Gemini, Grok and Perplexity each say about you — at each provider's own list price. WHICH models we actually route to, for what, at what rate, is src/local/model-registry.mjs; this row is the account, that file is the shelf.