Skip to content

BallDontLie FIFA

BallDontLie provides FIFA World Cup API endpoints for teams, stadiums, matches, players, rosters, lineups, events, and match analytics.

ingestr supports BallDontLie FIFA as a keyed source for richer World Cup data, including player and match-level tables.

For endpoint parameters, plan tiers, and implementation notes across the selected soccer providers, see the BallDontLie FIFA source research.

URI format

plaintext
balldontlie-fifa://?api_key=<api-key>&season=2026

URI parameters:

  • api_key: BallDontLie API key. Required.
  • season: World Cup season. Supported values are 2018, 2022, and 2026. Defaults to 2026.
  • base_url: Overrides the API base URL. Defaults to https://api.balldontlie.io.

Example

Load World Cup 2026 players into DuckDB:

sh
ingestr ingest \
  --source-uri 'balldontlie-fifa://?api_key=<api-key>&season=2026' \
  --source-table 'players' \
  --dest-uri 'duckdb:///worldcup2026.duckdb' \
  --dest-table 'soccer.players'

Load World Cup 2026 match events:

sh
ingestr ingest \
  --source-uri 'balldontlie-fifa://?api_key=<api-key>&season=2026' \
  --source-table 'match_events' \
  --dest-uri 'duckdb:///worldcup2026.duckdb' \
  --dest-table 'soccer.match_events'

Tables

TablePKInc KeyInc StrategyDetails
teamsid-replaceLoads World Cup teams.
stadiumsid-replaceLoads stadium metadata.
group_standingsseason_year, team_id-replaceLoads group standings with team, group, and season fields flattened.
matchesid-replaceLoads matches with nested season, stage, group, stadium, team, referee, and manager fields flattened where available.
playersid-replaceLoads player profiles.
rostersseason_year, team_id, player_id-replaceLoads season rosters and player summary fields.
match_lineupsmatch_id, team_id, player_id-replaceLoads match lineups.
match_eventsid-replaceLoads match incidents such as goals, cards, substitutions, and shootout events.
player_match_statsmatch_id, player_id-replaceLoads player match statistics.
team_match_statsmatch_id, team_id-replaceLoads team match statistics.
match_shotsid-replaceLoads shot-level data.
match_momentummatch_id, minute-replaceLoads match momentum data.
match_best_playersmatch_id, player_id-replaceLoads best-player summaries for matches.
match_avg_positionsmatch_id, player_id-replaceLoads average player positions by match.
match_team_formmatch_id, team_id-replaceLoads team form data by match.

Use these as the --source-table parameter in the ingestr ingest command.

Notes

  • The API key is sent in the Authorization header.
  • The source handles BallDontLie cursor pagination automatically.
  • The source stores richer nested objects as JSON columns while also exposing stable nested IDs and names as regular columns where useful.
  • BallDontLie's free tier only includes teams and stadiums; group_standings requires ALL-STAR, and match/player/event tables require GOAT according to the provider docs.