---
title: "API quote bookmaker italiani: 40+ concessionari ADM in un JSON | odss-api"
description: "API JSON con le quote dei bookmaker italiani con licenza ADM che le API globali non hanno: 40+ concessionari, event_id stabile, piano Free da 500 richieste."
url: https://odss-api.com/
---

# Le quote dei bookmaker italiani, in un'unica API

Quote normalizzate da decine di bookmaker — inclusi gli italiani che le API globali non hanno — in un formato JSON stabile. Per i tuoi modelli, bot e strumenti.

● book IT a ciclo continuo · freschezza misurata event_id stabile · last_update per quota self-serve · senza carta

```
# una richiesta, tutte le quote di un evento
curl "https://odss-api.com/api/v1/odds?sport=calcio&league=serie%20a" \
  -H "x-api-key: odss_live_..."

{ "count": 118, "offset": 0, "returned": 118, "state": "prematch", "odds": [{
  "event_id": "a3f9c1e07b2d4865", "event": "Inter - Milan",
  "league": "Serie A", "market": "1x2", "commence_time": "2026-08-23T18:45:00Z",
  "bookmakers": [
    { "key":"snai", "outcomes":{"HOME":2.10,"DRAW":3.40,"AWAY":3.60}, "last_update":"2026-07-14T10:32:05Z" },
    { "key":"bet365", "outcomes":{"HOME":2.05,"DRAW":3.50,"AWAY":3.70}, "last_update":"2026-07-14T10:28:12Z" },
    { "key":"leovegas", "outcomes":{"HOME":2.08,"AWAY":3.55}, "suspended":["DRAW"], "last_update":"2026-07-14T10:31:44Z" } ]}]}
```

## Tre mosse per integrare le quote

### Crea la chiave

Registrati e genera una chiave odss_live in un minuto. Il piano Free è per sempre, senza carta.

### Chiama /odds

Un endpoint, tutte le quote cross-book per evento e mercato. Filtri per sport, lega, mercato e bookmaker.

### Integra e sincronizza

event_id stabile per riconoscere gli eventi, last_update per la freschezza, offset per leggere tutto il palinsesto.

## Il moat: i book italiani.

### I bookmaker ADM che le API globali non hanno

Decine di concessionari italiani con licenza ADM, più book di riferimento internazionali ed exchange. L'elenco attivo in questo momento è su **/api/v1/bookmakers**, con una chiave API: nessuna lista di marchi da credere sulla parola. **country**, **playable_it** e **is_exchange** sono campi della risposta, non parametri di query — l'endpoint non ne accetta.

### Schema stabile

Un formato JSON pubblico e versionato: la forma interna del motore non ti arriva mai addosso.

### Integrazione affidabile

event_id deterministico per tutta la vita del prematch, last_update ISO per ogni book, paginazione con offset: sync senza sorprese.

### Freschezza onesta

I book italiani girano a ciclo continuo e la freschezza reale è misurata e pubblica, book per book, sulla status page; bet365 arriva via un fornitore di dati terzo su licenza contrattuale, con cadenza di qualche minuto. Ogni quota dichiara il suo last_update: niente numeri stantii spacciati per live.

## Il confronto onesto.

Dove ci mettiamo rispetto alle API globali e alla media del mercato. Senza nomi, senza promesse.

Confronto con la media dei provider globali/enterprise valutati (lug 2026). Le voci del nostro lato sono verificabili dagli endpoint pubblici e dalla documentazione.

## Bookmaker & leghe

Numeri live, contati dal feed in questo momento — non un inventario di catalogo.

—

bookmaker attivi nel feed

—

sport quotati adesso

—

leghe nel palinsesto

L'elenco nominativo dei book attivi in questo momento è su **GET /api/v1/bookmakers**, con i campi **country**, **playable_it**, **is_exchange** e **source**: richiede una chiave API (la Free si genera in un minuto, senza carta). Senza chiave sono pubblici **GET /api/v1/leagues** — da cui vengono i conteggi qui sopra — e **GET /api/v1/coverage**.

### Le leghe nel palinsesto adesso

Dati live dal feed (endpoint pubblico /api/v1/leagues): per ogni sport, le leghe quotate in questo momento. I nomi sono i valori del filtro league.

