SNAI APIsnai.it ↗
Access SNAI.it betting markets via API: Serie A fixtures, live match data, full odds for any football league, stat markets, and player props.
What is the SNAI API?
The SNAI.it API exposes 10 endpoints covering Italian and international football betting data from SNAI.it, one of Italy's largest licensed sportsbooks. Endpoints like get_match_odds return every available betting market for a single fixture — including market names, selection codes, lines, and decimal odds — while get_match_details breaks down stat-family markets (shots, corners, offsides) by match, team, and player scope.
curl -X GET 'https://api.parse.bot/scraper/1053fe9f-59e9-4845-ac68-9fd57d4a0787/get_serie_a_matches?include_odds=True' \ -H 'X-API-Key: $PARSE_API_KEY'
Returns all upcoming Serie A events for the current/next matchday. During the season these are individual match fixtures with home/away teams (read from the competition's fixtures tab); when no fixture is on sale (off-season) the antepost/outright events are returned instead, with home_team/away_team null. Optionally includes top odds for each event: each top_odds market carries market_name, market_code and odds rows with selection, selection_code, line, line_name and decimal odds (same row shape as get_match_odds). One round trip during the season, two in the off-season fallback.
| Param | Type | Description |
|---|---|---|
| include_odds | boolean | Whether to include top odds (e.g. 1X2, outright winner) for each event. |
{
"type": "object",
"fields": {
"items": "array of match/event objects with match_name, home_team, away_team, date, key, event_id, num_markets (and top_odds when include_odds is true: markets with market_name, market_code, odds[] rows with selection, selection_code, line, line_name, odds)"
},
"sample": {
"data": {
"items": [
{
"key": "36411-1376",
"date": "11/10/2026 ore 15.00",
"event_id": 4871928,
"top_odds": [
{
"odds": [
{
"line": null,
"odds": 1.85,
"line_name": "GOAL/NO GOAL",
"selection": "GOAL",
"selection_code": 1
},
{
"line": null,
"odds": 1.85,
"line_name": "GOAL/NO GOAL",
"selection": "NOGOAL",
"selection_code": 2
}
],
"market_code": 18,
"market_name": " GOAL/NOGOAL"
},
{
"odds": [
{
"line": "1.5",
"odds": 3.25,
"line_name": "U/O 1.5",
"selection": "UNDER 1.5",
"selection_code": 1
},
{
"line": "1.5",
"odds": 1.27,
"line_name": "U/O 1.5",
"selection": "OVER 1.5",
"selection_code": 2
}
],
"market_code": 7989,
"market_name": " UNDER/OVER"
}
],
"away_team": "Monza",
"home_team": "Lazio",
"match_name": "Lazio - Monza",
"num_markets": 293
}
]
},
"status": "success"
}
}About the SNAI API
Fixtures and League Coverage
get_football_leagues returns the full prematch tree of available football competitions with each league's name, key, country_icon, and a top boolean indicating featured status. Once you have a league_key (format: discipline-competition, e.g. 1-331), pass it to get_league_matches to retrieve upcoming fixtures for that competition — each with match_name, home_team, away_team, date, key, event_id, and num_markets. Set include_odds: true to receive a top_odds array of markets alongside each fixture. During the off-season, competitions fall back to antepost/outright events automatically.
Odds Retrieval
get_match_odds returns every betting market for a single fixture in one call. The required match_slug comes from the key field in any fixtures response (format: palinsesto_code-avvenimento_code). Each market object carries market_name (Italian label), market_code, and an odds array whose rows include selection, selection_code, line, line_name, and decimal odds. To pull full markets for up to 40 fixtures at once, use get_matches_odds with a comma-separated list of keys; set include_stats: true to also receive stat_markets covering shots, corners, fouls, and player props. get_league_odds does the same bulk expansion scoped to a single competition and caps at 40 fixtures per call.
Statistics Markets
get_match_stat_odds targets statistics-specific betting markets — total shots, shots on target, fouls, corners — at match, team, and player granularity. The optional stat_type parameter filters to a specific market family; an unrecognised value is rejected. Each market object in the response carries stat_type and an is_player_market boolean, letting you separate player props (e.g. "player over 2.5 fouls committed") from team and match aggregates. get_match_details reorganises the same data into a stats object keyed by shots, shots_on_target, offsides, and corners, each split into match, team_1, and team_2 sub-arrays for quicker structured access.
Live Data and Serie A Shortcuts
get_live_matches returns currently active sport categories with event counts and icon URLs — fields: name, key, count, and icon. It covers all sports, not just football. For Serie A specifically, get_serie_a_matches and get_serie_a_top_bets are convenience endpoints that scope directly to the current or next Serie A matchday without needing a league key.
The SNAI API is a managed, monitored endpoint for snai.it — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when snai.it 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 snai.it 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 an odds comparison dashboard for Serie A using
get_serie_a_top_betsto track market movement across matchdays. - Aggregate full market sheets for an entire league's upcoming fixtures in one call via
get_league_oddsfor arbitrage screening. - Monitor live event counts by sport using
get_live_matchesto trigger alerts when football categories go live. - Extract player prop markets (fouls, shots) from
get_match_stat_oddsto feed a player performance betting model. - Populate a football betting app with competition listings and fixture schedules from
get_football_leaguesandget_league_matches. - Batch-fetch full betting markets for up to 40 cross-league fixtures simultaneously using
get_matches_oddswithinclude_stats: true. - Track antepost/outright winner odds for Serie A during the off-season via
get_serie_a_matchesautomatic fallback.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does SNAI.it have an official public developer API?+
What does `get_match_stat_odds` return compared to `get_match_details`?+
get_match_stat_odds returns a flat markets array filtered by stat family (shots, corners, fouls, etc.) and includes is_player_market and player fields for player-level props. get_match_details returns the same underlying stat markets but pre-organised into a stats object keyed by shots, shots_on_target, offsides, and corners, each split into match, team_1, and team_2 sub-arrays — useful when you want structured per-team breakdowns without client-side sorting.Does the API cover sports other than football, such as tennis or basketball live odds?+
get_live_matches shows live sport categories (including Basket and Tennis) with event counts, but detailed odds endpoints are scoped to football. Live or prematch odds for tennis, basketball, and other sports are not currently covered. You can fork this API on Parse and revise it to add endpoints targeting those sport categories.Is there a limit to how many matches `get_matches_odds` and `get_league_odds` will expand?+
get_matches_odds accepts a comma-separated list of up to 40 match_slug keys from any competition. get_league_odds internally expands fixtures for a single competition up to the same 40-fixture ceiling. The response includes a num_errors field counting items whose markets could not be fetched.Does the API expose in-play (live) odds or only prematch markets?+
get_match_odds, get_league_odds, get_matches_odds, get_match_stat_odds, get_match_details) return prematch betting markets. get_live_matches indicates which sport categories have active live events and how many, but live in-play odds are not currently returned. You can fork this API on Parse and revise it to add a live odds endpoint for active football matches.