Italian market · ADM licences

Italian odds API (ADM bookmakers)

The odds of 40+ ADM-licensed Italian operators in one normalized JSON, together with 160+ international books and exchanges: one feed, one monthly quota.

  • Free: 500 requests a month, no card
  • Sandbox with no key
Context

The Italian market, in one feed

If you've tried to build anything on the Italian market — a comparison tool, a bot, a model, a dashboard — you've probably seen the bill: global odds APIs are built for US, UK and offshore operators, and they carry part of the ADM licensees, often with a price for every extra book. Comparing the regulated Italian market takes all of them, together.

odss-api exists for that: the odds of 40+ ADM-licensed operators, normalized in a stable JSON, alongside the international reference books used as a “sharp” benchmark, among 160+ international books. Every price is attributed to its book and carries its own last_update; the age of the prices you receive is measured and public on the status page.

Coverage

Bookmakers covered

40+ ADM-licensed operators, plus international reference books and exchanges. We don't publish a brand wall: the list that matters is the one in the feed, right now.

Every book in the GET /api/v1/bookmakers response carries these fields:

Fields of every book in the /api/v1/bookmakers response
FieldWhat it tells you
keyThe book's identifier: the value you pass in the bookmakers= parameter of /api/v1/odds.
countryThe licensing country (ISO 3166-1 code, for example IT), or world when no country is attributed to the book.
playable_ittrue only for books holding an Italian ADM licence, i.e. playable from Italy.
is_exchangetrue for exchanges.
sourceThe price list's channel type: direct | partner_feed.

The active book list

GET /api/v1/bookmakers requires a key

It requires an API key (the Free one takes a minute, no card) and accepts no parameters: the fields in the table are read in the response, not passed in the URL.

Odds from a few books only

GET /api/v1/odds?bookmakers=…

To restrict odds to a subset of books, use the bookmakers= parameter on /api/v1/odds, with comma-separated key values.

Per-region counts

GET /api/v1/coverage public, no key

It counts every operator once, with its dedicated market lanes under the brand, like /bookmakers (where the keys of those lanes are in feed_keys).

Format

How the odds are structured

  • One endpoint. GET /api/v1/odds returns all cross-book odds by event and market, filterable by sport, league, market and bookmakers (those exact parameter names: an unknown one returns 400 rather than being ignored).
  • Deterministic event_id. The same fixture has the same id across all books and for the whole pre-match window: cross-book comparison is native, not heuristic.
  • Per-quote last_update. Every quote from every book carries the timestamp of its last successful update. Freshness is data, not a promise.
  • Secondary markets too. 1x2, over/under, handicap, correct score, first half/full time and book-specific markets, not just the headline ones.
Request · live feed, with a key
curl -G https://odss-api.com/api/v1/odds \
  -H "x-api-key: odss_live_..." \
  -d sport=calcio -d market=1x2 \
  -d bookmakers=sisal,snai,goldbet

The key goes in the x-api-key header. To try the response shape without a key there is the sandbox, /api/v1/mock/odds, with fake books.

Fields of every recordapplication/json
event_ideventcommence_timemarketbookmakers[].keyoutcomeslast_update
Comparison

odss-api and global odds APIs, compared

Comparison between odss-api and global odds APIs
Featureodss-apiGlobal APIs
Italian ADM bookmakers40+ in the feedFew, often priced per book
bet365 / PinnaclePinnacle yes, bet365 live onlyPartial
Billing modelPer account (monthly quota)Often per book or credits
Cross-book matchingDeterministic event_idOften heuristic
FreshnessPer-book last_update, public served ageOften not exposed
Free tierFree foreverVaries

Comparison against the average of the global providers reviewed (2026). Our side is verifiable from the public endpoints and the status page.

Freshness

How fresh are the odds?

We don't claim it: we measure it. The age of the odds you receive — p50 and p95, now and over the last 24 hours, measured on the snapshot the API is serving — is published on the status page, which refreshes every 30 seconds: today's number is there, not in a paragraph that ages. The targets we publish are p50 ≤ 15 minutes and p95 ≤ 60 minutes (see the SLA), capturing all markets. Every quote in the responses carries its own last_update: you judge, data point by data point.

Free plan

Try it free, no card

The Free plan includes 500 requests a month with the same coverage as the paid plans: same ADM bookmakers, same JSON schema, same freshness. You generate the key in a minute from the dashboard, without entering a card.

When you need more volume, the paid plans and their VAT treatment are on the pricing page. Published prices exclude VAT; the total is always shown in the checkout summary, which you confirm before ordering (§4 of the Terms).

Questions

FAQ

Which Italian bookmakers does the API cover?

40+ ADM-licensed Italian operators, plus international reference books and exchanges. We don't publish a brand list: the active book list, with the country, playable_it, is_exchange and source fields, is at GET /api/v1/bookmakers, which requires an API key (the Free one takes a minute, no card). Without a key, GET /api/v1/leagues and GET /api/v1/coverage are public.

Do global odds APIs have the Italian books?

Some carry part of them, often with a price for every extra book. odss-api puts 40+ ADM licensees and 160+ international books in one feed and one monthly quota, in one normalized JSON schema, with every price attributed to its book and its last_update: check it on /api/v1/coverage, public and without a key.

How are the odds structured?

Normalized JSON with a deterministic event_id shared by every market of the same fixture, and a last_update per quote per book. One endpoint (GET /api/v1/odds) returns all cross-book odds by event and market.

Is there a free tier?

Yes. The Free plan is forever (500 requests/month) with the same data coverage as the paid plans. You generate the key from the dashboard: it takes an email, a password and your billing details, no card.

Test it with your own data.

The Free plan has the same coverage as the paid plans: check it against your own use case, no card needed.

Get a free key
curl https://odss-api.com/api/v1/mock/odds