Overview
A free, keyed JSON API over the same sourced data
The REST API serves what the MCP server serves, as structured JSON for an application to call: provider fact sheets, iScores with their intervals, alternatives, per-volume cost estimates and the changelog. Every figure carries the vendor page it was read from and the date it was read.
It is free and self-serve. A key takes one request to create and asks for nothing: no email, no sign-up form, no card.
Get a key
curl -s -X POST https://inetgeek.com/api/v1/keys \
-H 'content-type: application/json' \
-d '{"label":"my app"}'{
"data": {
"api_key": "igk_…",
"prefix": "igk_Re36OH",
"label": "my app",
"created_at": "2026-10-25T07:27:19.731Z",
"limits": { "requests_per_minute": 120 }
}
}The key is shown once and cannot be recovered. inetGeek keeps a hash of it. Store it as a secret.
Call it
Send the key in the X-Api-Key header, or as Authorization: Bearer. Never put it in the URL.
curl -s https://inetgeek.com/api/v1/estimate \
-H "X-Api-Key: $INETGEEK_API_KEY" \
-G --data-urlencode units=500000 --data-urlencode unit=pageviews --data-urlencode category=analyticsGET /account is the cheapest check that a key works: 200 with the key's prefix when it is valid, 401 when it is missing, unknown or revoked.
Pricing
The API is free. There is no paid tier, no credit balance and no per-call charge, so no request is billed and an error costs nothing. The only limit is 120 requests a minute per key (see below). If that ever changes, this section and the changelog will say so before it does.
Endpoints
| Path | What it returns |
|---|---|
POST /keys, DELETE /keys | Create a key; revoke the one you are calling with |
GET /account | Check a key |
GET /categories | The sections and category ids |
GET /providers | Providers with free tier and entry price; filter by category, q and has=fact_key,… |
GET /providers/{id} | One provider's facts, each with source and date, and its iScore |
GET /providers/{id}/score | The iScore, its interval, pillars and the criteria behind them |
GET /providers/{id}/alternatives | Peers ranked by iScore |
GET /facts | The fact keys you can filter on |
GET /search | Search every published page |
GET /estimate | Monthly cost at a stated volume, cheapest first |
GET /changelog | Recorded changes to published facts |
GET /startup-credits | Providers with a startup credit programme |
The reference lists every parameter and response, with a request console. The machine-readable spec is at /api/v1/openapi.yaml and is checked against the live API by a script in the repository.
Limits and errors
- 120 requests a minute per key. A limited call answers
429withRetry-After. - Key creation is limited per address and across everyone per hour, as are attempts with invalid keys. These limits are soft: they slow a flood, they are not an exact count.
- Revocation takes up to a minute to reach every server instance.
- Errors are
{"error": {"code", "message", "parameter"?}}with a stablecode. - List endpoints take
limit(1 to 200, default 50) andoffset, and returnpage.total.
Reading the data honestly
- A blank is not a "no". A fact that is absent was undocumented on the vendor's page at the date shown.
- A rank is usually an ordering. Report
lowandhighwithoverall;distinct: falsemeans the neighbouring rank is not a finding. /estimateis arithmetic, not a quote. It prices published rates; taxes, currency and each vendor's own definition of its unit are outside it. A provider innot_pricedsays why.
What a key is
A key is not an account. inetGeek stores its hash, a prefix, the label you chose, the date it was created and the date it was last used, and nothing about what you asked for. See privacy.
The unauthenticated HTTP feeds remain available and are unchanged.