answerline-dev · Schema

GoogleMonitorResponse

AIVisibilityMarketingAnalyticsAPI

Properties

Name Type Description
success boolean
result object Results returned by Google Search
View JSON Schema on GitHub

JSON Schema

answerline-dev-google-monitor-response-schema.json Raw ↑
{
  "$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.
All 92 tools →

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.