Skip to Content
Referência da APISnapshot de Odds

Snapshot de Odds

Obtenha um snapshot das odds atuais das casas de apostas.

GET /api/v1/odds

Alterado na v3.0.0: a resposta de odds agora carrega um único campo timestamp (entrega / frescor do feed, em paridade com a OpticOdds). Os antigos campos odds_changed_at, last_seen_at e wire_received_at foram removidos — leia timestamp em vez disso. Não há mais um campo para quando o preço se moveu pela última vez.

AutenticaçãoPermalink for this section

Requer API key. Disponível para todos os tiers.

As casas de apostas retornadas em seus resultados dependem do seu tier de assinatura. Usuários do tier Free recebem odds apenas da DraftKings e FanDuel. Veja Acesso a Casas por Tier abaixo.

Parâmetros de QueryPermalink for this section

ParâmetroTipoPadrãoDescrição
sportsbookstringpermitidas pelo tierIDs de casas de apostas separados por vírgula (ex.: draftkings,fanduel). Limites de tier são aplicados.
sportstringtodosFiltrar por esporte(s), separados por vírgula (ex.: basketball, football). Suporta aliases de categoria.
leaguestringtodasFiltrar por liga(s), separadas por vírgula (ex.: nba, nfl, nhl)
marketstringtodosFiltrar por tipo(s) de mercado, separados por vírgula. Suporta aliases de categoria (main, spread, total, props) ou tipos exatos (point_spread, player_points).
eventstringFiltrar por ID(s) de evento, separados por vírgula
livebooleantrue = apenas ao vivo, false = apenas pré-jogo, omitir = ambos
sortstringCampo de ordenação com prefixo opcional - para descendente (ex.: -odds_american, odds_probability)
fieldsstringtodosNomes de campos separados por vírgula a incluir na resposta (ex.: id,sportsbook,odds_american)
min_oddsnumberFiltro de odds americanas mínimas (ex.: -110)
max_oddsnumberFiltro de odds americanas máximas (ex.: +200)
group_bystringAgrupar resultados por campo (ex.: event)
statestringCódigo do estado dos EUA para deep links de casas de apostas (ex.: nj, ny, il). Quando definido, URLs de deep_link incluem ?state=XX para que o redirecionamento aponte para o domínio da casa de apostas específico do estado correto. Afeta apenas casas com URLs dependentes do estado (BetMGM, Caesars, BetRivers).
limitinteger50Máximo de resultados por página (máx. 200)
offsetinteger0Offset de paginação. Deve ser ≤ 500. Valores acima de 500 retornam 400 offset_too_large — use cursor para paginação mais profunda. Pode produzir linhas duplicadas quando dados ao vivo são atualizados entre requisições.
cursorstringCursor opaco do next_cursor em uma resposta anterior. Necessário para paginação profunda (além do offset 500) e recomendado para qualquer varredura de múltiplas páginas — estável diante de mudanças de dados ao vivo. Tem precedência sobre offset quando ambos são fornecidos.

Use valores separados por vírgula para filtrar por múltiplas casas de apostas: sportsbook=draftkings,fanduel,betmgm

Aliases de Categoria de MercadoPermalink for this section

Em vez de listar tipos de mercado individuais, você pode usar um alias de categoria para corresponder a um grupo de mercados relacionados. Aliases e tipos exatos podem ser misturados livremente em uma lista separada por vírgulas.

AliasExpande para
mainmoneyline, point_spread, total_points
spreadpoint_spread, puck_line, run_line, set_handicap
totaltotal_points, total_goals, total_runs, total_games, total_rounds, team_total
propsTodos os tipos de mercado player_* (correspondência por prefixo)
# Buscar todos os mercados "main" (moneyline + spreads + totals) curl "https://api.sharpapi.io/api/v1/odds?league=nba&market=main" \ -H "X-API-Key: YOUR_API_KEY" # Misturar um alias com um tipo exato curl "https://api.sharpapi.io/api/v1/odds?league=nfl&market=spread,moneyline" \ -H "X-API-Key: YOUR_API_KEY" # Todos os mercados de player props curl "https://api.sharpapi.io/api/v1/odds?league=nba&market=props" \ -H "X-API-Key: YOUR_API_KEY"

O alias props usa correspondência por prefixo, portanto inclui automaticamente qualquer tipo de mercado começando com player_ (ex.: player_points, player_rebounds, player_assists, player_strikeouts, etc.).

