How to build a query
Every question is a sentence built from pills. You pick what you’re looking for, narrow it with conditions, follow relations to other things, and finish with clauses that group, filter and rank. The sentence at the top — Reads as — always says what you’ve asked, in words.
1. Choose what you’re looking for
Click Football entity… after FIND. There are seven things to find: Team, Match, Tournament (one edition, e.g. FIFA World Cup 2014), Goal, Player, Card and Appearance (one player in one match: minutes, goals, cards, position, debut). Streaks come later — they belong to a team, or to a player.
Short cut: type a name straight into the finder. Brazil offers “Team named Brazil”; mbappe offers Kylian Mbappé. Accents and capitals don’t matter anywhere.
2. Narrow it with conditions
Click + on a block to open the finder for it. It offers only what fits: that entity’s properties, the relations it can follow, shortcuts, and clauses. Pick a property and set its operator and value — e.g. Confederation is UEFA.
- Operators depend on the type: text has contains / starts with / is; numbers have > ≥ < ≤ = ≠ between; dates have after, before, on, between, in year, in decade, in the last N years, more than N years ago, this year, this decade; names and lists (a team, a confederation, a stage) have is / is not / is any of; yes/no properties have is — and some, like Comeback, can be unknown where the record is incomplete.
- AND or OR. Conditions in a block all have to hold. Click the AND between them to make any one enough.
- Mixing AND and OR needs a condition group (finder → Operators), so the precedence is always visible.
- A condition with no value yet is simply ignored — nothing breaks while you’re typing.
3. Follow relations to other things
Relations appear in the finder as played → Match, was won by → Team and so on. Each adds a nested block; its conditions apply to the thing it reaches. A parent is kept if at least one of its related things passes — “teams that played a match where…”.
The team in focus. A match reached from a team (played) is seen from that team’s side, so it gains Result, Opponent, Goals for, Ground and the rest. The block shows a “team in focus” tag. A match on its own has no side: add from the side of → Team to give it one. Tournaments reached from a team (played in, won) gain that team’s Finish, record and group place.
Two sibling blocks both have to hold — so a match with played by England and played by Germany is a head-to-head.
4. What a row is
The deepest shown block decides what each row is. Blocks above it add a column naming themselves; hidden blocks (eye menu → Hide) only filter. So “Brazil → played → Match” with Brazil hidden lists matches; show Brazil too and each row gains Brazil’s name.
- Columns — the Columns button picks and orders them. Presentation only; the answer doesn’t change.
- Sorting — click a column heading. Also presentation only.
- Save — keeps the query in your Library, which needs you signed in with Google — everything else works without an account. Any block’s menu can also Save conditions as a shortcut or Save this block as a shortcut: your own pill, offered in the finder under Your shortcuts.
- Details — every row opens a side panel for its match, team, tournament, player, goal or streak (a card or an appearance opens its match, from that player’s side; a player’s run opens the player). Names in cells open theirs too, and panels link onwards. Team and player panels filter by years, home/away/neutral and kind of match; Full page opens everything — a tournament’s bracket, a team’s Elo by year and every match — with the filter kept.
- Graph — charts that fit the answer: results over time, goals by minute, streak timelines, scatter plots and more, drawn from every row.
- Share link — the address bar always holds the whole query; copy it or use the button.
5. Streaks
On a team, Streak of… finds runs of consecutive matches where something holds. It has two slots:
- Of what — Wins, Unbeaten, Draws, Clean sheets, Scored in… or Custom, any match conditions (e.g. Scorers for includes Kylian Mbappé).
- Across — which matches make up the sequence: all, competitive, finals, one competition, or custom. Matches outside it neither extend nor break a run. Choose editions of a competition for runs of tournaments instead: consecutive World Cups, titles in a row.
A streak has Length, Start and End dates, Is active (still going) and Ended by. Is most recent and keep the longest pick one run per team. Show matches on a streak row lists the run itself.
On a player, Run of… does the same for them: consecutive Appearances, Starts or Full matches in their side’s matches, or Scoring appearances in a row. Matches whose line-ups (or, for scoring, scorers) aren’t known are skipped rather than breaking the run.
6. Line-ups, cards and appearances
Where a match’s line-ups are known, everyone who started or came on is on record, with their minutes, position, goals and cards. Three things to find use them:
- Player — caps, starts, substitute appearances, Minutes played, Minutes per goal, Position, Won / Drawn / Lost and Win % when playing, Clean sheets, cards. From a player: played in, started or came on in → Match (their side in focus), received → Card, made appearance → Appearance.
- Appearance — one player in one match: Started, Came on, Taken off, Minutes, Played the whole match, Goals, Booked, Sent off, Position, Shirt number, Result, Recorded cap number and Debut. Group appearances by player and sum their minutes, or count distinct tournaments.
- Card — a yellow, a second yellow or a red: its Minute, the player and team, and Shown to a substitute.
Goals gain Scored by a substitute, Minutes after coming on, On debut and Scorer’s position; a match gains Cards shown and Sendings-off, and, with a team in focus, Sent off (theirs), Opponents sent off, Starting XI’s caps and Changes to the XI. The Full record only shortcut keeps matches whose scorers, line-ups and cards are all known.
Players link to each other too: played alongside and played against reach team-mates and opponents, who gain Matches shared, Starts shared and Pair — group by Pair for the most-used partnerships.
7. Group, measure, keep
Clauses at the end of the query change the answer’s shape:
- per… makes each row a group — per opponent, per year, per scorer. It starts with a count.
- + measure adds columns: counts (Wins, Draws…, or count where…), distinct counts (different tournaments), totals, averages, highest and lowest, first and last (by date), and calculated measures — a difference, a ratio or “as % of”.
- keep where… keeps rows or groups whose column passes: Goals ≥ 10, or against another column — Lost > ‹Won›.
- keep top… ranks and keeps the first N — overall, or for each value of a column (top scorer for each tournament), with ties kept if you like.
Group rows have View matches (or goals, or whatever was grouped), listing the rows behind the group.
A match reached from a team is seen from that team, so when both sides fit — every UEFA side’s matches — a UEFA v UEFA match comes twice. The results then offer List each match once, which keeps one row per match (the winner’s view). Starting from Match with a hidden played by → Team block gives the same list with no team in focus.
8. The block menu
The eye button on each block opens its menu.
- Required · Optional · Negated. Optional keeps parents with no match (columns blank, counts 0). Negated keeps only parents with no match — “teams that never…”. Negate the block that must not exist: for “never played England”, negate the match, not the England block.
- AND / OR between blocks. Click the AND before a second child block to make either enough — “won the World Cup or the Copa América”.
- Reorder as query root pivots the tree so that block leads; the answer stays the same.
- Rename gives a block a name used in columns and the sentence.
- Set an alias lets other blocks refer to this one: is the same as ‹Champion›, or compare a value with it — Host countries includes ‹W›, Date after ‹T›’s end date.
- Ungroup breaks a shortcut pill into its parts.
9. Facts worked out from the results
- Elo ratings for every side before every match, and upsets.
- The run of play where every goal has a scorer: each goal’s role (opener, equaliser, winning goal…), comebacks, lead changes.
- Finish at each finals tournament (Winner … Group stage) and group position.
- Next and previous — a team’s next match; a competition’s next edition (the team in focus carries over).
- Gaps — years since a player’s previous goal, a team’s last win, years between World Cup appearances.
- From the line-ups — minutes, debuts, clean sheets, a player’s record with and without them (on their full page), and who played together most.
Recipes
Each opens in the builder, so you can see how it’s made and change it.
Every England v Germany match
How many times have England and Germany played each other?
- Choose Match as the root.
- On the Match block, + played by → Team, then Name is England. Hide the block (eye menu → Hide) so it filters without adding columns.
- Again on the Match block, + played by → Team, Name is Germany, and hide it.
Reads as Find matches, played by England, played by Germany.
Teaches: Two sibling blocks under one match — each must hold, so the match involves both sides.
Answer: 35 matches, from 1930 to 2022. West Germany's matches count as Germany's.
Open in the builder →Brazil's World Cup wins
Which World Cup matches have Brazil won?
- Type Brazil in the root finder and pick Team named Brazil. Hide it.
- + played → Match. The block shows a “team in focus” tag.
- On the Match block: Result is Win, Competition is FIFA World Cup.
Reads as Find Brazil, that played matches where result is Win and competition is FIFA World Cup.
Teaches: A match reached from a team has that team in focus, so Result, Opponent and Goals for are Brazil's.
Answer: 79 matches, the latest three at the 2026 World Cup.
Open in the builder →Teams that have never played at a World Cup
Which sides have never played a World Cup finals match?
- Choose Team as the root.
- + played → Match, then Competition is FIFA World Cup.
- Open the Match block's eye menu and choose Negated. It now reads “never played”.
Reads as Find teams, that never played matches where competition is FIFA World Cup.
Teaches: A negated relation keeps only the parents with no match. It filters, so it's hidden.
Answer: 131 of the 215 teams — Cape Verde, Curaçao, Jordan and Uzbekistan debuted in 2026.
Open in the builder →UEFA sides England has never played
Which UEFA teams has England never played against?
- Choose Team as the root; Confederation is UEFA; Name is not England.
- + played → Match, and make it Negated from its eye menu.
- On that Match block, + played against → Team, Name is England.
Reads as Find teams where confederation is UEFA and name is not England, that never played matches, against England.
Teaches: Negate the match, not the opponent: “no match against England” rather than “a match against someone else”.
Answer: Armenia, Faroe Islands and Gibraltar.
Open in the builder →Argentina's record against non-CONMEBOL sides met 10+ times
Against which non-South American sides has Argentina played at least ten times, and how did it go?
- Team named Argentina, hidden; + played → Match.
- On the Match block, + played against → Team, Confederation is not CONMEBOL, hidden.
- per… → Opponent. It adds a count (Matches).
- + measure → Wins, Draws, Losses.
- keep where… → Matches ≥ 10.
Reads as Find Argentina, that played matches, against a team where confederation is not CONMEBOL — per opponent: matches, wins, draws, losses, only where matches is at least 10.
Teaches: Group per a column, count rows and rows where a condition holds, then keep groups that pass a threshold.
Answer: 11 opponents, Mexico the most met.
Open in the builder →Brazil's longest winning runs
What are Brazil's longest runs of consecutive wins?
- Team named Brazil.
- + Streak of… → Wins. Leave “across” as all matches.
- keep top… → Length, 5.
Reads as Find Brazil, with a streak of wins across all matches, keeping the top 5 by length.
Teaches: A streak block: what keeps the run going, across which matches, then rank by length.
Answer: 14 wins in 1997 is the longest.
Open in the builder →Top scorer at every World Cup
Who was the top scorer at each World Cup?
- Tournament, Competition is FIFA World Cup, Competition type is Finals.
- + included → Match (hide it), then on the Match + had → Goal, Own goal is no.
- per… → Name (the tournament), Scorer, Scored for. It adds a count.
- keep top… → the count, 1, then “ties kept” and “for each name”.
Reads as Find tournaments where competition is FIFA World Cup and competition type is Finals, that included matches, that had goals where it wasn't an own goal — per name and scorer and scored for: goals, keeping the top 1 by goals for each name, ties included.
Teaches: Keep top N for each value of a column — here 1 per tournament, with ties kept.
Answer: Just Fontaine 13 in 1958, Kylian Mbappé 10 in 2026 and 8 in 2022; four joint leaders on 5 in 2010.
Open in the builder →World Cups won by a host
Which World Cups were won by a host nation?
- Tournament, Competition is FIFA World Cup.
- + was won by → Team. Eye menu → Set an alias → W. Hide it.
- On the Tournament, + Host countries, then in the value picker choose ‹W› instead of a value.
Reads as Find tournaments where competition is FIFA World Cup and host countries includes ‹W›, won by ‹W›.
Teaches: An alias names a block so another can compare with it — here the winner against the host countries.
Answer: Six: Uruguay 1930, Italy 1934, England 1966, Germany 1974, Argentina 1978, France 1998.
Open in the builder →Holding the World Cup and the Euro at once
Which countries held two major trophies at the same time — say the World Cup and the Euro?
- Tournament as the root, Competition is FIFA World Cup. Eye menu → Set an alias → First.
- + was won by → Team.
- On that Team, + won → Tournament, Competition is UEFA Euro.
- On the Euro block, + End date, operator before, and in the value picker choose ‹First› → Title held until.
- Again, + Title held until, operator after, and choose ‹First› → End date.
- Columns → the Team's Name, both tournaments' Name and Title held until.
Reads as Find tournaments — call it ‹First› — where competition is FIFA World Cup, won by a team, that won a tournament where competition is UEFA Euro, end date before ‹First›'s title held until and title held until after ‹First›'s end date.
Teaches: An alias's own properties as values: a title's reign runs from its End date to Title held until, and two reigns overlap when each starts before the other ends.
Answer: Five pairs: West Germany (Euro 1972 with World Cup 1974), France (1998 with 2000), Spain three times (World Cup 2010 with Euro 2008, then with Euro 2012; Euro 2024 with World Cup 2026, both still held). Swap in Copa América for Argentina and Brazil.
Open in the builder →UEFA sides' biggest wins, each match once
What are the biggest wins in matches involving a UEFA side?
- Team as the root, Confederation is UEFA. Hide it.
- + played → Match. keep top… → Margin, 10.
- Germany 16–0 Russia shows twice, once from each side. Under the count, choose List each match once — it keeps the winner's view.
Reads as Find teams where confederation is UEFA, that played matches, keeping the top 10 by margin, each match once.
Teaches: A match reached through a team is one row per team that fits, so a UEFA v UEFA match comes twice. Each match once keeps one row per match.
Answer: Kazakhstan 20–1 Guam (1997), Germany 16–0 Russia (1912), Denmark 17–1 France (1908), France 14–0 Gibraltar (2023)… each once. Starting from Match, + played by → Team (UEFA) gives the same list with no team in focus.
Open in the builder →Defending champions out in the group stage
Which World Cup holders went out in the group stage of the next one?
- Team as the root.
- + won → Tournament, Competition is FIFA World Cup. Hide it.
- On that Tournament, + next edition → Tournament, Finish is Group stage.
Reads as Find teams, that won a tournament where competition is FIFA World Cup, whose next edition was a tournament where finish is Group stage.
Teaches: Previous/next edition carries the team in focus, so Finish is the champions' own finish at the next tournament.
Answer: Italy 1950, Brazil 1966, France 2002, Italy 2010, Spain 2014, Germany 2018.
Open in the builder →Longest waits between a player's goals
Which player went longest between two international goals?
- Goal as the root, Own goal is no.
- keep top… → Years since their previous goal, 10.
- Columns → Scorer, Scored for, Date, Match, Years since their previous goal.
Reads as Find goals where it wasn't an own goal, keeping the top 10 by years since their previous goal.
Teaches: Worked-out properties (here Years since their previous goal) rank like any other column.
Answer: The top five (Aubameyang, Manuel Fernandes, Serginho, Teboho Mokoena, Joaquín) are namesakes or a source error just under the 20-year split; Mágico González's 14.7 years (1977–92) is the longest clearly genuine wait.
Open in the builder →Most minutes played at World Cups
Who has spent longest on the pitch at World Cup finals?
- Appearance as the root, Competition is FIFA World Cup.
- group by… → Player and Team, with Sum of Minutes and a Count.
- keep top… → Sum of Minutes, 10.
Reads as Find appearances where competition is FIFA World Cup — per player and team: total minutes, matches, keeping the top 10 by minutes.
Teaches: Appearance is one player in one match — group appearances by player and sum their minutes.
Answer: Lionel Messi, 3,054 minutes in 34 matches; then Paolo Maldini (2,220) and Cristiano Ronaldo (2,205). Line-ups are known for World Cups since 1970.
Open in the builder →Spain's most-used partnerships
Which two Spain players have played together most often?
- Player as the root, Played for is Spain. Hide it.
- + played alongside → Player.
- group by… → Pair (on the second Player), with Max of Matches shared.
- keep top… → that measure, 10.
Reads as Find players where played for is Spain, that played alongside a player — per pair: highest matches shared, keeping the top 10 by matches together.
Teaches: Played alongside links a player to team-mates, with the first in focus: Matches shared counts their games together, and grouping by Pair counts each pair once.
Answer: Andrés Iniesta & Sergio Ramos, 112 matches together; Iker Casillas & Xavi, 106; Casillas & Ramos, 103 — in recorded line-ups, so from 2001 on.
Open in the builder →Messi's longest runs of competitive starts
How many competitive matches in a row has Messi started?
- Player as the root, Name is Lionel Messi. Hide it.
- + Run of… → Starts, across competitive matches.
- keep top… → Length, 3.
Reads as Find Lionel Messi, with a run of consecutive starts across competitive matches, keeping the top 3 by length.
Teaches: A player's runs work like a team's streaks: consecutive appearances, starts, whole matches or scoring appearances. Matches whose line-ups aren't known are skipped.
Answer: 42 competitive starts in a row from July 2007 to June 2013, ended against Ecuador; then 32 (August 2017 – October 2021).
Open in the builder →Relations at a glance
| From | Relation | To | What it reaches |
|---|---|---|---|
| Team | played | Match | Puts the team in focus: the match gains Result, Goals for, Opponent and the other team-relative properties. |
| played in | Tournament | Tournament editions the side played at least one match in. Puts the team in focus: the tournament gains Finish, Group position and its record there. | |
| has a | Streak | A run of consecutive matches, in date order, where a condition holds. You choose what the run is of, and which matches make up the sequence. | |
| was the opponent in | Match | Matches it played, seen from the other side — Result is the opponent's. The reverse of played against. | |
| won | Tournament | Editions whose final it won, counting penalties. League-format tournaments and qualifying have no winner. | |
| scored | Goal | Goals that counted for it, where the scorer was recorded — opponents' own goals included. | |
| had scorer | Player | Players who scored for it at least once. | |
| had player | Player | Everyone on record for it — in a line-up, on the scoresheet or booked. The reverse of played for. | |
| was shown | Card | Cards shown to its players. | |
| had appearance | Appearance | Every appearance for it — sum minutes or count by player. | |
| Match | played by | Team | Either side. Two of these, side by side, express a head-to-head. |
| played against | Team | Only ever the other team. Use this — not played by — to filter on the opponent's properties, or the team in focus matches its own filter. | |
| is part of | Tournament | The tournament edition the match belonged to. Friendlies have none. | |
| had | Goal | Goals in the match, where scorers were recorded. | |
| from the side of | Team | Puts one side in focus, so Result, Goals for and Opponent are from its side. Both sides are tried; this block's conditions pick which — so England v Germany appears twice if both sides qualify. | |
| they scored | Goal | Goals that counted for the team in focus — opponents' own goals included. Had lists both sides' goals. | |
| had scorer | Player | Players with a goal in it, own goals aside. With a team in focus, only that side's scorers. | |
| had in its line-up | Player | Everyone who played — starters and substitutes who came on. With a team in focus, only that side's players. | |
| had card | Card | Cards shown in the match, where cards are known. With a team in focus, only its players' cards. | |
| had appearance | Appearance | Everyone who played in it, as appearances. With a team in focus, only its side. | |
| was followed by | Match | The team in focus's next match — e.g. how sides did after a 5-goal defeat. | |
| came after | Match | The team in focus's previous match. | |
| Tournament | was won by | Team | The winner of the final, counting penalties. Empty for league-format tournaments and qualifying. |
| included | Match | Every match in the edition, from neither side. | |
| featured | Team | Sides with at least one match in the edition. | |
| next edition | Tournament | The next edition of the same competition. The team in focus carries over — so winners, then next edition where Finish is Group stage, finds defending champions out early. | |
| previous edition | Tournament | The previous edition of the same competition, keeping the team in focus. | |
| Goal | was scored in | Match | The match the goal was scored in, seen from the side it counted for. |
| counted for | Team | An own goal counts for the opposition. | |
| was scored by | Player | The player who scored it — for an own goal, a player on the other side. | |
| came in | Match | The match the goal came in, with no team in focus. Was scored in puts the goal's side in focus instead. | |
| Player | scored | Goal | Every goal with their name on it, own goals included — filter on Own goal to leave them out. |
| scored in | Match | Matches with at least one of their goals, with their side in focus — so Result is their team's result. | |
| played for | Team | The national side they played for. | |
| played in | Match | Matches with them in the recorded line-up — started, or came on — with their side in focus. Only where line-ups are known. | |
| started | Match | Matches they started, with their side in focus. | |
| came on in | Match | Matches they came on in as a substitute, with their side in focus. | |
| received | Card | Every card shown to them, where cards are known. | |
| made appearance | Appearance | Each match they played, as an appearance: minutes, goals, cards, position, debut. | |
| played alongside | Player | Team-mates who were in the same recorded line-up. Adds Matches shared, Starts shared and Pair — group by Pair for the most-used partnerships. | |
| played against | Player | Players on the other side in a recorded line-up. Adds Matches shared and Shared matches won. | |
| has a run of | Streak | A player's runs: consecutive appearances, starts or full matches in their side's matches, or consecutive appearances with a goal. | |
| Card | was shown in | Match | The match, seen from the booked player's side. |
| was shown to | Player | The player it was shown to. | |
| was shown to a player of | Team | The booked player's national side. | |
| Appearance | was made by | Player | The player who made it. |
| was in | Match | The match, with the player's side in focus. | |
| was for | Team | The side they played for. | |
| Streak | contains | Match | The matches inside the run, one row per match, in date order. |
| contains | Tournament | The editions inside a run of editions, one row each, in order. |
Know the data
- Results are from openfootball’s international archive, with martj42’s after openfootball’s last day (the 2026 World Cup among them). Scores are after extra time; a shootout counts as a draw under Result and for whoever went through under Result incl. penalties.
- Historical sides are merged into their FIFA successors (Soviet Union → Russia, Yugoslavia → Serbia, West Germany → Germany). Matches against non-FIFA sides are left out.
- Scorers are named for about half of all goals — every World Cup goal, most since 2016, few in friendlies before then — so goal and player totals are lower bounds.
- Line-ups and cards come from the Fjelstul World Cup Database (World Cups since 1970) and ESPN (most competitive matches since about 2003, friendlies since about 2016). Caps and card counts are lower bounds; Line-ups known, Cards known and Scorers / Line-ups / Cards from on a match say what's there.
- A player is a name plus a side; the same name more than 20 years apart is taken to be two people. The sources’ player ids join two spellings of one person, and split a name only when two ids played in the same match.
- Minutes run from kick-off or coming on to the final whistle, being taken off or being sent off; stoppage time counts as the 45th or 90th minute. Positions come from the sources, which rarely give one for a substitute. A Debut is only known where the side’s line-ups go back two years unbroken — otherwise a first recorded cap may not be the first.
- Finishes need named stages; many regional cups don’t have them. Tournaments without a final (1950 World Cup, early Copas) have no winner.