AnswerLine Start free

Docs / API reference /

Track Google Search results

POST https://api.answerline.dev/v1/monitor/google

Get structured output from Google Search: organic listings, related searches, People Also Ask and, optionally, the AI Overview

From $1.00 per 1,000 Failed requests are free Async task type GOOGLE Google Search fields and prices

Body

query string

Query to run on Google. Mandatory when 'url' is not given; send one or the other, never both.

url string

A full URL of a Google web search, executed as-is in place of a request assembled from 'query' plus the targeting fields. It has to be absolute and http(s), hosted on one of Google's web search domains (google.com, google.co.uk, www.google.de, ...), with '/search' as its path and a 'q' that is not empty. Cannot be combined with 'query', 'location', 'uule' or 'pages', since the URL already determines them. It may carry only these query parameters, which are kept: 'q', 'gl', 'num' (treated as result depth), 'hl' and 'uule'; a URL with any other (such as 'start', 'tbs' or 'safe') is refused with a 400. Without 'uule', the search is localized to the requested country. A URL containing 'tbm' is refused: it points at a Google vertical that has a separate endpoint and price (for tbm=nws, call POST /v1/monitor/google/news).

country string

Country for localized search results, as an ISO 3166-1 alpha-2 code. Mandatory in the standard request form. If you send 'url' instead, the country is taken from the URL's 'gl' parameter; set it yourself to override that value, or when the URL carries no 'gl'.

gl string

Google's own name for the result-geography parameter, usable in place of country. Takes ISO 3166-1 alpha-2 codes, as country does, in upper or lower case (us or US), and the country has to be one this endpoint supports (list them with GET /v1/countries; Google News has no model value there, and its edition countries are listed at https://answerline.dev/docs/coverage#countries). Send either country or gl; if both are sent with differing values, the request fails with 400.

state string

US state code (e.g. "CA", "DC" included). Sent without a country, the request asks for the US; sent with any country other than "US", it is refused with a 400, uncharged. ChatGPT and Gemini answer as a person in that state sees it; every other engine accepts it and answers for the whole US, at the price of a request without it. provenance.requestedState reports the state asked. See https://answerline.dev/docs/coverage#states

hl string

Interface language, in the format of Google's hl parameter (for example en, de, pt-BR). Case-insensitive free text; Google defines which codes exist. Takes precedence over the language Answerline infers from the country, which lets interface language and result geography differ.

location string

Location name in Google's canonical comma-separated form 'City,Region,Country' (roughly 100,000 accepted locations are listed at https://developers.google.com/google-ads/api/reference/data/geotargets). Combine with 'country' to target a specific city. Cannot be sent together with 'uule'; choose one of the two. Not allowed when 'url' is set.

uule string

A ready-made Google UULE string for exact geo-targeting, in the location-name form (starting w+CAIQICI); the coordinate form (a+) is refused with a 400. Supply it when you already have an encoded UULE rather than a location name. Cannot be sent together with 'location'; pass only one of the two. Not allowed together with 'url'; in that case add 'uule' to the URL's query string.

device "desktop" | "mobile" | "ios" | "android"

Device to run the search on. 'desktop' gives the desktop SERP, while 'ios' (Safari on an iPhone), 'android' (Chrome on an Android phone) and 'mobile' (same as 'android') each give the mobile SERP.

pages integer

How many pages of search results to retrieve (1-10). Not allowed together with 'url': when 'url' is given, depth is taken from the URL's 'num' parameter (rounded up to full 10-result pages, at most 10 pages).

include object

Flags that add extra data to the response (optional)

6 properties
include.html boolean

A copy of each Google results page as it was when the answer was captured, stored on our file host and linked in html, to check the answer against. No extra cost.

include.aioverview object

Add Google's AI Overview to the response

include.paaAioverview boolean

