Surebet APIpt.surebet.com ↗
Access surebets, middlebets, and valuebets from pt.surebet.com. Filter by sport, bookmaker, profit %, odds, and EV across 3 endpoints.
What is the Surebet API?
This API exposes three endpoints — get_surebets, get_middlebets, and get_valuebets — covering arbitrage opportunities, middle/interval bets, and value bets sourced from pt.surebet.com. Each response includes event details, per-bookmaker odds via prong arrays, profit or overvalue percentages, expected value, probability estimates, and cursor-based pagination fields so you can page through live results programmatically.
curl -X GET 'https://api.parse.bot/scraper/0a6c2f64-69f1-4304-9dcc-6768d08e598e/get_surebets?limit=5&order=desc&sport=Football%7CTennis&outcomes=2&bookmakers=pinnaclesports%7Cmarathonbet%7Cbet365' \ -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 pt-surebet-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.
"""
SureBet API - Usage Example
Fetch arbitrage bets, middle bets, and value bets across bookmakers.
"""
from parse_apis.surebet_api import SureBet
client = SureBet()
# List surebets filtered to football only
for bet in client.surebets.list(sport="Football", bookmakers="pinnaclesports|marathonbet|bet365"):
print(bet.id, bet.profit, bet.roi)
for prong in bet.prongs:
print(f" {prong.bk}: {prong.tournament} {prong.teams} odds={prong.value}")
# List value bets with high overvalue in tennis
for vbet in client.valuebets.list(sport="Tennis", min_overvalue=1.03):
print(vbet.id, vbet.overvalue, vbet.probability, vbet.bk, vbet.tournament)
# List middle bets across football and basketball
for mbet in client.middlebets.list(sport="Football|Basketball"):
print(mbet.id, mbet.ev, mbet.probability, mbet.overvalue)
Fetch arbitrage bets (surebets) where combinations of odds across bookmakers guarantee profit regardless of outcome. Returns records sorted by profit descending, each containing prong pairs from different bookmakers with their odds, event details, and calculated profit/ROI. Pagination is manual via the cursor param using the last record's sort_by value; can_forward indicates whether more pages exist.
| Param | Type | Description |
|---|---|---|
| limit | integer | Max results per page. |
| order | string | Sort order for results. |
| sport | string | Pipe-separated sport names to filter by. |
| cursor | string | Pagination cursor — use last record's sort_by value from previous page. |
| outcomes | integer | Number of outcomes to filter by (e.g. 2 for two-way bets, 3 for three-way). |
| bookmakers | string | Pipe-separated bookmaker IDs to include. |
| max_profit | number | Maximum profit percentage filter. |
| min_profit | number | Minimum profit percentage filter. |
{
"type": "object",
"fields": {
"limit": "integer, number of results returned",
"records": "array of surebet objects with profit, prongs (bookmaker odds), event details",
"sort_as": "string, sort field type",
"sort_desc": "boolean, whether results are sorted descending",
"updated_at": "integer, timestamp of last data update in milliseconds",
"can_forward": "boolean, whether more results exist for forward pagination",
"can_backward": "boolean, whether backward pagination is available"
},
"sample": {
"data": {
"limit": 25,
"records": [
{
"id": "FLDByhTIwW8",
"roi": 58.5363,
"time": 1781647200000,
"profit": 0.9756,
"prongs": [
{
"bk": "pinnaclesports",
"id": 347128266,
"teams": [
"Iraq",
"Norway"
],
"value": 1.8,
"sport_id": "Football",
"overvalue": 0,
"tournament": "FIFA - World Cup",
"probability": 0
},
{
"bk": "marathonbet",
"id": 348701039,
"teams": [
"Iraq",
"Norway"
],
"value": 2.3,
"sport_id": "Football",
"overvalue": 1.0839,
"tournament": "World Cup. 2026",
"probability": 0.4713
}
],
"created": 1780999076000,
"sort_by": 4606962692404602400,
"group_size": 1,
"synonym_id": 149215195
}
],
"sort_as": "DOUBLE",
"sort_desc": true,
"updated_at": 1781129939440,
"can_forward": true,
"can_backward": false
},
"status": "success"
}
}About the Surebet API
Surebets and Arbitrage Data
The get_surebets endpoint returns arbitrage bets sorted by profit percentage descending. Each record in the records array includes a profit figure, a prongs array containing the individual bookmaker legs (odds, bookmaker ID, market details), and event metadata. You can filter results using min_profit / max_profit, limit to specific sports via a pipe-separated sport string, narrow to certain bookmakers with a pipe-separated bookmakers parameter, and restrict to two-way or multi-way markets using the outcomes integer. The updated_at field (millisecond timestamp) tells you how fresh the dataset is.
Middlebets
The get_middlebets endpoint surfaces middle/interval bets — situations where a range of scores or lines would make multiple bookmaker positions profitable simultaneously. Records expose ev (expected value), probability, and the prongs array. Filtering is available by sport, bookmakers, and min_ev / max_ev bounds. Pagination works identically to surebets: the response includes can_forward and can_backward booleans; pass the relevant value as the cursor parameter on your next request.
Valuebets
The get_valuebets endpoint returns bets where bookmaker odds are estimated to exceed true probability. Each record carries overvalue (percentage), probability, and odds alongside bookmaker and event context. Filters include min_overvalue / max_overvalue, min_odds / max_odds, sport, and bookmakers. All three endpoints share the same pagination contract (limit, can_forward, can_backward, cursor) and the sort_as / sort_desc fields describing the active sort.
The Surebet API is a managed, monitored endpoint for pt.surebet.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pt.surebet.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 pt.surebet.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?+
- Scan surebets in real time and rank by profit percentage to allocate stake across bookmakers.
- Build a middlebet monitor that alerts when expected value crosses a configurable threshold.
- Filter valuebets by minimum odds and overvalue percentage to feed a staking model.
- Track which bookmakers appear most frequently in surebet prongs to assess account usage.
- Aggregate updated_at timestamps across endpoints to detect data staleness before acting.
- Compare EV distributions across sports by repeatedly calling get_middlebets with the sport filter.
- Page through full surebet snapshots using cursor-based pagination for historical logging.
| 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 pt.surebet.com have an official developer API?+
How does pagination work across all three endpoints?+
can_forward and can_backward boolean fields and a limit integer. To advance through results, pass the value returned by the previous response as the cursor parameter. Pagination direction is indicated by which of the two boolean flags is true.What does the prongs array in surebet and middlebet records contain?+
prongs array holds the individual legs of a multi-bookmaker bet — each element represents one bookmaker's side, including that bookmaker's ID, odds, and market context. A two-leg surebet has two prong objects; a middle bet may have two bookmaker positions covering a range.Does the API expose historical surebet data or bet-closing timestamps?+
updated_at timestamp; there is no historical archive or bet-closing time field exposed. You can fork this API on Parse and revise it to add a logging endpoint that stores snapshots over time.Can I filter surebets by a specific league or competition rather than just sport?+
sport parameter on get_surebets and the other endpoints accepts pipe-separated sport names but does not support filtering by league or competition name. Event details are included in each record's metadata, but league-level filtering is not currently a query parameter. You can fork this API on Parse and revise it to add league-based filtering on top of the returned event data.