Skip to Content
Referência da APIDistribuição de Apostas

Divisões de Apostas

Obtenha divisões públicas de apostas (handle % e bet %) do DraftKings, Circa Sports e BetMGM.

GET /api/v1/splits

AutenticaçãoPermalink for this section

Requer API key. Requer tier Pro ($229/mês) ou superior.

O que são divisões de apostas?Permalink for this section

Handle % é a porcentagem do dinheiro total apostado em cada lado. Bet % é a porcentagem dos tickets totais (apostas realizadas) em cada lado.

A diferença entre bet % e handle % revela o dinheiro inteligente (sharp money). Se 30% dos tickets carregam 60% do dinheiro, apostadores sharp estão nesse lado.

Fontes de DadosPermalink for this section

FonteTipoO que trazFrequência de Atualização
DraftKingsCasa recreativa (~35% de participação no mercado dos EUA)Handle % e bet %A cada 5 minutos
Circa SportsCasa amigável a sharps (atrai profissionais)Handle % e bet %A cada 5 minutos
BetMGMCasa recreativa — derivada do seu próprio campo de porcentagem de apostas públicasSomente bet % — os valores de handle_pct são nullIntermitente

Comparar as divisões do DraftKings (recreativo) vs Circa (sharp) revela onde o dinheiro profissional diverge do público.

A cobertura é fixa nessas três casas. Ela não cresce com a cota de casas de apostas do seu plano — selecionar mais casas, ou subir de plano, não acrescenta fontes de divisões. Nenhuma outra casa publica divisões de apostas e não há novas previstas. Como a BetMGM fornece apenas uma porcentagem de bilhetes, a diferença entre bet % e handle % que revela o dinheiro inteligente só pode ser calculada nas linhas de DraftKings e Circa. O histórico inclui amostras de DraftKings, Circa e BetMGM capturadas durante a janela de retenção de 48 horas. A BetMGM publica apenas porcentagens de tickets; as porcentagens de dinheiro continuam null.

consensus é um rótulo, não uma casa de apostas. Quando todas as fontes que cobrem um evento publicam números idênticos, essas linhas são mescladas em uma única com "sportsbook": "consensus". A API aplica esse rótulo de forma sintética — ele nunca aparece em /api/v1/sportsbooks, embora /splits?sportsbook=consensus filtre por ele. Linhas mescladas não são retornadas por um filtro sportsbook=draftkings.

Parâmetros de ConsultaPermalink for this section

ParâmetroTipoDescrição
sportstringFiltrar por esporte (separado por vírgula). Exemplo: basketball
leaguestringFiltrar por liga (separado por vírgula). Exemplo: nba,ncaab
sportsbookstringFiltrar pela fonte das divisões. Exemplo: draftkings,circa. Também aceita o valor sintético consensus.
event_idstringFiltrar pelo ID canônico do evento (separado por vírgula)
marketstringFiltrar para eventos que possuem um determinado mercado de divisão (separado por vírgula). Um ou mais de spread, total, moneyline.
limitintegerMáximo de resultados (padrão 100, máximo 200)
offsetintegerDeslocamento de paginação (padrão 0)

RespostaPermalink for this section

{ "data": [ { "event_id": "mlb_guardians_orioles_2026-04-16", "sport": "baseball", "league": "mlb", "sportsbook": "draftkings", "away_team": "Baltimore Orioles", "home_team": "Cleveland Guardians", "spread": { "away_odds": -1.5, "home_odds": 1.5, "handle_pct": { "away": 0.22, "home": 0.78 }, "bets_pct": { "away": 0.20, "home": 0.80 } }, "total": { "line": 8, "handle_pct": { "over": 0.53, "under": 0.47 }, "bets_pct": { "over": 0.57, "under": 0.43 } }, "moneyline": { "away_odds": 104, "home_odds": -126, "handle_pct": { "away": 0.28, "home": 0.72 }, "bets_pct": { "away": 0.33, "home": 0.67 } }, "fetched_at": "2026-04-16T19:25:28.363825+00:00", "available_metrics": ["bets_pct", "handle_pct"] } ], "pagination": { "limit": 100, "offset": 0, "count": 1, "total": 41, "has_more": false, "next_offset": null }, "updated_at": "2026-04-16T19:29:38.920698424Z" }

Na resposta de /splits, o spread carrega valores de linha dentro das chaves away_odds/home_odds (ex.: -1.5 / +1.5) — a nomenclatura do campo é uma inconsistência conhecida. O endpoint histórico utiliza away_line/home_line para os mesmos dados.

Campos da RespostaPermalink for this section

