ToolAssay

SERP history API

SERP history API: archived Google search results for one keyword over the past year, with observation dates, SERP feature types and ranked organic titles, URLs and domains. Coverage is sparse and may be months old, not a complete monthly series or current rank tracking. Returns available snapshots oldest-first; no data returns found=false.

Answeringour last check, 2026-10-18
1 of 1checks answered this week
446 msmedian answer time
$0.01listed price per call
$0.01price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://seo.openverbs.com/v1/serp-history

CategorySearch and research
Provider hostseo.openverbs.com
Networkseip155:8453
Payment schemesexact
Self-reported calls, 30 days0 from 0 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-10-18 valid payment request 402$0.01 446 ms

Example input (from the provider)

{
  "body": {
    "keyword": "running shoes",
    "languageCode": "en",
    "limit": 10,
    "locationCode": 2840
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "additionalProperties": false,
          "properties": {
            "dateFrom": {
              "description": "UTC start date, YYYY-MM-DD. Defaults to 365 days ago; older dates are rejected.",
              "format": "date",
              "type": "string"
            },
            "dateTo": {
              "description": "UTC end date, YYYY-MM-DD. Defaults to today; future dates are rejected.",
              "format": "date",
              "type": "string"
            },
            "keyword": {
              "description": "Keyword whose archived Google results to retrieve.",
              "maxLength": 80,
              "minLength": 1,
              "type": "string"
            },
            "languageCode": {
              "default": "en",
              "description": "Two-letter language code.",
              "pattern": "^[A-Za-z]{2}$",
              "type": "string"
            },
            "limit": {
              "default": 10,
              "description": "Organic results per snapshot. Does not limit the number of archived snapshots.",
              "maximum": 20,
              "minimum": 1,
              "type": "integer"
            },
            "locationCode": {
              "default": 2840,
              "description": "DataForSEO location code; defaults to United States.",
              "maximum": 9999999,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "keyword"
          ],
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json",
            "form-data",
            "text"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method",
        "bodyType",
        "body"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "type": "object"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}

This page as JSON