§00 foot.io · the verifiable football database live · v1

Building the most complete, unified & verifiable
database of football.

Our goal is every league and every season, back to the 1870s. Today, a growing global dataset is unified under one canonical schema, with records from 1871, measured coverage, source attribution where available, and cross-source verification rolling out fact by fact. Explore it on the web now; supported REST and MCP access are in closed beta.

§01 The dataset, in real numbers live count
3.9k+
Public competitions
312k
Players
40k
Clubs
1.18M
Canonical matches
6.2M
Odds quotes
1871
Earliest match

The catalogue has passed one million canonical matches — 1,177,209 held, measured on 10 August 2026. Counts refresh from the production database at page load (odds quotes are a static snapshot, measured 10 Aug 2026) and describe what we hold; what an API key reads is stated plainly in §05 below. Coverage includes both deeply indexed and sparse records; source attribution and evidence completeness vary by entity, field and era.

§02 Postgrest-style queries GET /rest/v1/*

Filter, embed, sort. Same Postgres you'd write yourself.

Predicate filters on selectable columns, embedded relations where documented, ordering and pagination via standard headers. The data lives in Postgres; the supported beta surface is exposed through PostgREST and a custom auth layer.

  • Filter: ?goals=gte.20&season_id=eq.471
  • Embed: ?select=*,club:teams(name,logo_url)
  • OpenAPI 3.0 schema · standard PostgREST query semantics
  • MCP server for Claude / GPT — natural-language queries
~/foot.io · live
connecting to the live database…

↳ live data from the production DB. Nothing fictional, no carousel.

§03 The dataset, in 12 endpoints resource model

Twelve core resources. One canonical model.

GET /rest/v1/players?id=eq.:id

Players

Biographics, position, foot, height, photos, social handles and available external IDs.

GET /rest/v1/teams?id=eq.:id

Clubs

Founded year, kits, owners, manager, stadium, social and finances where indexed.

GET /rest/v1/competitions

Competitions

Leagues + cups · tier, country, format and indexed seasons; breadth and depth vary.

GET /rest/v1/matches?id=eq.:id

Matches

Scores plus lineups, events, referee, attendance, weather and odds where available.

GET /rest/v1/player_season_stats?player_id=eq.:id

Player stats

Apps · goals · assists · shots · key passes · per-90.

GET /rest/v1/betting_odds?match_id=eq.:id

Historical odds

Opening and closing 1X2, over/under and BTTS quotes by bookmaker, where recorded — served to paid tiers.

GET /rest/v1/competition_season_coverage

Coverage

Per-competition, per-season lineup, event and player-stat fill rates — gaps included. Public, no key required.

GET /rest/v1/match_events?match_id=eq.:id

Match events

Goals, cards, subs and VAR decisions — minute-stamped and player-attributed. No shot or xG detail is served.

GET /rest/v1/player_gameweek_fpl?player_id=eq.:id

Fantasy

FPL gameweek points · price · ownership · transfers in/out.

GET /rest/v1/referees?id=eq.:id

Referees

Cards per 90, home/away bias, big-game appointments, decision history.

GET /rest/v1/team_elo_ratings?team_id=eq.:id

Elo ratings

ClubELO-style Elo · dated snapshots · global and country ranks.

POST /rest/v1/rpc/player_h2h_for_player

Head-to-head

Player vs player · player vs team · 90-min matchups, who-marks-who.

§04 Country coverage GET /rest/v1/competitions?country=*

Country coverage. Live count.

Top 15 countries by indexed league count, queried from the live database. Click any name to inspect the competitions currently present; this is measured coverage, not a claim that every domestic competition is complete.

Counts include cups, regional leagues, women's competitions, junior tiers — anything we have at least one season for.

Loading from API…
§05 Closed beta — join the waitlist

curl, when keys go live.

foot.io is in closed beta — API keys are invite-only for now. The confirmed tiers: Free $0 · Indie $19/mo · Pro $79/mo · Enterprise custom — compare plans. One number to hold us to: we hold 1,177,209 matches, and the licence gate means every tier — Enterprise included — reads the 733,863 (62.3%) we have an explicit right to redistribute, measured on 10 August 2026. Checkout isn’t open yet; join the waitlist at /signup and we’ll invite you in order.

# Supported API access is invite-only. Set FOOTIO_BASE and both beta keys; # the public docs contain the current endpoint and exact headers. curl "$FOOTIO_BASE/matches? select=match_date,home_score,away_score, home:teams!matches_home_team_id_fkey(name), away:teams!matches_away_team_id_fkey(name), venue:stadiums(name) &season_id=eq.SEASON_ID &or=(home_team_id.eq.55,away_team_id.eq.55) &order=match_date" \ -H "apikey: $FOOTIO_ANON_KEY" \ -H "x-api-key: $FOOTIO_API_KEY"