SEO API documentation
The SEO API has one job: given a domain, return its registration data and its traffic. This page covers the REST endpoint, every response field, how billing works, the MCP server for AI agents and the command-line tool.
APIs
Quick start
- Sign in with Google and you get 10 free credits.
- Create an API key in the dashboard. You can create as many keys as you like.
- Call the endpoint below with the key in the Authorization header.
curl "https://seo-api.org/api/v1/domain?domain=example.com" \
-H "Authorization: Bearer YOUR_API_KEY"Authentication
Every request carries your key as Authorization: Bearer YOUR_API_KEY. Clients that cannot set Authorization can send x-api-key: YOUR_API_KEY instead. Keys start with seo_. All keys on an account share its credit balance; revoking a key in the dashboard takes effect immediately. Keep keys on your server or in your agent config, never in browser code.
Status and billing
A lookup costs 1 credit only when status is ready. Looking up the same domain again within 24 hours is free, whichever of your keys or channels you use.
- pending: we had no data for this domain and queued it. The server waits up to 15 seconds before answering; call again after
retryAfterSeconds. Free. - empty: the domain was collected but the panel has no traffic for it, which is common for very small or brand-new sites. Registration data is still returned. Free.
- failed: collection failed;
messagesays why. Free.
Errors
Errors use standard HTTP status codes plus a stable error code you can branch on.
{
"ok": false,
"error": {
"code": "BILLING.INSUFFICIENT_CREDITS",
"message": "Insufficient credits"
}
}SEO_API.MISSING_API_KEY
HTTP401
MeaningNo Authorization header or x-api-key header.
SEO_API.INVALID_API_KEY
HTTP401
MeaningThe key does not exist or was revoked.
SEO_API.INVALID_DOMAIN
HTTP400
MeaningThe domain parameter is missing or is not a domain (IPs are rejected).
BILLING.INSUFFICIENT_CREDITS
HTTP402
MeaningThe account has no credits left. Repeat lookups within 24 hours still work.
SYSTEM.INTERNAL_SERVER_ERROR
HTTP500
MeaningSomething failed on our side. Retry with backoff.