FlashScore APIflashscore.com ↗
Access FlashScore data via 24 endpoints: daily fixtures, live scores, pre-match odds, lineups, statistics, standings, H2H, and player results across dozens of sports.
What is the FlashScore API?
The FlashScore API exposes 24 endpoints covering fixtures, live scores, betting markets, match statistics, lineups, standings, head-to-head records, and player match history across football, tennis, basketball, hockey, table tennis, esports, and more. A single call to get_daily_fixtures returns every match for a given day with team IDs, competition metadata, scores, and status — filterable by sport, competition ID, season ID, or competition name — while get_match_full_report consolidates detail, events, stats, lineups, form, H2H, standings, and odds into one response.
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 '{
"day_offset": "-1",
"sport": "football"
}'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
Daily Fixtures and Odds
get_daily_fixtures accepts a day_offset (0 = today, -1 = yesterday, 1 = tomorrow), an optional sport, and filters for competition_id, season_id, or a competition_name partial string. Each match object in the matches array carries match_id, status, start_time, home_team/away_team (with IDs and slugs), score, and nested competition metadata including country, id, and season_id. Setting exclude_youth removes reserve, B-team, and U21/U23 competitions. get_fixtures_with_odds merges the same fixture feed with 1X2 match-winner odds; passing sport=all returns every supported sport grouped under a sports array with per-group matches_with_odds counts.
Match Detail, Events, and Statistics
get_match_detail returns score (including half-time splits), status, winner, and an available_data array whose codes (ST for statistics, LI for lineups, HH for H2H) gate the downstream endpoints. get_match_events delivers a chronological events array with period boundary markers, minute, team, event type (goal, yellow_card, substitution, etc.), player name and ID, and a running score_home/score_away on each scoring event. get_match_statistics breaks figures like xG, Ball Possession, Total Shots, Corner Kicks, and Duels Won by period (match, 1st_half, 2nd_half, extra_time) and category (top_stats, shots, attack, passing, etc.). get_match_odds returns every pre-match betting market available — HOME_DRAW_AWAY, OVER_UNDER, BOTH_TEAMS_TO_SCORE, DOUBLE_CHANCE, DRAW_NO_BET, and more — with per-bookmaker odds rows and a bookmakers reference array.
Standings, Previews, and Team/Player History
get_league_standings resolves the standings table for any competition given a match_id from that competition, returning ranked rows with wins, draws, losses, goals for/against, goal difference, and recent form. get_all_leagues_standings scales this to every competition playing on a given day, with an optional top_leagues_only flag that restricts output to a fixed 70-league prominence list. get_match_preview and get_daily_h2h_previews supply up to 10 H2H encounters plus each side's recent form with dates, scores, and competition names. get_team_results and get_team_fixtures paginate a team's historical results and upcoming schedule respectively (~40 matches per page). get_player_results resolves a player's current club and national team, then returns paginated per-match stats for both.
Search and Season Calendar
search supports full-text lookup of teams, players, and tournaments across all sports, returning entity type, sport, gender, country, and IDs usable in every other endpoint. list_countries enumerates the countries (or tour categories for tennis and esports) that have competitions on FlashScore for a given sport, each with a country_id and country_url. get_prioritized_fixtures and get_top_league_fixtures sort the day's matches by a fixed prominence ranking (UEFA Champions League, Premier League, La Liga, Serie A, Bundesliga, and ~65 others), making it straightforward to build curated daily digests without manually filtering thousands of matches.
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 multi-sport daily fixture digest ordered by league prominence using
get_prioritized_fixtureswith alimitandday_offset. - Power a pre-match betting dashboard by pulling all available markets and bookmaker odds per match from
get_match_odds. - Aggregate league table snapshots for every competition in a single sport on a given day via
get_all_leagues_standings. - Track a player's club and international form across club and national team games with paginated
get_player_resultscalls. - Generate match preview cards combining H2H history, home/away form splits, and 1X2 opening/closing odds from
get_match_full_report. - Monitor live score updates in near-real time with
get_live_scoresand look up full event timelines viaget_match_events. - Resolve team and competition IDs for any sport with
search, then paginate their upcoming schedules throughget_team_fixtures.
| 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 public developer API?+
What does `get_match_full_report` return compared to calling individual match endpoints separately?+
get_match_full_report combines in one response: the detail object (score, half-time score, available_data codes, winner, times), events array (goals, cards, substitutions with minute and period), stats broken down by 1st_half/2nd_half/extra_time, lineups with formation and coach, up to 20 h2h results, up to 20 home_form and away_form results each, home-only and away-only form splits, league_standings, and odds. Calling individual endpoints is useful when you only need one slice; the full report is suited for single-match pages that need all of it.Does the API cover in-play betting odds or live markets?+
get_match_odds and get_fixtures_with_odds return pre-match odds only; there is no live/in-play market feed. You can fork this API on Parse and revise it to add a live-odds endpoint if your use case requires in-play data.How does pagination work for team and player history endpoints?+
get_team_results and get_player_results each return roughly 40 matches per page, with page 1 being the most recent. The has_next_page boolean in each response indicates whether another page exists. get_player_results additionally separates club_results from national team results on each page and reports stats_fetched to show how many rows carry per-match performance stats.Is detailed match data (statistics, lineups) available for all sports, or only football?+
get_match_statistics or get_match_lineups, check that ST or LI respectively appear in the available_data array returned by get_match_detail. Some non-football sports and lower-tier competitions will not have these codes present. You can fork this API on Parse and revise it to surface a sport-level coverage indicator if you need to filter programmatically by data availability.