Exemplos de RequisiçãoPermalink for this section

curl -X GET "https://api.sharpapi.io/api/v1/odds?league=nba&sportsbook=draftkings&market=moneyline" \ -H "X-API-Key: YOUR_API_KEY"

PaginaçãoPermalink for this section

Use paginação baseada em cursor para varreduras de múltiplas páginas. O endpoint /odds serve dados ao vivo que são atualizados a cada ~15 segundos. Com paginação baseada em offset, linhas podem mudar de posição entre requisições, causando duplicatas nos limites de página. A paginação baseada em cursor ancora cada página ao último item visto — sem desvios.

Cada resposta inclui tanto next_cursor (estável) quanto next_offset (legado) no objeto pagination. Para varreduras sequenciais do conjunto completo de dados, sempre use next_cursor.

# Primeira página — sem necessidade de cursor curl "https://api.sharpapi.io/api/v1/odds?league=nfl&limit=200" \ -H "X-API-Key: YOUR_API_KEY" # Páginas subsequentes — passe next_cursor da resposta anterior curl "https://api.sharpapi.io/api/v1/odds?league=nfl&limit=200&cursor=eyJlIjoiMzM0ODMxNTMiLCJiIjoiZHJhZnRraW5ncyIsIm0iOiJtb25leWxpbmUiLCJpIjoiZHJhZnRraW5nc18zMzQ4MzE1M19tb25leWxpbmVfUEhJIn0" \ -H "X-API-Key: YOUR_API_KEY"

Cursores são opacos — não os analise nem os construa. Eles codificam a posição de ordenação do último item na página atual e só são válidos para os mesmos parâmetros de filtro.

?offset=N continua funcionando para paginação rasa (até offset 500) e é apropriado para requisições de página única ou acesso direto por posição. Além de 500, a API retorna 400 offset_too_large — caso contrário, o servidor teria que ordenar todo o conjunto filtrado de resultados a cada página, o que é muito mais barato evitar do que otimizar por requisição. Use cursor para qualquer coisa mais profunda.

{ "error": { "code": "offset_too_large", "message": "offset must be <= 500; use `cursor=` from the previous response for deeper pagination", "max_offset": 500 } }

RespostaPermalink for this section

Sucesso (200)Permalink for this section

{ "success": true, "data": [ { "id": "draftkings_33483153_moneyline_PHO", "sportsbook": "draftkings", "event_id": "33483153", "sport": "basketball", "league": "nba", "home_team": "PHI 76ers", "away_team": "PHO Suns", "market_type": "moneyline", "selection": "PHO Suns", "selection_type": "away", "odds_american": -150, "odds_decimal": 1.667, "odds_probability": 0.60, "line": null, "event_start_time": "2026-01-26T19:00:00Z", "timestamp": "2026-01-26T02:10:24.125Z", "is_live": false }, { "id": "draftkings_33483153_moneyline_PHI", "sportsbook": "draftkings", "event_id": "33483153", "sport": "basketball", "league": "nba", "home_team": "PHI 76ers", "away_team": "PHO Suns", "market_type": "moneyline", "selection": "PHI 76ers", "selection_type": "home", "odds_american": 130, "odds_decimal": 2.30, "odds_probability": 0.4348, "line": null, "event_start_time": "2026-01-26T19:00:00Z", "timestamp": "2026-01-26T02:10:24.125Z", "is_live": false } ], "meta": { "count": 2, "total": 3095, "books_available": ["draftkings", "fanduel", "betmgm", "caesars", "pinnacle"], "books_returned": ["draftkings"], "pagination": { "limit": 50, "offset": 0, "has_more": true, "next_offset": 50, "next_cursor": "eyJlIjoiMzM0ODMxNTMiLCJiIjoiZHJhZnRraW5ncyIsIm0iOiJtb25leWxpbmUiLCJpIjoiZHJhZnRraW5nc18zMzQ4MzE1M19tb25leWxpbmVfUEhJIn0" }, "updated_at": "2026-01-26T02:10:37.846Z", "filters": { "league": "nba", "sportsbook": "draftkings", "market": "moneyline" } } }

Cabeçalhos de RespostaPermalink for this section

