Competitive researchGET$0.03
/v1/domain-overview
One domain's organic footprint — keywords ranked, top positions, estimated traffic and value.
The first call of any competitive read. From the Labs ranking index: how many keywords the domain ranks for, how many sit in the top 3 and top 10, the estimated monthly organic traffic and what that traffic would cost as ads — plus the paid-search side. A domain the index has never seen returns zeros, not an error.
Parameters#
| Name | Description | |
|---|---|---|
domain | required | hostname to profile, e.g. example.com |
country | optional | 2-letter country code, default us |
lang | optional | 2-letter language code, default en |
Request#
Plain GET. Without a payment header the response is a 402 carrying the price; an x402 client pays and retries on its own — see the quickstart.
GET https://citable.run/v1/domain-overview?domain=ahrefs.com
Response#
200 with the JSON below (trimmed) and the settlement signature in the PAYMENT-RESPONSE header. Every paid response also carries price and cluster.
{
"domain": "ahrefs.com",
"country": "us",
"lang": "en",
"organic": { "keywords": 120400, "top3": 8100, "top10": 24800, "top100": 120400, "estTraffic": 1310000, "estTrafficValue": 2280000 },
"paid": { "keywords": 25, "estTraffic": 1400 },
"source": "dataforseo_labs",
"price": "$0.03",
"cluster": "mainnet"
}Errors#
Any non-200 cancels the payment — errors are free.
| Status | Code | When |
|---|---|---|
| 400 | invalid_domain | domain is not a hostname |
| 400 | invalid_locale | country or lang is not a 2-letter code |
| 502 | upstream_failed | the data source did not answer — nothing is charged |
| 503 | not_configured | this deployment has no credentials for the source — nothing is charged |
MCP tool#
The same call from Claude, Codex or Cursor once citable-mcp is installed. Arguments mirror the parameters above.
citable_domain_overview(domain, country?, lang?) $0.03Source & latency#
| Data source | Typical latency |
|---|---|
| DataForSEO Labs ranking index | ~2–5 s |
Note