🔒
The API is a paid add-on — the MCP server has a free tier

The full reference is below, examples and all. Every /v1 call needs a key: sign in with Google, create one in your account, and start on 10 free points. 1 call = 1 point = 1 cent. The same key opens the MCP server, where the reference tools and the last week of results answer with no key at all.

Sign in & get a key
API — REST JSON v1 · read-only

Read-only access to the whole database — the same queries the site runs, as JSON. Base URL https://fdb4.io. Authenticate with Authorization: Bearer <key>. Every endpoint is GET; nothing here writes.

Base URL fdb4.io v1
Endpoints 12 all GET
Rate limit 120/min per key
Format JSON UTF-8
MCP server — a separate page, and a free tier 11 tools · 6 free

The same database spoken to AI clients over the Model Context Protocol, at https://fdb4.io/mcp. It is priced differently from this page, which is why it has one of its own: 6 of its 11 tools answer with no key at all — the country, competition and team lookups, the no-draw run a team is on, and the last few days of results — while the draw models, the all-time leaderboard, head-to-head records and the archive behind that week cost a point each, from this same balance. Nothing on /v1 is free.

MCP server & free tools ›
Endpoints 12
/v1/predictor GET

Teams ranked by draw likelihood, most "due" a draw first. Filters subset which teams are listed; the score and rank are global and never change with them.

request
curl -sS "https://fdb4.io/v1/predictor?type=club&limit=25" \
  -H "Authorization: Bearer $FDB_API_KEY" \
  -H "Accept: application/json"
example response

Illustrative shape — a couple of rows, not live data.

{
    "data": [
        {
            "rank": 1,
            "score": 0.81244,
            "team": {
                "id": 431,
                "slug": "arsenal",
                "name": "Arsenal",
                "type": "club"
            },
            "signals": {
                "played": 4820,
                "draws": 1204,
                "draw_pct": 0.2498,
                "current_no_draw_streak": 11,
                "max_no_draw_streak": 63,
                "avg_top_no_draw_streak": 28.4,
                "p50": 0.22,
                "p100": 0.24,
                "p_weighted": 0.232,
                "draw_debt": 2.55
            },
            "last_match_date": "2026-04-12"
        }
    ]
}
parameters
Name Type Description
type string national_team or club. Omit to rank both together.
recent boolean Only teams with a match in the last few months. Default true.
wc2026 boolean Restrict to the World Cup 2026 team group. Default false.
limit integer How many ranked teams to return, max 500. Default 100.
Getting a key
  1. Sign in with Google — no password, no form, nothing to wait for.
  2. Create a key in your account. It is shown once, so store it somewhere safe.
  3. Send it on every request as Authorization: Bearer <key> — to https://fdb4.io/v1 or to https://fdb4.io/mcp.
On sign-up 10 pts free, no card
Every month +2 pts if you sign in
Per call 1 pt = 1 cent
Referrals 10% of every point

1 call = 1 point = 1 cent, on the API and on the paid half of the MCP server — the free MCP tools cost nothing whether or not you hold a key. Out of points? Top up — you pick the amount, there are no packages and no subscription. Bring someone with you and earn 10% of every point they are ever credited. No refunds, ever: the product is data, and data cannot be returned.

Existing keys not attached to an account are not charged until migrated.

Errors 3
401 No valid key

The bearer token is missing, unknown, revoked or expired.

402 Out of points

The account behind the key has fewer than one point left. 1 call = 1 point = 1 cent. New accounts get 10 free points and +2 every month you sign in. Existing keys not attached to an account are not charged until migrated.

{
    "error": {
        "code": "insufficient_balance",
        "balance": 0,
        "top_up_url": "https://fdb4.io/account/balance",
        "monthly_grant": 2
    }
}
429 Rate limited

Over the per-minute limit. The response carries a Retry-After header; a throttled request costs no points.