X-RateLimit-Limit: 300 X-RateLimit-Remaining: 299 X-RateLimit-Reset: 1737853200 X-Data-Delay: 0 X-Request-Id: req_abc123def456
CabeçalhoDescrição
X-RateLimit-LimitMáximo de requisições por minuto para o seu tier
X-RateLimit-RemainingRequisições restantes na janela atual
X-RateLimit-ResetTimestamp Unix de quando o rate limit é redefinido
X-Data-DelayAtraso dos dados em segundos (0 para tempo real, 60 para o tier Free)
X-Request-IdIdentificador único da requisição para depuração

Respostas de ErroPermalink for this section

401 Unauthorized

{ "error": { "code": "unauthorized", "message": "Invalid or missing API key", "docs": "https://docs.sharpapi.io/en/authentication" } }

403 Tier Restricted

{ "error": { "code": "tier_restricted", "message": "Sportsbook 'pinnacle' requires Sharp tier or higher", "docs": "https://docs.sharpapi.io/en/pricing" } }

429 Rate Limited

{ "error": { "code": "rate_limited", "message": "Rate limit exceeded. Retry after 45 seconds.", "docs": "https://docs.sharpapi.io/en/authentication#rate-limits" } }

Schema do Objeto OddsPermalink for this section

CampoTipoDescrição
idstringIdentificador único de odds
sportsbookstringID da casa de apostas (ex.: draftkings)
event_idstringIdentificador do evento
sportstringSlug do esporte (ex.: basketball, football)
leaguestringSlug da liga (ex.: nba, nfl)
home_teamstringNome do time mandante
away_teamstringNome do time visitante
market_typestringmoneyline, spread, total, player_prop, etc.
selectionstringA seleção (nome do time, Over/Under, nome do jogador)
selection_typestringIdentificador canônico do lado. Veja Tipos de seleção abaixo para o enum completo, incluindo formas compostas (ex.: home_over) emitidas em mercados multieixo.
team_sidestring|undefinedDica bruta de lado do time vinda do adaptador — um dentre home, away, draw. Útil quando selection_type carrega um valor composto (ex.: home_over) e você quer apenas o eixo de time sem precisar fazer parsing. Ausente quando o adaptador não o carimbou.
odds_americannumberOdds americanas (ex.: -110, +150)
odds_decimalnumberOdds decimais (ex.: 1.909)
odds_probabilitynumberProbabilidade implícita (ex.: 0.5238)
linenumber | nullValor da linha de spread ou total (null para moneyline)
is_alternate_lineboolean|undefinedtrue quando o line desta linha difere da linha principal canônica para seu grupo (event, market_type, player). Sempre false para mercados sem linha (moneyline, outright). Estável em /opportunities/ev hoje; em rollout para as linhas de /odds. Use para separar snapshots de linha principal e linhas alternativas.
event_start_timestringHora de início do evento em ISO 8601
timestampstringHorário ISO 8601 em que a SharpAPI atualizou esta odd pela última vez através do seu pipeline — avança a cada ciclo de ingestão. É um sinal de frescor / liveness do feed (corresponde ao timestamp da OpticOdds); não é quando o preço mudou pela última vez.
is_livebooleanSe o evento está atualmente ao vivo
event_uuidstring|undefinedUUID canônico estável do evento do atlas do SharpAPI, quando o evento está mapeado. Enquanto event_id carrega o identificador primário do adaptador (frequentemente o da casa de apostas originadora), event_uuid é um hash estável entre feeds para joins cross-feed. Ausente para eventos não mapeados.
external_event_idstring|undefinedO ID de evento nativo da própria casa de apostas, quando distinto de event_id. Útil para vincular linhas de volta à UI ou API da casa de apostas.
deep_linkstring|undefinedURL resolvedora apontando para a página de evento ou bilhete da casa de apostas. Passe state= (ex.: state=nj) na requisição para rotear via subdomínios específicos por estado em casas que os exigem (BetMGM, Caesars, BetRivers).
market_idstring|undefinedIdentificador nativo de mercado da casa de apostas. Algumas casas não o expõem — ausente quando desconhecido.
selection_idstring|undefinedIdentificador nativo de seleção/resultado da casa de apostas. Algumas casas não o expõem — ausente quando desconhecido.
player_namestring|undefinedNome do jogador (apenas mercados de player prop)
stat_categorystring|undefinedCategoria estatística, ex.: points, rebounds (apenas mercados de player prop)
home_pitcherstring|undefinedApenas MLB. Pitcher abridor do time da casa quando publicado pela casa de apostas.
away_pitcherstring|undefinedApenas MLB. Pitcher abridor do time visitante quando publicado pela casa de apostas.
public_bet_pctnumber|undefinedPorcentagem de tickets de apostas públicos (0.0-1.0). Atualmente apenas BetMGM.
max_betnumber|undefinedValor máximo de aposta (USD) para este tipo de mercado. Atualmente apenas Pinnacle.
volumenumber|undefinedVolume casado nesta seleção. Apenas casas de exchange (Betfair, Novig, ProphetX, Polymarket). As unidades seguem a casa originadora (ex.: stake casado na Betfair, volume de ações em mercados de previsão).
volume_24hnumber|undefinedVolume casado das últimas 24 horas nesta seleção. Apenas casas de exchange.
open_interestnumber|undefinedInteresse aberto pendente (stake casado / ações atualmente detidas) nesta seleção. Apenas casas de exchange.
polymarket_resolutionstring|undefinedApenas Polymarket. Status de resolução do oráculo otimista UMA quando o mercado terminou — um dentre settled_normal, voided, disputed, proposed, unknown. Ausente em mercados Polymarket ainda ao vivo e em todas as casas não-Polymarket.

