fotball APIfotball.no ↗
Access Norwegian football data via the fotball.no API: tournament standings, match schedules, national teams, and regional data across 7 endpoints.
What is the fotball API?
The fotball.no API covers Norwegian football across 7 endpoints, returning match schedules, league standings, team tournaments, and national team listings. The get_tournament_standings endpoint delivers full league table data — position, wins, draws, losses, goals, and points — for competitions like Eliteserien, OBOS-ligaen, and Toppserien. Match FIKS IDs returned by schedule endpoints feed directly into get_match_details for per-match events, referees, and venue information.
curl -X GET 'https://api.parse.bot/scraper/addeab4d-be2e-4cdf-ac7d-50c9b71b3c1f/search_matches_by_team?season_id=110&team_name=Rosenborg' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace fotball-no-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: fotball.no SDK — Norwegian football tournaments, matches, and standings."""
from parse_apis.fotball_no_api import Fotball, MatchNotFound
client = Fotball()
# Search tournaments for a team, capped at 5 results.
for t in client.tournaments.search(team_name="Rosenborg", limit=5):
print(t.tournament_name, t.slug)
# Construct a known tournament and browse its standings.
eliteserien = client.tournament(slug="eliteserien")
for standing in eliteserien.standings(limit=3):
print(standing.pos, standing.team, standing.points, standing.goals)
# Get upcoming matches and drill into the first one's details.
match = eliteserien.matches(limit=1).first()
if match:
detail = match.details()
print(detail.title, detail.venue, detail.referees)
# List today's scheduled matches across all divisions.
for sm in client.scheduledmatches.list(limit=3):
print(sm.time, sm.home_team, sm.away_team, sm.tournament)
# Typed error handling for a non-existent match.
try:
bad_match = client.tournaments.search(team_name="Viking", limit=1).first()
if bad_match:
detail = bad_match.matches(limit=1).first()
if detail:
detail.details()
except MatchNotFound as exc:
print(f"Match not found: {exc.fiks_id}")
print("exercised: tournaments.search / tournament.standings / tournament.matches / match.details / scheduledmatches.list")
Search for tournaments a team participates in for a given season. Returns tournament names, URLs, and slugs. The team_name is matched against club registrations in the Norwegian football system.
| Param | Type | Description |
|---|---|---|
| season_id | string | Season ID. |
| team_namerequired | string | Team name to search for (e.g. 'Rosenborg', 'Aalesund', 'Viking'). |
{
"type": "object",
"fields": {
"club": "string, the team name searched for",
"season_id": "string, the season ID used",
"tournaments": "array of tournament objects with tournament_name, url, and slug"
},
"sample": {
"data": {
"club": "Rosenborg",
"season_id": "110",
"tournaments": [
{
"url": "https://www.fotball.no/turneringer/eliteserien/",
"slug": "eliteserien",
"tournament_name": "Eliteserien"
},
{
"url": "https://www.fotball.no/turneringer/obosligaen/",
"slug": "obosligaen",
"tournament_name": "OBOS-ligaen"
}
]
},
"status": "success"
}
}About the fotball API
Tournament and Standings Data
The get_tournament_standings endpoint accepts a tournament slug (e.g. eliteserien, obosligaen, toppserien) and returns a full standings array with pos, team, played, won, drawn, lost, goals, and points fields for every club in that table. The get_tournament_matches endpoint uses the same tournament slug to retrieve the full fixture list — both upcoming and past matches — returning date, time, home, away, venue, and match_id for each row.
Match Schedules and Details
get_todays_matches returns all matches for a given date (defaulting to today when no date parameter is supplied) and can be filtered by club ID or district ID. Each match object includes tournament, time, home_team, away_team, result, venue, and match_id. That match_id (FIKS ID) is the key input for get_match_details, which returns a title, venue, events array (goal scorers, cards, substitutions as strings), and a referees array. For future matches the events and referees fields are empty arrays rather than absent.
Team and Regional Lookups
search_matches_by_team takes a team_name (e.g. Rosenborg, Aalesund) and an optional season_id and returns all tournaments that team participates in for that season, with each tournament's tournament_name, url, and slug. list_national_teams returns every Norwegian national team — men's, women's, youth, and futsal — with name, slug, and url. list_regions enumerates all Norwegian football regions (kretser) with name and url.
Coverage Notes
All tournament slugs are specific to fotball.no's naming conventions. The match_id values required by get_match_details are numeric FIKS IDs that must be obtained from get_todays_matches or get_tournament_matches first — there is no standalone match-search by team name. District and club filter IDs for get_todays_matches are not enumerated in the API itself and must be sourced from list_regions or external reference.
The fotball API is a managed, monitored endpoint for fotball.no — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when fotball.no 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 fotball.no 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-day dashboard showing all Norwegian football fixtures and results using
get_todays_matches. - Populate a league table widget for Eliteserien or Toppserien from
get_tournament_standingsstandings fields. - Track a specific club's tournament calendar for a season using
search_matches_by_teamwith aseason_id. - Display match events (goals, cards, substitutions) and assigned referees via
get_match_details. - List all Norwegian national teams with slugs for building team profile pages using
list_national_teams. - Filter upcoming fixtures by region for a local football news site using
list_regionsand thedistrictfilter onget_todays_matches. - Aggregate fixture and result data across multiple tournaments for a Norwegian football statistics tracker.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does fotball.no have an official developer API?+
What does `get_match_details` return for a match that hasn't been played yet?+
title, venue, and match_id fields as populated, but events and referees come back as empty arrays. Event and referee data is only present once the match has been played and the data is available.How do I find the correct tournament slug to use with `get_tournament_standings` or `get_tournament_matches`?+
eliteserien, obosligaen, and toppserien. You can discover slugs for a specific team's competitions by first calling search_matches_by_team with a team_name, which returns a tournaments array containing the slug field for each competition.Does the API return player statistics such as top scorers or assists for a tournament?+
Are lower-division or youth league standings available, or only top-tier competitions?+
tournament parameter accepts any valid fotball.no tournament slug, so coverage is not restricted to top-tier leagues. However, the API does not enumerate all available slugs — only the ones you already know will return data. The search_matches_by_team endpoint is the practical way to discover slugs for teams at any level. You can fork the API on Parse and revise it to add a slug-discovery or league-listing endpoint.