arbplay

Greek bookmaker odds API: how to get the odds as JSON

Greek bookmakers don't generally offer developers a public odds API, so you either scrape each site yourself or use a JSON odds feed. The ArbPlay Odds HTTP API serves the odds of seven of them — Stoiximan, Novibet, Fonbet, Superbet, Elabet, OPAP (Allwyn) and Bwin — as each bookmaker's own JSON over HTTPS, rewritten every few seconds, from https://api.arbplay.app.

What you get

You get the same odds a bettor sees on each bookmaker's Greek website, as JSON files you download over HTTPS. There are two endpoints: GET /v1/files lists the files your key can read and GET /v1/data/{filename} returns one of them.

  • Seven bookmakers: Stoiximan, Novibet, Fonbet, Superbet, Elabet, OPAP (part of the Allwyn group) and Bwin.
  • Sports: soccer, basketball and tennis for every bookmaker, live and pre-match. The Stoiximan and Novibet live files, and the single Fonbet file, carry every sport the bookmaker lists — handball, volleyball, ice hockey, esports and more. Stoiximan adds a file with the upcoming rounds of 15 major soccer leagues.
  • Markets: whatever the bookmaker shows — match result, over/under lines, both teams to score, double chance, handicaps, draw no bet and, for some bookmakers, far more.
  • Format: decimal odds in every file; Bwin and OPAP also carry fractional prices, and Bwin American odds.

The coverage table on the API hub compares all seven side by side.

Who it's for — and who it isn't

It is for developers and data buyers who need Greek market prices as data: odds comparison sites, pricing and trading models, research datasets, dashboards and alerting tools.

It is not the ArbPlay sure-bet app. If you want ready-made arbitrage opportunities rather than raw odds, use the ArbPlay dashboard, and if the subject is new to you, start with the arbitrage betting guides. Betting in Greece is for adults aged 21 or older, and each bookmaker's terms still apply to what you build on its prices.

Raw bookmaker JSON, not a normalized feed

Most odds APIs squeeze every bookmaker into one schema. This one does the opposite: each file is the bookmaker's own JSON, served byte-for-byte inside a small envelope:

{
  "company": "novibet",
  "file": "site_pregame_novibet_soccer.json",
  "updated_at": "2026-09-26T20:02:33Z",
  "data": [ "… Novibet's own JSON, unchanged …" ]
}

The upside is that nothing is lost: every market, line, id and flag the bookmaker publishes is there. The cost is one small parser per bookmaker, because a Stoiximan file and a Bwin file look nothing alike. Stoiximan's live file is a store of records keyed by id, Elabet's files are linked tables, and Fonbet has no market names at all — its odds are keyed by numeric factor ids.

Each bookmaker page does that groundwork for you: a field map (where the teams, league, start time, market and price live), a real trimmed sample you can download, and a tested Python function that extracts match-result odds.

Matching the same match across bookmakers

Comparing prices means lining up the same fixture in different files. Five bookmakers make that easy by publishing the Betradar (Sportradar) match id:

  • Stoiximan — betradarMatchId (live), betRadarId (pre-match)
  • Novibet — sportradarMatchId
  • Superbet — fixture.betradar_id
  • OPAP — externalIds entry with provider betradar (sr:match:<id>)
  • Bwin — addons.betRadar (a number; most soccer fixtures, many basketball and tennis ones)

For Elabet and Fonbet, and for events without the id, match on normalised team names plus start time, with a few minutes of tolerance. Normalise accents, drop suffixes such as "FC" or "(W)", and compare the home and away sides separately.

How fresh the odds are

  • Live files are rewritten about every 1–3 seconds and pre-match files about every 4–7 seconds during active hours.

Every response carries updated_at and a Last-Modified header. Send that value back as If-Modified-Since and the API answers 304 Not Modified until the file changes — the cheap way to poll.

Direct key or marketplace?

Each bookmaker is a separate listing on RapidAPI, Zyla API Hub and JoJ API. Subscribing there is the quickest route: pick a plan, and call the marketplace's gateway with the marketplace's key — the endpoints and responses are the same. The API hub lists all 21 listings.

If you need several bookmakers under one key, higher limits, or a direct X-API-Key for https://api.arbplay.app, contact ArbPlay. Trial keys, what counts as a request, the markets each bookmaker carries and what you may do with the data are in the Odds API FAQ.

Quick start

With a direct key, list your files and download one:

curl -sS --compressed -H "X-API-Key: YOUR_API_KEY" \
  https://api.arbplay.app/v1/files

curl -sS --compressed -H "X-API-Key: YOUR_API_KEY" \
  https://api.arbplay.app/v1/data/site_pregame_novibet_soccer.json -o novibet.json

Start from /v1/files

A key reads one bookmaker's files, or a bundle's if it is a direct key for several. Request only names that GET /v1/files returns — an unknown filename answers 403, not 404.

Error codes, rate limits, a Python polling loop and a Node example are in the API reference.

Bookmakers covered

Documentation and agent-readable sources

Frequently asked questions

Is there an official API for Greek bookmaker odds?

Greek bookmakers do not generally offer developers a public odds API. ArbPlay's Odds HTTP API serves the odds seven of them show on their public websites — Stoiximan, Novibet, Fonbet, Superbet, Elabet, OPAP (Allwyn) and Bwin — as JSON. ArbPlay is independent and not affiliated with any of them.

Is this a JSON odds feed?

Yes. Each file is one bookmaker's own JSON for one sport, live or pre-match, served unchanged over HTTPS: GET /v1/files lists the files your key can read, and GET /v1/data/{filename} returns the company, the file name, an updated_at time and the bookmaker's JSON as data.

Why is every bookmaker's JSON different?

The API serves each bookmaker's own data unchanged instead of forcing it into one schema, so nothing is lost in translation. The price is that you write one small parser per bookmaker; each bookmaker page has a field map, a real sample and a tested Python function for match-result odds.

How do I match the same football match across bookmakers?

Join on the Betradar (Sportradar) match id where a bookmaker publishes one: Stoiximan, Novibet, Superbet, OPAP and Bwin do. For Elabet and Fonbet, and events without the id, match on normalised team names plus start time with a few minutes of tolerance.

How fresh are the odds?

During active hours live files are rewritten about every 1 to 3 seconds and pre-match files about every 4 to 7 seconds. Every response carries an updated_at time.

How do I get an API key?

Subscribe to a bookmaker's listing on RapidAPI, Zyla API Hub or JoJ API and call it with that marketplace's key; plans and quotas are set on each listing. For a direct X-API-Key to api.arbplay.app, contact ArbPlay.

This guide covers the Odds HTTP API at api.arbplay.app. It is separate from the ArbPlay app's own routes under arbplay.app/api/* (sign-in, the arbitrage feed), which are not a public API. ArbPlay is independent and not affiliated with or endorsed by any bookmaker; odds are served for informational use and ArbPlay does not place bets.

Need an API key?

Subscribe on a marketplace, or contact us for a direct key.