SEO data that powers your tools.

One API for search and AI visibility data — rankings, keywords, and backlinks. 100TBs of data at your disposal.

No credit card required · Start with 1,000 free credits.

$ curl api.seofetch.com/v1/search -d '{"query": "best running shoes"}'

← response200 · 1 credit
{
  "object": "search",
  "credits": { "charged": 1, "balance": 9857 },
  "data": {
    "query": "best running shoes",
    "total_results": 84900000,
    "items": [
      {
        "rank": 1,
        "title": "The 12 Best Running Shoes",
        "url": "https://example.com/best-running-shoes",
        "site_name": "Example Running Co.",
        "rating": { "value": 4.6, "votes": 1284, "max": 5 },
        "sitelinks": [ { "title": "Best Trail Running Shoes" } ]
      }
    ]
  }
}
+9 more results ranks · titles · ratings · sitelinks 1 credit
how it works

Three commands to first data.

01

Get a key

Sign up and generate an API key from your dashboard.

$ export SEOFETCH_KEY=sof_live_…
02

Send a request

One POST, one response on the same connection. No task IDs, no webhooks.

$ curl api.seofetch.com/v1/search -H "Authorization: Bearer $SEOFETCH_KEY"
03

Get normalized JSON

The same envelope on every endpoint: object, credits, data. One integration, all data types.

"credits": { "charged": 1, "balance": 9857 }
endpoints

Every endpoint, with its price.

Click one. Request and response, generated from the endpoint catalog.

pricing

Prepaid credits. No subscription.

$49
10,000 credits
$0.0049 / credit
up to 1,000 req/hour
Get started
most popular
$199
50,000 credits
$0.0040 / credit
up to 3,000 req/hour
Get started
$499
150,000 credits
$0.0033 / credit
up to 6,000 req/hour
Get started
$999
400,000 credits
$0.0025 / credit
up to 12,000 req/hour
Get started
No credit card requiredCredits don't expireUpstream failures are refundedUp to 12,000 req/hour — more on requestFixed cost per request
why seofetch

Design principles.

usage feedbalance 10,000
/v1/search−1200
/v1/backlinks/summary−20200
/v1/page/lighthouse−2200
usage metering

Per-request pricing

Timed and logged. No seats, no tiers to outgrow.

{ envelope — never changes
  "id", "request_id", "object", 🔒
  "created_at", "elapsed_ms", "credits", 🔒
  "data": { "query", "items[rank, title, domain]" }
}
same envelope since v1every endpoint
one envelope

One API to learn

Learn the envelope once. Every endpoint uses it.

idempotency-key: kd-001attempt 1
POST /v1/keywords/difficulty
job running…charged 110 cr
retries are free

Idempotent by default

Same key, same result, one charge. Crashed cron, flaky network, long job: retry for free.

POST /v1/keywords/volume — one request
"trail running shoes"#1
"running shoes for flat feet"#2
"carbon plate shoes"#3
keywords 3 / 500price 20 cr — flat
batch scale

Built for bulk

One keyword or five hundred per call. Same envelope, one flat price.

rank · "best running shoes"#6
1 credit / keyword / daysame request_id = free re-read
daily data

Dependable enough to build on

Fresh daily, stable ids, replayable results. An input, not a report.

agent: find pages worth optimizing
/v1/searchrank 7
/v1/keywords/volume135k/mo
/v1/keywords/difficultyKD 41 — winnable
/v1/page/crawlmeta missing
→ verdict: rewrite /blog/shoes — upside 135k/mo · 133 cr spent
composable

Primitives, not features

JSON in, JSON out, fixed costs. Build trackers, audit gates and agents on top.

mcp

Point your agent at it.

One URL. Your agent calls every endpoint as a tool and spends your credits — no key to paste, no integration code.

$ mcp url
https://api.seofetch.com/mcp

Claude Code

claude mcp add --transport http seofetch https://api.seofetch.com/mcp

Or add it from the /mcp command inside a session.

ChatGPT

Custom MCP connectors need Developer mode, which ChatGPT limits to paid plans. Turn it on in ChatGPT’s connector settings, then add a connector and paste the URL above.

Cursor

Settings → MCP → Add new MCP server, pick type “URL”, then paste the URL above.

Each client sends you to seofetch to log in and pick the organization the connection spends from. Nothing to paste. Revoke any time from Connectors, or read the full connector docs →.

faq

Questions.

What is a credit?

A unit of API usage. Most endpoints cost a flat number of credits per request. Two exceptions: /v1/search costs 1 or 10 depending on depth, and /v1/site/audit is billed per delivered page (the worst case is held up front, the unused part refunded once the crawl settles). /v1/locations is free. Credits don't expire.

What are the rate limits?

An hourly cap per organization, not per key. It follows what you've spent in the trailing 30 days: spend accumulates across packs, and a top-up never lowers your tier. Free tier is 100/hour; the top tier is 12,000/hour. Over the cap you get a clean 429 (rate_limit_error / rate_limited), no queue. The cap is enforced, not a capacity guarantee. Need more? Email support@seofetch.com.

What happens if I run out of credits?

Requests return 402 Payment Required until you top up.

Do failed requests cost credits?

No. Upstream failures are refunded automatically. One caveat: a 504 with code connection_timeout means the job is still running and the charge stands. Reconnect with the same key, or the request_id from that response, to collect the result. A 504 with code upstream_timeout is a definite failure and is refunded.

Are requests synchronous?

Yes. The result comes back on the same connection, up to each endpoint's ceiling: 60 s for most, 180 s for /v1/search, 600 s for /v1/site/audit (full list). If the job outlives the connection you get a 504. Reconnect with the same key, or the request_id it carries.

$ seofetch signup — 1,000 credits granted

Start with 1,000 free credits.

No credit card required.

Get your API key