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
| Category | Search and research |
|---|---|
| Provider host | seo.openverbs.com |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 0 from 0 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 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"
}