Betmonitor APIbetmonitor.com ↗
Access real-time surebet opportunities from Betmonitor. Filter by sport, bet type, and time window. Get per-outcome bookmaker odds with highest-odd indicators.
What is the Betmonitor API?
The Betmonitor API exposes 2 endpoints covering live arbitrage (surebet) opportunities across sports betting markets. The get_surebets endpoint returns a filterable list of current surebets sorted by profit percentage, while get_surebet_details breaks down each opportunity into per-outcome bookmaker odds — including which bookmaker offers the best price for each side of the bet.
curl -X GET 'https://api.parse.bot/scraper/6692ded9-4f9c-4b0d-b82c-aa216839703e/get_surebets?time=all&limit=10&sport=Football&bettype=all' \ -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 betmonitor-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.betmonitor_surebets_api import Betmonitor, Sport, BetType, TimeWindow
client = Betmonitor()
# Search for football surebets with over/under bet type
for surebet in client.surebets.search(sport=Sport.FOOTBALL, bettype=BetType.OVER_UNDER, time=TimeWindow.TWENTY_FOUR_HOURS):
print(surebet.id, surebet.teams, surebet.profit_percent, surebet.market)
for outcome in surebet.outcomes:
print(f" {outcome.label}: {outcome.odd} @ {outcome.bookie}")
# Get detailed bookmaker odds for this surebet
detail = surebet.details()
for outcome_name, odds_list in detail.outcome_details.items():
print(f" {outcome_name}:")
for bookmaker_odd in odds_list:
print(f" {bookmaker_odd.bookie} {bookmaker_odd.odd} highest={bookmaker_odd.is_highest}")
Get a list of currently available surebets from Betmonitor's surebets section. Results are sorted by profit percentage descending. The time filter restricts results to events starting within the specified window; if no events fall within that window, an empty list is returned.
| Param | Type | Description |
|---|---|---|
| time | string | Time filter restricting results to events starting within this window from now. |
| limit | integer | Maximum number of surebets to return. |
| sport | string | Sport to filter by. |
| bettype | string | Bet type filter. |
{
"type": "object",
"fields": {
"surebets": "array of surebet objects each containing id, timestamp, league, teams, market, profit_percent, and outcomes"
},
"sample": {
"data": {
"surebets": [
{
"id": "109575528_bs_0",
"teams": "Grange Thistle (W) — North Lakes United (W)",
"league": "Football · Australia · Australia Queensland Premier League Women",
"market": "Both Score",
"outcomes": [
{
"odd": "1.75",
"label": "y",
"bookie": "marathonbet"
},
{
"odd": "2.31",
"label": "n",
"bookie": "pmbet"
}
],
"timestamp": "1781260200",
"profit_percent": "35.9"
}
]
},
"status": "success"
}
}About the Betmonitor API
Surebet Listings
The get_surebets endpoint returns an array of surebet objects, each containing an id, timestamp, league, teams, market, profit_percent, and an outcomes array. Results are sorted by profit_percent descending, so the most profitable arbitrage opportunities appear first. You can narrow results with three independent filters: sport (e.g. Football, Tennis, Basketball, Ice Hockey, Baseball, Volleyball), bettype (all, ou for over/under, ahc for Asian handicap, bs, or pen), and time (all, 1h, 3h, or other accepted windows). If the time filter is set and no events start within that window, the response returns an empty list rather than falling back to a wider range.
Surebet Details
The get_surebet_details endpoint accepts a single required parameter — id — in the format <event_id>_<bettype>_<outcome> as returned by get_surebets. The response contains an outcome_details object whose keys are outcome labels such as Home or Away. Each key maps to an array of bookmaker entries, each with bookie, url, odd, and is_highest. The is_highest flag marks which bookmaker in the list offers the top available odd for that outcome, letting you quickly identify the specific book to use for each leg of the arbitrage.
Data Coverage and Freshness
The API reflects the live state of Betmonitor's surebets feed. Because arbitrage windows open and close quickly, results are time-sensitive; a surebet present in one call may not appear in the next if odds have moved. The limit parameter on get_surebets caps how many results come back, which is useful for monitoring only the highest-margin opportunities without processing the full list.
The Betmonitor API is a managed, monitored endpoint for betmonitor.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when betmonitor.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 betmonitor.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 an arbitrage alert system that polls
get_surebetsand notifies whenprofit_percentexceeds a target threshold - Aggregate surebet availability by sport using the
sportfilter to compare which markets have the most opportunities at any given time - Track bookmaker appearance frequency across
get_surebet_detailsresponses to identify which books consistently offer the highest odds - Construct a bet-placement workflow that uses
urlfields fromoutcome_detailsto deep-link directly to the correct bookmaker page for each leg - Monitor over/under or Asian handicap markets specifically by filtering
bettypetoouorahcinget_surebets - Filter surebets to the next 1–3 hours using the
timeparameter to focus on imminent events before odds shift
| 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 Betmonitor offer an official developer API?+
What does `get_surebet_details` return beyond what `get_surebets` includes?+
get_surebets returns a summary per opportunity: id, league, teams, market, profit_percent, and outcome labels. get_surebet_details expands a single surebet into full per-outcome bookmaker data — each with bookie, url, odd, and an is_highest flag — so you can see every book offering that outcome and which one has the best price.Are historical or past surebets available through the API?+
Does the API cover live (in-play) surebets separately from pre-match ones?+
time parameter filters by event start time, not by in-play status. You can fork this API on Parse and revise it to add an in-play filter endpoint if that distinction is required.How should I handle an empty list returned by `get_surebets`?+
sport, bettype, and time filters you provided. Widening the time window to all or removing the sport filter are the most direct ways to confirm whether any surebets are currently available.