Smarkets Betting Exchange Scraper - Odds, Volume & Results
Pricing
from $1.40 / 1,000 results
Smarkets Betting Exchange Scraper - Odds, Volume & Results
Back and lay odds with available stake, last traded prices and matched volume from the Smarkets betting exchange for football, tennis, US sports, horse racing, politics and more, plus settled results and traded-price history (candles, pre-play closing odds).
Pricing
from $1.40 / 1,000 results
Rating
0.0
(0)
Developer
Artsiom Kunitsyn
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Exchange odds from Smarkets, the UK betting exchange, for football, tennis, US sports, horse and greyhound racing, golf, cricket, darts, politics and more:
- Back and lay odds with the stake available at each price (an order-book ladder), the last traded price and the matched volume of every market.
- Results: finished events with the score and which selection won, lost or was voided, plus the last traded price.
- Traded-price history: price candles per selection from before the start to the final whistle, with the last pre-play price (the exchange's closing odds), first traded, highest and lowest odds and the stake traded.
Exchange prices are the sharpest public odds there are: no bookmaker margin, real money on both sides. Use them as a benchmark against sportsbook lines, to measure closing-line value, or to track political and entertainment markets.
What you get
One row per selection of each market. Every row carries the event (event_name, competition, sport,
start_time, event_state, event_url, venue), the live or final score where there is one (home_score,
away_score, match_period, scores) and the market (market_name, market_type, market_volume_gbp).
entityType: "markets" (prices, the default)
| Field | Example |
|---|---|
event_name, competition, market_name | RC Lens vs Sporting, UEFA Champions League, Full-time result |
contract_name, contract_type | Lens, HOME |
back_odds, back_probability, back_stake_available_gbp | 5.6, 17.86, 112.79 |
lay_odds, lay_probability, lay_stake_available_gbp | 5.8, 17.24, 71.81 |
back_depth, lay_depth | [{"odds": 5.6, "probability": 17.86, "stake_gbp": 112.79}, {"odds": 5.4, ...}] |
last_traded_odds, last_traded_at | 5.6, 2026-10-13T17:51:07Z |
market_volume_gbp | 74927 |
Back odds are what you get backing a selection (the best price on offer); lay odds are what you pay laying it. Stake is the backer's stake in GBP available at the best price. Standing orders at the price limits (odds 1.0001 and 10000), which many markets carry, are left out.
entityType: "results"
Finished events with outcome per selection (winner, loser, voided), the final score and score breakdown
(halves, periods, sets, extra time), actual start and end times, the last traded price and the market volume.
entityType: "priceHistory"
| Field | Example |
|---|---|
event_name, contract_name, outcome | Liverpool vs Man City, Man City, winner |
first_traded_odds, preplay_last_odds, last_traded_odds | 2.36, 2.1, 1.0 |
highest_odds, lowest_odds | 3.15, 1.0 |
total_trades, traded_back_stake_gbp | 1975, 145004.49 |
history_from, history_to, bucket_seconds | 48 hours before kick-off, the final whistle, 180 |
candles | [{"time": "2026-10-09T15:57:00Z", "open_odds": 3.05, "high_odds": 3.05, "low_odds": 3.05, "close_odds": 3.05, "close_probability": 32.79, "trades": 1, "back_stake_gbp": 0.74}, ...] |
Candle length follows the window: Smarkets returns about 480 candles per request, so a 48-hour window plus the match gives candles of a few minutes. Only candles with trades are included.
How to use it
- Current prices for the next events, every sport (the default): just run it.
- Premier League match odds and goal lines for the weekend: sports
Football (soccer),dateFrom: 2026-10-17,dateTo: 2026-10-19, clear Max results. Main markets are kept by default. - Every market of one match:
eventIds: ["https://smarkets.com/event/45317409/..."],markets: all. - Yesterday's football results with closing exchange prices:
entityType: "results", sportsFootball (soccer),dateFrom= yesterday,dateTo= yesterday. - Closing odds and price charts for settled races:
entityType: "priceHistory", sportsHorse racing,historyHoursBefore: 24. - Outrights (tournament winners, elections):
eventScope: outrightsorall. - Monitoring: schedule a
marketsrun every few minutes and diff onexternal_id+scraped_at.
Input
| Field | What it does |
|---|---|
entityType | markets, results or priceHistory. |
sports | Any of 26 sports and categories (football, tennis, basketball, American football, baseball, ice hockey, horse racing, greyhound racing, golf, cricket, rugby, darts, snooker, boxing, MMA, esports, politics, current affairs, TV & entertainment...). Empty = all. |
eventScope | matches (matches and races), outrights or all. |
eventIds | Specific events by id or URL; overrides sports, dates and states. |
dateFrom, dateTo | Start-time window: a date (2026-10-31) or a UTC time (2026-10-31T18:00:00Z). |
eventStates | Override the listed states (upcoming, live, ended). |
markets | main (winner, over/under, handicaps, both teams to score, draw no bet, place, plus each event's headline market) or all. |
marketTypes | Exact market types instead, e.g. CORRECT_SCORE, PLAYER_PASSING_YARDS. |
includeOrderBook, orderBookDepth | Prices: back/lay ladder on or off, and how many levels (default 3). |
historyHoursBefore | Price history: how long before the start the window opens (default 48). |
maxItems | Row cap, 50 by default. Clear it for everything. |
proxyConfiguration, proxyLanes | Optional Apify Proxy, spread over several sessions to go faster. |
impersonate | Browser fingerprint (default chrome). Change only if requests start failing. |
Good to know
- Finished events are kept for about 10 days. After that Smarkets no longer serves them, so
resultsandpriceHistorycover the last ~10 days. Schedule a daily run to build your own archive. - Speed. Smarkets allows 60 requests per minute per IP, and one request covers up to 100 markets. Every upcoming football match on Smarkets (about 1,000 events, 30,000 rows of main markets) takes about 8 minutes without a proxy and about 4 minutes with Apify Proxy on 6 sessions; each proxy session gets its own budget.
- Prices are in GBP, the exchange's currency. Odds are decimal; probabilities are in percent.
- Football has about 80 markets per match and an NFL game more than 100 with player props, so
markets: allgives many rows per event. - No login needed, and no proxy needed except to go faster.
FAQ
What is the difference between back and lay odds? Backing is betting that a selection wins, at the best odds someone is offering. Laying is betting against it. The gap between the two is the exchange's spread.
Why is back_odds empty for some selections? No one is offering a price on that side right now. Thin markets
(lower leagues, far-off outrights) often have one side only.
What is preplay_last_odds? The last traded price before the scheduled start, i.e. the exchange's closing price.
Comparing it with the odds you bet at gives your closing-line value.
Can I get older results? Only what Smarkets still lists (about 10 days). Older events return nothing.
Related sports data scrapers
- Action Network Scraper — US sportsbook odds, public betting splits, line movement, props, injuries and futures.
- Sports Odds History Scraper — opening and closing lines per sportsbook since 2021 and ATS results since 2006.
- TennisExplorer Scraper — tennis results, bookmaker odds per match, match statistics and point-by-point.
- Kalshi & Polymarket Scraper — prediction market odds, settled results and price history for sports, politics, economics and crypto.
- SofaScore Scraper — results, team statistics, lineups with player ratings, incidents and odds for football, basketball, hockey, tennis and 17 more sports.
- Flashscore Scraper — results, statistics, lineups, incidents and opening/closing odds from ~20 bookmakers for 17 sports.