Unibet Odds Scraper - Kambi Betting Odds & Data API
Pricing
from $6.23 / 1,000 events
Unibet Odds Scraper - Kambi Betting Odds & Data API
Scrape Unibet (Kambi) sportsbook odds for 34 sports: 1X2, totals, Asian lines, player props, live scores and outrights, with bookmaker margin and no-vig fair odds computed on every row.
Pricing
from $6.23 / 1,000 events
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Unibet Odds Scraper - Kambi Betting Odds & Data API
Scrape Unibet sportsbook odds straight from the Kambi offering that prices it: 34 sports, every market on the board, and live betting odds with the score and match clock. Each row carries decimal, fractional and American prices, implied probability, and the bookmaker margin already worked out. No login, no API key, no proxy. Export to CSV, JSON, Excel, or XML.
Kambi is the platform behind Unibet, and its offering endpoint is public: a plain GET returns the same prices the site shows. This reads that feed directly, filters it by league, kick-off, price, or margin, and returns every match in one fixed schema.
| Who uses it | What they scrape Unibet odds for |
|---|---|
| Odds comparison sites | A European book's full price list, refreshed on a schedule |
| Traders and modellers | No-vig fair odds and margin per market to benchmark closing lines |
| Affiliates and tipsters | Premier League odds, player props and bet builder prices for content |
| Data teams | A labelled market corpus across 34 sports for pricing models |
| Arbitrage and value hunters | The same fixture priced in 16 licensed jurisdictions at once |
What it does
This Actor collects Unibet events by league, by whole sport, by event ID, or from the in-play feed, and returns each one as a flat row. Every event carries:
- 🧾 Core fields: teams, kick-off, sport, country, league, state, market count and the event's Unibet URL. 59 fields on the base row before any add-on.
- 💰 Prices three ways: every outcome as decimal, fractional and American odds, plus its implied probability.
- 📊 Margin already computed: the bookmaker margin and payout of every market returned, from the prices themselves.
- 🏟️ Book flags: in-play, bet builder, streamed, cash out, offered live, competition vs match.
- 🧩 Optional blocks: the full market board (up to ~430 markets on a big fixture), live score and clock, bet builder pre-packs, no-vig value analysis, and a cross-jurisdiction price comparison.
Results export to CSV, JSON, Excel, or XML, or stream from the API.
What you can do with Unibet odds data
📈 Track a book's line and how tight it prices.
Pull a league on a schedule and read mainMarketMarginPercent next to the prices. Sort by margin to see where the book is sharpest and where it pads.
🔍 Shop the same fixture across jurisdictions.
Kambi prices each licensed market separately. Turn on the comparison and one Premier League fixture came back at 8.00 on the away side in Sweden and the Netherlands against 7.00 in Australia - a 14.3% spread on the same selection at the same book.
🧠 Build a props and Asian-line dataset.
Turn on the full market board and a single football fixture yields hundreds of markets: over/under, Asian handicaps and totals, correct score, HT/FT, corners, cards, and a couple of hundred player occurrence lines.
⚡ Follow live betting odds with the score.
Read the in-play feed and every row arrives with the running score, the match clock and period, and the live statistics the book publishes - corners, yellows, reds, set scores.
Why choose this scraper
| What you get | |
|---|---|
| Four inputs, one run | Leagues, whole sports, event IDs and the in-play feed. Every source returns the same fields. |
| 34 sports, not just the US four | Football, tennis, table tennis, ice hockey, cricket, darts, snooker, esports, trotting, politics and more. |
| The whole board, not the headline | Optional full market board: player props, Asian lines, corners, cards, correct score, HT/FT. |
| Odds maths on the row | Implied probability, margin, payout and no-vig fair odds, computed from the prices returned. |
| Cross-jurisdiction comparison | Re-price any event in up to six of 16 Kambi markets and get the best price, the spread and an arbitrage flag. |
| Filters that cut noise | Kick-off window, price band, favourite price, margin ceiling, market count, bet builder, streaming, cash out. |
| 15 languages, English kept | Localise team and market names and still keep the English label on every row, so translated runs stay joinable. |
| Four export formats | CSV, JSON, Excel and XML, from the dashboard or the API. |
How it compares
The sports-odds Actors on Apify aggregate US books - FanDuel, Bovada, Pinnacle, DraftKings - and return moneyline, spread and total. None of them read Kambi, and none return a European book's full board.
| Feature | ParseForge | scrapesage | scrapemint | seemuapps |
|---|---|---|---|---|
| Unibet / Kambi offering | Yes | No | No | No |
| Sports covered | 34 | US leagues + soccer | US leagues + soccer | US leagues + soccer |
| Markets per event | Up to ~430 | Moneyline, spread, total | Moneyline, spread, total | Moneyline, spread, total |
| Player props & Asian lines | Yes | No | No | No |
| Bet builder pre-packs | Yes | No | No | No |
| Outright / futures markets | Yes | No | No | No |
| No-vig fair odds & margin | Yes | Yes | No | No |
| Cross-jurisdiction price spread | Yes, 16 markets | No | No | No |
| Live score & match clock | Yes | No | No | Scores only |
| Multi-book comparison | Single book | Yes | No | No |
If you want several books side by side, use one of the aggregators. If you want everything one European book prices, this is the deeper feed.
What a Unibet event looks like
Every event returns as one flat JSON row. Here is a real record, unedited apart from a trimmed markets array:
{"eventId": 1028072803,"name": "Manchester United - Ipswich Town","homeName": "Manchester United","awayName": "Ipswich Town","sport": "FOOTBALL","sportTermKey": "football","country": "England","countryTermKey": "england","league": "Premier League","leagueId": 1000094985,"termPath": "football/england/premier_league","start": "2026-08-30T15:30:00Z","startsInHours": 118.78,"startDay": "Sunday","state": "NOT_STARTED","isLive": false,"eventType": "MATCH","offeredLive": true,"hasBetBuilder": true,"isStreamed": false,"tags": ["OFFERED_LIVE", "BET_BUILDER", "MATCH"],"marketCount": 433,"marketsReturned": 2,"mainMarket": "Full Time","mainMarketType": "Match","homeOdds": 1.41,"drawOdds": 4.8,"awayOdds": 7.5,"homeOddsFractional": "2/5","drawOddsFractional": "19/5","awayOddsFractional": "13/2","homeOddsAmerican": "-245","drawOddsAmerican": "380","awayOddsAmerican": "650","homeImpliedProbability": 70.92,"drawImpliedProbability": 20.83,"awayImpliedProbability": 13.33,"mainMarketMarginPercent": 5.08,"mainMarketPayoutPercent": 95.17,"cashOutAvailable": true,"markets": [{"betOfferId": 2683313472,"criterion": "Full Time","marketType": "Match","isMain": true,"outcomeCount": 3,"bookmakerMarginPercent": 5.08,"payoutPercent": 95.17,"outcomes": [{"outcomeId": 4307642217,"label": "1","type": "OT_ONE","participant": "Manchester United","line": null,"oddsDecimal": 1.41,"oddsFractional": "2/5","oddsAmerican": "-245","impliedProbability": 70.92,"status": "OPEN","changedAt": "2026-08-24T13:14:45Z"}]}],"url": "https://www.unibet.co.uk/betting/odds/football/england/premier-league/manchester-united-ipswich-town/1028072803","offering": "ub","marketJurisdiction": "GB","language": "en_GB","scrapedAt": "2026-08-25T16:52:11.204Z"}
line is filled on handicap and over/under outcomes and null on match markets. drawOdds is null in sports without a draw. liveMarketCount is null until an event goes in play.
What the optional blocks add
| Block | Field | What lands on the row |
|---|---|---|
| Full market board | allMarkets | Every market the book prices on the event, same shape as markets. A Premier League fixture returned 433. Pre-match only in practice - see below. |
| Live score & clock | liveData | Score, scorer side, minute and second, period, whether the clock runs, and the book's live statistics - corners, yellows, reds, set scores. |
| Bet builder | betBuilder | The book's ready-made same-game multiples: combined price, leg count, leg outcome IDs, shortest and best price on the event. |
| Value analysis | valueAnalysis | Margin, payout, favourite and longshot, no-vig fair probability and fair price per outcome with the vig cost, how competitive the market is, the average and sharpest margin across the row's markets, and how many minutes ago the price last moved. |
| Market comparison | marketComparison | The event re-priced in the jurisdictions you list: price per market per outcome, best and worst, spread %, best-payout market, and an arbitrage flag with the combined best-price book %. |
| Participants | participants | Each team, player or runner with its Kambi ID, home flag, type and scratched flag. Free. |
Configure the run
Drive the Actor from four source types, alone or together: league paths, whole sports, event IDs, and the in-play feed. Filters run as each event is read, so only matches reach your dataset and only matches are billed. The Input tab lists every parameter.
A league path is sport/country/league, and a Unibet URL works in its place:
{ "leagues": ["football/england/premier_league"], "maxItems": 50 }
Grab the whole board on the few fixtures the book prices deepest:
{ "leagues": ["football/spain/la_liga"], "includeAllMarkets": true, "includeBetBuilder": true, "minMarketCount": 200, "maxItems": 20 }
Follow live betting odds with the score attached:
{ "liveOnly": true, "includeLiveData": true, "includeValueAnalysis": true, "maxItems": 100 }
Shop one league across jurisdictions and flag the spreads:
{ "leagues": ["football/italy/serie_a"], "compareMarkets": true, "comparisonMarkets": ["SE", "NL", "AU", "RO"], "maxItems": 30 }
Sweep a whole sport and keep only the tightly priced fixtures kicking off this week:
{ "sports": ["tennis"], "startsWithinHours": 168, "maxBookmakerMargin": 5, "excludeLive": true, "sortBy": "margin", "maxItems": 200 }
A note on filtering. The filters run on the complete event before the optional blocks are stripped, so maxBookmakerMargin, maxFavouriteOdds and minMarketCount all work without buying the value analysis or the full board.
Pricing
Pay-per-event: $0.007 per event row, dropping to $0.00623 at higher volume, plus $0.008 per listing page read and a $0.054 run-start fee. A league listing returns around 20 events and a whole-sport listing returns hundreds, so the page fee lands well under a cent per event.
| Events collected | Listing pages | Approximate cost |
|---|---|---|
| 100 | 5 | $0.79 |
| 1,000 | 20 | $7.21 |
| 10,000 | 60 | $70.53 |
Every optional block is billed only for the events that actually receive it:
| Optional block | Price per event |
|---|---|
| Full market board | $0.006 |
| Bet builder pre-packs | $0.005 |
| Live score & clock | $0.004 |
| Value analysis (no-vig, margin) | $0.008 |
| Market comparison | $0.012 |
| Outright / futures row | $0.009 |
| Participants | Free |
Bet builder needs the same per-event request as the full board, so enabling it on its own also bills the board once. Outright rows are billed as Outright market instead of Event, because one of them carries a 20-to-30-way futures market rather than a single fixture.
We sit above the per-row aggregators on price and say so plainly. What the difference buys is depth on one book instead of a headline across several: the full board with props and Asian lines, bet builder prices, outrights, the live clock, and the cross-jurisdiction spread. New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 events as a preview. Upgrade your Apify plan to collect up to 1,000,000 events per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the Unibet Odds Scraper.
- Enter
leagues,sports,eventIds, or tickliveOnly, pick amarketandlanguage, add any filters, and click Start. - Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to Unibet's price list through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/unibet-kambi-odds-scraper"
Then prompt it in plain language:
- "Pull the Premier League fixtures from Unibet this weekend and rank them by bookmaker margin."
- "Which in-play football matches on Unibet are level after 60 minutes, and what are the current odds?"
- "Compare Serie A prices between the Swedish and Australian Unibet markets and show me the biggest spreads."
Copy this into ChatGPT, Claude, or Cursor to start:
Use the Apify Actor "parseforge/unibet-kambi-odds-scraper" to collect Unibet (Kambi) sportsbook odds. Input: { "leagues": ["<sport/country/league>"], "sports": ["<sport>"], "liveOnly": <true|false>, "market": "<GB|SE|NL|...>", "maxItems": <n> }. It returns teams, kick-off, league, state, decimal/fractional/American odds per outcome, implied probability, bookmaker margin and payout, plus optional full market board, live score, bet builder packs, no-vig value analysis and cross-jurisdiction comparison. Call it with the ApifyClient and my APIFY_TOKEN.
Troubleshooting
Why am I getting no results?
The league path is probably wrong. It is a Kambi term path, not a display name: football/england/premier_league, not English Premier League. Pasting the Unibet URL of the competition works too. A path with no fixtures inside the book's listing window returns nothing.
Why fewer events than I asked for?
A league listing holds only what the book currently displays - around 20 fixtures for the Premier League, not the whole season - and your filters remove more. Add more leagues, point at the whole sport, or loosen the price and margin filters.
Why is liveData empty?
Only events currently in play carry it. On a pre-match fixture the field is null, and nothing is billed for it.
Why is allMarkets empty on an in-play event?
Once a fixture goes live, Kambi moves its board onto a push channel and the REST endpoint this Actor reads returns nothing for some of them. Measured on three in-play football matches: one returned 74 markets, two returned none. Nothing is billed when the board comes back empty. Use the full board on pre-match fixtures, and the in-play feed for the live score and the main live prices.
What exactly does liveOnly return?
The book's live feed also lists fixtures it has merely opened for in-play betting but that have not kicked off - four out of 91 at the time of writing. liveOnly keeps the ones actually in play. Set eventStates explicitly if you want the whole feed. Sports without a running clock, such as tennis and table tennis, report set scores instead of a minute.
Why do prices differ between two runs of the same fixture?
Because the book moved, or because you changed market. Kambi prices each licensed jurisdiction separately; changedAt on each outcome tells you when that price was last set.
Why is the run slow?
The full market board is one request per event and the biggest fixtures return hundreds of markets. Lower maxItems, set maxMarketsPerEvent, or narrow with marketCriteria. Measured: 200 events with their full boards took about 70 seconds.
A field stopped filling.
Kambi changed its public response shape. Email us with your run ID so we can update the parser.
FAQ
| Question | Answer |
|---|---|
| Do I need a Unibet account or an API key? | No. It reads Kambi's public offering endpoint, so there is no login, token or affiliate key to manage. |
| Does it need a proxy? | No. The feed answers plain anonymous requests, which is why the run cost is so low. |
| Which brands does it cover? | The Kambi offering that prices Unibet. Kambi's other brand offerings are IP-restricted at the CDN and are not reachable from Apify. |
| How many markets does an event have? | As many as the book prices. A Premier League fixture returned 433, a lower-league table tennis match returned one. marketCount tells you before you buy the board. |
| Can I get player props? | Yes, in the full market board, on pre-match fixtures. Football fixtures carry a couple of hundred player occurrence lines - goalscorer, assists, shots, cards. |
| Does the full board work on live events? | Not reliably. Kambi serves the in-play board over a push channel the REST feed does not mirror. You are not billed when it comes back empty. |
| What are the no-vig fair odds? | The market's implied probabilities normalised back to 100%, then inverted. It is the standard vig-free benchmark, computed from the prices on the row, not an official Unibet number. |
| Does the arbitrage flag mean free money? | No. It only says that the best prices across the Kambi jurisdictions you compared imply a book under 100%. Those markets are separate licensed products and are usually not accessible to one account. |
| Can I scrape outrights and futures? | Yes, tick Include outright markets. Those rows are billed as Outright market. |
| How many events per run? | Free plan: 10. Paid: up to 1,000,000, bounded by what the book's listings and your filters return. |
| Is this an official Unibet or Kambi product? | No. It is unofficial and reads only publicly available data. |
Related actors
- The Odds API Sports Scraper: multi-bookmaker odds through The Odds API.
- FanDuel Sportsbook Odds Scraper: moneyline, spread and totals from FanDuel.
- ESPN Sports Data Scraper: scores, schedules and team data across leagues.
- TheSportsDB Scraper: teams, players, fixtures and results reference data.
- Sports Stats Mega Pack Scraper: bulk statistics across multiple sports sources.
Browse the full ParseForge collection for more scrapers.
🆘 Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Kambi Group plc, Unibet, or Kindred Group. It collects only publicly available odds data. You are responsible for using the data in compliance with the site's terms and applicable laws. Gambling data carries legal restrictions that vary by jurisdiction - check yours before you use it, and do not use this Actor where sports betting data collection is restricted. 18+. If gambling stops being fun, visit BeGambleAware.
