Dataforseo APIdataforseo.com ↗
Monitor top-performing websites and trending keywords on Google while tracking SERP volatility to stay ahead of SEO trends. Get real-time insights into ranking keywords, search demand patterns, and search engine result page changes to inform your SEO strategy.
curl -X GET 'https://api.parse.bot/scraper/5eb0b5ae-f6b9-4865-ae5d-abf6c8de89cd/get_top_websites?location=2840' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace dataforseo-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: DataForSEO SDK — bounded, re-runnable; every call capped."""
from parse_apis.dataforseo_com_api import DataForSEO, DeviceType, SearchEngine, InvalidInput
client = DataForSEO()
# List top websites by ranking keywords for the United States
for site in client.websites.list(location="2840", limit=3):
print(site.domain, site.rank, site.keywords_in_serps)
# List top searched keywords worldwide
for kw in client.keywords.list(location="0", limit=3):
print(kw.keyword, kw.search_volume)
# Get SERP volatility for Google Desktop in the US
try:
for day in client.volatility_days.list(
location="2840", device_type=DeviceType.DESKTOP,
search_engine=SearchEngine.GOOGLE, limit=3
):
print(day.date, day.volatility, day.serps_count)
except InvalidInput as e:
print("invalid input:", e)
print("exercised: websites.list / keywords.list / volatility_days.list")
Retrieves the top 1000 websites ranked by number of keywords they appear for in Google SERPs. Each entry includes the domain, keyword count, and estimated organic traffic. Data is updated every 90 days and can be filtered by country.
| Param | Type | Description |
|---|---|---|
| location | string | Location code for country filtering. '0' for worldwide. Examples: '2840' (United States), '2826' (United Kingdom), '2276' (Germany). |
{
"type": "object",
"fields": {
"total": "integer count of websites returned",
"websites": "array of website ranking entries with rank, domain, keywords_in_serps, and estimated_organic_traffic"
},
"sample": {
"data": {
"total": 1000,
"websites": [
{
"rank": 1,
"domain": "youtube.com",
"keywords_in_serps": 189990821,
"estimated_organic_traffic": 7910193238.66
}
]
},
"status": "success"
}
}About the Dataforseo API
The Dataforseo API on Parse exposes 3 endpoints for the publicly available data on dataforseo.com. Calls return JSON over HTTPS and are billed per successful response.
Pin a release with the API-Snapshot-Version header so canonical updates don't silently change your contract.