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

  1. Sign in with Google and you get 10 free credits.
  2. Create an API key in the dashboard. You can create as many keys as you like.
  3. Call the endpoint below with the key in the Authorization header.
shell
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; message says why. Free.

Errors

Errors use standard HTTP status codes plus a stable error code you can branch on.

402 Payment Required
{
  "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.