Reference
Changelog
Changes to the API's behaviour and contract, newest first. Additive fields are listed too, so a strict client knows what to expect.
2026-10-20#
- Pricing may change during November–December 2026. What it costs us to serve some requests changes at the turn of the year, so we may adjust prices in those two months. Any change is announced in advance here and by email. Credits you have already bought keep working, and packs stay valid for 12 months from purchase.
- Full SERP: rendered AI Overview costs 8 from 2026-11-01.
GET /serp,GET /search/serp,POST /serp/batchand asyncserptasks cost 3 credits per page as today, or 8 when the AI Overview had to be completed by rendering the page in a browser. The response saysaioverview.rendered: truewhen that happened (live now, so you can see which of your calls it affects). A page whose overview arrives complete, or a request withaioverview=false, stays 3.GET /serp/featuresstays 3 and never renders;GET /serp/htmlstays 2 (8 withjs=true). - Web data: a page that needed a browser costs 5 from 2026-11-01. On
POST /scrape,GET|POST /search/webpage,POST /extract,POST /search-and-scrape,POST /crawlandPOST /scrape/batch, a page that had to be rendered (render: true,actions, or automatic rendering when a plain fetch returns no usable content, such as a JavaScript-only page) costs 5 credits instead of 1. Pages fetched without a browser stay 1. Responses already sayvia: "browser"orvia: "http". A cached copy costs the same as the page it copies, a failed fetch is never charged, and the live-fetch surcharge (maxAgeorcache: false) still applies on top. A crawl'smaxCreditsceiling allows for the browser price unless the job setsrender: false.POST /mapis unchanged. - Accounts that have never bought credits. Every endpoint works on the sign-up credits, but the automatic browser fallback is off (an explicit
render: trueoractionsstill renders) and a web search that comes back thin is not topped up with live results. Both switch on with the first purchase. In effect now.
2026-10-15#
- Place details menus from Google Search. Google Maps now shows signed-out visitors a reduced place record without the menu, so
menucame backnull. For a place that serves food,GET /search/place-detailsreads the menu (url,sectionsof items with prices) from the place's Google Search panel. Addsplace.menuStatus(found,none,pending,unavailable) and the parametermenu=falseto skip the lookup.menu.photosis empty for now. Same price.
2026-10-04 to 2026-10-05#
- Credit balance.
GET /credits/balancereturns{ success, credits: { available, reserved?, expiresAt?, expiringCredits? } }for an API key or a dashboard login. Free.availableis the balanceGET /user/profileshows (Account & Utilities). - API keys. A key is for the data API and read-only views of its account. Creating or deleting keys, data export, account deletion and payments need a dashboard login (
403API_KEY_SCOPE_FORBIDDEN);GET /user/profilestays open to keys. Keys are stored hashed, and lists show a masked preview. - Errors. One table of every status and code (Error Handling). New:
400PAGE_OUT_OF_RANGE,DATE_FILTER_UNAVAILABLEandINVALID_IDEMPOTENCY_KEY,422TARGET_UNREACHABLE,4294203(CONCURRENCY_LIMIT),503CREDIT_SYSTEM_UNAVAILABLEandREVIEWS_WITHHELD. A switched-off endpoint answers403FEATURE_NOT_AVAILABLE(was503); a site that refuses the fetch answers422TARGET_REFUSED(was503). No502or504leaves the API: both are answered as503JSON. None of these is charged. - Idempotency keys are bound to the request they came with: the same key and request replays the stored response (
Idempotent-Replayed: true, no charge), the same key with a different request is422IDEMPOTENCY_KEY_REUSED. - SafeSearch on the SERP.
safe=activeoroff(andtrueorfalse) is accepted onGET /serpandGET /search/serp.POST /serp/batchandGET /serp/featureshonoursafe, which they ignored before. - Date filter.
dateRestrict(d7,w2,m1,y1) works onGET /search/webtogether withglandhl, onGET /search/newsand onGET /search/advanced. Combined with search operators it returns400DATE_FILTER_UNAVAILABLE, not charged. - Fresh answers.
cache=falseforces a fresh answer on web, image, news, maps and places search. Same credits. - Web search pages. A page that starts past result 101 returns
400PAGE_OUT_OF_RANGEwithmaxPageat once, instead of a slow failure. - Image search. Results carry
width,height,thumbnailUrlwith its size,linkandsourceUrl(the page the image is on),source,domain,formatandimageId.size(alsoimgSize),imgType,imgColorTypeandimgDominantColornow take effect. - Maps, places and place details. New
businessStatus(OPERATIONAL,CLOSED_TEMPORARILY,CLOSED_PERMANENTLYornull) andopenNow.openStatecomes back in the language ofhl. With noll,glsets where the search looks (51 countries). Aliteanswer is never cached. - Reviews. The first page of reviews (about eight) comes back in any language, with
hasMore. Newtimestamp(Unix seconds); an owner's reply carriesdateandlanguage. A place Google sent without its reviews answers503REVIEWS_WITHHELD, not charged. - Extract. URLs are fetched in parallel inside one time budget. A failed row carries
errorCodeandretryable;partialsays the budget ran out before every URL was fetched;llmSkippedsays the model was not asked. One credit per page fetched; failed rows are free. - Web data.
scrape,map,crawl,scrape/batchandextractaccept internationalised domain names (https://www.löschwagen.com). A malformed URL, or one with a control character, is a400. - Searches in flight. An account can have a limited number of web, image, site, advanced and batch searches running at once; past it,
4294203(Rate Limiting). - No charge for nothing. An answer with no results is free on every endpoint, SERP pages are billed per page delivered, and a failed row inside a
200POST /serp/batchcosts nothing.
2026-10-02#
- Place details.
GET /search/place-detailsreturns one place's full record byplaceId(ChIJ…),featureId,cidorq: every maps field plus all of Google's attributes and the menu (url,sectionsof items with prices,photos). 1 credit. - Attributes on maps and places.
GET /search/mapsandGET /search/placesaddattributes, Google's "About" list keyed by Google's own ids (attributes.payments.requires_cash_only). - Reviews by Place ID.
GET /search/reviewsacceptsplaceId. - Opening date on maps and places.
GET /search/mapsandGET /search/placesaddopeningDate(2026-11-01) andopeningDateText(Opens 1 Nov, in yourhl) to a place listed before it opens;nullotherwise. Same price. - SERP HTML price.
GET /serp/htmlcosts 2 credits per page (was 1), and 8 per page withjs=true(was 4). Failed calls are still refunded. - Full SERP AI Overview from the served page.
GET /serpreads the AI Overview in full from the page as Google served it, so most overviews no longer wait for a rendered page: about 2 s instead of 8-10 s. An overview Google loads after the page comes back aspending: trueand is still read from the rendered page. Overview sources come back resolved (urlthe cited page,redirectUrlthe/goto,resolved: true). Same price.
2026-09-30#
- Credits are valid for one year per grant (was 90 days) on accounts created after the policy launch; existing credits were moved to one year from when they were granted.
GET /credit/balancereportsexpiry.durationDays: 365. Legacy accounts keep unlimited credits. - Google News results page from the live page.
GET /search/news/serp(and thenews/serpasync task and the Cloro-compatible news monitor) is fetched live and parsed like Full SERP: about a second per page, cards with title, source, date, snippet, thumbnail and resolved article links. - Location.
locationtakes a country by name or two-letter code on every Google endpoint and applies it asgl; a country'suuleis applied the same way. City- and state-levellocation, and any otheruule, return400CITY_LOCATION_UNAVAILABLEand are not charged: Google no longer localizes results byuule(Location).GET /serp/htmlaccepts a countrylocation.GET /search/statesaddstargeting: false. - Error codes. Error bodies carry a stable
codeon search, SERP, SERP HTML, AI answer, rank check and validation errors (Error Handling). Failed batch rows carry the samecode. - Async tasks. Errors in the request itself (a location, a domain, a query shape) fail at once and are refunded, instead of being retried.
- Full SERP. Each page is fetched live and parsed; the AI Overview is read in full from the rendered page, and
aioverview.completesays whether it was.aiModeAvailablereports the page's AI Mode tab. A multi-page request with a failed page is no longer cached. - SERP HTML.
aio.showAll(pressed,absent,complete,failed) andshow-allinX-Searlo-Aio. - Web data.
POST /search/webpageacceptsexcludeSelectors; a page whose plain fetch returns no usable content is rendered.
2026-09-29#
- SERP HTML (
GET /serp/html): Google's results page as served (1 credit at launch; 2 since 2026-10-02) or rendered with the AI Overview opened out (js=true, 4 credits at launch; 8 since 2026-10-02), desktop or iOS, as JSON orformat=raw. - AI answer snapshots:
html=trueonGET /search/ai/{engine}adds the answer page's HTML (html,pageUrl) at no extra charge. - Full SERP:
rawHtml=truereturns the page alongside the JSON (+1 credit). - Account & Utilities:
GET /credit/balance,GET /search/capabilities,GET /search/countries,GET /search/statesdocumented. - MCP: all 16 tools documented.
Stuck? Write to [email protected], or check live status.