FlashScore APIflashscore.com ↗
Access FlashScore data via API: daily fixtures, live scores, pre-match odds, match stats, lineups, standings, H2H, and player history across 20+ sports.
What is the FlashScore API?
The FlashScore API exposes 23 endpoints covering fixtures, live scores, betting markets, standings, lineups, match events, and player history across football, tennis, basketball, hockey, table tennis, esports, and more. get_match_full_report returns a single consolidated payload with timeline events, period-level statistics, lineups, H2H, form splits, league table, and 1X2 odds for any match ID. IDs returned by one endpoint feed directly into others, making it straightforward to chain fixture discovery with deep match data.
curl -X POST 'https://api.parse.bot/scraper/e4c11d5d-7c48-4a9d-9141-7abf0692ddcd/get_daily_fixtures' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"sport": "football",
"day_offset": "-1"
}'Retrieve all fixtures/matches for a given day across a sport. Returns match details including teams (with IDs), scores, competition info, and match status. Day offset controls which day relative to today (0=today, -1=yesterday, 1=tomorrow). Each match includes a match_id usable with get_match_odds. Optional filters narrow results by competition ID, season ID, competition name substring, or exclude youth/reserve competitions. When any filter is active, a debug object is included showing the filter values and before/after match counts. When competition_id is supplied, the debug object is enhanced with full diagnostic data: exact match counts, matching match details, and a complete frequency map of all competition IDs in the unfiltered data — all computed against the raw unfiltered array before any filtering is applied. When limit is supplied, the filtered matches are first ordered by league prominence using the same fixed, ordered list of the 70 most prominent football leagues and cups that get_top_league_fixtures uses (competition.prominence_rank, 1 = most prominent, then by kick-off time; competitions outside that list follow in feed order with prominence_rank null), then only the first N matches are returned and each is enriched from its head-to-head feed with home_form and away_form (each team's last 10 results, result from that team's perspective: win/loss/draw) and h2h (last 10 direct meetings, result as home_win/away_win/draw). Enrichment runs in parallel inside a fixed time budget of roughly 40 seconds; each match carries enriched=true when its form/H2H was fetched in time and enriched=false with empty form/h2h arrays otherwise, and the response adds limit, total_fixtures (matches after filters, before limit), enriched_matches and remaining_matches. The prominence list is football-only, so for other sports limited mode keeps feed order. Limited mode costs one fixture request plus one request per returned match. When limit is omitted the endpoint returns every match of the day in feed order with no enrichment fields, no prominence fields, and a single upstream request. Rugby is served as two sports: rugby (or rugby_union) returns FlashScore's Rugby Union section and rugby_league its Rugby League section; handball returns FlashScore's handball section (e.g. FRANCE: Starligue). Women's football competitions appear under football with their FlashScore label, e.g. 'FRANCE: Premiere Ligue Women' (the Arkema Premiere Ligue), so competition_name 'Premiere Ligue Women' narrows a day to that league.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of matches (after any filters, in league-prominence order) to return and enrich with home_form, away_form and h2h; must be a positive integer. Omitting returns all matches of the day in feed order without enrichment. |
| sport | string | Sport name to fetch fixtures for. |
| season_id | string | Filter results to only matches from a specific season by its FlashScore season ID (e.g. 'jD0zriYA'). Obtainable from get_daily_fixtures competition.season_id field. |
| day_offset | integer | Day offset from today: 0=today, -1=yesterday, 1=tomorrow, etc. |
| exclude_youth | boolean | When true, exclude matches from youth, U21, U23, reserve, B-team, and amateur competitions (identified by keywords like U21, U23, Youth, Reserve, Junior, Academy, etc. in the competition name). |
| competition_id | string | Filter results to only matches from a specific competition by its FlashScore competition/tournament ID (e.g. 'xbpjAGxq'). Obtainable from get_daily_fixtures competition.id field. |
| competition_name | string | Filter results to matches whose competition name contains this string (case-insensitive partial match). E.g. 'Premier League' matches 'ENGLAND: Premier League', 'EGYPT: Premier League', etc. |
{
"type": "object",
"fields": {
"debug": "object (present only when a filter is active) — includes competition_id_filter, season_id_filter, competition_name_filter, matches_before_filtering, matches_after_filtering. When competition_id is supplied, also includes: exact_competition_id_requested, exact_season_id_requested, competition_id_exact_match_count, season_id_exact_match_count (if season_id supplied), matching_match_indexes (up to 20 0-based indexes), matching_matches (detail for those matches), competition_id_frequency (complete frequency map of all competition IDs in the raw data)",
"limit": "integer (present only when limit is supplied) — the limit applied",
"sport": "string — sport name requested",
"matches": "array of match objects with match_id, status, start_time, home_team, away_team, score, competition (name, id, country, url, season_id); when limit is supplied matches are in league-prominence order and competition also carries prominence_rank (integer 1-70 or null when outside the prominence list) and top_league_name (string or null), and each match also carries enriched (boolean), home_form and away_form (up to 10 recent results each with match_id, date, home_team, home_team_id, away_team, away_team_id, score, home_score, away_score, home_ht, away_ht, result win/loss/draw from that team's perspective, competition, country) and h2h (up to 10 direct meetings with the same fields, result as home_win/away_win/draw)",
"sport_id": "integer — FlashScore numeric sport identifier (e.g. 1 football, 7 handball, 8 rugby union, 16 boxing, 19 rugby league)",
"day_offset": "integer — day offset used",
"total_matches": "integer — number of matches returned (after filtering and limit)",
"total_fixtures": "integer (present only when limit is supplied) — matches after filters before the limit was applied",
"enriched_matches": "integer (present only when limit is supplied) — returned matches whose form and H2H were fetched",
"remaining_matches": "integer (present only when limit is supplied) — returned matches not enriched within the time budget (enriched=false)"
},
"sample": {
"data": {
"sport": "football",
"matches": [
{
"score": {
"away": null,
"home": null,
"away_ht": null,
"home_ht": null
},
"status": "not_started",
"match_id": "MiHypBQh",
"away_team": {
"id": "pGcBj6Zg",
"name": "Dakota",
"slug": "sv-dakota",
"short_name": "DAK"
},
"home_team": {
"id": "8G4cEV0e",
"name": "La Fama",
"slug": "la-fama",
"short_name": "FAM"
},
"start_time": "2026-06-11T00:30:00+00:00",
"competition": {
"id": "htKvweNB",
"url": "/football/aruba/division-di-honor/",
"name": "ARUBA: Division di Honor - Final Group",
"country": "Aruba",
"season_id": "Ewx6YhLh"
}
}
],
"sport_id": 1,
"day_offset": 0,
"total_matches": 144
},
"status": "success"
}
}About the FlashScore API
Fixtures and Live Data
get_daily_fixtures returns every match for a given sport on a chosen day, controlled by day_offset (0 = today, negative = past, positive = future). Optional filters include competition_id, season_id, competition_name (partial match), and exclude_youth to drop reserve and amateur competitions. When a limit is supplied, the response adds home_form and H2H enrichment for the top-N matches and reports enriched_matches and remaining_matches counts. get_fixtures_with_odds combines the same fixture feed with match-winner odds in one call, exposing home_win, draw, and away_win fields for three-way sports and a two-way equivalent for head-to-head sports. get_live_scores returns incremental score updates with resolved team names for matches active at call time.
Match Depth
get_match_odds returns every available pre-match betting market for a match: HOME_DRAW_AWAY, OVER_UNDER, BOTH_TEAMS_TO_SCORE, DOUBLE_CHANCE, DRAW_NO_BET, and others, each with per-bookmaker lines and bookmaker metadata. get_match_events delivers a chronological timeline of goals, assists, cards, penalties, and substitutions interleaved with period-boundary markers, so callers can place each event in the correct half. get_match_statistics covers xG, ball possession, total shots, shots on/off target, corner kicks, passes, tackles, duels won, and goalkeeper saves, broken down by period (match, 1st_half, 2nd_half, extra_time). get_match_lineups returns formation, coach, jersey numbers, and starter/substitute flags for both teams when LI is present in available_data.
Teams, Players, and Competitions
get_team_results and get_team_fixtures both paginate at ~40 rows per page and accept any team's team_id and team_slug from search results. get_player_results resolves a player's current club and national team from their profile, returning per-match performance stats with stats_available flags, paginated in ~40-match blocks. get_league_standings derives the standings table from any match_id belonging to that competition; it returns rank, matches_played, wins, draws, losses, goals_for, goals_against, goal_difference, and points per team. get_all_leagues_standings scales this up: it finds every unique competition playing on a given day and fetches their tables in parallel, with an optional top_leagues_only filter that restricts output to 70 prominent competitions.
Season and Search Utilities
list_countries enumerates every country (or tour category for tennis and esports) that has competitions on FlashScore for a sport, returning country_id, name, and country_url. These feed into season-level queries where season_id values can filter get_daily_fixtures to a specific campaign. search handles full-text lookup of teams, players, and tournaments (minimum 2 characters) and returns id, url_slug, type, sport, gender, and country — the entry point for feeding IDs into all other endpoints.
The FlashScore API is a managed, monitored endpoint for flashscore.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when flashscore.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official flashscore.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a football betting dashboard using
get_fixtures_with_oddsfor same-day 1X2 lines andget_match_oddsfor full market depth per match. - Aggregate daily standings across all active leagues using
get_all_leagues_standingswithtop_leagues_onlyfor a league-table summary app. - Power a pre-match analytics tool combining
get_match_previewH2H history, form arrays, and opening/closing odds movements. - Track a player's performance trends across club and international matches with paginated
get_player_resultsand per-match stat fields. - Send push notifications for goals and cards by polling
get_live_scoresand resolving event details viaget_match_events. - Generate match report PDFs using
get_match_full_reportfor its consolidated events, statistics, lineups, and standings in one request. - Build a team fixture calendar by chaining
searchto resolveteam_id, thenget_team_fixturesfor upcoming scheduled matches.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does FlashScore have an official developer API?+
What does `get_match_statistics` return and when is it available?+
get_match_statistics returns stat items such as xG, ball possession, total shots, shots on/off target, corner kicks, passes, tackles, duels won, and goalkeeper saves. Each item carries a period field (match, 1st_half, 2nd_half, extra_time) and a category (e.g. top_stats, shots, attack, passes). Before calling it, check that the string 'ST' appears in the available_data array returned by get_match_detail, as not all matches have statistics.Does the API cover historical match data beyond the current season?+
get_team_results and get_player_results, which paginate backwards through a team's or player's archive. The season-level endpoints focus on the current season's schedule. Multi-season historical databases with structured year-by-year breakdowns are not currently covered. You can fork the API on Parse and revise it to add endpoints targeting past-season data.Are in-play (live) betting odds available through this API?+
get_match_odds and get_fixtures_with_odds return pre-match odds from FlashScore's odds comparison section. Live in-play odds that update during a match are not currently exposed. You can fork the API on Parse and revise it to add a live-odds endpoint if that data is accessible on the source.How do I filter `get_daily_fixtures` to a single league?+
competition_id in the competition_id parameter, or use competition_name for a case-insensitive partial match (e.g. 'Premier League'). You can also supply a season_id to restrict results to a specific season within that competition. Competition and season IDs are obtainable from search results or from the competition object on any match in a prior fixture response.