Skip to Content
Referencia de la APIReparto de apuestas

Splits de Apuestas

Obtén splits de apuestas públicas (handle % y bet %) de DraftKings, Circa Sports y BetMGM.

GET /api/v1/splits

AutenticaciónPermalink for this section

Requiere API key. Requiere plan Pro (229 $/mes) o superior.

¿Qué son los splits de apuestas?Permalink for this section

Handle % es el porcentaje del dinero total apostado en cada lado. Bet % es el porcentaje del total de tickets (apuestas realizadas) en cada lado.

La diferencia entre bet % y handle % revela el dinero sharp. Si el 30 % de los tickets concentra el 60 % del dinero, los apostantes sharp están en ese lado.

Fuentes de DatosPermalink for this section

FuenteTipoQué incluyeFrecuencia de Actualización
DraftKingsCasa recreativa (~35 % de cuota del mercado de EE. UU.)Handle % y bet %Cada 5 minutos
Circa SportsCasa orientada a sharps (atrae profesionales)Handle % y bet %Cada 5 minutos
BetMGMCasa recreativa — derivada de su propio campo de porcentaje de apuestas públicasSolo bet % — los valores de handle_pct son nullIntermitente

Comparar los splits de DraftKings (recreativa) frente a Circa (sharp) revela dónde el dinero profesional diverge del público.

La cobertura está fijada en estas tres casas. No crece con el cupo de casas de apuestas de tu plan: seleccionar más casas, o subir de nivel, no añade fuentes de splits. Ninguna otra casa publica splits de apuestas y no hay más previstas. Como BetMGM solo aporta un porcentaje de tickets, la brecha bet %/handle % que revela el dinero sharp únicamente puede calcularse en las filas de DraftKings y Circa. El historial incluye muestras de DraftKings, Circa y BetMGM capturadas durante las 48 horas de retención. BetMGM solo publica porcentajes de tickets; sus porcentajes de dinero siguen siendo null.

consensus es una etiqueta, no una casa de apuestas. Cuando todas las fuentes que cubren un evento publican cifras idénticas, esas filas se fusionan en una sola con "sportsbook": "consensus". La API la aplica de forma sintética: nunca aparece en /api/v1/sportsbooks, aunque /splits?sportsbook=consensus sí filtra por ella. Un filtro sportsbook=draftkings no devuelve las filas fusionadas.

Parámetros de ConsultaPermalink for this section

ParámetroTipoDescripción
sportstringFiltra por deporte (separado por comas). Ejemplo: basketball
leaguestringFiltra por liga (separado por comas). Ejemplo: nba,ncaab
sportsbookstringFiltra por fuente de splits. Ejemplo: draftkings,circa. También acepta el valor sintético consensus.
event_idstringFiltra por ID canónico de evento (separado por comas)
marketstringFiltra eventos que incluyan un mercado de splits dado (separado por comas). Uno o más de spread, total, moneyline.
limitintegerResultados máximos (predeterminado 100, máximo 200)
offsetintegerDesplazamiento de paginación (predeterminado 0)

RespuestaPermalink 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" }

En la respuesta de /splits el spread incluye los valores de line dentro de las claves away_odds/home_odds (p. ej., -1.5 / +1.5) — esta nomenclatura es una inconsistencia conocida. El endpoint histórico utiliza away_line/home_line para los mismos datos.

Campos de RespuestaPermalink for this section

CampoTipoDescripción
event_idstringID canónico de evento — úsalo para hacer join con los datos de /odds
sportstringNombre de deporte normalizado por Atlas
leaguestringNombre de liga normalizado por Atlas
sportsbookstringCasa de apuestas fuente de los datos de splits (draftkings, circa, betmgm o el valor sintético consensus)
away_teamstringNombre del equipo visitante
home_teamstringNombre del equipo local
spread.away_oddsnumberValor de line del spread visitante (p. ej., -1.5) — consulta el aviso anterior
spread.home_oddsnumberValor de line del spread local (p. ej., +1.5)
spread.handle_pctobject% de dinero en cada lado (away, home; 0.0-1.0)
spread.bets_pctobject% de tickets en cada lado (away, home; 0.0-1.0)
total.linenumberLínea de over/under (p. ej., 225.5)
total.handle_pctobject% de dinero (over, under; 0.0-1.0)
total.bets_pctobject% de tickets (over, under; 0.0-1.0)
moneyline.away_oddsnumberCuotas de moneyline del visitante (formato americano)
moneyline.home_oddsnumberCuotas de moneyline del local (formato americano)
moneyline.handle_pctobject% de dinero en cada lado (away, home; 0.0-1.0)
moneyline.bets_pctobject% de tickets en cada lado (away, home; 0.0-1.0)
fetched_atstringMarca de tiempo ISO 8601 de la última extracción de datos
available_metricsarrayQué métricas de split llega a publicar la casa de apuestas de esta fila — bets_pct, handle_pct o ambas, siempre en ese orden. Es una afirmación sobre la casa, no sobre los valores de esta fila. Se omite cuando la casa no está declarada — véase más abajo.

Qué valores pueden ser null, y cuáles pueden faltar. Las claves de porcentaje y de cuotas anteriores siempre están presentes, aunque algunas llevan null en lugar de un número. Dos claves pueden faltar en vez de llevar null: total.line se omite en un evento para el que la casa no ha publicado un total, y available_metrics se omite para una casa que SharpAPI no ha declarado — léelas con un valor por defecto en lugar de dar por hecho que la clave existe. handle_pct.away / .home (y .over / .under en los totales) son null en todas las filas betmgm, porque BetMGM solo publica un porcentaje de tickets — no hay cifra de handle que informar. Los valores de bets_pct son null cuando la fuente aún no ha publicado un porcentaje para ese mercado; el feed de BetMGM es intermitente, así que ahí es donde aparece. moneyline.away_odds / .home_odds son null cuando una casa ha retirado la línea de dinero de un evento pero sigue publicando sus porcentajes de splits — esto también ocurre en filas de DraftKings y Circa, no solo de BetMGM. La especificación OpenAPI declara todo esto como nullable, de modo que un cliente generado los aceptará.

