Unibet APIunibet.com ↗
Access Unibet live odds, sports categories, league fixtures, and in-play events via 9 structured API endpoints. No Unibet account required.
What is the Unibet API?
The Unibet API gives developers structured access to sports betting data across 9 endpoints, covering everything from live in-play scores to full betting markets for individual events. Use get_event_odds to retrieve all propositions and odds for a specific contest, or get_live_events to pull real-time scores and odds across every active sport simultaneously. The API covers football, tennis, basketball, ice hockey, golf, cricket, and more.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/b41fc00e-2753-4383-bfc3-4fc8997ca0dd/get_sports_home' \ -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 unibet-com-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: Unibet Sports API — browse sports, search teams, get live odds."""
from parse_apis.unibet_sports_api import Unibet, EventNotFound
client = Unibet()
# List all available sports from the A-Z menu
for sport in client.sports.list(limit=5):
print(sport.key, sport.display_name)
# Get the homepage with featured matches
home = client.homepages.get()
print("Homepage view:", home.view)
# Browse football leagues via constructible Sport
football = client.sport("football")
browse = football.browse()
print("Sport category:", browse.parent_category_name)
# Get live events across all sports
live_feed = client.livefeeds.get()
print("Live feed:", live_feed.view)
# Get league-level events via constructible League
league = client.league("football:england:premier_league")
league_browse = league.events()
print("League:", league_browse.parent_category_name)
# Search for a team's upcoming fixtures
result = client.contests.search(query="Arsenal")
for category in result.categories:
print(category.name, category.key)
# Get full odds for a specific contest — with error handling
contest = client.contest("da739e2bf478b76d6db37b251a2a0d05")
try:
page = contest.odds()
print("Bet builder eligible:", page.bet_builder_eligible)
except EventNotFound as exc:
print(f"Event expired: {exc}")
print("exercised: sports.list / homepages.get / sport.browse / livefeeds.get / league.events / contests.search / contest.odds")
Fetch the sports betting homepage including match of the day, quick access navigation, and popular bet builder contests. Returns featured matches with full-time result odds and live scoreboard data when applicable.
No input parameters required.
{
"type": "object",
"fields": {
"view": "object containing landing page widgets including MatchOfTheDay, QuickAccessNav, and PopularBetBuilder sections"
},
"sample": {
"data": {
"_typ": "ConfiguredLandingPageViewResponse",
"view": {
"_typ": "ConfiguredLandingPageView",
"name": "ConfiguredLandingPageView",
"widgets": [
{
"id": "matchoftheday",
"name": "Match of the Day",
"type": "MatchOfTheDay"
},
{
"id": "quickaccess",
"name": "Quick Access",
"type": "QuickAccessNav"
},
{
"id": "popularbetbuilder",
"name": "Popular Bet Builder",
"type": "PopularBetBuilder"
}
]
}
},
"status": "success"
}
}About the Unibet API
Sports Coverage and Navigation
The get_all_sports endpoint returns every sport available on Unibet as a structured list of objects, each with a displayName, key, contestCount, and linkUrl. This is the right starting point for discovering what sports are available before drilling into specific leagues. From there, get_sport_events accepts a lowercase sport parameter (e.g. football, ice_hockey) and returns a hierarchical breakdown of countries and leagues, each with a categoryRn value used as the league_rn input for subsequent calls.
League and Event Data
get_league_events takes a colon-separated league_rn (e.g. football:england:premier_league) and returns upcoming fixtures grouped by date, structured under quickBrowseItems. Individual event odds are retrieved via get_event_odds, which requires a 32-character hex contestKey obtained from responses like get_live_events, search_events, or get_sports_home. The view object returned by get_event_odds contains all propositions and betting markets for that contest. Note that contestKey values are ephemeral — they expire once the event concludes.
Live and In-Play Data
get_live_events returns all currently active in-play events across every sport, including live scores, match clocks, and current odds grouped by sport and contestGroups. For sport-specific live data, get_sport_live_events accepts a capitalized sport name (e.g. Football, Ice Hockey) and narrows the feed to that sport's categories and fixtures. Both endpoints return structured odds alongside score data, making them suitable for live monitoring applications.
Search and Homepage Widgets
search_events accepts a team or competition name query and returns matched participants with their upcoming contests and odds. Searches work best with team or competition names; individual athlete names may return empty results. The get_sports_home endpoint returns homepage widgets including MatchOfTheDay, QuickAccessNav, and PopularBetBuilder sections — useful for surfacing featured or high-traffic events without needing to specify a sport or league.
The Unibet API is a managed, monitored endpoint for unibet.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when unibet.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 unibet.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?+
- Aggregate live in-play odds from multiple sports using get_live_events for a real-time odds comparison dashboard
- Monitor line movements for a specific match by polling get_event_odds at intervals using a stored contestKey
- Build a league fixture browser using get_sport_events and get_league_events to surface upcoming matches by country and competition
- Power a sports alert service that watches get_sport_live_events for score changes in a target sport
- Display featured matches and match-of-the-day content from get_sports_home for a sports news or betting news feed
- Implement a team or competition search feature using search_events to return upcoming fixtures and current odds
- Enumerate all available sports and their contest counts via get_all_sports for a dynamic navigation menu
| 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 Unibet offer an official public developer API?+
How do I get a contestKey to call get_event_odds?+
contestKey is a 32-character hex string returned in the relatedContests arrays or fixture objects from get_live_events, search_events, and get_sports_home. You must call one of those endpoints first to obtain a valid key, then pass it as the event_id parameter. Keys expire once the event ends, so they cannot be stored long-term.Does the API return historical odds or results for past events?+
What does get_sport_live_events return differently from get_live_events?+
get_live_events returns all active in-play events across every sport in a single response. get_sport_live_events filters that feed to one sport by accepting a capitalized sport name (e.g. Football, Ice Hockey) and returns only the matching categories array with contestGroups, live scores, and current odds for that sport.