CampoTipoDescrição
event_idstringID canônico do evento — use isto para juntar com dados de /odds
sportstringNome do esporte normalizado pelo Atlas
leaguestringNome da liga normalizado pelo Atlas
sportsbookstringCasa de apostas fonte dos dados de divisões (draftkings, circa, betmgm ou o valor sintético consensus)
away_teamstringNome do time visitante
home_teamstringNome do time da casa
spread.away_oddsnumberValor da linha do spread visitante (ex.: -1.5) — veja o aviso acima
spread.home_oddsnumberValor da linha do spread da casa (ex.: +1.5)
spread.handle_pctobject% do dinheiro em cada lado (away, home; 0.0-1.0)
spread.bets_pctobject% de tickets em cada lado (away, home; 0.0-1.0)
total.linenumberLinha de over/under (ex.: 225.5)
total.handle_pctobject% do dinheiro (over, under; 0.0-1.0)
total.bets_pctobject% de tickets (over, under; 0.0-1.0)
moneyline.away_oddsnumberOdds da moneyline visitante (formato americano)
moneyline.home_oddsnumberOdds da moneyline da casa (formato americano)
moneyline.handle_pctobject% do dinheiro em cada lado (away, home; 0.0-1.0)
moneyline.bets_pctobject% de tickets em cada lado (away, home; 0.0-1.0)
fetched_atstringTimestamp ISO 8601 de quando os dados foram coletados pela última vez
available_metricsarrayQuais métricas de divisão a casa de apostas desta linha chega a publicar — bets_pct, handle_pct ou ambas, sempre nessa ordem. É uma afirmação sobre a casa, não sobre os valores desta linha. Omitido quando a casa não está declarada — veja abaixo.

Quais valores podem ser null — e quais chaves podem estar ausentes. As chaves de porcentagem e de odds acima estão sempre presentes, embora algumas tragam null em vez de um número. Duas chaves podem estar ausentes em vez de trazer null: total.line é omitida em um evento para o qual a casa não publicou um total, e available_metrics é omitido para uma casa que a SharpAPI não declarou — leia ambas com um valor padrão em vez de presumir que a chave existe. handle_pct.away / .home (e .over / .under nos totais) são null em toda linha betmgm, porque a BetMGM publica apenas uma porcentagem de tickets — não há valor de handle a informar. Os valores de bets_pct são null quando a fonte ainda não publicou uma porcentagem para aquele mercado; o feed da BetMGM é intermitente, então é ali que isso aparece. moneyline.away_odds / .home_odds são null quando uma casa retirou a moneyline de um evento mas continua publicando suas porcentagens de splits — isso também ocorre em linhas da DraftKings e da Circa, não só da BetMGM. A especificação OpenAPI declara tudo isso como nullable, então um cliente gerado vai aceitá-los.

O campo event_id usa o mesmo formato de ID canônico que o endpoint /odds, então você pode juntar divisões com dados de odds diretamente. Por exemplo, busque odds para um jogo específico e compare com suas divisões:

GET /api/v1/odds?event_id=nba_thunder_timberwolves_2026-03-15 GET /api/v1/splits?event_id=nba_thunder_timberwolves_2026-03-15

/odds não inclui bet % público por linha. Divisões de apostas (% de dinheiro e % de tickets) estão disponíveis apenas neste endpoint (/splits) e na sua versão histórica (/splits/history). O campo public_bet_pct não existe nas linhas de /odds.

Como ler available_metricsPermalink for this section

Uma linha de divisões pode carregar available_metrics, um array que nomeia as métricas de divisão que a casa de apostas daquela linha chega a publicar. Ele descreve a casa, não a linha: uma casa que publica o percentual de dinheiro continua listando handle_pct mesmo quando os membros handle_pct daquela linha são null.

Apenas dois nomes podem aparecer, sempre nesta ordem, e cada um é exatamente uma chave dentro dos objetos spread, total e moneyline — portanto um nome aqui aponta para um campo que você pode consultar:

  • bets_pct — percentual de tickets (apostas feitas), 0.0-1.0
  • handle_pct — percentual de dinheiro (handle), 0.0-1.0

O campo é omitido por completo quando a SharpAPI não declarou o que uma casa publica. Ausente significa não declarado — nunca não publica nada.

Leia a lista junto com o valor. Tomando handle_pct como exemplo:

available_metricsMembros de handle_pctO que significa
presente, lista handle_pctnúmerosA casa publica o percentual de dinheiro e nós o temos.
presente, lista handle_pctnullA casa publica o percentual de dinheiro e ele está faltando do nosso lado — não é uma limitação da casa.
presente, não lista handle_pctnullA casa não publica o percentual de dinheiro. Nada está quebrado.
presente, não lista handle_pctnúmerosNão deveria ocorrer; trate como uma declaração desatualizada e confie no valor.
ausentenúmeros ou nullNada é declarado sobre essa casa. Não deduza em nenhuma direção — leia os valores por si mesmos e não registre a casa como não publicando nada.