El campo event_id utiliza el mismo formato de ID canónico que el endpoint /odds, por lo que puedes hacer join de splits con datos de cuotas directamente. Por ejemplo, obtén las cuotas de un partido específico y compáralas con sus splits:

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 no incluye el bet % público por fila. Los splits de apuestas (% de dinero y % de tickets) solo están disponibles a través de este endpoint (/splits) y su versión histórica (/splits/history). No existe el campo public_bet_pct en las filas de /odds.

Cómo leer available_metricsPermalink for this section

Una fila de splits puede incluir available_metrics, un array que nombra las métricas de split que la casa de apuestas de esa fila llega a publicar. Describe la casa, no la fila: una casa que publica el porcentaje de dinero sigue listando handle_pct aunque los miembros handle_pct de esa fila sean null.

Solo pueden aparecer dos nombres, siempre en este orden, y cada uno es exactamente una clave dentro de los objetos spread, total y moneyline, de modo que un nombre aquí apunta a un campo que puede consultar:

  • bets_pct — porcentaje de tickets (apuestas realizadas), 0.0-1.0
  • handle_pct — porcentaje de dinero (handle), 0.0-1.0

El campo se omite por completo cuando SharpAPI no ha declarado qué publica una casa. Su ausencia significa no declarado, nunca no publica nada.

Lea la lista junto con el valor. Tomando handle_pct como ejemplo:

available_metricsMiembros de handle_pctQué significa
presente, lista handle_pctnúmerosLa casa publica el porcentaje de dinero y lo tenemos.
presente, lista handle_pctnullLa casa publica el porcentaje de dinero y nos falta — una carencia de nuestro lado, no una limitación de la casa.
presente, no lista handle_pctnullLa casa no publica el porcentaje de dinero. No hay nada roto.
presente, no lista handle_pctnúmerosNo debería ocurrir; trátelo como una declaración desactualizada y confíe en el valor.
ausentenúmeros o nullNo se declara nada sobre esta casa. No deduzca en ningún sentido — lea los valores por sí mismos y no registre la casa como que no publica nada.

Una fila consensus lleva la intersección. Una fila fusionada con "sportsbook": "consensus" agrupa varias casas, así que su afirmación debe cumplirse para todas ellas: lista solo las métricas que declaran todas las casas contribuyentes, y omite el campo por completo si alguna de ellas no está declarada.

EjemplosPermalink for this section

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

Historial de SplitsPermalink for this section

Realiza un seguimiento de cómo cambian los splits a lo largo del tiempo para un evento concreto.

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

Parámetros de ConsultaPermalink for this section

ParámetroTipoObligatorioDescripción
event_idstringSíID canónico de evento
sportsbookstringNoFiltra por casa (separadas por comas), antes de paginar.
start_timestringNoLímite inferior. RFC 3339 (2026-04-16T13:00:00Z) o segundos Unix (1776344602).
end_timestringNoLímite superior, mismos formatos.
limitintegerNoEntradas máximas (predeterminado 100, máximo 200).
cursorstringNoToken de continuación de meta.next_cursor; conserva los filtros de evento, casa y tiempo.

La retención es de solo 48 horas. No hay archivo a largo plazo ni recuperación de muestras fuera de esa ventana. Sigue meta.next_cursor mientras meta.has_more sea true. meta.total, books, oldest y newest describen la página actual; meta.limit es el tamaño efectivo (100 por defecto, máximo 200; los valores mayores se limitan a 200). Mantén el mismo end_time en todas las páginas para un intervalo fijo. Las fechas no válidas o los cursores incompatibles devuelven 400; los fallos temporales del almacén devuelven 503.

RespuestaPermalink for this section

Las entradas se ordenan de la más antigua a la más reciente. Este endpoint emite el envoltorio de éxito (success/data/meta) — distinto de /splits, que emite data/pagination/updated_at.

El payload del historial usa book (no sportsbook) y el spread incluye away_line/home_line (no away_odds/home_odds). Ambas son inconsistencias conocidas frente a /splits. Cada entrada incluye además available_metrics, con el mismo significado que en /splits: las métricas que llega a publicar la casa de esa entrada. Se omite para una casa que SharpAPI no ha declarado.

Los valores del historial pueden no estar disponibles. Los porcentajes pueden ser null; BetMGM nunca publica porcentajes de dinero. Las líneas y cuotas pueden faltar o ser null. Consulta available_metrics para saber qué métricas publica la casa y comprueba los valores ausentes o nulos de 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" } }

Los datos se recopilan cada ~5 minutos y se conservan durante 48 horas mediante un sorted set de Valkey (splits_history:{event_id}) puntuado por 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"

Interpretación de los SplitsPermalink for this section

SeñalQué significa
Bet % alto, Handle % bajoLado público — muchas apuestas pequeñas
Bet % bajo, Handle % altoLado sharp — menos apuestas pero más grandes
DK y Circa coincidenConsenso de mercado — público y sharp alineados
DK y Circa divergenBrecha sharp-público — Circa (sharp) discrepa de DK (público)

Los splits provienen únicamente de tres casas — DraftKings y BetMGM (recreativas) y Circa (cercana al perfil sharp). Ninguna casa verdaderamente sharp publica splits, y no hay más fuentes previstas. Utiliza los splits como una señal más junto con el movimiento de líneas y el análisis de +EV, no de forma aislada.

Last updated on