Supported regions

Region codes accepted by the regions= query parameter on /v1/sports/{sport}/odds and elsewhere. Pass one (regions=us) or several (regions=us,eu,uk) to filter the returned book list. Each region has its own licensing and geofencing posture; consult the per-region notes below. Machine-readable JSON at /v1/meta/regions.

Jump: global us us2 uk eu au fr ca br mx latam asia

International public feeds regions=global

International public sportsbook and prediction-market feeds, including offshore operators and event-contract venues. Licensing and availability vary by operator and customer jurisdiction; this region does not imply UK, EU or US licensing. Moneyline only from bookmaker_eu: that book publishes no spread and no total on any sport, so markets=spreads and markets=totals return no rows for them. Writing prices in the last 24 hours: BetOnline, Betway Mozambique, Bookmaker.eu, Polymarket.

4 of the 4 books regions=global declares wrote a price in the last 24 hours; 4 pass the /odds filter. The split is computed per request from the snapshot tables, not from a roster: see /v1/meta/regions for the same verdict per book with its last write age. Books we cover that no region carries are listed with their status at /v1/bookmakers?all=true.

United States (regulated) regions=us

US-licensed regulated books available in any of the 30+ legal-betting states, plus the US DFS pick-em apps and the US-legal prediction markets, which are served under this region code. The /v1/sports/{sport}/odds default region. Writing prices in the last 24 hours: bet365, BetMGM, BetOnline, BetRivers, Bovada, Caesars, DraftKings, Fanatics, FanDuel, Fliff, Hard Rock Bet, Kalshi, Novig, Parx Casino, Pinnacle, Polymarket, PrizePicks, ProphetX, Sleeper, Underdog Fantasy. Also declared: 3 declared but not writing, 6 not yet integrated, 1 retired. Per-book status and last write age are in `books_detail`. A book listed as paused wrote nothing in the window, which happens off-season, when a book stops pricing a market, and when our ingest for it breaks; /v1/meta/source-quality says which.

20 of the 30 books regions=us declares wrote a price in the last 24 hours; 30 pass the /odds filter. The split is computed per request from the snapshot tables, not from a roster: see /v1/meta/regions for the same verdict per book with its last write age. Books we cover that no region carries are listed with their status at /v1/bookmakers?all=true.

Declared by regions=us but not currently returning prices. Listed so the set is complete, never as coverage. "Not writing" says only that nothing arrived in the last 24 hours, which reads the same whether the league is between seasons, the book has stopped pricing that market, or our ingest for it is broken: /v1/meta/source-quality is what tells those apart.

United States (second book set) regions=us2

A second US-facing book set: the regulated books plus the sweepstakes products and an exchange. This is NOT an offshore region. BetOnline, MyBookie and the other Curacao/Panama books are carried under no region code at all, and the DFS pick-em apps and the prediction markets are served under regions=us. Compliance is the customer's responsibility per book per state. Writing prices in the last 24 hours: bet365, BetMGM, BetRivers, Caesars, DraftKings, Fanatics, FanDuel, Fliff, Hard Rock Bet, Novig, Parx Casino, Pinnacle, ProphetX. Also declared: 3 not yet integrated. Per-book status and last write age are in `books_detail`.

13 of the 16 books regions=us2 declares wrote a price in the last 24 hours; 16 pass the /odds filter. The split is computed per request from the snapshot tables, not from a roster: see /v1/meta/regions for the same verdict per book with its last write age. Books we cover that no region carries are listed with their status at /v1/bookmakers?all=true.

Declared by regions=us2 but not currently returning prices. Listed so the set is complete, never as coverage. "Not writing" says only that nothing arrived in the last 24 hours, which reads the same whether the league is between seasons, the book has stopped pricing that market, or our ingest for it is broken: /v1/meta/source-quality is what tells those apart.

United Kingdom + Ireland regions=uk

UKGC-licensed UK/IE retail books plus UK-licensed exchanges. Geofenced from US IPs; geo via VPN or per-book auth. Moneyline only from unibet: that book publishes no spread and no total on any sport, so markets=spreads and markets=totals return no rows for them. Writing prices in the last 24 hours: bet365, Betway, Pinnacle, 10bet, Unibet. Also declared: 10 not yet integrated. Per-book status and last write age are in `books_detail`.

5 of the 15 books regions=uk declares wrote a price in the last 24 hours; 15 pass the /odds filter. The split is computed per request from the snapshot tables, not from a roster: see /v1/meta/regions for the same verdict per book with its last write age. Books we cover that no region carries are listed with their status at /v1/bookmakers?all=true.

Declared by regions=uk but not currently returning prices. Listed so the set is complete, never as coverage. "Not writing" says only that nothing arrived in the last 24 hours, which reads the same whether the league is between seasons, the book has stopped pricing that market, or our ingest for it is broken: /v1/meta/source-quality is what tells those apart.

European Union regions=eu