Fill People Also Ask items of the AI Overview type with markdown content and their sources. Free: only include.aioverview is billed, as the AI Overview add-on. Every hydrated item needs one more fetch (usually 1-2 on a page), which makes responses slower.

include.googleGoto boolean

Has had no effect since 8th September 2026. Each redirect link is now always returned as redirectLink next to its target, so you get both without setting this flag. Requests that still include it are handled as though it were omitted.

include.rawWire boolean

Return the engine's own response as received in result.rawWire: the answer stream, the rendered results pages or the RSS feed, without Gemini's detected location or ChatGPT's session tokens; null where it was not captured. Free. See https://answerline.dev/docs/output-formats#raw-wire

include.screenshot boolean

Return a full-page PNG screenshot of the engine's page as it showed the finished answer, in result.screenshot: a link, or one link per results page on Google Search. On ChatGPT, Gemini, AI Mode, Google Search, Perplexity and Grok; other engines refuse it with a 400. Absent when the answer was read without a rendered page or its page was not available. Free. See https://answerline.dev/docs/output-formats#screenshots

answerDepth "any" | "full" | "quick"

Accepted so existing requests stay valid; it does not change the answer or the price. Every engine writes one depth: Perplexity answers every request with its Quick Search answer, and provenance.answerDepth says quick. See https://answerline.dev/docs/engine-features/#answer-depth

Returns

result.organicResults object[]

Google organic results

result.peopleAlsoAsk object[]

Google's "People also ask" questions

result.peopleAreSaying object[]

Items from the Google results module titled "What people are saying" or "Trending posts and discussions". When the page has no such module, result leaves this field out instead of returning an empty array, so treat it as optional.

result.localResults object[]

Businesses in Google's local pack (the map-based "3-pack" of nearby businesses shown for local-intent searches, e.g. "best ramen in seattle"). If the SERP has no local pack, result does not contain this field at all, so treat it as optional instead of relying on an empty array. Applies to desktop only; neither the mobile layout nor the hotels/travel pack (a separate panel) is returned.

result.localResultsMoreLink string

Full URL of the "More places" / "More businesses" control shown under the local pack; it opens Google's larger Local Finder for this query. Present only together with localResults, and only if the SERP shows that control.

result.relatedSearches object[]

Suggested related searches

result.ads object[]

Sponsored results in Google search: text ads (type: RESULT), plus sponsored shopping cards (type: SHOPPING_CARD) drawn from the carousels at the top of the page and in the right-hand column.

result.aioverview object

Data from Google's AI Overview, when requested; null if no AI Overview could be obtained after retrying.

result.shoppingCards object[]

Product cards taken from the organic shopping grids on the results page ("Popular products" / "More products"). When the page has no shopping section, result does not include this field at all, so clients should handle it as optional instead of relying on an empty array. The shape reuses field names from shopping_cards in AI Mode for consistency across endpoints, but its keys are camelCase (productLink, oldPrice) in the Google response.

result.knowledgeGraph object

Knowledge Graph panel Google shows for the entity in the query. Not included in result if the results page has no such panel. Handle the field as optional: it is not sent as null.

30 properties
result.knowledgeGraph.title string

Name of the entity from the panel's heading

result.knowledgeGraph.type string

Category label for the entity exactly as Google shows it (for instance "British singer", "Italian cathedral"). Any string is possible; it is not an enum.

result.knowledgeGraph.kgmid string

The entity's ID in the Google Knowledge Graph

result.knowledgeGraph.description string

