Properties
| Name | Type | Description |
|---|---|---|
| success | boolean | |
| result | object | Results returned by Google Search |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/answerline-dev/json-schema/answerline-dev-google-monitor-response-schema.json",
"title": "GoogleMonitorResponse",
"x-generated": "2026-10-30",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/answerline-dev-openapi.json#/components/schemas/GoogleMonitorResponse",
"required": [
"success",
"result"
],
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"result": {
"description": "Results returned by Google Search",
"type": "object",
"properties": {
"organicResults": {
"type": "array",
"description": "Google organic results",
"items": {
"type": "object",
"properties": {
"position": {
"type": "number",
"description": "Rank among search results (1-indexed)"
},
"title": {
"type": "string",
"description": "Search result title"
},
"link": {
"type": "string",
"description": "Link to the search result"
},
"displayedLink": {
"type": "string",
"description": "URL in the form shown on the results page"
},
"snippet": {
"type": "string",
"description": "Short text summarizing what the page contains"
},
"date": {
"type": "string",
"description": "Date of publication, if known"
},
"page": {
"type": "number",
"description": "Results page this item was found on (1-indexed)"
},
"sitelinks": {
"type": "object",
"description": "Sitelinks shown beneath the main result",
"properties": {
"inline": {
"type": "array",
"description": "Inline sitelinks",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"link": {
"type": "string"
},
"redirectLink": {
"type": "string",
"description": "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."
}
}
}
}
}
},
"redirectLink": {
"type": "string",
"description": "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."
}
}
}
},
"peopleAlsoAsk": {
"type": "array",
"description": "Google's \"People also ask\" questions",
"items": {
"type": "object",
"properties": {
"question": {
"type": "string",
"description": "Text of the question"
},
"type": {
"type": "string",
"enum": [
"AIOVERVIEW",
"LINK",
"UNKNOWN"
],
"description": "Kind of question result"
},
"snippet": {
"type": "string",
"description": "Short excerpt of the answer (LINK type)"
},
"title": {
"type": "string",
"description": "Title of the result (only for type LINK)"
},
"link": {
"type": "string",
"description": "Result link URL (only for type LINK)"
},
"markdown": {
"type": "string",
"description": "Markdown of the AI Overview (AIOVERVIEW type only, when include.paaAioverview is true)"
},
"sources": {
"type": "array",
"description": "Sources the answer cites; present for the AIOVERVIEW type if include.paaAioverview is true",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Source title"
},
"url": {
"type": "string",
"description": "Link to the source"
},
"description": {
"type": "string",
"description": "Text describing the source"
},
"position": {
"type": "number",
"description": "Rank of the source (1-indexed)"
},
"redirectLink": {
"type": "string",
"description": "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."
}
}
}
},
"redirectLink": {
"type": "string",
"description": "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."
}
}
}
},
"peopleAreSaying": {
"type": "array",
"description": "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.",
"items": {
"type": "object",
"required": [
"position",
"title",
"link",
"date"
],
"properties": {
"position": {
"type": "number",
"description": "Rank inside the module (1-indexed)"
},
"title": {
"type": "string",
"description": "Title of the card as it appears on the results page"
},
"link": {
"type": "string",
"description": "URL the card links to, frequently a thread on Reddit, Quora or another community forum"
},
"date": {
"type": "string",
"description": "Relative time exactly as Google printed it (for example \"3 hours ago\", \"1 month ago\"). Unstructured text; not converted into a timestamp."
},
"redirectLink": {
"type": "string",
"description": "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."
}
}
}
},
"localResults": {
"type": "array",
"description": "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.",
"items": {
"type": "object",
"required": [
"position",
"title"
],
"properties": {
"position": {
"type": "number",
"description": "Rank inside the pack (1-indexed)"
},
"title": {
"type": "string",
"description": "Name of the business as the SERP shows it"
},
"placeId": {
"type": "string",
"description": "The place's entity identifier in Google"
},
"rating": {
"type": "number",
"description": "Mean star rating (0–5)"
},
"reviews": {
"type": "string",
"description": "Number of reviews exactly as Google shows it (e.g. \"26K\"). Arbitrary text, not converted to a number."
},
"price": {
"type": "string",
"description": "Price range as Google shows it (e.g. \"$20–30\"). The currency symbol follows the locale."
},
"type": {
"type": "string",
"description": "Category of the business (for example \"Bakery\", \"Electrician\")"
},
"yearsInBusiness": {
"type": "string",
"description": "Badge showing how long the business has operated, if displayed (common in service-type packs)"
},
"address": {
"type": "string",
"description": "Street address or locality exactly as the results page shows it"
},
"phone": {
"type": "string",
"description": "Phone number in local format, if shown"
},
"hours": {
"type": "string",
"description": "Opening hours exactly as shown (e.g. \"Open · Closes 10 PM\", \"Open 24 hours\")"
},
"description": {
"type": "string",
"description": "Snippet shown at the end: either a quoted review or a line listing service options"
},
"links": {
"type": "object",
"description": "Action links displayed for the place. They usually appear in packs of service businesses (plumbers, salons, …) and are missing from restaurant packs, where each place is just a plain button. A key is included only if Google showed the corresponding button.",
"properties": {
"website": {
"type": "string",
"description": "Website address of the business itself"
},
"directions": {
"type": "string",
"description": "Full URL for directions in Google Maps"
},
"redirectLink": {
"type": "string",
"description": "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."
}
}
}
}
}
},
"localResultsMoreLink": {
"type": "string",
"description": "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."
},
"relatedSearches": {
"type": "array",
"description": "Suggested related searches",
"items": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "A related search query"
},
"link": {
"type": "string",
"description": "URL of the Google results page for this related search"
}
}
}
},
"ads": {
"type": "array",
"description": "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.",
"items": {
"type": "object",
"properties": {
"position": {
"type": "number",
"description": "Rank inside the ad block (1-indexed)"
},
"blockPosition": {
"type": "string",
"enum": [
"top",
"bottom",
"middle",
"rhs"
],
"description": "Placement of the ad on the results page. `top`/`bottom` denote text-ad blocks, `middle` means direct or in-content ads, and `rhs` means the sponsored-products carousel on the right-hand side."
},
"type": {
"type": "string",
"enum": [
"RESULT",
"SHOPPING_CARD"
],
"description": "Tells plain text ads (`RESULT`) apart from sponsored shopping-style cards (`SHOPPING_CARD`). Shopping cards come from the PLA carousel on the right-hand side, the PLA carousel at the top of the page, and the sponsored shopping-card carousels at the top of the page (vehicles, products, hotels, …)."
},
"title": {
"type": "string",
"description": "Ad title"
},
"url": {
"type": "string",
"format": "uri",
"description": "URL the ad leads to. On `type: SHOPPING_CARD` items it is a URL that Google redirects through `aclk?`."
},
"page": {
"type": "number",
"description": "Results page on which the ad appeared"
},
"displayedUrl": {
"type": "string",
"description": "URL in the form shown in the ad"
},
"domain": {
"type": "string",
"description": "Advertiser's domain name"
},
"description": {
"type": "string",
"description": "Body copy of the ad. On `type: RESULT` items it is ordinary ad text. On `type: SHOPPING_CARD` items it holds subtitle pieces that depend on the category, separated by `·` (for instance vehicle condition plus city: `Used - 94k miles · Greeley`)."
},
"category": {
"type": "string",
"description": "Heading shown above the carousel that holds shopping-card ads; values seen at present include `Sponsored products`, `Sponsored vehicles` and `Sponsored hotels`. Not set on text ads (`type: RESULT`)."
},
"price": {
"type": "object",
"description": "Price of the product on ads whose type is `SHOPPING_CARD`. `value` and `currency` are filled in only if the displayed price string can be read unambiguously as a number plus a symbol. `raw` holds the displayed text exactly as shown (e.g. `\"$0 down with 24 monthly payments\"` for installment offers), letting consumers tell a real zero price apart from a down-payment label.",
"properties": {
"value": {
"type": [
"number",
"null"
],
"description": "Price as a number"
},
"currency": {
"type": [
"string",
"null"
],
"description": "Currency symbol"
},
"raw": {
"type": [
"string",
"null"
],
"description": "Price text exactly as displayed"
}
}
},
"oldPrice": {
"type": "object",
"description": "Pre-sale price for ads of `type: SHOPPING_CARD` showing MSRP or sale wording. Uses the same shape as `price`.",
"properties": {
"value": {
"type": [
"number",
"null"
],
"description": "Price as a number"
},
"currency": {
"type": [
"string",
"null"
],
"description": "Currency symbol"
},
"raw": {
"type": [
"string",
"null"
],
"description": "Price text exactly as displayed"
}
}
},
"store": {
"type": "string",
"description": "Name of the merchant or dealer on a `type: SHOPPING_CARD` ad."
},
"imageUrl": {
"type": "string",
"format": "uri",
"description": "URL of the main image for `type: SHOPPING_CARD` ads, hosted on Google's `encrypted-tbn` CDN. Left out when the lazy-loaded image chain yields only a placeholder."
},
"sitelinks": {
"type": "array",
"description": "Sitelinks shown beneath the ad",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Sitelink URL"
},
"title": {
"type": "string",
"description": "Sitelink title"
},
"description": {
"type": "string",
"description": "Sitelink description"
}
}
}
}
}
}
},
"aioverview": {
"oneOf": [
{
"type": "object"
},
{
"type": "null"
}
],
"description": "Data from Google's AI Overview, when requested; null if no AI Overview could be obtained after retrying.",
"properties": {
"sources": {
"type": "array",
"description": "Sources the AI Overview cites",
"items": {
"type": "object",
"properties": {
"position": {
"type": "number",
"description": "Position of the source, counting from 1"
},
"url": {
"type": "string",
"description": "Source URL"
},
"label": {
"type": "string",
"description": "Title of the source (the label Google shows on the sources rail)"
},
"description": {
"type": "string",
"description": "Snippet or description of the source"
},
"redirectLink": {
"type": "string",
"description": "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."
}
}
}
},
"citationPills": {
"type": "array",
"description": "Citation pills that appear inline in the AI Overview answer. Every element pairs one pill with one source: a pill backed by N sources (Google's `[Label +N]` chips) yields N elements with the same `citationPillId`, each holding that source's own `label`, `url` and `domain`. Grouping by `citationPillId` rebuilds the pills. Not present in `result.aioverview` if the answer has no pills.",
"items": {
"type": "object",
"required": [
"label",
"citationPillId",
"url",
"domain",
"position"
],
"properties": {
"label": {
"type": "string",
"description": "Title of this individual source as shown in the sources rail (e.g. `\"Chase Personal Credit Cards\"`). Empty string if the rail gives no title for it; then identify the source by `domain` / `url`. Entries that share a `citationPillId` each have their own per-source label."
},
"citationPillId": {
"type": "integer",
"description": "One-based number common to every entry that comes from one chip. Grouping on `citationPillId` rebuilds the chip as displayed; each entry's `label` is specific to its source, so it varies inside a chip."
},
"url": {
"type": "string",
"description": "Link straight to the cited source."
},
"domain": {
"type": "string",
"description": "Hostname taken from `url`, useful for grouping and display."
},
"description": {
"type": "string",
"description": "Source snippet shown in the sources rail, if Google supplies one; omitted when the source has no snippet."
},
"position": {
"type": "integer",
"description": "Index of this source within the sibling `result.aioverview.sources` array, starting at 1."
},
"redirectLink": {
"type": "string",
"description": "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."
}
}
}
},
"relatedLinks": {
"type": "array",
"description": "Items in the \"View related links\" flyout of a citation chip: URLs that Google files under the chip but that do NOT appear in the `sources` rail (a comparison link to Google Shopping, for instance). Every entry has its chip's `citationPillId`, so it can be matched with the `citationPills` of that chip; it has no `position`, since a related link is not part of `sources`. Because these links are also rendered inline in `markdown`, `markdown` can list URLs beyond those in `sources` / `citationPills`; this array accounts for the extra ones. Not present in `result.aioverview` if none of the chips has related links.",
"items": {
"type": "object",
"required": [
"label",
"citationPillId",
"url",
"domain"
],
"properties": {
"label": {
"type": "string",
"description": "Title taken from the related page itself. If Google provides no title this is an empty string; use `domain` / `url` to identify the page instead."
},
"citationPillId": {
"type": "integer",
"description": "Same value as `citationPillId` on the chip's `citationPills` entries, which lets you attach a related link to its pill."
},
"url": {
"type": "string",
"description": "URL the related link points to directly."
},
"domain": {
"type": "string",
"description": "Hostname taken from `url`, useful for grouping and display."
},
"description": {
"type": "string",
"description": "Snippet that Google provides for the related link; left out when missing."
},
"redirectLink": {
"type": "string",
"description": "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."
}
}
}
},
"text": {
"type": "string",
"description": "Plain text of the AI Overview"
},
"markdown": {
"type": "string",
"description": "The AI Overview rendered as markdown (only when requested)"
},
"videos": {
"type": "array",
"description": "Videos shown inside the AI Overview",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Link straight to the video"
},
"title": {
"type": "string",
"description": "Video title"
},
"thumbnail": {
"type": "string",
"format": "uri",
"description": "URL of the thumbnail image"
},
"source": {
"type": "string",
"description": "Name of the channel or source"
},
"platform": {
"type": "string",
"description": "Video platform"
},
"date": {
"type": "string",
"description": "Upload date"
},
"duration": {
"type": "string",
"description": "Video duration"
},
"redirectLink": {
"type": "string",
"description": "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."
}
}
}
},
"ads": {
"type": "array",
"description": "Paid ads that Google places inside the AI Overview",
"items": {
"type": "object",
"required": [
"position",
"title",
"url",
"type"
],
"properties": {
"position": {
"type": "number",
"description": "Rank of the ad (1-indexed)"
},
"title": {
"type": "string",
"description": "Ad title"
},
"url": {
"type": "string",
"description": "Landing page URL of the ad"
},
"type": {
"type": "string",
"enum": [
"TEXT",
"SHOPPING"
],
"description": "Sub-type discriminator, always present. TEXT ads include `domain` and `description`; SHOPPING ads include `price` and `store` (and optionally `old_price`)."
},
"domain": {
"type": "string",
"description": "Advertiser's domain name; set if `type` is `TEXT`"
},
"description": {
"type": "string",
"description": "Body copy of the ad (only when `type` is `TEXT`)"
},
"price": {
"type": "object",
"description": "Price of the product (given when `type` equals `SHOPPING`). `value` and `currency` are filled in only if the displayed price string can be read unambiguously as a number plus a symbol; `raw` holds the displayed text exactly as shown.",
"properties": {
"value": {
"type": [
"number",
"null"
],
"description": "Price as a number"
},
"currency": {
"type": [
"string",
"null"
],
"description": "Currency symbol"
},
"raw": {
"type": [
"string",
"null"
],
"description": "Price text exactly as displayed"
}
}
},
"old_price": {
"type": "object",
"description": "Pre-sale price; included for ads whose `type` is `SHOPPING` if they carry sale pricing. Uses the same shape as `price`.",
"properties": {
"value": {
"type": [
"number",
"null"
],
"description": "Price as a number"
},
"currency": {
"type": [
"string",
"null"
],
"description": "Currency symbol"
},
"raw": {
"type": [
"string",
"null"
],
"description": "Price text exactly as displayed"
}
}
},
"store": {
"type": "string",
"description": "Retailer's name; included when `type` equals `SHOPPING`"
},
"image": {
"type": "string",
"description": "URL of the ad's image (the product photo on shopping ads, the hero image on text ads)"
}
}
}
}
}
},
"shoppingCards": {
"type": "array",
"description": "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
# --- truncated at 32 KB (60 KB total) ---
# Full source: https://artifacts.apis.io/answerline-dev/json-schema/answerline-dev-google-monitor-response-schema.json
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/answerline-dev-google-monitor-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.