EU-licensed retail books across DACH, France and Benelux, plus the exchanges and the sharp reference. Per-country licensing applies; not all EU books accept every EU IP. The Nordic state monopolies (Veikkaus, Norsk Tipping, Svenska Spel) and the Italian and Spanish markets are not integrated. Moneyline only from pmu, unibet, unibet_be, unibet_nl: those books publish no spread and no total on any sport, so markets=spreads and markets=totals return no rows for them. Writing prices in the last 24 hours: bet365, Pinnacle, PMU, Superbet, Unibet, Unibet (BE), Unibet (NL). Also declared: 3 declared but not writing, 3 not yet integrated. Per-book status and last write age are in `books_detail`. A book listed as paused wrote nothing in the window, which happens off-season, when a book stops pricing a market, and when our ingest for it breaks; /v1/meta/source-quality says which.

7 of the 13 books regions=eu declares wrote a price in the last 24 hours; 10 pass the /odds filter. The split is computed per request from the snapshot tables, not from a roster: see /v1/meta/regions for the same verdict per book with its last write age. Books we cover that no region carries are listed with their status at /v1/bookmakers?all=true.

Declared by regions=eu but not currently returning prices. Listed so the set is complete, never as coverage. "Not writing" says only that nothing arrived in the last 24 hours, which reads the same whether the league is between seasons, the book has stopped pricing that market, or our ingest for it is broken: /v1/meta/source-quality is what tells those apart.

Australia + New Zealand regions=au

Australian Communications and Media Authority (ACMA) and Northern Territory Racing Commission (NTRC) licensed books. AU markets use two-way moneylines (no draw) for AFL/NRL/cricket/basketball; soccer uses 3-way. Moneyline only from unibet: that book publishes no spread and no total on any sport, so markets=spreads and markets=totals return no rows for them. Writing prices in the last 24 hours: bet365, Pinnacle, Unibet. Also declared: 1 declared but not writing, 5 not yet integrated. Per-book status and last write age are in `books_detail`. A book listed as paused wrote nothing in the window, which happens off-season, when a book stops pricing a market, and when our ingest for it breaks; /v1/meta/source-quality says which.

3 of the 9 books regions=au declares wrote a price in the last 24 hours; 9 pass the /odds filter. The split is computed per request from the snapshot tables, not from a roster: see /v1/meta/regions for the same verdict per book with its last write age. Books we cover that no region carries are listed with their status at /v1/bookmakers?all=true.

Declared by regions=au but not currently returning prices. Listed so the set is complete, never as coverage. "Not writing" says only that nothing arrived in the last 24 hours, which reads the same whether the league is between seasons, the book has stopped pricing that market, or our ingest for it is broken: /v1/meta/source-quality is what tells those apart.

France regions=fr

French-facing books and sharp reference coverage. French labels are normalized into the same h2h, spreads, totals, and prop keys as the rest of the API. Moneyline only from pmu: that book publishes no spread and no total on any sport, so markets=spreads and markets=totals return no rows for them. Writing prices in the last 24 hours: Pinnacle, PMU. Also declared: 2 declared but not writing. Per-book status and last write age are in `books_detail`. A book listed as paused wrote nothing in the window, which happens off-season, when a book stops pricing a market, and when our ingest for it breaks; /v1/meta/source-quality says which.

2 of the 4 books regions=fr declares wrote a price in the last 24 hours; 2 pass the /odds filter. The split is computed per request from the snapshot tables, not from a roster: see /v1/meta/regions for the same verdict per book with its last write age. Books we cover that no region carries are listed with their status at /v1/bookmakers?all=true.

Declared by regions=fr but not currently returning prices. Listed so the set is complete, never as coverage. "Not writing" says only that nothing arrived in the last 24 hours, which reads the same whether the league is between seasons, the book has stopped pricing that market, or our ingest for it is broken: /v1/meta/source-quality is what tells those apart.

Canada regions=ca

Canadian provincial-regulated books. Ontario is the largest open market (post-Apr 2022) and is where the AGCO-licensed operators we carry sit; which of them is live today is answered by the per-book status below rather than named in this sentence, because an operator that closes or goes quiet stops being coverage the same day and a typed sentence does not. The sharp reference that rides along in every region holds an Ontario registration but is offshore for betting purposes. Quebec (Loto-Quebec), BC/MB/SK (BCLC PlayNow) and the Atlantic monopolies are not yet integrated. French-Canadian labels supported (Domicile/Match nul/Visiteur). Moneyline only from betrivers_ca: that book publishes no spread and no total on any sport, so markets=spreads and markets=totals return no rows for them. Writing prices in the last 24 hours: BetRivers (CA), Pinnacle. Also declared: 6 not yet integrated, 1 retired. Per-book status and last write age are in `books_detail`.

