Google Search API
Structured Google results: organic listings, ads, People Also Ask, knowledge graph, local pack and the AI Overview.
Coming soon. The endpoint and fields below are the documented contract; requests are not accepted yet.
Price
3 credits per async request, 5 synchronous.
Endpoint
POST /v1/monitor/google
Request
curl -X POST "https://api.answerline.dev/v1/monitor/google" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"project management software","country":"US","location":"Austin,Texas,United States","include":{"aioverview":{"markdown":true}}}' Request options
| Field | Type | Description |
|---|---|---|
query | string | The search query to execute on Google. Required unless you supply 'url' instead — the two are mutually exclusive. |
url | string | A complete Google web search URL to run instead of building the request from 'query' and the targeting fields. Must be an absolute http(s) URL on a Google web search host (google.com, google.co.uk, www.google.de, ...), with the path '/search' and a non-empty 'q'. Mutually exclusive with 'query', 'location', 'uule' and 'pages' — the URL owns those values. answerline applies a fixed set of query parameters — 'q', 'gl', 'hl', 'uule', 'num' (read as result depth), 'start', 'tbs' and 'safe' — and drops anything else. URLs carrying 'tbm' are rejected, because they target a Google vertical with its own endpoint and pricing (use POST /v1/monitor/google/news for tbm=nws). |
country | string | ISO 3166-1 alpha-2 country code for localized search results. Required in the standard request shape. When you supply 'url' instead, country is derived from the URL's 'gl' — pass it explicitly to override that, or when the URL has no 'gl'. |
gl | string | Alternative to `country`, using Google's own parameter name for the result geography. Same ISO 3166-1 alpha-2 codes, accepted in either case (`us` or `US`), and must be a country the endpoint supports — see `GET /v1/countries`. Provide `country` or `gl`; sending both with different values is a `400`. |
hl | string | Interface language, as Google's own `hl` parameter (e.g. `en`, `de`, `pt-BR`). Free-form and case-insensitive — Google owns the list of codes. Overrides the language answerline derives from the country, so the interface language and the result geography can differ. |
location | string | Google canonical location name for geo-targeted results, in comma-separated format: 'City,Region,Country' (see https://developers.google.com/google-ads/api/reference/data/geotargets for all ~100,000 supported locations). Use alongside 'country' for city-level precision. Mutually exclusive with 'uule' — provide one or the other, not both. Cannot be combined with 'url'. |
uule | string | Pre-encoded Google UULE string for precise geo-targeting. Use this when you have a pre-built UULE value instead of a location name. Mutually exclusive with 'location' — provide one or the other, not both. Cannot be combined with 'url'; put 'uule' in the URL's query string instead. |
device | "desktop" | "mobile" | "ios" | "android" | Device the search is run from. 'desktop' returns the desktop SERP; 'ios' (Safari on iPhone), 'android' (Chrome on Android) and 'mobile' (alias for 'android') all return the mobile SERP. |
pages | integer | Number of search results pages to scrape (1-10). Cannot be combined with 'url' — in that shape, depth comes from the URL's 'num' (rounded up to whole pages of 10, capped at 10 pages). |
include | object | Optional flags for including additional response data |
include.html | boolean | Include raw HTML response from Google search |
include.aioverview | object | Include Google AI Overview in the response |
include.paaAioverview | boolean | Hydrate AI-Overview-type People Also Ask items with markdown content and sources. No additional credit cost beyond the +2 AI Overview add-on; each hydrated item adds one scraper fetch (typically 1-2 per page), so responses take longer. |
include.googleGoto | boolean | Ignored since 8th September 2026. Every redirect link now ships as `redirectLink` beside its destination, so both are returned without this flag. Requests still sending it behave as if it were absent. |
What you get back
Field in result | Type | Description |
|---|---|---|
organicResults | object[] | Organic search results from Google |
ads | object[] | Sponsored ad results from Google search, including text ads (`type: RESULT`) and shopping-style sponsored cards (`type: SHOPPING_CARD`) from the right-hand-side and top-of-page carousels. |
peopleAlsoAsk | object[] | People Also Ask questions from Google |
peopleAreSaying | object[] | Cards from Google's "What people are saying" / "Trending posts and discussions" SERP module. The field is omitted from `result` when no such module appears on the SERP, so clients should treat it as optional rather than expecting an empty array. |
relatedSearches | object[] | Related search suggestions |
knowledgeGraph | object | Google's Knowledge Graph panel for the queried entity. Omitted from `result` when no Knowledge Graph panel appears on the SERP — treat it as optional rather than expecting null. |
localResults | object[] | Places from Google's local pack (the map-backed "3-pack" of local businesses on local-intent queries, e.g. "best pizza in new york city"). The field is omitted from `result` when no local pack appears on the SERP, so clients should treat it as optional rather than expecting an empty array. Desktop only; mobile and the separate hotels/travel pack are not surfaced. |
shoppingCards | object[] | Shopping product cards extracted from the SERP's organic shopping grids ("Popular products" / "More products"). The field is omitted from `result` when no shopping section is present, so clients should treat it as optional rather than expecting an empty array. Wire shape borrows fields from AI Mode's `shopping_cards` for cross-API familiarity but uses camelCase keys (`productLink`, `oldPrice`) emitted by the Google mapper. |
aioverview | object | Google AI Overview data (if requested). Returns null when AI Overview is not available after retries. |