FUSSBALL.DE API endpoint
Returns every match of a competition's season (fixtures and results), including the earliest matchdays, optionally filtered to one team and a date window; the date window is applied by the site, so a narrow window is cheaper than filtering a full season. Use it for a complete schedule; use `fussballde-matchday` for one matchday.
/fussballde/match-plancompetition_id (string, required): Competition id from fussballde-competitions.team_id (string, optional): Team id to keep only that team's matches.date_from (string, optional): Earliest match date as YYYY-MM-DD; default is the whole season.date_to (string, optional): Latest match date as YYYY-MM-DD; default is the whole season.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.
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| competition_id | string | Yes | Competition id from fussballde-competitions | 031BFREJC800001BVS5489BUVUR5FS5A-G | |
| team_id | string | No | Team id to keep only that team's matches | 011MI8V6UC000000VTVG0001VTR8C1K7 | |
| date_from | string | No | Earliest match date as YYYY-MM-DD; default is the whole season | 2026-10-01 | |
| date_to | string | No | Latest match date as YYYY-MM-DD; default is the whole season | 2026-10-31 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/fussballde/match-plan?competition_id=031BFREJC800001BVS5489BUVUR5FS5A-G" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"competition_id": "031BFREJC800001BVS5489BUVUR5FS5A-G",
"count": 7,
"matches": [
{
"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_score": 2,
"date": "2026-10-09",
"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_score": 2,
"id": "031BFTHDCC000000VS5489BUVUR5FS5A",
"match_number": "037",
"status": "finished",
"time": "20:30",
"url": "https://www.fussball.de/spiel/borussia-dortmund-sv-werder-bremen/-/spiel/031BFTHDCC000000VS5489BUVUR5FS5A"
},
{
"away": {
"club_id": "00ES8GN8I400006JVV0AG08LVUPGND5I",
"logo_url": "https://www.fussball.de/export.media/-/action/getLogo/format/0/id/00ES8GN8I400006JVV0AG08LVUPGND5I/verband/0123456789ABCDEF0123456700004010",
"name": "Hamburger SV",
"team_id": "011MI9RK30000000VTVG0001VTR8C1K7",
"url": "https://www.fussball.de/mannschaft/hamburger-sv-hamburger-sv-hamburg/-/saison/2627/team-id/011MI9RK30000000VTVG0001VTR8C1K7"
},
"away_score": 3,
"date": "2026-10-10",
"home": {
"club_id": "00ES8GN9B8000055VV0AG08LVUPGND5I",
"logo_url": "https://www.fussball.de/export.media/-/action/getLogo/format/0/id/00ES8GN9B8000055VV0AG08LVUPGND5I/verband/0123456789ABCDEF0123456700004010",
"name": "TSG Hoffenheim",
"team_id": "011MID8M9O000000VTVG0001VTR8C1K7",
"url": "https://www.fussball.de/mannschaft/tsg-hoffenheim-tsg-hoffenheim-baden/-/saison/2627/team-id/011MID8M9O000000VTVG0001VTR8C1K7"
},
"home_score": 2,
"id": "031BFTHDGK000000VS5489BUVUR5FS5A",
"match_number": "039",
"status": "finished",
"time": "15:30",
"url": "https://www.fussball.de/spiel/tsg-hoffenheim-hamburger-sv/-/spiel/031BFTHDGK000000VS5489BUVUR5FS5A"
}
],
"title": "Spielplan Bundesliga - Deutschland - Herren",
"url": "https://www.fussball.de/spielplan/bundesliga-deutschland-bundesliga-herren-saison2627-deutschland/-/staffel/031BFREJC800001BVS5489BUVUR5FS5A-G"
}
}Request schema
No body schema
Response schema
#/definitions/fussballde.matchPlanResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | fussballde.MatchPlanResponse | No | ||||
| data.competition_id | string | No | ||||
| data.count | integer | No | ||||
| data.matches | array | No | MatchRow record, 24 fields: away, away_score, competition, date, home, home_score, id, league, match_number, note, status, team_type and 2 more. Described under FUSSBALL.DE Matchday API. | |||
| data.title | string | No | ||||
| data.url | 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-plan?competition_id=031BFREJC800001BVS5489BUVUR5FS5A-G" \
-H "x-api-key: $CRAWLORA_API_KEY"