---
title: "Dati & fonti · odss-api"
description: "Dati e fonti odss-api: come acquisiamo e normalizziamo le quote, copertura, politica correzioni e licenza di ridistribuzione. Verificabile dagli endpoint."
url: https://odss-api.com/dati
---

# Dati & fonti

## Come acquisiamo le quote

Leggiamo le **interfacce pubblicate dagli operatori** con licenza ADM — gli endpoint che alimentano i loro palinsesti — e le esponiamo normalizzate in uno schema unico. Una **parte del catalogo** (tra cui **bet365** e **Pinnacle**) proviene da **fornitori di dati terzi su licenza**, non dall'operatore. Ogni quota resta attribuita al book a cui appartiene, col suo `last_update`.

Verificabile da due letture diverse, che **non danno lo stesso numero**: GET /api/v1/bookmakers (richiede una chiave API) elenca le **chiavi** attive nel feed con `country`, `playable_it`, `is_exchange` e `source` — quante chiavi puoi interrogare, contando a parte le corsie di mercato dedicate come `<marchio>-corners`; GET /api/v1/coverage (pubblico, senza chiave) conta i **marchi** per regione — quante insegne stai coprendo, con le corsie accorpate sotto la loro. Nessuna corrispondenza uno-a-uno fra i due conteggi: misurano cose diverse.

## Come li normalizziamo

- **event_id deterministico**: lo stesso incontro ha lo stesso id su tutti i mercati e per l'intera finestra pre-match — è così che confrontiamo i book tra loro (matching non euristico).

- **Schema stabile e versionato** ([OpenAPI 3.1](https://odss-api.com/openapi.json)): la forma interna del motore non arriva mai al client.

- **Cattura completa dei mercati**: per ogni evento esponiamo *tutti* i mercati che il book quota (esito, U/O, handicap, risultato esatto, primo/finale, combinazioni e mercati book-specifici come `other:<label>`), non solo i principali.

- **Nessun collasso arbitrario dei book**: ogni chiave del feed resta una chiave e la risposta non fonde marchi diversi in un'unica riga — se ti serve raggrupparli, lo decidi tu. L'unico accorpamento sta nei conteggi per marchio di GET /api/v1/coverage, dove le corsie di mercato dedicate (`<marchio>-corners`) rientrano sotto la loro insegna.

Verificabile: GET /api/v1/leagues mostra sport → leghe con conteggi di eventi e book nel palinsesto corrente.

## Freschezza e correttezza

- Ogni quota porta il suo `last_update` (ISO) — il timbro è dell'ultimo fetch **riuscito**: un book in errore non mostra mai un dato stantio con timestamp fresco.

- La **distribuzione reale** della staleness (p50/p95/p99 su 24h, per book) è pubblica sulla [status page](https://odss-api.com/status). Misurata, non dichiarata.

- Non inventiamo dati: una linea/handicap col segno non ricavabile con certezza viene **scartata**, non indovinata (evita falsi arbitraggi).

- I mercati non comparabili cross-book (`other:*`, per-giocatore, totali asiatici) sono esposti come dato ma **mai** promossi ad arbitraggio.

- Non applichiamo filtri che non esistono: un parametro di query sconosciuto risponde `400` con l'elenco di quelli ammessi su quell'endpoint (e il suggerimento, se è un refuso), **mai** `200` con il feed non filtrato. L'errore non consuma quota.

## Copertura e stagionalità

Non abbiamo una lista di leghe che seguiamo o escludiamo: se un book quota un evento, lo vediamo. La comparsa dei mercati dipende dalla **stagione** — a campionati fermi il palinsesto calcio è ridotto (amichevoli), con la ripartenza torna pieno. Il conteggio reale, momento per momento, è su /api/v1/leagues e sulla [status page](https://odss-api.com/status).

## Licenza e ridistribuzione

**Uso interno incluso in tutti i piani**: modelli, bot, analisi, strumenti tuoi.

**Ridistribuzione a utenti finali** (mostrare le quote dentro un tuo prodotto/SaaS: ricerca pre-match, confronto, calcolatori, workflow) → richiede la **licenza Enterprise / di redistribuzione**, non i piani Starter/Pro standard. È un vincolo centrale per un SaaS, non una nota a piè di pagina. Testo completo nei [Termini](https://odss-api.com/termini.html) e nella [licenza Enterprise](https://odss-api.com/?legal=enterprise).

## Assistenza

Scrivici a [info@praxis3.it](mailto:info@praxis3.it) o dal robottino sul sito. Presa in carico di un problema grave entro **4 ore lavorative** (target); i piani a pagamento hanno priorità.
