SNAI APIsnai.it ↗
Access Serie A fixtures, betting odds, football leagues, and live match counts from SNAI.it via 6 structured endpoints.
What is the SNAI API?
The SNAI.it API covers Italian football betting data across 6 endpoints, returning Serie A fixtures, full market odds, league listings, and live event counts. The get_match_odds endpoint exposes every available betting market and decimal odds for a specific match, while get_football_leagues returns the complete prematch competition tree including country icons and featured-league flags.
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'
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 snai-it-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: SNAI.it Betting SDK — Serie A odds and live sports."""
from parse_apis.snai_it_betting_api import Snai, IncludeOdds, MatchNotFound
client = Snai()
# List upcoming Serie A events with odds included
for match in client.matches.top_bets(limit=3):
print(match.match_name, match.date)
if match.top_odds:
for market in match.top_odds[:1]:
print(f" Market: {market.market_name}, selections: {len(market.odds)}")
# Drill into a specific match's full odds via constructible key
match = client.matches.list(include_odds=IncludeOdds.TRUE, limit=1).first()
if match:
detail = match.odds()
print(detail.match_name, detail.key)
if detail.markets:
first_market = detail.markets[0]
for sel in first_market.odds[:3]:
print(f" {sel.selection} @ {sel.odds}")
# Browse available football leagues
for league in client.leagues.list(limit=5):
print(league.name, league.key, league.top)
# Check live sports categories
for cat in client.livecategories.list(limit=5):
print(cat.name, cat.count, cat.icon)
# Handle a missing match gracefully
try:
bad = client.match(key="99999-99").odds()
print(bad.match_name)
except MatchNotFound as exc:
print(f"Match not found: {exc}")
print("exercised: matches.list / matches.top_bets / match.odds / leagues.list / livecategories.list")
Returns all upcoming Serie A events for the current/next matchday. During the season these are individual match fixtures with home/away teams; during off-season they may be antepost (outright winner) markets only. Optionally includes top odds for each event.
| 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"
},
"sample": {
"data": {
"items": [
{
"key": "37211-165",
"date": "30/05/2027 ore 23.00",
"event_id": 4733481,
"away_team": null,
"home_team": null,
"match_name": "SERIE A 2026-2027",
"num_markets": 1
}
]
},
"status": "success"
}
}About the SNAI API
Serie A Fixtures and Odds
get_serie_a_matches returns upcoming Serie A events for the current or next matchday, with each item including match_name, home_team, away_team, date, event_id, key, and num_markets. Set include_odds to true to attach top market odds directly to each fixture. During the off-season, results may shift to antepost (outright winner) markets rather than individual match fixtures. get_serie_a_top_bets provides the same fixture list but always includes a top_odds array of markets with selections and decimal values — no parameter needed.
Per-Match Market Data
get_match_odds accepts a match_slug in the format palinsesto_code-avvenimento_code (e.g. 37211-165), obtained from the key field of get_serie_a_matches results. It returns the full set of available betting markets for that event as an array of objects, each with a market_name and its odds selections. Response also includes home_team, away_team, match_name, and formatted date. If you have team names but not a key, get_match_url resolves the match using partial, case-insensitive string matching on home_team and away_team, returning match_name, match_url, key, and event_id.
Leagues and Live Coverage
get_football_leagues returns the complete list of football competitions available in the prematch catalog. Each league object includes name, key, country_icon (a URL), and a top boolean indicating whether it is featured. get_live_matches returns sport categories that currently have active live events, each with name, key, count (number of live events), and an icon URL. Categories vary with what is in-play and can include Calcio, Basket, Tennis, and others.
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?+
- Pull Serie A fixtures and 1X2 odds into a betting odds comparison dashboard.
- Monitor live event counts by sport category to surface active in-play opportunities.
- Resolve a home/away team pair to a match key before fetching full market data.
- Build a league browser using the full football competition list with country icons.
- Track how many markets are available per fixture using the
num_marketsfield. - Aggregate top-bet selections across all upcoming Serie A matches for trend analysis.
- Map internal league keys to competition names for database normalization.
| 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 SNAI.it have an official developer API?+
What does get_match_odds return, and where does the match_slug come from?+
get_match_odds returns all available betting markets for a single event, including each market's name and its full set of selections with decimal odds. The required match_slug parameter is the key field returned by get_serie_a_matches, formatted as palinsesto_code-avvenimento_code (e.g. 37211-165).Does the API cover Serie A historical results or match statistics?+
Does get_live_matches return the individual live fixtures, or just counts per sport?+
get_live_matches returns sport category objects — each with a name, key, count, and icon URL — indicating how many events are currently live per sport. It does not return individual live fixture details or live odds. You can fork this API on Parse and revise it to add an endpoint that drills into live fixtures for a specific sport category.Does get_football_leagues cover non-football sports on SNAI?+
get_football_leagues is scoped to football competitions only, returning the full prematch tree of football leagues with name, key, country icon, and featured flag. Other sports are not included in that endpoint. You can fork this API on Parse and revise it to add equivalent endpoints for other sports available on the platform.