inetGeek docs
REST API

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=analytics

GET /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

PathWhat it returns
POST /keys, DELETE /keysCreate a key; revoke the one you are calling with
GET /accountCheck a key
GET /categoriesThe sections and category ids
GET /providersProviders 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}/scoreThe iScore, its interval, pillars and the criteria behind them
GET /providers/{id}/alternativesPeers ranked by iScore
GET /factsThe fact keys you can filter on
GET /searchSearch every published page
GET /estimateMonthly cost at a stated volume, cheapest first
GET /changelogRecorded changes to published facts
GET /startup-creditsProviders 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 429 with Retry-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 stable code.
  • List endpoints take limit (1 to 200, default 50) and offset, and return page.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 low and high with overall; distinct: false means the neighbouring rank is not a finding.
  • /estimate is arithmetic, not a quote. It prices published rates; taxes, currency and each vendor's own definition of its unit are outside it. A provider in not_priced says 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.

On this page