2 of the 9 books regions=ca declares wrote a price in the last 24 hours; 8 pass the /odds filter. The split is computed per request from the snapshot tables, not from a roster: see /v1/meta/regions for the same verdict per book with its last write age. Books we cover that no region carries are listed with their status at /v1/bookmakers?all=true.

Declared by regions=ca but not currently returning prices. Listed so the set is complete, never as coverage. "Not writing" says only that nothing arrived in the last 24 hours, which reads the same whether the league is between seasons, the book has stopped pricing that market, or our ingest for it is broken: /v1/meta/source-quality is what tells those apart.

Brazil regions=br

Brazil's regulated market opened in January 2025 under the Secretaria de PrĂªmios e Apostas (SPA), and no SPA-licensed book is served here yet: the eight Brazilian brands this region used to advertise have never returned a row, so listing them described a roadmap rather than coverage. regions=br therefore narrows a query to the offshore sharp reference, which does price the Brazilian competitions we carry (top-flight and second-tier football, the Copa, the state championships, and a basketball league) in the same canonical h2h, spreads and totals keys as every other region, with player props on the same keys. Portuguese labels (Casa/Empate/Fora and Mandante/Visitante variants) are normalized. Per-book ingest status for the Brazilian brands is published at /v1/meta/book-catalog?class=br, computed from the data rather than declared here. Writing prices in the last 24 hours: Pinnacle.

1 of the 1 books regions=br declares wrote a price in the last 24 hours; 1 pass the /odds filter. The split is computed per request from the snapshot tables, not from a roster: see /v1/meta/regions for the same verdict per book with its last write age. Books we cover that no region carries are listed with their status at /v1/bookmakers?all=true.

Mexico regions=mx

Mexican SEGOB-licensed retail books plus LATAM operators in Argentina and Colombia. Spanish labels (Local/Empate/Visitante). Moneyline only from rushbet: that book publishes no spread and no total on any sport, so markets=spreads and markets=totals return no rows for them. Writing prices in the last 24 hours: Pinnacle, RushBet. Also declared: 8 not yet integrated. Per-book status and last write age are in `books_detail`.

2 of the 10 books regions=mx declares wrote a price in the last 24 hours; 10 pass the /odds filter. The split is computed per request from the snapshot tables, not from a roster: see /v1/meta/regions for the same verdict per book with its last write age. Books we cover that no region carries are listed with their status at /v1/bookmakers?all=true.

Declared by regions=mx but not currently returning prices. Listed so the set is complete, never as coverage. "Not writing" says only that nothing arrived in the last 24 hours, which reads the same whether the league is between seasons, the book has stopped pricing that market, or our ingest for it is broken: /v1/meta/source-quality is what tells those apart.

LATAM regions=latam

Spanish-language LATAM operators, including Colombia and Argentina coverage where public catalog access is available. Spanish labels are normalized into canonical game-line markets. Moneyline only from rushbet: that book publishes no spread and no total on any sport, so markets=spreads and markets=totals return no rows for them. Writing prices in the last 24 hours: Pinnacle, RushBet. Also declared: 4 not yet integrated. Per-book status and last write age are in `books_detail`.

2 of the 6 books regions=latam declares wrote a price in the last 24 hours; 6 pass the /odds filter. The split is computed per request from the snapshot tables, not from a roster: see /v1/meta/regions for the same verdict per book with its last write age. Books we cover that no region carries are listed with their status at /v1/bookmakers?all=true.

Declared by regions=latam but not currently returning prices. Listed so the set is complete, never as coverage. "Not writing" says only that nothing arrived in the last 24 hours, which reads the same whether the league is between seasons, the book has stopped pricing that market, or our ingest for it is broken: /v1/meta/source-quality is what tells those apart.

Asia regions=asia

PAGCOR-licensed (Philippines) Asian-handicap operators. Asian markets prefer half-line spreads and totals over moneylines; books rarely publish 3-way ML. Writing prices in the last 24 hours: Pinnacle. Also declared: 2 not yet integrated. Per-book status and last write age are in `books_detail`.

1 of the 3 books regions=asia declares wrote a price in the last 24 hours; 3 pass the /odds filter. The split is computed per request from the snapshot tables, not from a roster: see /v1/meta/regions for the same verdict per book with its last write age. Books we cover that no region carries are listed with their status at /v1/bookmakers?all=true.

Declared by regions=asia but not currently returning prices. Listed so the set is complete, never as coverage. "Not writing" says only that nothing arrived in the last 24 hours, which reads the same whether the league is between seasons, the book has stopped pricing that market, or our ingest for it is broken: /v1/meta/source-quality is what tells those apart.

Compliance and licensing

Books in each region are licensed by that region's gambling regulator (UKGC, ACMA, SPA, SEGOB, OLG, etc.). ParlayAPI returns the prices the books publish; using those prices to place real bets is governed by the regulator of the jurisdiction you're physically in, not the book's home jurisdiction. The regions=us2 bucket in particular includes books not licensed in any US state; access carries the customer's compliance burden.