Flashscore APIflashscore.de ↗
Access Flashscore.de match listings, lineups with player ratings, match statistics, team rosters, and German football news via a single structured API.
What is the Flashscore API?
The Flashscore.de API exposes 7 endpoints covering football, tennis, and basketball data from the German-locale version of Flashscore, including match listings by sport and country, per-match lineups with individual player ratings, structured statistics (xG, possession, shots, corners, and more), team rosters with seasonal stats, and a German-language football news feed. The get_match_lineups endpoint in particular returns per-player rating fields unavailable from most public sports data sources.
curl -X GET 'https://api.parse.bot/scraper/4a508f5f-139d-43fa-9270-251ed9296e4c/get_matches?country=0&upcoming=true&date=de_1&sport=1' \ -H 'X-API-Key: $PARSE_API_KEY'
Retrieve match listings for a given sport, optionally filtered to one country or to one calendar day. With country=0 (the default) and no match_date, the worldwide daily feed is fetched for today and each of the next days_ahead days (Europe/Berlin calendar days; one upstream request per day, so days_ahead=3 costs 4 requests) and only matches whose start time falls between today 00:00 and the last day 23:59:59 Berlin time are returned; matches earlier today that have already finished are still included because they belong to today. With match_date set (dd.mm.yyyy, e.g. 15.10.2026 as one shape) and country=0, exactly that Berlin calendar day is returned in one upstream request, including finished matches of a past day; days_ahead is ignored in that mode. The site publishes the daily listing only for a rolling window of today minus 7 to today plus 7 days, so a match_date outside that window is rejected with stale_input naming the currently available range. from_date and to_date report the covered window as ISO dates. With a country ID such as 81 (Germany) the site's per-country listing is returned instead: all leagues of that country with their most recent results, or their not-yet-started fixtures when upcoming=true; days_ahead and match_date have no effect in that mode. Each match entry carries event_id, home_team, away_team and start_time (an 'AD'-prefixed Unix timestamp string). Pagination is not supported; one request returns the whole listing. A country ID the site does not know yields an empty sections array. The upcoming flag has no effect when country=0.
| Param | Type | Description |
|---|---|---|
| date | string | Locale string for the feed (not a calendar day; use match_date for that). Use 'de_1' for the German-locale feed. |
| sport | integer | Flashscore sport ID from the Sport enum (1=football, 2=tennis, 3=basketball, 4=ice hockey, ... 42=kabaddi). Other numeric IDs are forwarded as-is; an ID the site does not know yields an empty listing. |
| country | integer | Flashscore country ID. 0 returns today's matches from all countries; 81 is Germany. Other Flashscore country IDs are forwarded as-is; an unknown ID returns an empty listing. |
| upcoming | boolean | Only used when a country is selected: true returns that country's not-yet-started fixtures, false returns its most recent results. |
| days_ahead | integer | Only used when country=0 and match_date is not set: number of future Berlin calendar days to include after today, 0 to 7. 0 returns today's matches only; values outside 0-7 are rejected with stale_input. |
| match_date | string | Calendar day in dd.mm.yyyy form (Europe/Berlin) whose matches are returned when country=0. Must lie within today minus 7 to today plus 7 days, the window the site publishes; other days and malformed values are rejected with stale_input. Omitted: today plus days_ahead. |
{
"type": "object",
"fields": {
"raw": "string containing first 1000 chars of the raw decoded response (first fetched day's feed)",
"to_date": "ISO date (Europe/Berlin) of the last covered day when country=0 (equals from_date when match_date is set); absent in per-country mode",
"sections": "array of match objects with _type, event_id, home_team, away_team, start_time",
"from_date": "ISO date (Europe/Berlin) of the first covered day when country=0; absent in per-country mode"
},
"sample": {
"data": {
"raw": "SA÷1¬~ZA÷ÄGYPTEN: Division 2 A¬ZEE÷lt1UhcxR¬ZB÷69¬ZY÷Ägypten¬...",
"to_date": "2026-10-15",
"sections": [
{
"_type": "match",
"event_id": "hxyCmnYG",
"away_team": "WE SC",
"home_team": "El Daklyeh",
"start_time": "AD1792067400"
},
{
"_type": "match",
"event_id": "6Lx4k834",
"away_team": "Al Nasr",
"home_team": "El Mansoura",
"start_time": "AD1792067400"
}
],
"from_date": "2026-10-15"
},
"status": "success"
}
}About the Flashscore API
Match Listings and Detail
The get_matches endpoint returns match listings filtered by sport (1=football, 2=tennis, 3=basketball), country, and an optional date string. Each entry in the sections array carries an event_id, home_team, away_team, and start_time. That event_id is the key that flows into every other per-match endpoint. get_match_detail accepts an event_id and returns key-value pairs covering team IDs, image references, and league standings data.
Lineups, Ratings, and Statistics
get_match_lineups returns a players array with player_id, name, team, side, rating, is_best, and number for each player, plus home_team_average_rating and away_team_average_rating at the match level. Ratings populate only for completed matches; the array will be empty for future fixtures or non-football events. For batch workflows, get_player_ratings_for_matches accepts a comma-separated list of event_ids and returns aggregated player arrays for each, along with a total_matches count. get_match_statistics delivers sectioned stats — each section has a section_name and a stats array of objects with name, home, and away values, covering metrics such as xG, possession, shots on target, corners, fouls, passes, and cards.
Rosters and News
get_team_roster requires both a team_id and a team_slug (both taken from the team's Flashscore.de URL). It returns a players array with position, number, name, nationality, age, matches_played, minutes_played, goals, assists, and a player_url. Invalid ID/slug combinations return a stale_input indicator rather than silently failing. get_news requires no parameters and returns a structured feed of German-locale football articles, each with a title, timestamp, and image URL.
The Flashscore API is a managed, monitored endpoint for flashscore.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when flashscore.de 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.de 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 live match tracker that pulls fixtures by sport and country from
get_matchesand refreshes scores viaget_match_detail. - Aggregate player performance ratings across a season using
get_player_ratings_for_matcheswith a batch of event IDs. - Populate a fantasy football dashboard with per-match ratings,
is_bestflags, and team average ratings fromget_match_lineups. - Power a statistics comparison tool using xG, possession, and shot data returned by
get_match_statistics. - Sync a team squad page with current roster data — goals, assists, minutes, and nationality — from
get_team_roster. - Display a German-language football news widget using titles, timestamps, and images from
get_news. - Identify top-rated players across multiple matches by iterating
get_player_ratings_for_matcheson a full matchday's event IDs.
| 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?+
When are player ratings missing from `get_match_lineups`?+
players array will be empty for matches that have not yet been played or for sports other than football. For completed football matches, individual rating values and the home_team_average_rating / away_team_average_rating fields are populated.Does the API cover live in-play events or match incidents (goals, cards, substitutions)?+
How do I find the correct `team_id` and `team_slug` for `get_team_roster`?+
/team/{team_slug}/{team_id}/. Passing a mismatched pair returns a stale_input indicator rather than an error, so verifying the combination against the actual URL before calling is advisable.Is tennis or basketball statistics data available the same way as football?+
get_matches endpoint accepts sport IDs for football (1), tennis (2), and basketball (3), returning event listings for all three. However, the lineups and statistics endpoints are oriented toward football; the players array will be empty for non-football matches. Coverage of tennis or basketball-specific stats is not currently included. You can fork this API on Parse and revise it to add sport-specific stat endpoints.