Carico il palinsesto…

Il palinsesto segue la stagione: d'estate il calcio di club è naturalmente ridotto.

## Documentazione

Base URL `https://odss-api.com`. Autenticazione con header `x-api-key: odss_live_…` oppure `Authorization: Bearer`. Risposte JSON, quote decimali europee.

### GET /api/v1/mock/odds senza chiave

Ogni endpoint ha un gemello sotto `/api/v1/mock/` che risponde **subito, senza registrarti e senza consumare quota**: stessa forma della risposta, stessi parametri, stessa validazione stretta del feed vero. I prezzi sono sintetici — `mock: true`, header `X-Odss-Mock: 1`, id con prefisso `mock_` — servono a scrivere e collaudare il codice, non a giocarci.

```
curl "https://odss-api.com/api/v1/mock/odds?sport=calcio&limit=3"
```

Disponibili: /mock/odds · /mock/odds/history · /mock/sports · /mock/bookmakers · /mock/leagues · /mock/status · /mock/stream (SSE). Il parametro `seed` rende la risposta riproducibile: usalo nella CI invece di bruciare quota a ogni run.

Sul feed VERO sono pubblici senza chiave anche `/api/v1/leagues`, `/api/v1/coverage` e `/api/v1/status`.

### Prima chiamata in 3 passi

#### Crea la chiave

Registrati e genera una chiave nella dashboard. Il piano Free è per sempre.

#### Elenca gli sport

Verifica la chiave con una chiamata a /sports.

#### Chiedi le quote

Chiama /odds con sport e mercato: ricevi le quote cross-book.

### GET /api/v1/odds esempio

```
curl "https://odss-api.com/api/v1/odds?sport=calcio&league=serie%20a&limit=5" \
  -H "x-api-key: odss_live_..."
```

```
const r = await fetch(
  "https://odss-api.com/api/v1/odds?sport=calcio&league=serie%20a&limit=5",
  { headers: { "x-api-key": "odss_live_..." } }
);
const { count, odds } = await r.json();
```

```
import requests
r = requests.get(
    "https://odss-api.com/api/v1/odds",
    params={"sport": "calcio", "league": "serie a", "limit": 5},
    headers={"x-api-key": "odss_live_..."},
)
data = r.json()  # { count, offset, returned, state, odds: [...] }
```

### GET /api/v1/odds

Le quote cross-book correnti, raggruppate per evento, mercato e linea. Ogni record elenca i bookmaker con i loro esiti e il timestamp dell'ultimo aggiornamento.

#### Parametri

| Parametro | Descrizione |
| --- | --- |
| `sport` | Filtro esatto sullo sport (es. calcio, tennis, basket). Valori: vedi /api/v1/sports. |
| `market` | Mercato canonico: 1x2, ou, btts, dc, ah (handicap asiatico), eh (handicap europeo), moneyline… |
| `bookmakers` | Lista CSV di chiavi book (es. snai,bet365). Valori: vedi /api/v1/bookmakers. |
| `league` | Filtro per sottostringa, case-insensitive (es. serie a). Valori: vedi /api/v1/leagues. |
| `event_id` | Un solo evento, per id esatto. |
| `state` | prematch (default), live (in-play, con punteggio e minuto) o all (entrambi). Con live, se il motore in-play è spento la lista è vuota e live_enabled=false. |
| `limit` | Record per pagina. Default 500, max 2000. |
| `offset` | Indice di partenza per la paginazione. Default 0. |

#### Campi della risposta

