The football entity register. Maps player, team, and coach identities across Transfermarkt, FBref, UEFA, Sofascore, and 30+ data providers.
Named after Charles Reep (1904--2002), an RAF wing commander who hand-recorded every action in over 2,200 football matches starting in the 1950s. He's considered the grandfather of football analytics -- decades before expected goals or tracking data, Reep was tallying passes, shots, and sequences with pen and paper, pioneering the idea that football could be understood through data.
A canonical identity file for football. Every person and club gets a stable Wikidata QID, linked to their IDs on other platforms. If you have a Transfermarkt ID and need the FBref ID for the same player, this register gives you the answer.
Think of it as the football equivalent of the Chadwick Baseball Bureau Register.
| File | Records | Description |
|---|---|---|
data/people.csv |
~430K | Players and coaches with provider IDs and bio |
data/teams.csv |
~45K | Clubs with provider IDs and metadata |
data/names.csv |
varies | Alternate names and aliases |
data/meta.json |
— | Generation timestamp and counts |
| Column | Description | Example |
|---|---|---|
key_wikidata |
Wikidata QID (canonical key) | Q99760796 |
type |
player or coach |
player |
name |
Primary English name | Cole Palmer |
full_name |
Birth/legal name | Cole Jermaine Palmer |
date_of_birth |
ISO date | 2002-05-06 |
nationality |
Country | United Kingdom |
position |
Playing position | attacking midfielder |
height_cm |
Height in centimetres | 185 |
key_transfermarkt |
Transfermarkt player ID | 568177 |
key_transfermarkt_manager |
Transfermarkt manager ID (coaches only) | 50100 |
key_fbref |
FBref player ID | dc7f8a28 |
key_soccerway |
Soccerway person ID | 525801 |
key_sofascore |
Sofascore player ID | 982780 |
key_flashscore |
Flashscore player ID | palmer-cole/h8agbDt7 |
key_opta |
Opta player ID | — |
key_premier_league |
Premier League player ID | 49293 |
key_11v11 |
11v11 player ID | 265554 |
key_espn |
ESPN FC player ID | — |
key_national_football_teams |
National Football Teams ID | 92970 |
key_worldfootball |
WorldFootball.net ID | cole-palmer |
key_soccerbase |
Soccerbase player ID | 125454 |
key_kicker |
Kicker player ID | cole-palmer |
key_uefa |
UEFA player ID | — |
key_lequipe |
L'Equipe player ID | — |
key_fff_fr |
FFF.fr player ID | — |
key_serie_a |
Lega Serie A player ID | — |
key_besoccer |
BeSoccer player ID | — |
key_footballdatabase_eu |
FootballDatabase.eu person ID | — |
key_eu_football_info |
EU-Football.info player ID | — |
key_hugman |
Barry Hugman's Footballers ID | — |
key_german_fa |
DFB person ID | — |
key_statmuse_pl |
StatMuse PL player ID | — |
key_sofifa |
SoFIFA / EA FC player ID | — |
key_soccerdonna |
Soccerdonna player ID (women's football) | — |
key_dongqiudi |
Dongqiudi player ID | — |
key_understat |
Understat player ID | 1234 |
key_whoscored |
WhoScored player ID | 456789 |
key_fbref_verified |
FBref ID (cross-verified via worldfootballR) | dc7f8a28 |
key_sportmonks |
SportMonks player ID | 12345 |
key_api_football |
API-Football player ID | 1100 |
key_fotmob |
FotMob player ID | 292462 |
| Column | Description | Example |
|---|---|---|
key_wikidata |
Wikidata QID | Q9616 |
name |
Primary English name | Arsenal F.C. |
country |
Country | United Kingdom |
founded |
Founding date | 1886-10-01 |
stadium |
Home ground | Emirates Stadium |
key_transfermarkt |
Transfermarkt team ID | 11 |
key_fbref |
FBref squad ID | 18bb7c10 |
key_soccerway |
Soccerway team ID | 660 |
key_opta |
Opta team ID | — |
key_kicker |
Kicker team ID | — |
key_flashscore |
Flashscore team ID | — |
key_sofascore |
Sofascore team ID | — |
key_soccerbase |
Soccerbase team ID | — |
key_uefa |
UEFA team ID | — |
key_footballdatabase_eu |
FootballDatabase.eu team ID | — |
key_worldfootball |
WorldFootball.net team ID | — |
key_espn |
ESPN team ID | — |
key_playmakerstats |
PlaymakerStats team ID | — |
key_clubelo |
Club Elo team ID | Arsenal |
key_sportmonks |
SportMonks team ID | 123 |
key_api_football |
API-Football team ID | 42 |
key_sofifa |
SoFIFA / EA FC team ID | 1 |
key_fotmob |
FotMob team ID | 9825 |
| Column | Description | Example |
|---|---|---|
key_wikidata |
Wikidata QID | Q11893 |
name |
Primary name | Cristiano Ronaldo |
alias |
Alternate name | Cristiano Ronaldo dos Santos Aveiro |
Not every entity has every ID. Coverage depends on what the Wikidata community has mapped plus custom verified mappings:
| Provider | Player coverage | Source | Notes |
|---|---|---|---|
| Transfermarkt | Best | Wikidata | Highest coverage across all entities |
| FBref | Good | Wikidata | Strong for recent players |
| Soccerway | Good | Wikidata | Broad international coverage |
| Sofascore | Good | Wikidata | Modern players well covered |
| Opta | Sparse | Wikidata | Few entries have Opta IDs in Wikidata |
| Premier League | Decent | Wikidata | PL players only |
| Understat | ~2.3K | Custom | Matched via Transfermarkt bridge |
| WhoScored | ~2.3K | Custom | Matched via Transfermarkt bridge |
| SportMonks | ~600 | Custom | Players + teams via TM bridge |
| API-Football | Growing | Custom | Name + DOB matching |
| Club Elo | ~176 teams | Custom | Manual team mapping |
| FotMob | ~4.6K | Custom | DOB + name matching (top 6 leagues) |
IDs sourced from Wikidata are community-maintained. Custom IDs are verified independently — see the Reep API for methodology details.
import csv
# Load people into a dict keyed by Transfermarkt ID
people = {}
with open("data/people.csv") as f:
for row in csv.DictReader(f):
tm_id = row["key_transfermarkt"]
if tm_id:
people[tm_id] = row
# Look up Cole Palmer's FBref ID from his Transfermarkt ID
palmer = people["568177"]
print(palmer["key_fbref"]) # "dc7f8a28"library(readr)
people <- read_csv("data/people.csv")
# All Premier League-registered players
pl_players <- people |> filter(key_premier_league != "")
# Cross-reference: Transfermarkt -> FBref
people |>
filter(key_transfermarkt == "568177") |>
select(name, key_fbref, key_sofascore)sqlite3 reep.db <<EOF
.mode csv
.import data/people.csv people
.import data/teams.csv teams
.import data/names.csv names
EOF-- Find all IDs for a player
SELECT * FROM people WHERE name LIKE '%Salah%';
-- Reverse lookup: FBref ID -> everything
SELECT * FROM people WHERE key_fbref = 'e342ad68';The Reep API provides the same data as the CSVs via a convenient REST interface. All providers (Wikidata + custom verified) are available to all plans.
Base URL: https://reep-api.rahulkeerthi2-95d.workers.dev
| Endpoint | Description | Example |
|---|---|---|
GET /search |
Search by name | /search?name=Cole Palmer&type=player |
GET /resolve |
Translate provider ID | /resolve?provider=transfermarkt&id=568177 |
GET /lookup |
Look up by Wikidata QID | /lookup?qid=Q99760796 |
GET /stats |
Database statistics | /stats |
Available on RapidAPI.
# Search by name
python cli/reep.py search "Cole Palmer"
# Resolve: Transfermarkt -> all IDs
python cli/reep.py resolve transfermarkt 568177
# Translate: just output the target ID (pipe-friendly)
python cli/reep.py translate transfermarkt 568177 fbref
# dc7f8a28
# Download CSVs for offline use
python cli/reep.py download
# Search offline
python cli/reep.py local "Salah"All data is extracted from Wikidata via SPARQL. Wikidata is a free, collaborative knowledge base maintained by thousands of volunteers. The cross-provider ID mappings exist because the Wikidata community has systematically added external identifier properties for football data sources.
| Property | Provider |
|---|---|
| P2446 | Transfermarkt player ID |
| P2447 | Transfermarkt manager ID |
| P7223 | Transfermarkt team ID |
| P5750 | FBref player ID |
| P8642 | FBref squad ID |
| P2369 | Soccerway person ID |
| P6131 | Soccerway team ID |
| P12302 | Sofascore player ID |
| P8259 | Flashscore player ID |
| P8736 | Opta player ID |
| P8737 | Opta team ID |
| P12539 | Premier League player ID |
| P12551 | 11v11 player ID |
| P3681 | ESPN FC player ID |
| P2574 | National Football Teams ID |
| P2020 | WorldFootball.net ID |
| P2193 | Soccerbase player ID |
| P2276 | UEFA player ID |
| P7361 | UEFA team ID |
| P3665 | L'Equipe player ID |
| P9264 | FFF.fr player ID |
| P13064 | Lega Serie A player ID |
| P12577 | BeSoccer player ID |
| P3537 | FootballDatabase.eu person ID |
| P7351 | FootballDatabase.eu team ID |
| P3726 | EU-Football.info player ID |
| P12606 | Barry Hugman's Footballers ID |
| P4023 | German FA person ID |
| P12567 | StatMuse PL player ID |
| P12312 | Kicker team ID |
| P7876 | Flashscore team ID |
| P13897 | Sofascore team ID |
| P7454 | Soccerbase team ID |
| P7287 | WorldFootball.net team ID |
| P1469 | SoFIFA / EA FC player ID |
| P4381 | Soccerdonna player ID (women's football) |
| P8134 | Soccerdonna coach ID |
| P11379 | Dongqiudi player ID |
| P7280 | PlaymakerStats team ID |
The register is rebuilt weekly from Wikidata. Each release picks up new entities, updated IDs, and corrections made by the Wikidata community.
The best way to improve this register is to edit Wikidata directly. If a player is missing a Transfermarkt ID or FBref ID, add it to their Wikidata page. The next weekly build will pick it up automatically.
The data is derived from Wikidata and is available under CC0 1.0.