Uma linha consensus carrega a interseção. Uma linha mesclada com "sportsbook": "consensus" agrupa várias casas, então sua afirmação precisa valer para cada uma delas: ela lista apenas as métricas que todas as casas contribuintes declaram e omite o campo por completo se alguma delas não estiver declarada.

ExemplosPermalink for this section

curl "https://api.sharpapi.io/api/v1/splits?league=nba" \ -H "X-API-Key: YOUR_API_KEY"

Histórico de DivisõesPermalink for this section

Acompanhe como as divisões se alteram ao longo do tempo para um evento específico.

GET /api/v1/splits/history?event_id={event_id}

Parâmetros de ConsultaPermalink for this section

ParâmetroTipoObrigatórioDescrição
event_idstringSimID canônico do evento
sportsbookstringNãoFiltra por casa (separadas por vírgulas), antes da paginação.
start_timestringNãoLimite inferior. RFC 3339 (2026-04-16T13:00:00Z) ou segundos Unix (1776344602).
end_timestringNãoLimite superior, mesmos formatos.
limitintegerNãoMáximo de entradas (padrão 100, máximo 200).
cursorstringNãoToken de continuação de meta.next_cursor; mantenha os filtros de evento, casa e tempo.

A retenção é de apenas 48 horas. Não há arquivo de longo prazo nem recuperação de amostras fora dessa janela. Siga meta.next_cursor enquanto meta.has_more for true. meta.total, books, oldest e newest descrevem a página atual; meta.limit é o tamanho efetivo (padrão 100, máximo 200; valores maiores são limitados a 200). Use o mesmo end_time em todas as páginas para um intervalo fixo. Datas inválidas ou cursores incompatíveis retornam 400; falhas temporárias do armazenamento retornam 503.

RespostaPermalink for this section

As entradas são ordenadas das mais antigas para as mais recentes. Este endpoint emite o envelope de sucesso (success/data/meta) — distinto de /splits que emite data/pagination/updated_at.

O payload do histórico utiliza book (não sportsbook) e o spread carrega away_line/home_line (não away_odds/home_odds). Ambas são inconsistências conhecidas vs /splits. Cada entrada também carrega available_metrics, com o mesmo significado de /splits: as métricas que a casa daquela entrada chega a publicar. É omitido para uma casa que a SharpAPI não declarou.

Os valores do histórico podem estar indisponíveis. As porcentagens podem ser null; a BetMGM nunca publica porcentagens de dinheiro. Linhas e odds podem estar ausentes ou ser null. Consulte available_metrics para saber quais métricas a casa publica e trate valores ausentes ou nulos em cada mercado.

{ "success": true, "data": [ { "available_metrics": ["bets_pct", "handle_pct"], "book": "circa", "ts": "2026-04-16T13:03:21.071966+00:00", "timestamp": 1776344602.36, "spread": { "away_line": -1.5, "home_line": 1.5, "handle_pct": { "away": 0.37, "home": 0.63 }, "bets_pct": { "away": 0.27, "home": 0.73 } }, "total": { "line": 8, "handle_pct": { "over": 0.43, "under": 0.57 }, "bets_pct": { "over": 0.55, "under": 0.45 } }, "moneyline": { "away_odds": 104, "home_odds": -126, "handle_pct": { "away": 0.35, "home": 0.65 }, "bets_pct": { "away": 0.35, "home": 0.65 } } } ], "meta": { "event_id": "mlb_guardians_orioles_2026-04-16", "total": 1, "books": ["circa"], "limit": 100, "has_more": false, "next_cursor": "", "oldest": "2026-04-16T13:03:22.360588312Z", "newest": "2026-04-16T13:03:22.360588312Z", "updated_at": "2026-04-16T19:28:50.525875452Z" } }

Os dados são coletados a cada ~5 minutos e retidos por 48 horas através de um sorted set do Valkey (splits_history:{event_id}) pontuado pelo timestamp Unix.

curl "https://api.sharpapi.io/api/v1/splits/history?event_id=nba_thunder_timberwolves_2026-03-15" \ -H "X-API-Key: YOUR_API_KEY"

Interpretando DivisõesPermalink for this section

SinalO que significa
Bet % alto, Handle % baixoLado público — muitas apostas pequenas
Bet % baixo, Handle % altoLado sharp — menos apostas, porém maiores
DK e Circa concordamConsenso de mercado — público e sharp alinhados
DK e Circa divergemDivisão sharp-público — Circa (sharp) discorda do DK (público)

As divisões vêm de apenas três casas — DraftKings e BetMGM (recreativas) e Circa (adjacente a sharps). Nenhuma casa verdadeiramente sharp publica divisões, e não há novas fontes previstas. Use as divisões como um sinal junto com a movimentação de linhas e análise de +EV, não isoladamente.

Last updated on