Skip to content

// docs

Google: Search the web

Extracts organic results from Google Search by keyword, with fixed geolocation in Brazil and pagination per page.

google.com:plp · 1 credit per request

Standard credit cost. Your account pricing is shown in the sandbox.

Try this operation in the sandbox

HTTP request

cURL
curl -X POST https://api.geckoapi.com.br/v1/extract \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "keyword": "Royal Imóveis Rj",
  "target": "google.com",
  "type": "plp",
  "page": 1
}'

Keep your API key on your server. See the quickstart for authentication and response handling.

MCP request

The hosted MCP tool fixes target and type for this operation. Its remaining arguments use the same input rules as Extract.

POST /v1/mcp · Bearer or X-API-Key authentication

google_com_plp · tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "google_com_plp",
    "arguments": {
      "keyword": "Royal Imóveis Rj",
      "page": 1,
      "executionId": "exec_example_123"
    }
  }
}

Supported inputs

Conditional fields depend on the alternatives and constraints in the rule column. Fields marked unsupported are omitted.

FieldTypeRequirementRuleDefaultExample
keyword
Keyword for PLP searches. In Google Search it represents the query sent to Google; in Booking PLP is mandatory; in other PLPs it can replace URL.
string Required Mandatory. Represents the query sent to Google Search. - Royal Imóveis Rj
target
Target source for extraction.
enum Required Always mandatory in the payload and must be google.com. - google.com
type
Extraction type: pdp, idp, plp, ilp, quote, review or places.
enum Required Always mandatory in the payload and must be plp. - plp
page
Pagination. In PLP, including Trivago, and in Reclame AQUI ILP starts in 1; in review (MercadoLivre, Booking and Hotels) starts in 0. The Reclame AQUI ILP even accepts the page 100.
integer Optional Organic search page (entire >= 1). 1 1

Request examples

Search Google - first page

Recommended flow; the backend assembles the search URL automatically from the query.

Search Google - first page
{
  "keyword": "Royal Imóveis Rj",
  "target": "google.com",
  "type": "plp",
  "page": 1
}

Search Google - page 2

Organic search on the second page, maintaining Brazil geolocation.

Search Google - page 2
{
  "keyword": "apartamento curitiba pr",
  "target": "google.com",
  "type": "plp",
  "page": 2
}

Response schema

Leaf paths and expected types. Field names and enum values are part of the API contract.

responseSchema
{
  "requestId": "string (uuid)",
  "executionId": "string (uuid)",
  "notFound": "boolean (optional; true when the upstream entity was not found and data is null)",
  "data.source": "string",
  "data.type": "string",
  "data.url": "string",
  "data.requestUrl": "string",
  "data.extractedAt": "string (iso datetime)",
  "data.query": "string",
  "data.displayedQuery": "string | null",
  "data.searchedQuery": "string | null",
  "data.geolocation": "string",
  "data.device": "string",
  "data.page": "number",
  "data.resultsPerPage": "number",
  "data.offset": "number",
  "data.primaryResults": "number",
  "data.totalResults": "number | null",
  "data.nextPage": "number | null",
  "data.nextPageUrl": "string | null",
  "data.items[].position": "number",
  "data.items[].rank": "number | null",
  "data.items[].title": "string | null",
  "data.items[].description": "string | null",
  "data.items[].url": "string",
  "data.items[].displayedUrl": "string | null",
  "data.items[].domain": "string | null"
}

Example response

Illustrative response. Product names, reviews and other source content retain their original language. Missing and null values do not imply zero stock, free shipping or zero reviews.