| Campo | Descrizione |
| --- | --- |
| `count` | Totale record che soddisfano i filtri (su tutte le pagine). |
| `offset · returned` | Eco dell'offset richiesto e record effettivamente restituiti in questa pagina. |
| `odds[].event_id` | Id deterministico dell'evento: identico per tutti i mercati dello stesso incontro e stabile per l'intera finestra prematch. |
| `odds[].event` | Nome normalizzato dell'evento (Casa - Ospite). |
| `odds[].sport · league` | Sport e lega/competizione dell'evento. |
| `odds[].home_team · away_team` | Le due squadre, quando disponibili. |
| `odds[].commence_time` | Inizio dell'evento, ISO 8601 UTC. |
| `odds[].market · line · scope · period` | Mercato canonico, eventuale linea (es. 2.5), ambito (es. squadra) e periodo (es. 1° tempo). |
| `odds[].state · score · minute` | state = prematch o live. Per il live: score (es. "1-0") e minute (es. "63'") correnti. Stesso event_id del prematch → correla la stessa partita nei due stati. |
| `…bookmakers[].key` | Chiave del bookmaker, con country, playable_it e is_exchange. |
| `…bookmakers[].outcomes` | Mappa esito → quota decimale (es. HOME: 2.10). |
| `…bookmakers[].suspended` | Esiti che quel book quota ma su cui **ora non accetta giocate**. Non stanno in `outcomes` (un esito sospeso non ha un prezzo giocabile) ma sono nominati qui, così «questo book non quota l'esito» e «lo quota ed è chiuso adesso» restano due fatti distinti. **Campo opzionale, e l'assenza vuol dire qualcosa**: se manca, la fonte di quel book non dichiara lo stato; `[]` vuol dire letta, e niente di sospeso. Non leggere l'assenza come lista vuota. |
| `…bookmakers[].last_update` | Timestamp ISO dell'ultimo aggiornamento riuscito delle quote di quel book. |

#### Paginazione

Ripeti la chiamata aumentando offset di returned, finché offset + returned < count. Il palinsesto è vivo: count può variare leggermente tra le pagine.

```
GET /api/v1/odds?sport=calcio&limit=1000&offset=0
GET /api/v1/odds?sport=calcio&limit=1000&offset=1000
# … finché offset + returned < count
```

### GET /api/v1/sports

Gli sport disponibili in questo momento nel feed (i valori del parametro sport).

### GET /api/v1/bookmakers