Tipos de seleçãoPermalink for this section

selection_type carrega o identificador canônico de lado para cada selection. A maioria dos mercados é de duas vias (ex.: moneyline, point spread, total) e emite um dos valores simples abaixo. Um pequeno conjunto de mercados multieixo (dupla chance no futebol, BTTS combinado, resultado × O/U, round betting de MMA, set betting de tênis, placar exato, etc.) codifica dois resultados por seleção e emite valores compostos unidos por _.

FamíliaValoresOnde aparecem
Duas vias (lado do time)home, awaymoneyline, point_spread, puck_line, run_line, team_total, set_handicap, a maioria dos mercados por período
Duas vias (direção da linha)over, undertotal_points, total_goals, total_runs, total_games, total_rounds, team_total, todos os props player_*_o_u
Duas vias (sim/não)yes, nobinary, mercados estilo prop sim/não, resultados de exchange “back/lay”, mercados de previsão Polymarket
Duas vias (paridade)even, oddMercados de paridade de totais (ex.: total de pontos par/ímpar)
Três viasdrawMoneyline a três vias (1X2 do futebol), lado complementar do draw-no-bet, “sem gol” em next_goal
Composto (time × O/U)home_over, home_under, away_over, away_undermatch_result_total_goals do futebol (“Time A e Over N.5”) e mercados análogos resultado-mais-total
Composto (time × BTTS)home_yes, home_no, away_yes, away_no, draw_yes, draw_nomatch_result_both_teams_to_score do futebol
Composto (dupla chance)home_draw, away_draw, home_awaydouble_chance do futebol (1X / X2 / 12) e dupla chance de MMA
Composto (round / método)home_r1, home_r2, home_decision, away_r1 etc.round_betting de MMA e mercados de método de vitória
Coringaothergame_prop, “sem gol” em next_goal, e qualquer seleção em que o mapeador de lado canônico não consegue decompor o resultado de forma limpa. Sempre presente em baixo volume; trate como opaco.

Parseando valores compostos. Strings compostas de selection_type sempre unem o eixo de time (home / away / draw) ao eixo secundário com um único underscore. Para recuperar apenas o eixo de time sem parsing, leia team_side — é o lado bruto carimbado pelo adaptador para a mesma linha.

Mercados de cauda longa emitem formas adicionais. Mercados como correct_score (ex.: "2_1"), set_betting (ex.: "0_2"), winning_margin, halftime_fulltime, first_goal e anytime_goal codificam resultados de placar ou compostos diretamente em selection_type. Se você depende de um enum fechado, filtre para as famílias acima e trate qualquer valor não reconhecido como opaco — não lance erro.

OrdenaçãoPermalink for this section

Use o parâmetro sort para ordenar resultados por qualquer campo. Adicione o prefixo - para ordem descendente.

# Ordenar por melhores odds americanas (descendente) curl "https://api.sharpapi.io/api/v1/odds?league=nba&sort=-odds_american" \ -H "X-API-Key: YOUR_API_KEY" # Ordenar por odds_probability (ascendente) curl "https://api.sharpapi.io/api/v1/odds?league=nba&sort=odds_probability" \ -H "X-API-Key: YOUR_API_KEY" # Ordenar por hora de início do evento curl "https://api.sharpapi.io/api/v1/odds?sort=event_start_time" \ -H "X-API-Key: YOUR_API_KEY"

