Melbet APImelbet.com ↗
Access Melbet sports betting data via 3 endpoints: live/pre-match matches, full betting markets, and league listings across football, basketball, tennis, and more.
What is the Melbet API?
The Melbet API exposes sports betting data across 3 endpoints, covering live and pre-match matches, full betting market breakdowns, and league catalogues. The list_matches endpoint returns up to 50 matches per call with basic 1X2, handicap, and over/under odds, while get_match_odds delivers every available market — correct score, double chance, European handicap, and more — for a single match identified by its numeric ID.
curl -X GET 'https://api.parse.bot/scraper/90539490-4895-4d3b-a6ce-228423d98330/list_matches?mode=2&count=10&language=en&sport_id=1' \ -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 melbet-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: Melbet Sports Betting API — live odds, deep markets, league discovery."""
from parse_apis.melbet_com_api import Melbet, MatchMode, MatchNotFound
client = Melbet()
# List pre-match football matches with basic odds
for match in client.match_summaries.list(mode=MatchMode.PREMATCH, limit=3):
print(match.team1_name, "vs", match.team2_name, "—", match.league_name)
print(" 1X2:", match.odds._1x2)
# Drill into a single match for all deep betting markets
summary = client.match_summaries.list(mode=MatchMode.LIVE, limit=1).first()
if summary:
detail = summary.details()
print(detail.team1_name, "vs", detail.team2_name, "— markets:", len(detail.markets))
for market in detail.markets[:3]:
print(f" {market.market_name}: {len(market.outcomes)} outcomes")
if market.outcomes:
out = market.outcomes[0]
print(f" first outcome: type={out.outcome_type} odds={out.odds}")
# Fetch a match directly by ID with typed error handling
try:
match = client.matches.get(match_id="733605854")
print(match.team1_name, "vs", match.team2_name, "— event_count:", match.event_count)
except MatchNotFound as exc:
print(f"Match not found: {exc.match_id}")
# List available football leagues
for league in client.leagues.list(sport_id="1", limit=5):
print(league.league_name, "— games:", league.game_count)
print("exercised: match_summaries.list / .details / matches.get / leagues.list")
Retrieve sports matches with basic betting odds (1X2, handicap, over/under). Supports filtering by sport and match mode (live or pre-match). Returns up to 50 matches per call ordered by start time proximity.
| Param | Type | Description |
|---|---|---|
| mode | string | Match mode filter. |
| count | string | Number of matches to return (max 50). |
| language | string | Language code for team and league names (e.g. en, ru, fr, de, es). |
| sport_id | string | Numeric sport identifier. Common values: 1 (Football), 2 (Ice Hockey), 3 (Basketball), 4 (Tennis), 5 (Baseball), 6 (Volleyball), 10 (Table Tennis), 13 (American Football), 40 (Esports), 66 (Cricket). |
{
"type": "object",
"fields": {
"total": "integer",
"matches": "array of match summary objects with basic odds"
},
"sample": {
"data": {
"total": 10,
"matches": [
{
"odds": {
"1x2": {
"away": {
"odds": 3.52,
"odds_str": "3.52"
},
"draw": {
"odds": 1.92,
"odds_str": "1.92"
},
"home": {
"odds": 4.02,
"odds_str": "4.02"
}
},
"handicap": [
{
"odds": 1.405,
"type": "away",
"handicap": null,
"odds_str": "1.405"
}
],
"over_under": [
{
"odds": 1.78,
"type": "over",
"total": 2.5,
"odds_str": "1.78"
}
]
},
"match_id": 733605854,
"sport_id": 1,
"team1_id": 12711,
"team2_id": 13299,
"league_id": 2708736,
"sport_name": "Football",
"start_time": 1783364400,
"team1_name": "Portugal",
"team2_name": "Spain",
"event_count": 1455,
"league_name": "World Cup 2026"
}
]
},
"status": "success"
}
}About the Melbet API
Endpoints Overview
Three endpoints cover the core data surfaces on Melbet. list_matches accepts optional mode (live or pre-match), sport_id, count (max 50), and language parameters, returning a total count alongside an array of match summary objects ordered by start time proximity. get_match_odds takes a required match_id plus an optional language param and returns full market data: the response includes team1_name, team2_name, league_id, sport_name, start_time as a Unix timestamp, and a markets array with all outcomes and raw decimal odds. list_leagues accepts sport_id and language and returns an array of active leagues with their game counts.
Sport and Language Coverage
Sport filtering uses numeric sport_id values: 1 for Football, 2 for Ice Hockey, 3 for Basketball, 4 for Tennis, and 5 for Baseball, among others. Language codes (e.g. en, ru, fr, de, es) control the locale of team and league name strings returned across all three endpoints. This makes it straightforward to build multilingual interfaces without separate translation steps.
Market Depth
get_match_odds is the primary endpoint for odds depth. Beyond 1X2, it surfaces European Handicap, Over/Under lines, Correct Score, and Double Chance markets, plus additional deep markets where Melbet makes them available for the match. Each market object includes full outcome details with raw decimal odds and internal outcome IDs, which can be used to track specific lines across polling intervals.
The Melbet API is a managed, monitored endpoint for melbet.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when melbet.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 melbet.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?+
- Display live in-play match odds widgets using
modefilter onlist_matches - Compare Melbet's 1X2 decimal odds against other books for arbitrage detection
- Build a league browser showing active competition counts via
list_leagues - Track line movement on Over/Under markets by polling
get_match_oddsat intervals - Aggregate correct score market probabilities for a pre-match model
- Filter pre-match football fixtures by
sport_id=1for a football-only dashboard - Render multilingual match cards by requesting team names in
frorde
| 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 Melbet offer an official public developer API?+
What does `get_match_odds` return beyond basic 1X2 odds?+
match_id from list_matches results to retrieve the full set.Does `list_matches` return all matches at once?+
Are bet slip submission, account data, or live score updates covered?+
Can I filter leagues by region or country?+
list_leagues filters by sport_id and returns all active leagues for that sport with game counts, but there is no region or country filter parameter currently exposed. You can fork this API on Parse and revise it to add country-level filtering if needed.