Footballdex

Method & limits

About Footballdex

A card catalogue of every association football player that Wikidata knows about — 392,499 of them — built so that you can actually search it. No account, no tracking, no paywall.

Where the data comes from

Everything here is derived from Wikidata, the free knowledge base released under CC0. The harvest runs against the QLever mirror, which holds a complete copy of Wikidata and answers SPARQL queries over it. No scraping of Wikipedia HTML, no third-party API keys, no per-request costs.

A player is included when their occupation is association football player. For each one we pull their names in every available language, date of birth, height, mass, photo, citizenship, birthplace, position(s), shirt number, Wikipedia link, and every club or national team stint with the recorded appearances and goals.

Coverage

Live numbers from this build. Wikidata is volunteer-maintained, so coverage is uneven — a player with a Wikipedia article in a well-covered league has far more fields filled than one from a smaller competition.

Players in the catalogue

392,499100%

With a club or national team on record

263,05167%

With a position

288,49974%

With a nationality

337,24386%

With a date of birth

364,23393%

With a photo

68,50917%

With a height

93,51224%

With a weight

34,7829%

With recorded club appearances

141,00036%

With recorded national caps

54,51914%

With a Wikipedia article

221,30856%

30,255

goalkeepers

84,122

defenders

102,356

midfielders

71,740

forwards

26,882

teams

228

countries

1,092,447

career stints

62,964

women

How it is built

  1. Harvest. Paginated SPARQL queries against the QLever mirror fetch players, names, career stints, teams and the supporting metadata. Every response is cached on disk, so a failed step can be retried without re-querying the whole thing.
  2. Clean. Fictional characters, stage names and items with no usable name are dropped. Positions in dozens of languages are normalised onto 17 canonical position names, grouped into goalkeepers, defenders, midfielders and forwards.
  3. Assemble. The result is a single SQLite catalogue with an FTS5 full-text index over player names, plus team and country indexes for filtering.
  4. Serve. This site reads that file read-only. Searching, filtering and sorting happen server-side in milliseconds, so it works the same on a phone as on a desktop.

Cleaning rules

Wikidata is edited by hand, so a raw dump is not usable as a reference. These are the rules applied at build time. They are deliberate, and they change the numbers.

  • One position per player. A player can list several positions and Wikidata stores them in no particular order, so the most advanced role wins: forward over midfielder over defender over goalkeeper. A player listed as both winger and striker is a forward here.
  • Career spells are merged, not added up. The same spell is often recorded twice — Pelé's Santos years exist as both 1956-1974 and 1957-1974. Overlapping records for one club are folded into a single spell with the widest dates and the largest totals, so his career reads 1,273 appearances rather than roughly double that. A genuine return to a former club stays two spells.
  • Impossible totals are dropped, not published. Editors copy figures between statements, so Coutinho's Santos record (457 appearances, 370 goals) reappears on every later club he joined — and 457 matches do not fit in one season at Vitória. A spell's totals are kept only if they fit the length of that spell (at most 70 appearances and 100 goals per season); otherwise they are shown as not recorded.
  • Birth years must be plausible. Anything outside 1850 to five years ago is discarded, which removes the occasional typo (a player “born” in 2038).
  • Names are kept, not translated. Every language's label is harvested and search matches any of them. Players whose only labels are in a non-Latin script keep their own name and sort after the Latin-alphabet names rather than into the middle of them.

What this is not

  • Not live. This is a snapshot, rebuilt by re-running the harvest. Transfers and new debuts appear after the next rebuild.
  • Not complete. “Every footballer in the world” means every footballer Wikidata has an item for. Plenty of amateur and lower-league players are simply not in the source.
  • Not a stat provider. Appearance and goal totals are only present where Wikidata records them, and are per stint — a dash means “not recorded”, not “zero”.
  • Ages are anchored to the build date of the catalogue rather than to your clock, so they stay consistent between visits.

Rebuilding

The harvest is a single Python script: it re-queries only what is missing, then rebuilds the SQLite catalogue. Corrections made in Wikidata therefore flow through on the next run.

Catalogue built 2026-10-18T07:03:23Z · 69 fictional items and 8 nameless items dropped during cleaning.

← Back to the catalogue