football APIfootball.com ↗
Access prematch events, live scores, and detailed betting markets from football.com via 3 endpoints covering eFootball and football odds.
What is the football API?
The football.com API provides 3 endpoints for retrieving betting odds, live scores, and match details from football.com's sports betting platform. The get_prematch_events endpoint returns upcoming events grouped by tournament with odds for markets like 1X2, Over/Under, and Double Chance, while get_live_events delivers real-time scores, current period, and live odds for in-progress matches. Both eFootball (sr:sport:137) and Football (sr:sport:1) are supported.
curl -X POST 'https://api.parse.bot/scraper/2c0cd3e4-e7a9-47ad-97d9-b2e8fd33b8e4/get_prematch_events' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"page_num": "1",
"sport_id": "sr:sport:137",
"page_size": "5"
}'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 football-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.
from parse_apis.football_com_odds_api import FootballCom, Event, EventSummary, LiveEvent, Market, Outcome
client = FootballCom()
# List upcoming prematch events for eFootball
for event in client.eventsummaries.list_prematch(sport_id="sr:sport:137", page_size=5, limit=10):
print(event.home_team, "vs", event.away_team, event.tournament, event.start_time)
# Get full details for a specific event
detailed = client.events.get(event_id="sr:match:72002812")
print(detailed.home_team, detailed.away_team, detailed.sport, detailed.booking_status)
for market in detailed.markets:
print(market.name, market.specifier)
for outcome in market.outcomes:
print(" ", outcome.desc, outcome.odds, outcome.probability)
# Navigate from a summary to its full detail
first_summary = next(iter(client.eventsummaries.list_prematch(page_size=1, limit=1)))
full_event = first_summary.details()
print(full_event.event_id, full_event.category, full_event.tournament)
# List currently live events
for live in client.liveevents.list(sport_id="sr:sport:137"):
print(live.home_team, live.score, live.away_team, live.period, live.played_seconds)
Get upcoming prematch events for a given sport with pagination. Returns events grouped by tournament with betting odds for main markets (1X2, Over/Under). Pagination via page_num; more_events indicates additional pages. Each event includes home/away teams, start time, tournament info, and available market odds.
| Param | Type | Description |
|---|---|---|
| page_num | integer | Page number for pagination. |
| sport_id | string | Sport identifier in sr:sport:<id> format. sr:sport:137 is eFootball, sr:sport:1 is Football. |
| page_size | integer | Number of events per page (1-100). |
{
"type": "object",
"fields": {
"events": "array of prematch event objects with odds",
"page_num": "integer current page number",
"page_size": "integer page size",
"more_events": "boolean indicating if more pages exist"
},
"sample": {
"data": {
"events": [
{
"status": "Not start",
"game_id": "38274",
"markets": [
{
"id": "1",
"name": "1X2",
"outcomes": [
{
"id": "1",
"desc": "Home",
"odds": "2.00"
},
{
"id": "2",
"desc": "Draw",
"odds": "4.90"
},
{
"id": "3",
"desc": "Away",
"odds": "2.45"
}
]
}
],
"category": "GT Sports League",
"event_id": "sr:match:72002812",
"away_team": "Egypt (Lucas)",
"home_team": "Japan (Crysis)",
"start_time": 1781132400000,
"tournament": "GT Leagues",
"total_markets": 2
}
],
"page_num": 1,
"page_size": 5,
"more_events": true
},
"status": "success"
}
}About the football API
Prematch Events and Odds
get_prematch_events accepts a sport_id in sr:sport:<id> format, a page_num, and a page_size (1–100 events per page). The response returns an array of event objects grouped by tournament, each carrying odds for the main betting markets: 1X2, Over/Under, and Double Chance. The more_events boolean field tells you whether additional pages exist, making it straightforward to paginate through a full fixture list.
Event Details and Full Markets
get_event_details takes a single required event_id in sr:match:<id> format — obtainable from get_prematch_events — and returns the complete betting picture for that fixture. The response includes home_team, away_team, tournament, category, sport, start_time (epoch milliseconds), and a markets array. Each market object contains outcomes with individual odds and probabilities, and a market description. This is the endpoint to use when you need the full odds depth beyond the headline markets.
Live Events
get_live_events takes an optional sport_id and returns a total count alongside an events array. Each live event includes the current score, match period, time played, and current betting odds. The endpoint covers both eFootball and association football depending on the sport_id supplied, and reflects the state of matches at the time of the call.
The football API is a managed, monitored endpoint for football.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when football.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 football.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 a live scoreboard for eFootball matches with current odds using get_live_events
- Build a pre-match odds aggregator by paginating through get_prematch_events for multiple sport IDs
- Monitor odds movement across 1X2 and Over/Under markets for upcoming fixtures
- Populate a tournament-grouped fixture calendar from the tournament field in prematch event responses
- Compare outcome probabilities across all available markets for a specific match using get_event_details
- Trigger alerts when a match transitions from prematch to live by cross-referencing get_prematch_events and get_live_events
| 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.