Campos de ordenação válidos: odds_american, odds_decimal, odds_probability, event_start_time, timestamp, sportsbook, league, sport.

Seleção de CamposPermalink for this section

Use o parâmetro fields para retornar apenas campos específicos, reduzindo o tamanho do payload.

# Retornar apenas id, sportsbook e odds americanas curl "https://api.sharpapi.io/api/v1/odds?league=nba&fields=id,sportsbook,odds_american" \ -H "X-API-Key: YOUR_API_KEY"

A resposta incluirá apenas os campos solicitados para cada objeto de odds:

{ "data": [ { "id": "draftkings_33483153_moneyline_PHO", "sportsbook": "draftkings", "odds_american": -150 } ] }

Filtragem por Faixa de OddsPermalink for this section

Use min_odds e max_odds para filtrar pelo valor das odds americanas.

# Retornar apenas odds positivas (+100 e acima) curl "https://api.sharpapi.io/api/v1/odds?league=nba&min_odds=100" \ -H "X-API-Key: YOUR_API_KEY" # Retornar apenas odds entre -200 e +200 curl "https://api.sharpapi.io/api/v1/odds?league=nba&min_odds=-200&max_odds=200" \ -H "X-API-Key: YOUR_API_KEY"

Resposta Agrupada por EventoPermalink for this section

Use group_by=event para agrupar odds por evento em vez de uma lista plana. Isso é útil para construir UIs centradas em eventos.

curl "https://api.sharpapi.io/api/v1/odds?league=nba&group_by=event" \ -H "X-API-Key: YOUR_API_KEY"
{ "data": [ { "event_id": "33483153", "event_name": "PHI 76ers vs PHO Suns", "sport": "basketball", "league": "nba", "start_time": "2026-01-26T19:00:00Z", "is_live": false, "odds": [ { "id": "draftkings_33483153_moneyline_PHO", "sportsbook": "draftkings", "market_type": "moneyline", "selection": "PHO Suns", "selection_type": "away", "odds_american": -150, "odds_decimal": 1.667, "odds_probability": 0.60, "line": null, "timestamp": "2026-01-26T02:10:24.125Z" } ] } ], "meta": { "group_by": "event", "books_available": 5, "filters": { "league": "nba" }, "updated_at": "2026-01-26T02:10:37.846Z" } }

Acesso a Casas por TierPermalink for this section

As casas de apostas incluídas em seus resultados de odds dependem do seu tier de assinatura:

TierCasas DisponíveisCasas de Apostas Incluídas
Free2DraftKings, FanDuel
Hobby5+ BetMGM, Caesars, theScore Bet
Pro15+ Bet365, BetRivers, e mais
SharpTodas as 32Todas as casas de apostas disponíveis
EnterpriseTodas as 32Todas as casas de apostas disponíveis

Pinnacle (sharp book) requer tier Sharp ou superior. Solicitar sportsbook=pinnacle em um tier Free, Hobby ou Pro retornará um erro 403 tier_restricted.

Exemplos de FiltragemPermalink for this section

# Obter odds ao vivo da NBA de todas as casas disponíveis curl "https://api.sharpapi.io/api/v1/odds?league=nba&live=true" \ -H "X-API-Key: YOUR_API_KEY" # Obter odds de moneyline e spread para um evento específico curl "https://api.sharpapi.io/api/v1/odds?event=33483153&market=moneyline,spread" \ -H "X-API-Key: YOUR_API_KEY" # Paginar por todas as odds de spread da NFL (use next_cursor de cada resposta) curl "https://api.sharpapi.io/api/v1/odds?league=nfl&market=spread&limit=200" \ -H "X-API-Key: YOUR_API_KEY"

Endpoints RelacionadosPermalink for this section

  • Odds Delta - Obtenha apenas odds que mudaram desde um determinado timestamp
  • Best Odds - Obtenha as melhores odds em todas as casas para cada seleção
  • Odds Comparison - Compare odds entre casas lado a lado
  • Batch Odds - Busque odds para múltiplos eventos em uma única requisição
  • Markets - Liste tipos de mercado disponíveis
  • Sportsbooks - Liste casas de apostas disponíveis e seus status
Last updated on