SkillAgentSearch skills...

Reep

The football entity register. Maps player, team, and coach identities across Transfermarkt, FBref, UEFA, Sofascore, and 25+ data providers.

Install / Use

/learn @withqwerty/Reep

README

Reep

CI

Charles Reep's match notations from 1953

The football entity register. Maps player, team, coach, competition, and season 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.

What is this?

A canonical identity file for football. Every person, club, competition, and season gets a stable Reep ID (reep_<type_prefix><8hex>), linked to their IDs on other platforms. If you have a Transfermarkt ID and need the FBref ID for the same player — or want to resolve an Opta competition ID to its FBref equivalent — this register gives you the answer.

The unique key is reep_id. Wikidata QIDs are available as a provider mapping where the entity exists in Wikidata, but entities can exist independently (e.g. lower-league players sourced from Opta).

People who are both players and coaches (e.g. Pep Guardiola) have separate records with distinct Reep IDs — reep_p* for the player record, reep_c* for the coach record.

Think of it as the football equivalent of the Chadwick Baseball Bureau Register.

Data

| File | Records | Description | |------|---------|-------------| | data/people.csv | ~488K | Players and coaches with provider IDs and bio | | data/teams.csv | ~45K | Clubs with provider IDs and metadata | | data/competitions.csv | ~336 | Leagues, cups, and tournaments with provider IDs | | data/seasons.csv | ~3.8K | Season editions of competitions | | data/names.csv | varies | Alternate names and aliases | | data/meta.json | — | Generation timestamp and counts |

People schema

| Column | Description | Example | |--------|-------------|---------| | reep_id | Reep ID (canonical key) | reep_p2804f5db | | key_wikidata | Wikidata QID (empty if not in Wikidata) | 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 | 7cwgrmorsb42qaj5vrhp8fhzp | | 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 | | key_opta_numeric | Opta legacy numeric ID (same as FPL code, The Analyst sc- IDs) | 244851 | | key_thesportsdb | TheSportsDB player ID | 34146086 | | key_skillcorner | SkillCorner player ID | 23959 | | key_wyscout | Wyscout player ID | 234966 | | key_impect | Impect player ID | 52615 | | key_heimspiel | heim:spiel player ID | 361032 | | key_capology | Capology player slug | cole-palmer-36271 | | position_detail | Granular position from Transfermarkt | Attacking Midfield |

Teams schema

| Column | Description | Example | |--------|-------------|---------| | reep_id | Reep ID (canonical key) | reep_t0871097b | | 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 | b3sy95iqnw2bv69a0gxunhiot | | 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 | | key_opta_numeric | Opta legacy numeric team ID | 3 | | key_capology | Capology team slug | arsenal |

Competitions schema

| Column | Description | Example | |--------|-------------|---------| | reep_id | Reep ID (canonical key) | reep_lb3d230cb | | key_wikidata | Wikidata QID | Q9448 | | name | Competition name | Premier League | | country | Country | United Kingdom | | key_transfermarkt | Transfermarkt competition ID | GB1 | | key_fbref | FBref competition ID | 9 | | key_opta | Opta competition ID (UUID) | 2kwbbcootiqqgmrzs6o5inle5 | | key_opta_numeric | Opta legacy numeric competition ID | 8 | | key_optacore | Opta core numeric competition ID | 1 |

Seasons schema

| Column | Description | Example | |--------|-------------|---------| | reep_id | Reep ID (canonical key) | reep_sa7f63ba6 | | key_wikidata | Wikidata QID | Q124371422 | | name | Season name | 2024–25 Premier League | | competition_reep_id | Reep ID of parent competition | reep_lb3d230cb |

Names schema

| Column | Description | Example | |--------|-------------|---------| | key_wikidata | Wikidata QID | Q11893 | | name | Primary name | Cristiano Ronaldo | | alias | Alternate name | Cristiano Ronaldo dos Santos Aveiro |

Coverage

Not every entity has every ID. Coverage depends on what the Wikidata community has mapped plus custom verified mappings. To get live coverage counts:

# Wikidata-sourced IDs (provider_ids)
pnpm exec wrangler d1 execute football-entities --remote \
  --command "SELECT provider, COUNT(*) as cnt FROM provider_ids GROUP BY provider ORDER BY cnt DESC"

# Custom verified IDs
pnpm exec wrangler d1 execute football-entities --remote \
  --command "SELECT provider, COUNT(*) as cnt FROM custom_ids GROUP BY provider ORDER BY cnt DESC"

| Provider | Source | Notes | |----------|--------|-------| | Transfermarkt | Wikidata | Highest coverage across all entities | | FBref | Wikidata | Strong for recent players | | Soccerway | Wikidata | Broad international coverage | | Sofascore | Wikidata | Modern players well covered | | Opta | Custom | Alphanumeric IDs from Stats Perform's Opta F1 database (~50K players) | | Impect | Custom | DOB + name matching via Impect export | | Wyscout | Custom | Via Impect

Related Skills

View on GitHub
GitHub Stars132
CategoryData
Updated4h ago
Forks6

Languages

Python

Security Score

100/100

Audited on Apr 9, 2026

No findings