responseExample
{
  "requestId": "99999999-1111-4111-8111-999999999999",
  "executionId": "99999999-2222-4222-8222-999999999999",
  "data": {
    "source": "google.com",
    "type": "plp",
    "url": "https://www.google.com/search?q=Royal+Im%C3%B3veis+Rj",
    "requestUrl": "https://www.google.com/search?q=Royal+Im%C3%B3veis+Rj",
    "extractedAt": "2026-03-21T14:44:36Z",
    "query": "Royal Imóveis Rj",
    "displayedQuery": "Royal Imóveis Rj",
    "searchedQuery": "Royal Imóveis Rj",
    "geolocation": "BR",
    "device": "desktop",
    "page": 1,
    "resultsPerPage": 6,
    "offset": 0,
    "primaryResults": 6,
    "totalResults": 1090000,
    "nextPage": 2,
    "nextPageUrl": "https://www.google.com/search?q=Royal+Im%C3%B3veis+Rj&start=10",
    "items": [
      {
        "position": 1,
        "rank": 1,
        "title": "Royal Imóveis RJ",
        "description": "Unidade Freguesia de Jacarepaguá. Estrada dos Três Rios, 1097. - Loja G. Freguesia de Jacarepaguá. Rio de Janeiro/RJ.",
        "url": "https://www.royalimoveisrj.com.br/",
        "displayedUrl": "https://www.royalimoveisrj.com.br",
        "domain": "royalimoveisrj.com.br"
      },
      {
        "position": 2,
        "rank": 2,
        "title": "Royal Imóveis RJ (@royalimoveisrj)",
        "description": "6.1K+ followers · 918 posts · Imobiliária ⭐ A mais avaliada no Google Compra, Venda, Locação e Administração de imóveis Freguesia - JPA Creci J- ...",
        "url": "https://www.instagram.com/royalimoveisrj/",
        "displayedUrl": "Mais de 6,1 mil seguidores",
        "domain": "instagram.com"
      },
      {
        "position": 3,
        "rank": 3,
        "title": "Royal Imóveis Rj",
        "description": "Somos a imobiliária que é a cara de Jacarepaguá. Atuamos de forma única, envolvendo compra, venda e avaliação de imóveis residenciais. A Royal Imóveis RJ ...",
        "url": "https://www.zapimoveis.com.br/imobiliaria/655356/",
        "displayedUrl": "https://www.zapimoveis.com.br › imobiliaria",
        "domain": "zapimoveis.com.br"
      }
    ]
  }
}

Complete field reference

PathTypeDescriptionExample
data.device string Field data.device returned in the response payload. desktop
data.displayedQuery string | null Field data.displayedQuery returned in the response payload. Royal Imóveis Rj
data.extractedAt string (iso datetime) data.extractedAt field returned in the response payload. 2026-03-21T14:44:36Z
data.geolocation string data.geolocation field returned in the response payload. BR
data.items[].description string | null Field data.items[].description returned in the response payload. Unidade Freguesia de Jacarepaguá. Estrada dos Três Rios, 1097. - Loja G. Freguesia de Jacarepaguá. Rio de Janeiro/RJ.
data.items[].displayedUrl string | null data.items[].displayedUrl field returned in the response payload. https://www.royalimoveisrj.com.br
data.items[].domain string | null Field data.items[].domain returned in the response payload. royalimoveisrj.com.br
data.items[].position number data.items[].position field returned in the response payload. 1
data.items[].rank number | null data.items[].rank field returned in the response payload. 1
data.items[].title string | null Field data.items[].title returned in the response payload. Royal Imóveis RJ
data.items[].url string data.items[].url field returned in the response payload. https://www.royalimoveisrj.com.br/
data.nextPage number | null Field data.nextPage returned in the response payload. 2
data.nextPageUrl string | null Field data.nextPageUrl returned in the response payload. https://www.google.com/search?q=Royal+Im%C3%B3veis+Rj&start=10
data.offset number Field data.offset returned in the response payload. 0
data.page number Field data.page returned in the response payload. 1
data.primaryResults number Field data.primaryResults returned in the response payload. 6
data.query string data.query field returned in the response payload. Royal Imóveis Rj
data.requestUrl string Same value as `data.url`; never exposes the queried internal endpoint. https://www.google.com/search?q=Royal+Im%C3%B3veis+Rj
data.resultsPerPage number Field data.resultsPerPage returned in the response payload. 6
data.searchedQuery string | null data.searchedQuery field returned in the response payload. Royal Imóveis Rj
data.source string Field data.source returned in the response payload. google.com
data.totalResults number | null Field data.totalResults returned in the response payload. 1090000
data.type string Field data.type returned in the response payload. plp
data.url string Field data.url returned in the response payload. https://www.google.com/search?q=Royal+Im%C3%B3veis+Rj
executionId string (uuid) Field executionId returned in the response payload. 99999999-2222-4222-8222-999999999999
notFound boolean (optional; true when the upstream entity was not found and data is null) Present and true when the upstream entity was not found. In this case data is null and the request still completes successfully. N/A
requestId string (uuid) Field requestId returned in the response payload. 99999999-1111-4111-8111-999999999999

Errors and missing data

When supported by this operation, an entity not found upstream can return HTTP 200 with data: null and notFound: true. Check the documented response fields before interpreting an empty result. Source-specific behavior and exceptions are described above.

HTTP statusError codeMeaning
400INVALID_PAYLOADInvalid JSON or a request that violates the documented validation rules.
401UNAUTHORIZEDMissing authorization or an invalid API key or token.
402INSUFFICIENT_CREDITSThe account has insufficient credits for this operation.
403FORBIDDENThe account does not have access, or the API is temporarily disabled.
409EXECUTION_CONFLICTThe execution identifier conflicts with an incompatible execution state.
429RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTSA rate limit or simultaneous request limit was exceeded.
5xxUPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_FUNCTION_ERRORAn upstream, worker or gateway failure. Failed requests follow the platform refund policy.

Other Google operations