MSport APImsport.com ↗
Access real-time betting odds from MSport Nigeria via 3 endpoints. List sports, fetch matches with main market odds, and retrieve all markets for any match.
What is the MSport API?
The MSport Nigeria API gives developers access to betting odds data across all sports on msport.com/ng through 3 endpoints. The get_matches endpoint returns matches grouped by tournament with main market odds including 1x2, Over/Under, and more. The get_match_odds endpoint exposes full market depth — Double Chance, GG/NG, DNB, and other bet types — alongside outcome probabilities, team names, and match status for any event ID.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/ed788d1a-1d1c-4a3a-aa56-1658f52cbd71/list_sports' \ -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 msport-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: MSport Nigeria Odds SDK — bounded, re-runnable; every call capped."""
from parse_apis.msport_nigeria_odds_api import MSport, SportId, MatchNotFound
client = MSport()
# List available sports with match counts
for sport in client.sports.list(limit=5):
print(sport.sport_name, sport.match_count)
# Search upcoming soccer matches (default sport_id)
match = client.matches.search(sport_id=SportId.SR_SPORT_1, limit=1).first()
if match:
print(match.home_team, "vs", match.away_team, match.start_time)
# Drill into full market detail via refresh
detail = match.refresh()
print(detail.markets_count, "markets available")
for mkt in detail.markets[:3]:
print(mkt.name, [(o.description, o.odds, o.probability) for o in mkt.outcomes])
# Typed error handling on a direct lookup
try:
odds = client.matches.get(event_id="sr:match:99999999")
print(odds.home_team, odds.away_team)
except MatchNotFound as exc:
print(f"Match not found: {exc.event_id}")
print("exercised: sports.list / matches.search / match.refresh / matches.get")
List all available sports on MSport Nigeria with their current match counts. Each sport includes a sport_id usable as input to get_matches. The count reflects matches currently listed for pre-match betting.
No input parameters required.
{
"type": "object",
"fields": {
"total": "integer, number of sports returned",
"sports": "array of sport objects each with sport_id, sport_name, match_count"
},
"sample": {
"data": {
"total": 21,
"sports": [
{
"sport_id": "sr:sport:1",
"sport_name": "Soccer",
"match_count": 608
},
{
"sport_id": "sr:sport:2",
"sport_name": "Basketball",
"match_count": 64
}
]
},
"status": "success"
}
}About the MSport API
Sports and Match Discovery
The list_sports endpoint returns every sport currently active on MSport Nigeria, including each sport's sport_id, sport_name, and match_count. The sport_id values (e.g. sr:sport:1 for Soccer, sr:sport:2 for Basketball) are the inputs needed by get_matches. The total field confirms how many sports are available at the time of the call.
Match Listings with Main Market Odds
Passing a sport_id to get_matches returns all upcoming matches for that sport, grouped by tournament. You can narrow results with the optional date parameter (format: YYYY-MM-DD). Each match object includes team names, start times, and main market odds — typically 1x2 and Over/Under lines. The response total field indicates how many matches are returned.
Full Market Depth per Match
The get_match_odds endpoint accepts an event_id string (e.g. sr:match:71766878, obtainable from get_matches) and returns all available betting markets for that specific match. Response fields include home_team, away_team, start_time (Unix timestamp in milliseconds), status (0 = not started, 1 = live), score, sport, category, and a markets array. Each market object lists individual outcomes with their associated probabilities. Markets vary by event but can include 1x2, Over/Under, Double Chance, GG/NG, and DNB.
The MSport API is a managed, monitored endpoint for msport.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when msport.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 msport.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?+
- Build a pre-match odds comparison tool using 1x2 and Over/Under data from
get_matches - Track live match status and in-play scores via the
statusandscorefields inget_match_odds - Aggregate market counts per sport using
match_countfromlist_sportsfor a sports activity dashboard - Filter today's football matches using
get_matcheswith adateparameter andsr:sport:1 - Calculate implied probabilities from outcome probability data returned by
get_match_odds - Alert users when specific bet markets (e.g. Double Chance or DNB) become available for a match
| 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 MSport have an official developer API?+
What does `get_match_odds` return beyond the main odds lines?+
get_match_odds returns the full markets array for a match, which can include 1x2, Over/Under, Double Chance, GG/NG (both teams to score), and DNB (Draw No Bet). Each market entry includes its outcomes and their probabilities. It also returns match metadata: home_team, away_team, start_time (millisecond Unix timestamp), current score, status, sport, and category.Are historical match results or past odds covered?+
get_matches returns upcoming fixtures and get_match_odds includes live status via the status field. Historical results and past odds lines are not exposed. You can fork this API on Parse and revise it to add an endpoint targeting historical match data.Can I retrieve odds for a specific league or tournament directly?+
get_matches endpoint filters by sport_id and optionally date, but does not accept a league or tournament parameter. Matches are returned grouped by tournament within the response, so tournament filtering would need to be applied client-side. You can fork this API on Parse and revise it to add a tournament-level filter endpoint.Does the API cover sports other than football on MSport Nigeria?+
list_sports returns all active sports along with their sport_id values. Basketball uses sr:sport:2, and any other sports listed on MSport Nigeria at query time will appear in the response with their own IDs and match_count values, which you can then pass to get_matches.