Brief summary of the entity (can come from Wikipedia or from Google's knowledge base)

result.knowledgeGraph.imageUrl string

Image URL for the entity, as Google delivers it

result.knowledgeGraph.website string

The entity's official website URL

result.knowledgeGraph.menu string

Link to the menu (given for restaurants and other food businesses)

result.knowledgeGraph.trailer string

Link to the trailer; included for movies and TV series

result.knowledgeGraph.source object

Where the entity description comes from (usually Wikipedia)

result.knowledgeGraph.attributes object[]

Facts from the panel as key-value pairs (such as founded, headquarters, CEO). Keys are arbitrary strings, taken as Google shows them.

result.knowledgeGraph.profiles object[]

Links to the entity's social media and other external profiles

result.knowledgeGraph.peopleAlsoSearchFor object[]

Other entities people search for alongside this one

result.knowledgeGraph.thingsToKnow object[]

Topic groups parsed from the "Things to know" panel

result.knowledgeGraph.ratings object[]

Ratings from review platforms (e.g. Rotten Tomatoes, IMDb); included for movies and TV series

result.knowledgeGraph.streamingOptions object[]

Links to streaming platforms for movies and TV series

result.knowledgeGraph.webRatings object[]

Ratings collected from online review sites; included when the result is a local business (such as Google, Tripadvisor, Yelp)

result.knowledgeGraph.statsCard object

Card with statistics; included for entities such as sports teams and organizations

result.knowledgeGraph.socialPosts object[]

Latest social media posts published by the entity's official accounts

result.knowledgeGraph.notableAlumni object[]

Well-known alumni (given for universities and other educational institutions)

result.knowledgeGraph.contact object[]

Links for contacting or ordering; included for local businesses

result.knowledgeGraph.weather object

Weather right now; included for geographic entities such as cities and regions

result.knowledgeGraph.rating object

Overall star rating; included for local businesses

result.knowledgeGraph.admission object[]

Ticket choices; included for museums, parks and other venues that charge entry

result.knowledgeGraph.artworks object[]

Well-known artworks (given for artists and for art institutions)

result.knowledgeGraph.has3dModel boolean

True if Google offers an interactive 3D view of the entity

result.knowledgeGraph.hotelOptions object[]

Options for booking the hotel, only for hotel entities

result.knowledgeGraph.trendingProducts object[]

Products currently trending; included for retail brands

result.knowledgeGraph.merchantVideos object[]

Videos from the merchant or brand (given for retail businesses)

result.knowledgeGraph.listenOn object[]

Links to music streaming services (given for musicians and bands)

result.knowledgeGraph.redirectLink string

The /goto redirect Google used for this link, given in the absolute form that POST /v1/monitor/google/goto takes. Only set when Google delivered the link through a redirect; the neighbouring link field contains the destination Answerline reached by following it.

result.html string[]

Present when include.html is true: the links to the stored copy of each results page, in page order.

result.screenshot string[]

Present when include.screenshot is true and the pages were rendered: the links to the PNG screenshot of each results page, in page order.

result.recipes object[]

The cards of Google's Recipes carousel, in the order shown. Absent when the page shows none.

result.videos object[]

Cards of Google's Videos and Short videos blocks

result.images object[]

Pictures of Google's Images block

result.spelling object

The query Google corrected the search to, when it shows a correction above the results

2 properties
result.spelling.query string

The corrected query

result.spelling.type "DID_YOU_MEAN" | "SHOWING_RESULTS_FOR" | "INCLUDING_RESULTS_FOR" | "NO_RESULTS_FOUND_FOR"

How Google showed it: "Did you mean", "Showing results for", "Including results for" or "No results found for"

Responses

200
Google monitoring result (success)
400
Bad Request - one or more parameters are not valid
401
Unauthorized - API key absent or not valid
403
Forbidden - INSUFFICIENT_CREDITS: the balance does not cover this request
404
Not Found - No such route, or the engine is paused
409
Conflict - the resource is in a conflicting state
429
Too Many Requests - the call could not start now (CONCURRENT_LIMIT_EXCEEDED), or the service dropped the request because it was overloaded (SERVICE_OVERLOADED); that case returns Retry-After without any limit headers. RATE_LIMIT_EXCEEDED, with Retry-After, is sent only when one address presented too many unknown keys
499
Client Closed Request - the client cancelled the request
500
Internal Server Error
502
Bad Gateway - the engine failed

Error codes and retries