# Google historical SERPs

This endpoint will provide you with Google SERPs collected within the specified time frame. Needs keyword. Served by DataForSEO.

This endpoint will provide you with Google SERPs collected within the specified time frame. You will also receive a complete overview of featured snippets and other extra elements that were present within the specified dates. The data will allow you to analyze the dynamics of keyword rankings over time for the specified keyword and location.

- Tool ID: `dataforseo/dataforseo-labs-google-historical-serps`
- Name in the catalog: Seo Labs Google Historical Serps
- Provider: [DataForSEO](/providers/dataforseo.md)
- Capability: [Competitor domains & rankings](/tools/seo/domain-analytics.md)
- Price: usage based, the maximum is shown before a run
- Authentication: an authorised Agentik workspace is required for execution, including zero-price tools.

## Pricing contract

Billed at the cost the provider reports for the call, never above $100. Your agent sees the maximum before running.


```json
{
  "model": "reported",
  "costPath": "cost",
  "maxUsdDefault": 0,
  "maxUsdCap": 100,
  "multipliers": [
    {
      "addUsdPer": {
        "field": "date_from",
        "dateRange": {
          "endField": "date_to",
          "defaultStart": "2000-01-01"
        },
        "usd": 0.00012,
        "default": 366,
        "max": 366
      }
    }
  ],
  "requireCost": true
}
```

Pricing source: [https://docs.dataforseo.com/v3/appendix/user_data/](https://docs.dataforseo.com/v3/appendix/user_data/). Account tariff dataforseo_labs/historical_serps/live; bounds applied to inputs; actual cost from provider response..

Price verification date: 2026-10-10.

## Complete input schema


```json
{
  "type": "object",
  "properties": {
    "keyword": {
      "type": "string",
      "description": "keyword required field you can specify up to 700 characters in the keyword field; all %## will be decoded (plus character ‘+’ will be decoded to a space character); if you need to use the “%” character for your keyword, please specify it as",
      "maxLength": 700,
      "minLength": 1
    },
    "date_from": {
      "type": "string",
      "description": "starting date of the time range optional field if you don't specify this field, the API will return all SERPs collected for 365 days starting from the current datetime value; minimal possible value: 365 days from the current datetime value;",
      "maxLength": 2000,
      "pattern": "^20[0-9]{2}-[0-9]{2}-[0-9]{2}( [0-9]{2}:[0-9]{2}:[0-9]{2})?$",
      "minLength": 1
    },
    "date_to": {
      "type": "string",
      "description": "ending date of the time range optional field if you don't specify this field, the today's date will be used by default; date format: \"yyyy-mm-dd\"; example: \"2021-09-01\"",
      "maxLength": 2000,
      "pattern": "^20[0-9]{2}-[0-9]{2}-[0-9]{2}( [0-9]{2}:[0-9]{2}:[0-9]{2})?$",
      "minLength": 1
    },
    "location_name": {
      "type": "string",
      "description": "full name of the location required field if you don't specify location_code Note: it is required to specify either location_name or location_code you can receive the list of available locations with their location_name by making a separate ",
      "maxLength": 2000,
      "minLength": 1
    },
    "location_code": {
      "type": "integer",
      "description": "unique location identifier required field if you don't specify location_name Note: it is required to specify either location_name or location_code you can receive the list of available locations with their location_code by making a separate"
    },
    "language_name": {
      "type": "string",
      "description": "full name of the language required field if you don't specify language_code Note: it is required to specify either language_name or language_code you can receive the list of available languages with their language_name parameters by making ",
      "maxLength": 2000,
      "minLength": 1
    },
    "language_code": {
      "type": "string",
      "description": "unique language identifier required field if you don't specify language_name Note: it is required to specify either language_name or language_code you can receive the list of available languages with their language_code parameters by making",
      "maxLength": 10,
      "minLength": 1
    },
    "tag": {
      "type": "string",
      "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
      "maxLength": 255
    }
  },
  "required": [
    "keyword"
  ],
  "additionalProperties": false,
  "allOf": [
    {
      "anyOf": [
        {
          "required": [
            "location_code"
          ]
        },
        {
          "required": [
            "location_name"
          ]
        }
      ]
    },
    {
      "anyOf": [
        {
          "required": [
            "language_code"
          ]
        },
        {
          "required": [
            "language_name"
          ]
        }
      ]
    }
  ]
}
```

## Published example

This is the provider tool’s published example. Replace example values with the user’s requested inputs, respecting the schema; do not execute an example merely to test a connection.


```json
{
  "tool_id": "dataforseo/dataforseo-labs-google-historical-serps",
  "input": {
    "keyword": "albert einstein",
    "location_code": 2840,
    "language_code": "en",
    "date_from": "2026-07-01",
    "date_to": "2026-08-31"
  }
}
```

## Execute and retrieve

Inspect again before execution, explain the price and obtain the required authority. Use MCP run_tool or POST /v1/run with this tool ID, valid input and an idempotency key. Save the returned run ID and follow the actual state. If Agentik answers that the tool is temporarily unavailable, do not retry it blindly; use discovery to propose an alternative.

A partial or uncertain result can still have consumed provider resources. Consult [billing](/docs/billing.md), [idempotency](/docs/idempotency.md) and [asynchronous results](/docs/async.md).

[Provider documentation](https://docs.dataforseo.com/v3/dataforseo_labs/google/historical_serps/live/)

[REST inspection](https://api.agentik.cc/v1/tools/dataforseo/dataforseo-labs-google-historical-serps) · [OpenAPI](/openapi.json) · [Connection guide](/connect.md)

---

[HTML page](/providers/dataforseo/dataforseo-labs-google-historical-serps) · [Agent index](/llms.txt)
