cloro · Schema

GoogleMonitorResponse

CompanySearchAIWeb ScrapingSERPGenerative Engine OptimizationSEOBrand MonitoringMarket ResearchData ExtractionMCP

Properties

Name Type Description
success boolean
result object Google search results data
View JSON Schema on GitHub

JSON Schema

cloro-dev-google-monitor-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/cloro-dev/main/json-schema/cloro-dev-google-monitor-response-schema.json",
  "title": "GoogleMonitorResponse",
  "x-generated": "2026-10-07",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/cloro-dev-openapi.yml#/components/schemas/GoogleMonitorResponse",
  "required": [
    "success",
    "result"
  ],
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "result": {
      "description": "Google search results data",
      "type": "object",
      "properties": {
        "organicResults": {
          "type": "array",
          "description": "Organic search results from Google",
          "items": {
            "type": "object",
            "properties": {
              "position": {
                "type": "number",
                "description": "Position in search results (1-indexed)"
              },
              "title": {
                "type": "string",
                "description": "Title of the search result"
              },
              "link": {
                "type": "string",
                "description": "URL of the search result"
              },
              "displayedLink": {
                "type": "string",
                "description": "Formatted URL as displayed in search results"
              },
              "snippet": {
                "type": "string",
                "description": "Text snippet describing the page content"
              },
              "date": {
                "type": "string",
                "description": "Publication date if available"
              },
              "page": {
                "type": "number",
                "description": "Page number this result appeared on (1-indexed)"
              },
              "sitelinks": {
                "type": "object",
                "description": "Sitelinks displayed under the main result",
                "properties": {
                  "inline": {
                    "type": "array",
                    "description": "Inline sitelinks",
                    "items": {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string"
                        },
                        "link": {
                          "type": "string"
                        },
                        "redirectLink": {
                          "type": "string",
                          "description": "Google's `/goto` redirect for this link, in the absolute form `POST /v1/monitor/google/goto` accepts. Present only when Google served the link as a redirect — the sibling link field holds the destination cloro resolved it to."
                        }
                      }
                    }
                  }
                }
              },
              "redirectLink": {
                "type": "string",
                "description": "Google's `/goto` redirect for this link, in the absolute form `POST /v1/monitor/google/goto` accepts. Present only when Google served the link as a redirect — the sibling link field holds the destination cloro resolved it to."
              }
            }
          }
        },
        "peopleAlsoAsk": {
          "type": "array",
          "description": "People Also Ask questions from Google",
          "items": {
            "type": "object",
            "properties": {
              "question": {
                "type": "string",
                "description": "The question text"
              },
              "type": {
                "type": "string",
                "enum": [
                  "AIOVERVIEW",
                  "LINK",
                  "UNKNOWN"
                ],
                "description": "Type of question result"
              },
              "snippet": {
                "type": "string",
                "description": "Answer snippet (for LINK type)"
              },
              "title": {
                "type": "string",
                "description": "Result title (for LINK type)"
              },
              "link": {
                "type": "string",
                "description": "Result URL (for LINK type)"
              },
              "markdown": {
                "type": "string",
                "description": "AI Overview markdown content (for AIOVERVIEW type, when include.paaAioverview is true)"
              },
              "sources": {
                "type": "array",
                "description": "Cited sources (for AIOVERVIEW type, when include.paaAioverview is true)",
                "items": {
                  "type": "object",
                  "properties": {
                    "label": {
                      "type": "string",
                      "description": "Title of the source"
                    },
                    "url": {
                      "type": "string",
                      "description": "URL of the source"
                    },
                    "description": {
                      "type": "string",
                      "description": "Description of the source"
                    },
                    "position": {
                      "type": "number",
                      "description": "Position of source (1-indexed)"
                    },
                    "redirectLink": {
                      "type": "string",
                      "description": "Google's `/goto` redirect for this link, in the absolute form `POST /v1/monitor/google/goto` accepts. Present only when Google served the link as a redirect — the sibling link field holds the destination cloro resolved it to."
                    }
                  }
                }
              },
              "redirectLink": {
                "type": "string",
                "description": "Google's `/goto` redirect for this link, in the absolute form `POST /v1/monitor/google/goto` accepts. Present only when Google served the link as a redirect — the sibling link field holds the destination cloro resolved it to."
              }
            }
          }
        },
        "peopleAreSaying": {
          "type": "array",
          "description": "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.",
          "items": {
            "type": "object",
            "required": [
              "position",
              "title",
              "link",
              "date"
            ],
            "properties": {
              "position": {
                "type": "number",
                "description": "Position within the module (1-indexed)"
              },
              "title": {
                "type": "string",
                "description": "Card title as displayed on the SERP"
              },
              "link": {
                "type": "string",
                "description": "Destination URL the card points to (often a Reddit, Quora, or community forum thread)"
              },
              "date": {
                "type": "string",
                "description": "Google's raw relative-time text (e.g., \"5 days ago\", \"2 weeks ago\"). Free-form string — not normalized to a timestamp."
              },
              "redirectLink": {
                "type": "string",
                "description": "Google's `/goto` redirect for this link, in the absolute form `POST /v1/monitor/google/goto` accepts. Present only when Google served the link as a redirect — the sibling link field holds the destination cloro resolved it to."
              }
            }
          }
        },
        "localResults": {
          "type": "array",
          "description": "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.",
          "items": {
            "type": "object",
            "required": [
              "position",
              "title"
            ],
            "properties": {
              "position": {
                "type": "number",
                "description": "Position within the pack (1-indexed)"
              },
              "title": {
                "type": "string",
                "description": "Business name as displayed on the SERP"
              },
              "placeId": {
                "type": "string",
                "description": "Google entity id for the place"
              },
              "rating": {
                "type": "number",
                "description": "Average star rating (0–5)"
              },
              "reviews": {
                "type": "string",
                "description": "Review count as displayed by Google (e.g. \"26K\"). Free-form string — not normalized to a number."
              },
              "price": {
                "type": "string",
                "description": "Price band as displayed by Google (e.g. \"$10–20\"). Currency symbol matches the locale."
              },
              "type": {
                "type": "string",
                "description": "Business category (e.g. \"Pizza\", \"Plumber\")"
              },
              "yearsInBusiness": {
                "type": "string",
                "description": "Years-in-business badge, when shown (typical on service-style packs)"
              },
              "address": {
                "type": "string",
                "description": "Street address or locality as displayed on the SERP"
              },
              "phone": {
                "type": "string",
                "description": "Phone number, when shown (locale-formatted)"
              },
              "hours": {
                "type": "string",
                "description": "Opening-hours text as displayed (e.g. \"Open · Closes 11 PM\", \"Open 24 hours\")"
              },
              "description": {
                "type": "string",
                "description": "Trailing snippet — a review quote or a service-options line"
              },
              "links": {
                "type": "object",
                "description": "Action links rendered on the place, typically on business/service-style packs (plumbers, salons, …) and absent on restaurant packs whose places are plain buttons. Each key is present only when Google rendered that button.",
                "properties": {
                  "website": {
                    "type": "string",
                    "description": "The business's own website URL"
                  },
                  "directions": {
                    "type": "string",
                    "description": "Absolute Google Maps directions URL"
                  },
                  "redirectLink": {
                    "type": "string",
                    "description": "Google's `/goto` redirect for this link, in the absolute form `POST /v1/monitor/google/goto` accepts. Present only when Google served the link as a redirect — the sibling link field holds the destination cloro resolved it to."
                  }
                }
              }
            }
          }
        },
        "localResultsMoreLink": {
          "type": "string",
          "description": "Absolute URL of the local pack's \"More places\" / \"More businesses\" control — Google's expanded Local Finder for the query. Returned only alongside `localResults` when the SERP renders the control."
        },
        "relatedSearches": {
          "type": "array",
          "description": "Related search suggestions",
          "items": {
            "type": "object",
            "properties": {
              "query": {
                "type": "string",
                "description": "Related search query"
              },
              "link": {
                "type": "string",
                "description": "Google search URL for the related query"
              }
            }
          }
        },
        "ads": {
          "type": "array",
          "description": "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.",
          "items": {
            "type": "object",
            "properties": {
              "position": {
                "type": "number",
                "description": "Position within the ad block (1-indexed)"
              },
              "blockPosition": {
                "type": "string",
                "enum": [
                  "top",
                  "bottom",
                  "middle",
                  "rhs"
                ],
                "description": "Where the ad appeared on the SERP. `top`/`bottom` are text-ad blocks, `middle` covers direct/in-content ads, `rhs` is the right-hand-side sponsored-products carousel."
              },
              "type": {
                "type": "string",
                "enum": [
                  "RESULT",
                  "SHOPPING_CARD"
                ],
                "description": "Discriminates plain text ads (`RESULT`) from shopping-style sponsored cards (`SHOPPING_CARD`). Shopping cards appear in the right-hand-side PLA carousel, the top-of-page PLA carousel, and the top-of-page sponsored shopping-card carousels (vehicles, products, hotels, …)."
              },
              "title": {
                "type": "string",
                "description": "Ad title"
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Destination URL of the ad. For `type: SHOPPING_CARD` items this is a Google `aclk?`-redirected URL."
              },
              "page": {
                "type": "number",
                "description": "Page number where the ad was found"
              },
              "displayedUrl": {
                "type": "string",
                "description": "Formatted URL as displayed in the ad"
              },
              "domain": {
                "type": "string",
                "description": "Domain name of the advertiser"
              },
              "description": {
                "type": "string",
                "description": "Ad description text. For `type: RESULT` items this is classic ad copy. For `type: SHOPPING_CARD` items it carries category-specific subtitle fragments joined with `·` (e.g. vehicle condition + city: `Used - 94k miles · Greeley`)."
              },
              "category": {
                "type": "string",
                "description": "Carousel header label for shopping-card ads. Examples observed today include `Sponsored products`, `Sponsored vehicles`, and `Sponsored hotels`. Omitted for `type: RESULT` text ads."
              },
              "price": {
                "type": "object",
                "description": "Product price for `type: SHOPPING_CARD` ads. `currency` and `raw` are always present; `value` is omitted when the number doesn't parse, and the whole object is omitted when no currency appears beside a number. `raw` carries the visible text verbatim (e.g. `\"$0 down with 24 monthly payments\"` on installment offers) so consumers can disambiguate genuine zero prices from down-payment labels.",
                "properties": {
                  "value": {
                    "type": "number",
                    "description": "Numeric price value"
                  },
                  "currency": {
                    "type": "string",
                    "description": "Currency symbol"
                  },
                  "raw": {
                    "type": "string",
                    "description": "Visible price text verbatim"
                  }
                }
              },
              "oldPrice": {
                "type": "object",
                "description": "Original price before discount on `type: SHOPPING_CARD` ads that surface MSRP / sale messaging. Same shape as `price`.",
                "properties": {
                  "value": {
                    "type": "number",
                    "description": "Numeric price value"
                  },
                  "currency": {
                    "type": "string",
                    "description": "Currency symbol"
                  },
                  "raw": {
                    "type": "string",
                    "description": "Visible price text verbatim"
                  }
                }
              },
              "store": {
                "type": "string",
                "description": "Merchant/dealer name attached to a `type: SHOPPING_CARD` ad."
              },
              "imageUrl": {
                "type": "string",
                "format": "uri",
                "description": "Hero image URL served by Google's `encrypted-tbn` CDN for `type: SHOPPING_CARD` ads. Omitted when the lazy-image chain cannot resolve a non-placeholder source."
              },
              "sitelinks": {
                "type": "array",
                "description": "Sitelinks displayed under 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": "Google AI Overview data (if requested). Omitted when Google shows no AI Overview for the query.",
          "properties": {
            "sources": {
              "type": "array",
              "description": "Sources referenced in the AI Overview",
              "items": {
                "type": "object",
                "properties": {
                  "position": {
                    "type": "number",
                    "description": "1-based position index of the source"
                  },
                  "url": {
                    "type": "string",
                    "description": "Source URL"
                  },
                  "label": {
                    "type": "string",
                    "description": "Source title (the display label Google renders on the source rail)"
                  },
                  "description": {
                    "type": "string",
                    "description": "Source description / snippet"
                  },
                  "redirectLink": {
                    "type": "string",
                    "description": "Google's `/goto` redirect for this link, in the absolute form `POST /v1/monitor/google/goto` accepts. Present only when Google served the link as a redirect — the sibling link field holds the destination cloro resolved it to."
                  }
                }
              }
            },
            "citationPills": {
              "type": "array",
              "description": "Inline citation pills extracted from the AI Overview answer. Each entry is one (pill, source) pair: when a pill cites N sources (Google's `[Label +N]` chips), the array contains N entries sharing the same `citationPillId` but carrying per-source `label`, `url`, and `domain`. Group by `citationPillId` to recover the pill-level structure. Omitted from `result.aioverview` when the answer carries no pills.",
              "items": {
                "type": "object",
                "required": [
                  "label",
                  "citationPillId",
                  "url",
                  "domain",
                  "position"
                ],
                "properties": {
                  "label": {
                    "type": "string",
                    "description": "Per-source title from the sources rail (for example `\"Chase Personal Credit Cards\"`). Empty string when the rail has no title for this source — consumers should read `domain` / `url` for source identity in that case. Entries grouped under the same `citationPillId` carry different per-source labels."
                  },
                  "citationPillId": {
                    "type": "integer",
                    "description": "1-based ordinal shared by all entries from the same chip. Group by `citationPillId` to reconstruct the visible chip; the per-source `label` differs across entries within a chip."
                  },
                  "url": {
                    "type": "string",
                    "description": "Direct URL of the cited source."
                  },
                  "domain": {
                    "type": "string",
                    "description": "Host extracted from `url`, for grouping and display."
                  },
                  "description": {
                    "type": "string",
                    "description": "Source description from the sources rail when Google ships one. Omitted when the source carries no snippet."
                  },
                  "position": {
                    "type": "integer",
                    "description": "1-based position of this source in the sibling `result.aioverview.sources` array."
                  },
                  "redirectLink": {
                    "type": "string",
                    "description": "Google's `/goto` redirect for this link, in the absolute form `POST /v1/monitor/google/goto` accepts. Present only when Google served the link as a redirect — the sibling link field holds the destination cloro resolved it to."
                  }
                }
              }
            },
            "relatedLinks": {
              "type": "array",
              "description": "A citation chip's \"View related links\" flyout items — URLs Google groups under the chip that are NOT in the `sources` rail (for example a Google Shopping comparison link). Each entry shares the `citationPillId` of its chip so it can be grouped with that chip's `citationPills`, but carries no `position` (a related link is absent from `sources`). Related links also render inline in `markdown`, so `markdown` may contain more URLs than `sources` / `citationPills` — the extras are accounted for here. Omitted from `result.aioverview` when no chip carries related links.",
              "items": {
                "type": "object",
                "required": [
                  "label",
                  "citationPillId",
                  "url",
                  "domain"
                ],
                "properties": {
                  "label": {
                    "type": "string",
                    "description": "The related page's own title. Empty string when Google ships none — read `domain` / `url` for identity in that case."
                  },
                  "citationPillId": {
                    "type": "integer",
                    "description": "Matches the `citationPillId` of the chip's `citationPills` entries, so a related link can be grouped with its pill."
                  },
                  "url": {
                    "type": "string",
                    "description": "Direct URL of the related link."
                  },
                  "domain": {
                    "type": "string",
                    "description": "Host extracted from `url`, for grouping and display."
                  },
                  "description": {
                    "type": "string",
                    "description": "Snippet Google ships for the related link. Omitted when absent."
                  },
                  "redirectLink": {
                    "type": "string",
                    "description": "Google's `/goto` redirect for this link, in the absolute form `POST /v1/monitor/google/goto` accepts. Present only when Google served the link as a redirect — the sibling link field holds the destination cloro resolved it to."
                  }
                }
              }
            },
            "text": {
              "type": "string",
              "description": "AI Overview text content"
            },
            "markdown": {
              "type": "string",
              "description": "AI Overview content formatted as markdown (if requested)"
            },
            "videos": {
              "type": "array",
              "description": "Video content included in the AI Overview",
              "items": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "Direct URL to the video"
                  },
                  "title": {
                    "type": "string",
                    "description": "Video title"
                  },
                  "thumbnail": {
                    "type": "string",
                    "format": "uri",
                    "description": "Thumbnail image URL"
                  },
                  "source": {
                    "type": "string",
                    "description": "Channel or source name"
                  },
                  "platform": {
                    "type": "string",
                    "description": "Video platform"
                  },
                  "date": {
                    "type": "string",
                    "description": "Upload date"
                  },
                  "duration": {
                    "type": "string",
                    "description": "Video duration"
                  },
                  "redirectLink": {
                    "type": "string",
                    "description": "Google's `/goto` redirect for this link, in the absolute form `POST /v1/monitor/google/goto` accepts. Present only when Google served the link as a redirect — the sibling link field holds the destination cloro resolved it to."
                  }
                }
              }
            },
            "places": {
              "type": "array",
              "description": "Place cards in the AI Overview answer. Omitted when the answer has none.",
              "items": {
                "$ref": "#/$defs/GooglePlace"
              }
            },
            "map": {
              "type": "array",
              "description": "The place cards that Google geo-tagged, with coordinates. Omitted when the answer has none.",
              "items": {
                "$ref": "#/$defs/GoogleMapPlace"
              }
            },
            "ads": {
              "type": "array",
              "description": "Sponsored ads injected by Google inside the AI Overview",
              "items": {
                "type": "object",
                "required": [
                  "position",
                  "title",
                  "url",
                  "type"
                ],
                "properties": {
                  "position": {
                    "type": "number",
                    "description": "Position of the ad (1-indexed)"
                  },
                  "title": {
                    "type": "string",
                    "description": "Ad title"
                  },
                  "url": {
                    "type": "string",
                    "description": "Ad destination URL"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "TEXT",
                      "SHOPPING"
                    ],
                    "description": "Sub-type discriminator. TEXT ads carry `domain` + `description`; SHOPPING ads carry `price` + `store` (+ optional `old_price`). Always present."
                  },
                  "domain": {
                    "type": "string",
                    "description": "Domain name of the advertiser (present when `type` is `TEXT`)"
                  },
                  "description": {
                    "type": "string",
                    "description": "Ad description text (present when `type` is `TEXT`)"
                  },
                  "price": {
                    "type": "object",
                    "description": "Product price (present when `type` is `SHOPPING`). `currency` and `raw` are always present; `value` is omitted when the number doesn't parse, and the whole object is omitted when no currency appears beside a number. `raw` carries the visible text verbatim.",
                    "properties": {
                      "value": {
                        "type": "number",
                        "description": "Numeric price value"
                      },
                      "currency": {
                        "type": "string",
                        "description": "Currency symbol"
                      },
                      "raw": {
                        "type": "string",
                        "description": "Visible price text verbatim"
                      }
                    }
                  },
                  "old_price": {
                    "type": "object",
                    "description": "Original price before discount (present when `type` is `SHOPPING` and the ad has sale pricing). Same shape as `price`.",
                    "properties": {
                      "value": {
                        "type": "number",
                        "description": "Numeric price value"
                      },
                      "currency": {
                        "type": "string",
                        "description": "Currency symbol"
                      },
                      "raw": {
                        "type": "string",
                        "description": "Visible price text verbatim"
                      }
                    }
                  },
                  "store": {
                    "type": "string",
                    "description": "Retailer name (present when `type` is `SHOPPING`)"
                  },
                  "image": {
                    "type": "string",
                    "description": "Ad image URL (product photo for shopping ads, hero image for text ads)"
                  }
                }
              }
            }
          }
        },
        "shoppingCards": {
          "type": "array",
          "description": "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. Cards carry no product URL: they open a Google-side overlay rather than an external page.",
          "items": {
            "type": "object",
            "required": [
              "title",
              "position"
            ],
            "properties": {
              "title": {
                "type": "string",
                "description": "Product title"
              },
              "position": {
                "type": "integer",
                "description": "1-indexed rank across the whole `shoppingCards` array in DOM order (flat, does not reset per `category` section)."
              },
              "promoLabel": {
                "type": "string",
                "description": "Discount badge as displayed by Google, in the SERP language (for example \"LOW PRICE\", \"OFERTA\", \"PROMOÇÃO\", \"20% OFF\"). Google renders it above the product name on a discounted card. Present only on a card that carries the badge, and Google-only — AI Mode does not render it."
              },
              "category": {
                "type": "string",
                "description": "Parent section header text. Lets callers distinguish

# --- truncated at 32 KB (64 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cloro-dev/refs/heads/main/json-schema/cloro-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/cloro-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.