I bookmaker attivi nel feed, con `country` (codice ISO 3166-1 alpha-2 del paese di licenza — IT, GB, US, SE… — oppure `world` quando non è attribuito), `playable_it` (true solo per i book con concessione ADM, cioè giocabili dall'Italia: false per tutti gli altri book del feed, dalle sharp di riferimento come Pinnacle ai marchi esteri), `is_exchange` (commissione sulla vincita) e `source` (`direct` se leggiamo noi il book, `partner_feed` se il listino ci arriva da un fornitore di dati terzo).

### GET /api/v1/leagues pubblico, senza chiave

Il palinsesto corrente aggregato: per ogni sport le leghe quotate, con numero di eventi e di bookmaker. Utile per scoprire i valori del filtro league.

### GET /api/v1/stream Pro ed Enterprise

Server-Sent Events: alla connessione un evento hello, poi eventi odds con i record CAMBIATI (stesso schema di /odds) e i rimossi, entro ~10 secondi da quando il motore li rileva — niente polling. Parametro opzionale sport; snapshot iniziale via GET /odds. La cadenza dei dati resta quella del motore (freschezza per book misurata sulla status page; bet365 via un fornitore di dati terzo su licenza contrattuale): lo stream elimina la latenza di polling, fa fede last_update. Max 3 stream concorrenti; la connessione conta 1 richiesta di quota.

### GET /api/v1/odds/history

Storico delle variazioni di quota per un evento: una riga ogni volta che un bookmaker cambia prezzo su un gruppo. Filtri `event_id` (obbligatorio), `book`, `market`, `from`/`to` (ISO), `limit`. Ordine dal più recente: la prima riga di un evento iniziato è la sua chiusura. Rispetta l'ambito della chiave.

```
curl "https://odss-api.com/api/v1/odds/history?event_id=a3f9c1e07b2d4865&book=snai" \
  -H "x-api-key: odss_live_..."
```

### GET /api/v1/middles

Middle Over/Under calcolati dal feed corrente: OVER su una linea bassa da un book, UNDER su una linea alta da un altro. Se il totale cade nella finestra vincono entrambe le giocate. Campi `middle_window`, `hit_return_pct`, `miss_return_pct`, `safe` (nessuna perdita nemmeno a vuoto). Filtri: `sport`, `min_return`, `safe`, `limit`.

**Regola di freschezza:** una quota ferma da più di `stale_after_seconds` (900s di default) resta nelle risposte di `/odds` col suo `last_update`, ma **non viene accoppiata** in un middle: una gamba vecchia probabilmente non esiste più sul sito del bookmaker. La soglia applicata e il numero di gambe scartate sono nella risposta.

```
curl "https://odss-api.com/api/v1/middles?sport=calcio&safe=true" \
  -H "x-api-key: odss_live_..."
```

### GET /api/v1/coverage pubblico, senza chiave

Quanti **marchi** di bookmaker hanno una quota valida nel feed di questo momento, per regione (Italia, USA, UK, mondo). Non coincide con il numero di voci di `/api/v1/bookmakers`: là sono elencate le **chiavi** interrogabili e le corsie di mercato dedicate (es. `<marchio>-corners`) contano a sé, qui vengono accorpate sotto il marchio.

### POST /api/mcp MCP

Server MCP (JSON-RPC 2.0) per agenti AI e connettori (Claude, ChatGPT…). Autenticazione con la stessa chiave (Authorization: Bearer odss_live_… o x-api-key). Tool: `get_odds` (con state=live), `list_sports`, `list_bookmakers`, `list_leagues`. Solo `tools/call` consuma quota; l'handshake (initialize/tools/list) è gratis. Stateless: nessuna sessione, ogni richiesta è autosufficiente.

```
curl -X POST https://odss-api.com/api/mcp \
  -H "Authorization: Bearer odss_live_..." -H "content-type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"get_odds","arguments":{"sport":"calcio","state":"live","limit":5}}}'
```

### Webhook Enterprise

Registra una URL (https) dalla dashboard o via API — `POST /api/account/webhooks` con la sessione account (body `{url, sport?, state?}`; il secret è mostrato una volta, max 20 per account) — e ricevi le variazioni di quota via POST: stesso payload `{changed, removed}` dello stream. Ogni consegna è firmata: header `X-Odss-Signature: t=<unix>,v1=<hex>` = HMAC-SHA256 di `"{timestamp}.{body}"` col secret del webhook (verifica la firma e rifiuta timestamp vecchi). Solo https, niente redirect seguiti; endpoint che falliscono a ripetizione si auto-disabilitano. Rispondi 2xx per confermare. Una consegna può arrivare in **più POST consecutivi**, ognuno firmato per conto suo e numerato dall'header `X-Odss-Page: pagina/totale`: ogni corpo porta `page`, `pages`, `changed_total` e `removed_total`, così dalla prima pagina sai già quanto sta arrivando. Non limitare la frequenza dell'endpoint: una pagina rifiutata ferma le successive.

### Limiti, header ed errori

Ogni risposta autenticata include `X-RateLimit-Limit` (quota mensile del piano), `X-RateLimit-Remaining` e `X-RateLimit-Reset` (unix time in secondi in cui la finestra si riapre; sul 429 da quota la stessa data è nel corpo come `retry_at`). La quota è una finestra mobile di 30 giorni.

| Status | Descrizione |
| --- | --- |
| `400` | Richiesta non valida: parametro sconosciuto, valore fuori da quelli ammessi (es. state) o parametro obbligatorio mancante (es. event_id su /odds/history). Il corpo della risposta dice quale. |
| `401` | Chiave mancante, non valida o revocata. |
| `403` | Fuori ambito: account sospeso, feed fuori dallo scope della chiave (es. live con chiave solo-prematch) o funzione riservata al piano (stream: Pro ed Enterprise; webhook: Enterprise). |
| `429` | Burst: superate le richieste al minuto del piano. Header Retry-After: 60. |
| `429` | Quota mensile esaurita: passa a un piano superiore o attendi la finestra. |
| `502` | Feed momentaneamente non disponibile: riprova con backoff. |

#### Parametri: nessun silenzio

Su tutti gli endpoint /api/v1 un parametro che non riconosciamo non viene mai ignorato: se scrivi bookmaker invece di bookmakers ricevi 400 con il nome sbagliato, l'elenco di quelli ammessi su quell'endpoint e, se è un refuso, il suggerimento del nome giusto. Il confronto è esatto: anche Sport con la maiuscola viene rifiutato. Gli endpoint di catalogo (/sports, /bookmakers, /leagues, /coverage, /status) non accettano alcun parametro. Preferiamo un errore subito a una risposta 200 con dati non filtrati che sembrano corretti: il 400 è deterministico, va corretto e non ritentato, e non consuma quota.

La stessa regola vale per gli argomenti dei tool del server MCP (POST /api/mcp): un nome che non esiste, o un tipo sbagliato come una lista al posto della stringa CSV, riceve un errore JSON-RPC -32602 invece di essere ignorato. Il campo error.data porta i nomi ammessi, così l'agente si corregge da solo.

```
curl "https://odss-api.com/api/v1/odds?bookmaker=snai" -H "x-api-key: odss_live_..."

HTTP/1.1 400 Bad Request
{
  "error": "Parametro sconosciuto: \"bookmaker\" (forse intendevi \"bookmakers\"?). Ammessi su questo endpoint: bookmakers, content, event_id, league, limit, market, offset, player, sport, state"
}
```

### Machine-readable · contratto & agenti

Per generare client, SDK o usare l'API da un agente AI: il contratto OpenAPI 3.1 e una guida sintetica per LLM sono pubblici e sempre allineati.

| Risorsa | Descrizione |
| --- | --- |
| [/openapi.json](https://odss-api.com/openapi.json) | Contratto OpenAPI 3.1 (endpoint, parametri, schemi, auth x-api-key). |
| [/llms.txt](https://odss-api.com/llms.txt) | Guida markdown per LLM (llmstxt.org): riassunto e link alle risorse. |
| [/postman_collection.json](https://odss-api.com/postman_collection.json) | Collezione Postman: importala e imposta la variabile x-api-key per provare subito gli endpoint. |
| [/sdk/odss_api.py](https://odss-api.com/sdk/odss_api.py) | SDK Python ufficiale (single-file, zero dipendenze): client tipizzato con paginazione automatica e supporto live. |
| [/sdk/odss-api.ts](https://odss-api.com/sdk/odss-api.ts) | SDK TypeScript ufficiale (single-file, zero dipendenze): tipi, iteratore async e helper per lo stream SSE. |
| [/.well-known/api-catalog](https://odss-api.com/.well-known/api-catalog) | Catalogo API (RFC 9727, linkset JSON). |

### Licenza d'uso

L'uso interno (modelli, bot, analisi, backtest) è incluso in tutti i piani. La ridistribuzione dei dati — ad esempio mostrarli agli utenti finali di un tuo prodotto — richiede la licenza di **Redistribuzione Display** (add-on Enterprise, +€120/mese), che copre la sola visualizzazione. Creare, alimentare o commercializzare servizi di **surebet/arbitraggio**, di **value betting** o equivalenti richiede invece la [Surebet API](https://odss-api.com/surebet-api), il piano che include la licenza per rivendere le surebet calcolate: 950 €/mese + IVA, dal sito. Ridistribuire le API o i dati grezzi resta fuori da ogni piano: per quello scrivici a info@praxis3.it.

## Il piano giusto per il tuo volume.

Stessa copertura per tutti i piani: paghi solo il volume. Inizia gratis, disdici quando vuoi.

### Free

Per esplorare l'API. Per sempre, senza carta.

- 500 richieste / mese

- 30 richieste / min

- Copertura completa: tutti gli sport e tutti i book del feed

### Hobby

Per progetti personali e piccoli bot.

- 10.000 richieste / mese

- 60 richieste / min

- Copertura completa: tutti gli sport e tutti i book del feed

### Starter

Per bot e integrazioni in produzione.

- 100.000 richieste / mese

- 120 richieste / min

- Copertura completa: tutti gli sport e tutti i book del feed

### Pro

Per piattaforme e volumi alti.

- 500.000 richieste / mese

- 600 richieste / min

- Priorità di assistenza

### Enterprise

Per piattaforme, aziende e rivenditori: configura volume, rate e licenza — il prezzo si aggiorna da solo e attivi in checkout, senza trattative.

Ti autorizza a **mostrare** i dati agli utenti finali del tuo prodotto — siti, app, dashboard, widget, comparatori (senza, l'uso resta interno). **Non** autorizza a creare o commercializzare servizi di surebet/arbitraggio, value betting o piattaforme equivalenti, né a ridistribuire le API o i dati grezzi: per quelli serve una [licenza commerciale dedicata](https://odss-api.com/surebet-api). [Leggi la licenza →](https://odss-api.com/#)

Uso dichiarato — richiesto dalla Licenza, §8

La licenza SaaS ti autorizza a mostrare i dati ai tuoi utenti finali: dichiara chi sei e dove li mostri. Si compila una volta sola, ora.

- Streaming SSE incluso (/api/v1/stream)

- Quota e rate configurati sul tuo account

- Attivazione automatica al pagamento, disdici quando vuoi

Procedendo accetti la Licenza Enterprise e di Redistribuzione (leggibile dal link qui sopra) oltre ai Termini del servizio.

I prezzi indicati sono **al netto dell'IVA**. L'imposta applicabile viene aggiunta al momento del pagamento in base al tuo paese e al tuo status fiscale: **22% per l'Italia** (anche per le imprese con partita IVA italiana); **inversione contabile, imposta 0**, per le imprese di **altri Stati UE** con partita IVA valida; **operazione fuori campo IVA italiana** per i clienti extra-UE. L'importo totale che paghi è quello indicato dal riepilogo del checkout, che confermi prima di inoltrare l'ordine (§4 dei [Termini](https://odss-api.com/termini.html)) · Pagamenti via Stripe · disdetta in un click dal portale · la quota è una finestra mobile di 30 giorni

## Tre livelli, un solo motore.

Le quote normalizzate sono il primo livello. Se il prodotto che vuoi vendere sono gli arbitraggi, il livello che ti serve è un altro: le surebet già calcolate, con il diritto di rivenderle incluso nell'abbonamento.

Livello 1 · self-serve

### Odds API

Quote e dati normalizzati. Dal piano Free all'Enterprise, prezzo pubblico e attivazione immediata.

Livello 2 · self-serve

### Surebet API

Le surebet già individuate e calcolate dal motore, aggiornate ogni 180 secondi, non le sole quote. Un piano API da 950 €/mese + IVA, con la licenza di rivendita inclusa.

Livello 3 · a contratto

### Surebet White Label

La piattaforma completa, con il tuo marchio, pronta per essere commercializzata. 2.000 €/mese + IVA.

### Surebet API

Per chi ci costruisce sopra un prodotto proprio. Non restituisce soltanto le quote: restituisce le surebet già individuate e calcolate dal nostro motore, aggiornate ogni 180 secondi. Se non devi rivenderle a nessuno non ti serve: ti basta surebett.app.

Uso dichiarato — obbligatorio per la Surebet API Commercial License

La Surebet API Commercial License ti autorizza a usare le opportunità calcolate in un prodotto tuo destinato agli utenti finali: dichiara chi sei e dove le pubblichi. Si compila una volta sola, ora.

Attivazione al pagamento, disdetta in un click dal portale. È un piano a sé e non si somma a un piano a listino: se sull'account ne hai già uno attivo a pagamento, va disdetto prima. Procedendo sottoscrivi la Surebet API Commercial License, nei limiti dell'uso che hai dichiarato qui sopra, e accetti i [Termini](https://odss-api.com/termini.html) del servizio (§5).

- Evento e mercato

- Bookmaker coinvolti e quote delle singole gambe

- Percentuale/margine di arbitraggio

- Stake ottimali

- Timestamp e freschezza delle quote

- Identificativi necessari all'integrazione

I campi elencati sono quelli previsti **dove disponibili**: la risposta porta ciò che il motore ha davvero calcolato per quell'evento. La licenza di rivendita è inclusa nell'abbonamento: puoi usare le surebet calcolate in un prodotto commerciale tuo, destinato ai tuoi utenti finali, nei limiti dell'uso dichiarato e dei [Termini](https://odss-api.com/termini.html). Non comprende il White Label, che resta un contratto a parte.

### Surebet White Label

Per le aziende che non vogliono sviluppare autonomamente la piattaforma: la Surebet completa, fornita come servizio con il tuo marchio.

- Motore Surebet

- Dati e aggiornamenti

- Frontend completo

- Personalizzazione di logo, nome e colori

- Hosting e infrastruttura

- Manutenzione e aggiornamenti

Software, motore e codice sorgente **restano di nostra proprietà** e vengono concessi in uso secondo il contratto White Label.

La licenza «Redistribuzione Display» dei piani API autorizza a **mostrare** le quote dentro il tuo prodotto: non autorizza a creare o commercializzare servizi di surebet/arbitraggio, value betting o piattaforme sostanzialmente equivalenti, né a ridistribuire le API o i dati grezzi. Per questi usi servono la Surebet API Commercial License o il contratto White Label — vedi [le licenze commerciali](https://odss-api.com/surebet-api) e i [Termini](https://odss-api.com/termini.html), §5.

## Domande frequenti.

L'uso interno — modelli, bot, analisi, strumenti tuoi — è incluso in tutti i piani. Mostrare i dati agli utenti finali di un tuo prodotto richiede la licenza di Redistribuzione Display (add-on Enterprise): autorizza la sola visualizzazione. Se il prodotto che vuoi vendere sono le surebet — arbitraggio, value betting o servizi equivalenti — serve la Surebet API, che si compra dal sito come un qualsiasi piano API: 950 €/mese + IVA, con la licenza per rivenderle **inclusa** nell'abbonamento e la dichiarazione d'uso obbligatoria prima del pagamento. Se non devi rivendere nulla non ti serve: ti basta surebett.app. La piattaforma completa col tuo marchio resta il White Label, a contratto — vedi [Surebet API e White Label](https://odss-api.com/surebet-api).

I bookmaker italiani a ciclo continuo — la freschezza REALE, misurata book per book (p50/p95), è pubblica sulla status page; bet365 arriva via un fornitore di dati terzo su licenza contrattuale, con cadenza di qualche minuto. Non devi fidarti sulla parola: ogni quota nella risposta porta il suo last_update.

Il piano Free è per sempre e ha la stessa copertura dei piani a pagamento: è il modo migliore per verificare i dati. Se ti serve più volume per una prova, scrivici a info@praxis3.it.

Stesso motore, due prodotti: odss-api vende le quote grezze normalizzate per costruirci sopra; surebett.app è il prodotto finito, con gli arbitraggi già calcolati e gli stake bilanciati.

Sì: l'API espone le quote dei concessionari italiani presenti nel feed, filtrabili col parametro `bookmakers`. L'elenco attivo in questo momento è su `GET /api/v1/bookmakers`, che richiede una chiave API (la Free si genera in un minuto, senza carta); senza chiave sono pubblici `/api/v1/leagues` e `/api/v1/coverage`. Ogni quota porta il suo `last_update`.

Sì: l'API risponde JSON standard, quindi va dritta in Postgres, SQLite, pandas o Google Sheets. Con gli SDK Python e TypeScript bastano poche righe; il piano Free (500 richieste/mese) è sufficiente per provarci senza carta.

Da noi: Free 500 richieste/mese senza carta, Hobby 19 €/mese + IVA (10.000), Starter 79 €/mese + IVA (100.000), Pro 159 €/mese + IVA (500.000), Enterprise configurabile da 199 € + IVA. Tutti gli importi sono **al netto dell'IVA**: a un privato italiano si aggiunge il 22%. Per le imprese di altri Stati UE con partita IVA valida si applica l'inversione contabile (imposta 0); per i clienti extra-UE l'operazione è fuori campo IVA italiana. Il totale è sempre indicato nel riepilogo del checkout, che confermi prima dell'ordine (§4 dei [Termini](https://odss-api.com/termini.html)). Stessa copertura su tutti i piani: paghi solo il volume.

I book italiani girano a ciclo continuo e la freschezza è misurata, non promessa: p50 e p95 delle ultime 24 ore sono pubblici sulla [status page](https://odss-api.com/status), book per book. Per il push c'è lo streaming SSE; il live in-play ha il suo feed.

Servono per emettere fattura o ricevuta del tuo abbonamento.

Finiscono sulla fattura. Se hai partita IVA italiana serve anche il Codice Destinatario SDI o la PEC.

[Password dimenticata?](https://odss-api.com/#)

### Contatta il team

Scrivici: apriamo un ticket e ti rispondiamo via email. Niente bot.
