FUSSBALL.DE API endpoint
Returns one match: teams, competition, date, kick-off time, venue, score and half-time score, match number and matchday, officials, goals with minutes and timeline events such as substitutions. Fields the match has not published (for example a future match's score) are omitted.
/fussballde/matchmatch_id (string, required): Match id from fussballde-matchday or fussballde-match-plan.Standard envelope; data holds the result described above. Dates are ISO YYYY-MM-DD, times are local HH:MM. Scores, dates and names that FUSSBALL.DE serves as obfuscated glyphs are decoded server-side. Errors: 400 invalid parameter, 404 unknown id, 503 upstream failure. status is one of finished, scheduled, cancelled (Absetzung or Ausfall: called off), annulled, abandoned (Abbruch), no_show (Nichtantritt: a team did not turn up) or other (text the service does not recognise, kept in note). A finished result that was not simply played out carries result_qualifier: after_extra_time, after_penalties, awarded (set by the match authority), court_ruling, administrative_decision or test_match; note keeps the site's own marker, such as nE or Absetzung.
| Field | Filled in, of 15 checked | Values in the sample |
|---|---|---|
| minute | 15 | 19 to 90, median 81 |
| type | 15 | substitute (8), goal (4), yellow-card (3) |
| side | 15 | away (8), home (7) |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| match_id | string | Yes | Match id from fussballde-matchday or fussballde-match-plan | 031BFTHDCC000000VS5489BUVUR5FS5A | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/fussballde/match?match_id=031BFTHDCC000000VS5489BUVUR5FS5A" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"assistants": [
"Alexander Sather",
"Stefan Lupp"
],
"away": {
"club_id": "00ES8GN8I400001CVV0AG08LVUPGND5I",
"logo_url": "https://www.fussball.de/export.media/-/action/getLogo/format/0/id/00ES8GN8I400001CVV0AG08LVUPGND5I/verband/0123456789ABCDEF0123456700004010",
"name": "SV Werder Bremen",
"team_id": "011MIC0IEC000000VTVG0001VTR8C1K7",
"url": "https://www.fussball.de/mannschaft/sv-werder-bremen-werder-bremen-bremen/-/saison/2627/team-id/011MIC0IEC000000VTVG0001VTR8C1K7"
},
"away_goals": [
{
"minute": 88,
"player": "Ludovit Reis"
},
{
"minute": 90,
"player": "Niclas Füllkrug",
"stoppage_minute": 2
}
],
"away_score": 2,
"competition": "Bundesliga",
"competition_id": "031BFREJC800001BVS5489BUVUR5FS5A-G",
"date": "2026-10-09",
"events": [
{
"minute": 19,
"side": "away",
"type": "substitute"
},
{
"minute": 63,
"side": "home",
"type": "substitute"
}
],
"fourth_official": "Tom Bauer",
"halftime_score": "0 : 0",
"home": {
"club_id": "00ES8GN8N400008VVV0AG08LVUPGND5I",
"logo_url": "https://www.fussball.de/export.media/-/action/getLogo/format/0/id/00ES8GN8N400008VVV0AG08LVUPGND5I/verband/0123456789ABCDEF0123456700004010",
"name": "Borussia Dortmund",
"team_id": "011MI8V6UC000000VTVG0001VTR8C1K7",
"url": "https://www.fussball.de/mannschaft/borussia-dortmund-borussia-dortmund-westfalen/-/saison/2627/team-id/011MI8V6UC000000VTVG0001VTR8C1K7"
},
"home_goals": [
{
"minute": 80,
"player": "Daniel Jonathan Svensson"
},
{
"minute": 85,
"player": "Nico Schlotterbeck"
}
],
"home_score": 2,
"id": "031BFTHDCC000000VS5489BUVUR5FS5A",
"match_number": "890000037",
"matchday": "5. Spieltag",
"referee": "Christian Dingert",
"status": "finished",
"time": "20:30",
"url": "https://www.fussball.de/spiel/borussia-dortmund-sv-werder-bremen/-/spiel/031BFTHDCC000000VS5489BUVUR5FS5A",
"venue": "Rasenplatz, SIGNAL IDUNA PARK, Strobelallee 50, 44139 Dortmund"
}
}Request schema
No body schema
Response schema
#/definitions/fussballde.matchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | fussballde.MatchDetail | No | ||||
| data.assistants | array | No | ||||
| data.away | fussballde.TeamRef | No | ||||
| data.away.club_id | string | No | 00ES8GN8N400008VVV0AG08LVUPGND5I | |||
| data.away.logo_url | string | No | ||||
| data.away.name | string | No | Borussia Dortmund | |||
| data.away.team_id | string | No | 011MI8V6UC000000VTVG0001VTR8C1K7 | |||
| data.away.url | string | No | ||||
| data.away_goals | array | No | ||||
| data.away_goals[].minute | integer | No | 80 | |||
| data.away_goals[].player | string | No | Daniel Jonathan Svensson | |||
| data.away_goals[].stoppage_minute | integer | No | 2 | |||
| data.away_score | integer | No | ||||
| data.competition | string | No | Bundesliga | |||
| data.competition_id | string | No | ||||
| data.date | string | No | 2026-10-09 | |||
| data.events | array | No | ||||
| data.events[].minute | integer | No | ||||
| data.events[].side | string | No | home | |||
| data.events[].type | string | No | substitute | |||
| data.fourth_official | string | No | ||||
| data.halftime_score | string | No | 0 : 0 | |||
| data.home | fussballde.TeamRef | No | ||||
| data.home.club_id | string | No | 00ES8GN8N400008VVV0AG08LVUPGND5I | |||
| data.home.logo_url | string | No | ||||
| data.home.name | string | No | Borussia Dortmund | |||
| data.home.team_id | string | No | 011MI8V6UC000000VTVG0001VTR8C1K7 | |||
| data.home.url | string | No | ||||
| data.home_goals | array | No | ||||
| data.home_goals[].minute | integer | No | 80 | |||
| data.home_goals[].player | string | No | Daniel Jonathan Svensson | |||
| data.home_goals[].stoppage_minute | integer | No | 2 | |||
| data.home_score | integer | No | ||||
| data.id | string | No | ||||
| data.match_number | string | No | ||||
| data.matchday | string | No | 5. Spieltag | |||
| data.note | string | No | nE | Note is the site's own marker, such as nE or Absetzung. | ||
| data.referee | string | No | ||||
| data.result_qualifier | string | No | after_extra_time, after_penalties, awarded, court_ruling, administrative_decision, test_match | after_penalties | ResultQualifier says how a result was reached when it was not simply played out. | |
| data.spectators | string | No | ||||
| data.status | string | No | finished, scheduled, cancelled, annulled, abandoned, no_show, other | finished | ||
| data.time | string | No | 20:30 | |||
| data.url | string | No | ||||
| data.venue | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/fussballde/match?match_id=031BFTHDCC000000VS5489BUVUR5FS5A" \
-H "x-api-key: $CRAWLORA_API_KEY"