A pill-by-pill query builder for men's international football — made for curiosity and trivia.
Every question is a sentence built from pills: find teams, matches, players, goals, cards or appearances, narrow them with conditions, follow relations to other things, and group, rank and chart the answer. There is no query language to learn — each step offers only what can come next, and the sentence above the canvas always says what you’ve asked. Learn how in the guide, or start from a question on the home page.
It covers 47,004 men’s internationals between FIFA sides, from 30 Nov 1872 to 26 Aug 2026 — 154 years of football.
Matches
47,004
Goals
135,845
Teams
215
Tournaments
1,643
Named goals
60,813
Players
45,257
Appearances
399,172
Cards
45,278
Trivia
Worked out from the data as it stands — so from what's recorded, which isn't everything (see below).
21.5%of timed goals in normal time come in the last quarter of an hour.
610matches settled by a penalty shootout.
1,188recorded hat-tricks; 4.6% of recorded cards are sendings-off.
Goals per match, by decade
Early football scored freely; the average settled below three after the 1950s.
Home wins, by decade
Share of matches not on neutral ground won by the home side.
Matches per decade
1870s1890s1910s1930s1950s1970s1990s2010s
Tallest: 9,030 · Decade
Where the data comes from
openfootball is the base; each other source is paired with it match by match (same day, give or take one, same teams, same score), and each match records which source gave its scorers, line-ups and cards.
Line-ups (with positions, shirt numbers and player ids), substitutions, cards and scorers: World Cups from 1990, most competitions from about 2003, friendlies from about 2016. Read from ESPN's public but undocumented site API.
ESPN's terms of use
Elo ratings are worked out here from every result, the World Football Elo way. Confederations, tournament finishes and group tables are derived too.
How complete it is
Share of matches with every goal's scorer named, with line-ups, and with cards — the rest have the result only.
Years
Matches
Scorers
Line-ups
Cards
Before 1970
3,049
competitive
50%
0%
0%
4,501
friendly
0%
0%
0%
1970–1989
4,404
competitive
51%
5%
5%
4,453
friendly
0%
0%
0%
1990–2002
5,564
competitive
58%
5%
5%
3,810
friendly
3%
1%
1%
2003–2015
7,012
competitive
63%
54%
55%
4,709
friendly
33%
25%
25%
2016 on
6,442
competitive
80%
85%
85%
3,060
friendly
72%
81%
82%
What the data can't tell you
Totals are lower bounds. Scorers are named for about half of all goals, line-ups and cards for most matches since 2003 — so a player’s goals, caps and cards count what’s recorded, not their whole career. The app says so whenever a question touches them.
Friendlies before about 2016 mostly have no scorers, line-ups or cards; competitive matches before 2003 have line-ups and cards only at World Cups.
A player is a name and a team. The same name for the same side is one person — unless more than 20 years pass with nothing on record, when it’s read as a namesake. ESPN’s and the Fjelstul database’s player ids join two spellings of one person, but can’t be trusted to split a name (ESPN often gives one player several ids), so they do only when two ids share a pitch. Spellings are matched across sources (accents, word order, near misses); about 2% of scorers still don’t link to a line-up.
Minutes, positions and debuts are approximate. Stoppage time counts as the 45th or 90th minute, ESPN gives no position for substitutes, and a first recorded cap is only called a debut where the side’s line-ups go back two years unbroken.
Teams follow FIFA’s successions — West Germany is Germany, the Soviet Union is Russia, Yugoslavia is Serbia — and matches against non-FIFA sides are left out.
Scores are after extra time. A shootout counts as a draw in Result, and for the side that went through in Result incl. penalties. Stoppage-time goals count as the 45th or 90th minute.
Stages and finishes exist only where a source names the stage; tournaments settled by a final group (the 1950 World Cup, early Copas) have no single winner.
Sources disagree now and then — a handful of old scores differ between openfootball and martj42 (openfootball’s are kept), and ESPN’s feed is unofficial and can change. It also repeats some events word for word; exact repeats are dropped.
How it's built
A single Next.js app. The data is merged from its sources into one file, loaded into memory once, and every question runs against it directly — there’s no database. Share links carry the whole question, so a link opens exactly what you built. Signing in with Google keeps a library of saved queries and custom shortcuts in your account; nothing else needs one. Language models can use it too: /llms.txt explains the query format and how to link to an answer.