Skip to Content
Referencia de la APIInstantánea de cuotas

Instantánea de Cuotas

Obtén una instantánea de las cuotas actuales de las casas de apuestas.

GET /api/v1/odds

Cambio en v3.0.0: la respuesta de cuotas ahora incluye un único campo timestamp (entrega / frescura del feed, igual que OpticOdds). Los antiguos campos odds_changed_at, last_seen_at y wire_received_at se han eliminado — usa timestamp en su lugar. Ya no existe un campo para indicar cuándo se movió el precio por última vez.

AutenticaciónPermalink for this section

Requiere API key. Disponible para todos los planes.

Las casas de apuestas devueltas en tus resultados dependen de tu plan de suscripción. Los usuarios del plan Free reciben cuotas únicamente de DraftKings y FanDuel. Consulta Acceso a Casas por Plan más abajo.

Parámetros de ConsultaPermalink for this section

ParámetroTipoPredeterminadoDescripción
sportsbookstringpermitidas por planIDs de casas de apuestas separados por comas (p. ej., draftkings,fanduel). Se aplican los límites del plan.
sportstringtodosFiltrar por deporte(s), separados por comas (p. ej., basketball, football). Admite alias de categoría.
leaguestringtodasFiltrar por liga(s), separadas por comas (p. ej., nba, nfl, nhl)
marketstringtodosFiltrar por tipo(s) de mercado, separados por comas. Admite alias de categoría (main, spread, total, props) o tipos exactos (point_spread, player_points).
eventstringFiltrar por ID(s) de evento, separados por comas
livebooleantrue = solo en directo, false = solo prepartido, omitir = ambos
sortstringCampo de ordenación con prefijo - opcional para descendente (p. ej., -odds_american, odds_probability)
fieldsstringtodosNombres de campos separados por comas para incluir en la respuesta (p. ej., id,sportsbook,odds_american)
min_oddsnumberFiltro de cuotas americanas mínimas (p. ej., -110)
max_oddsnumberFiltro de cuotas americanas máximas (p. ej., +200)
group_bystringAgrupar resultados por campo (p. ej., event)
statestringCódigo de estado de EE. UU. para los enlaces directos a casas de apuestas (p. ej., nj, ny, il). Cuando se establece, las URLs deep_link incluyen ?state=XX para que la redirección apunte al dominio correcto de la casa de apuestas específico del estado. Solo afecta a las casas con URLs dependientes del estado (BetMGM, Caesars, BetRivers).
limitinteger50Máximo de resultados por página (máx. 200)
offsetinteger0Desplazamiento de paginación. Debe ser ≤ 500. Los valores superiores a 500 devuelven 400 offset_too_large — usa cursor para una paginación más profunda. Puede producir filas duplicadas cuando los datos en directo se actualizan entre solicitudes.
cursorstringCursor opaco de next_cursor en una respuesta anterior. Obligatorio para paginación profunda (más allá del offset 500) y recomendado para cualquier escaneo de varias páginas — estable frente a cambios en datos en directo. Tiene prioridad sobre offset cuando se proporcionan ambos.

Usa valores separados por comas para filtrar por varias casas de apuestas: sportsbook=draftkings,fanduel,betmgm

Alias de Categoría de MercadoPermalink for this section

En lugar de listar tipos de mercado individuales, puedes usar un alias de categoría para coincidir con un grupo de mercados relacionados. Los alias y los tipos exactos pueden mezclarse libremente en una lista separada por comas.

AliasSe expande a
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 los tipos de mercado player_* (coincidencia por prefijo)
# Obtener todos los mercados "main" (moneyline + spreads + totales) curl "https://api.sharpapi.io/api/v1/odds?league=nba&market=main" \ -H "X-API-Key: YOUR_API_KEY" # Mezclar un alias con un tipo exacto curl "https://api.sharpapi.io/api/v1/odds?league=nfl&market=spread,moneyline" \ -H "X-API-Key: YOUR_API_KEY" # Todos los mercados de player props curl "https://api.sharpapi.io/api/v1/odds?league=nba&market=props" \ -H "X-API-Key: YOUR_API_KEY"

El alias props utiliza una coincidencia por prefijo, por lo que incluye automáticamente cualquier tipo de mercado que comience con player_ (p. ej., player_points, player_rebounds, player_assists, player_strikeouts, etc.).

Ejemplos de SolicitudesPermalink 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"

PaginaciónPermalink for this section

Usa paginación basada en cursor para escaneos de varias páginas. El endpoint /odds sirve datos en directo que se refrescan cada ~15 segundos. Con paginación basada en offset, las filas pueden cambiar de posición entre solicitudes, causando duplicados en los límites de página. La paginación basada en cursor ancla cada página al último elemento visto — sin desviaciones.

Cada respuesta incluye tanto next_cursor (estable) como next_offset (legacy) en el objeto pagination. Para escaneos secuenciales de un conjunto de datos completo, usa siempre next_cursor.

# Primera página — no se necesita cursor curl "https://api.sharpapi.io/api/v1/odds?league=nfl&limit=200" \ -H "X-API-Key: YOUR_API_KEY" # Páginas siguientes — pasa next_cursor de la respuesta anterior curl "https://api.sharpapi.io/api/v1/odds?league=nfl&limit=200&cursor=eyJlIjoiMzM0ODMxNTMiLCJiIjoiZHJhZnRraW5ncyIsIm0iOiJtb25leWxpbmUiLCJpIjoiZHJhZnRraW5nc18zMzQ4MzE1M19tb25leWxpbmVfUEhJIn0" \ -H "X-API-Key: YOUR_API_KEY"

Los cursores son opacos — no los analices ni los construyas. Codifican la posición de ordenación del último elemento de la página actual y solo son válidos para los mismos parámetros de filtro.

?offset=N sigue funcionando para paginación superficial (hasta el offset 500) y es apropiado para solicitudes de una sola página o acceso directo por posición. Más allá de 500, la API devuelve 400 offset_too_large — de lo contrario, el servidor tendría que ordenar el conjunto de resultados filtrado completo en cada página, lo que es mucho más barato evitar que optimizar por solicitud. Usa cursor para cualquier cosa más profunda.

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

RespuestaPermalink for this section

Éxito (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" } } }

Cabeceras de RespuestaPermalink for this section

X-RateLimit-Limit: 300 X-RateLimit-Remaining: 299 X-RateLimit-Reset: 1737853200 X-Data-Delay: 0 X-Request-Id: req_abc123def456
CabeceraDescripción
X-RateLimit-LimitMáximo de solicitudes por minuto para tu plan
X-RateLimit-RemainingSolicitudes restantes en la ventana actual
X-RateLimit-ResetMarca de tiempo Unix cuando se restablece el límite de tasa
X-Data-DelayRetraso de datos en segundos (0 para tiempo real, 60 para el plan Free)
X-Request-IdIdentificador único de solicitud para depuración

Respuestas de ErrorPermalink for this section

401 No Autorizado

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

403 Plan Restringido

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

429 Límite de Tasa Superado

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

Esquema del Objeto OddsPermalink for this section

CampoTipoDescripción
idstringIdentificador único de la cuota
sportsbookstringID de la casa de apuestas (p. ej., draftkings)
event_idstringIdentificador del evento
sportstringSlug del deporte (p. ej., basketball, football)
leaguestringSlug de la liga (p. ej., nba, nfl)
home_teamstringNombre del equipo local
away_teamstringNombre del equipo visitante
market_typestringmoneyline, spread, total, player_prop, etc.
selectionstringLa selección (nombre del equipo, Over/Under, nombre del jugador)
selection_typestringIdentificador canónico del lado. Consulta Tipos de selección más abajo para el enum completo, incluyendo formas compuestas (p. ej. home_over) que se emiten en mercados multieje.
team_sidestring|undefinedPista de lado del equipo en bruto desde el adaptador — uno de home, away, draw. Útil cuando selection_type lleva un valor compuesto (p. ej. home_over) y solo necesitas el eje de equipo sin tener que parsear. Ausente cuando el adaptador no lo selló.
odds_americannumberCuotas americanas (p. ej., -110, +150)
odds_decimalnumberCuotas decimales (p. ej., 1.909)
odds_probabilitynumberProbabilidad implícita (p. ej., 0.5238)
linenumber | nullValor de la línea de spread o total (null para moneyline)
is_alternate_lineboolean|undefinedtrue cuando el line de esta fila difiere de la línea principal canónica para su grupo (event, market_type, player). Siempre false para mercados sin línea (moneyline, outright). Estable en /opportunities/ev hoy; en despliegue progresivo a las filas de /odds. Úsalo para separar instantáneas de línea principal y líneas alternativas.
event_start_timestringHora de inicio del evento en ISO 8601
timestampstringHora ISO 8601 en que SharpAPI refrescó por última vez esta cuota a través de su pipeline — avanza en cada ciclo de ingesta. Es una señal de frescura del feed / actividad (igual que el timestamp de OpticOdds); NO es cuándo cambió el precio por última vez.
is_livebooleanSi el evento está actualmente en directo
event_uuidstring|undefinedUUID canónico estable del evento desde el atlas de SharpAPI, cuando el evento está mapeado. Mientras event_id lleva el identificador principal del adaptador (a menudo el de la casa de apuestas originadora), event_uuid es un hash estable entre feeds que puedes usar para joins entre feeds. Ausente para eventos no mapeados.
external_event_idstring|undefinedEl ID de evento nativo de la propia casa de apuestas, cuando difiere de event_id. Útil para enlazar filas de vuelta a la UI o API de la casa de apuestas.
deep_linkstring|undefinedURL resolutiva que apunta a la página de evento o del cupón de la casa de apuestas. Pasa state= (p. ej. state=nj) en la solicitud para enrutar a subdominios específicos por estado en las casas que los requieren (BetMGM, Caesars, BetRivers).
market_idstring|undefinedIdentificador de mercado nativo de la casa de apuestas. Algunas casas no lo exponen — ausente cuando no se conoce.
selection_idstring|undefinedIdentificador de selección/resultado nativo de la casa de apuestas. Algunas casas no lo exponen — ausente cuando no se conoce.
player_namestring|undefinedNombre del jugador (solo mercados de player props)
stat_categorystring|undefinedCategoría estadística, p. ej. points, rebounds (solo mercados de player props)
home_pitcherstring|undefinedSolo MLB. Pitcher abridor del equipo local cuando lo publica la casa de apuestas.
away_pitcherstring|undefinedSolo MLB. Pitcher abridor del equipo visitante cuando lo publica la casa de apuestas.
public_bet_pctnumber|undefinedPorcentaje de tickets de apuestas públicas (0.0-1.0). Actualmente solo en BetMGM.
max_betnumber|undefinedMonto máximo de apuesta (USD) para este tipo de mercado. Actualmente solo en Pinnacle.
volumenumber|undefinedVolumen casado en esta selección. Solo casas de intercambio (Betfair, Novig, ProphetX, Polymarket). Las unidades dependen de la casa originadora (p. ej. stake casado en Betfair, volumen de acciones en mercados de predicción).
volume_24hnumber|undefinedVolumen casado de las últimas 24 horas en esta selección. Solo casas de intercambio.
open_interestnumber|undefinedInterés abierto pendiente (stake casado / acciones actualmente mantenidas) sobre esta selección. Solo casas de intercambio.
polymarket_resolutionstring|undefinedSolo Polymarket. Estado de resolución del oráculo optimista UMA cuando el mercado ha terminado — uno de settled_normal, voided, disputed, proposed, unknown. Ausente en mercados Polymarket aún en vivo y en todas las casas no-Polymarket.

Tipos de selecciónPermalink for this section

selection_type lleva el identificador canónico de lado para cada selection. La mayoría de mercados son a dos vías (p. ej. moneyline, point spread, total) y emiten uno de los valores simples siguientes. Un pequeño conjunto de mercados multieje (doble oportunidad de fútbol, BTTS combinado, resultado × O/U, round betting de MMA, set betting de tenis, marcador exacto, etc.) codifica dos resultados por selección y emite valores compuestos unidos por _.

FamiliaValoresDónde aparecen
Dos vías (lado del equipo)home, awaymoneyline, point_spread, puck_line, run_line, team_total, set_handicap, la mayoría de mercados por período
Dos vías (dirección de línea)over, undertotal_points, total_goals, total_runs, total_games, total_rounds, team_total, todos los props player_*_o_u
Dos vías (sí/no)yes, nobinary, mercados de tipo prop sí/no, resultados de intercambio “back/lay”, mercados de predicción de Polymarket
Dos vías (paridad)even, oddMercados de paridad de totales (p. ej. total de puntos par/impar)
Tres víasdrawMoneyline a tres vías (1X2 de fútbol), lado complementario del draw-no-bet, “sin gol” en next_goal
Compuesto (equipo × O/U)home_over, home_under, away_over, away_undermatch_result_total_goals de fútbol (“Equipo A y Over N.5”) y mercados análogos resultado-más-total
Compuesto (equipo × BTTS)home_yes, home_no, away_yes, away_no, draw_yes, draw_nomatch_result_both_teams_to_score de fútbol
Compuesto (doble oportunidad)home_draw, away_draw, home_awaydouble_chance de fútbol (1X / X2 / 12) y doble oportunidad de MMA
Compuesto (round / método)home_r1, home_r2, home_decision, away_r1, etc.round_betting de MMA y mercados de método de victoria
Comodínothergame_prop, “sin gol” en next_goal, y cualquier selección donde el mapeador de lado canónico no pueda descomponer el resultado limpiamente. Siempre presente en volumen bajo; trátalo como opaco.

Parseo de valores compuestos. Las cadenas compuestas de selection_type siempre unen el eje del equipo (home / away / draw) al eje secundario con un único guion bajo. Para recuperar solo el eje del equipo sin parsear, lee team_side — es el lado en bruto sellado por el adaptador para la misma fila.

Los mercados de cola larga emiten formas adicionales. Mercados como correct_score (p. ej. "2_1"), set_betting (p. ej. "0_2"), winning_margin, halftime_fulltime, first_goal y anytime_goal codifican resultados a nivel de marcador o compuestos directamente en selection_type. Si dependes de un enum cerrado, filtra a las familias de arriba y trata cualquier valor no reconocido como opaco — no lances error.

OrdenaciónPermalink for this section

Usa el parámetro sort para ordenar los resultados por cualquier campo. Antepón - para orden descendente.

# Ordenar por mejores cuotas 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 inicio del evento curl "https://api.sharpapi.io/api/v1/odds?sort=event_start_time" \ -H "X-API-Key: YOUR_API_KEY"

Campos de ordenación válidos: odds_american, odds_decimal, odds_probability, event_start_time, timestamp, sportsbook, league, sport.

Selección de CamposPermalink for this section

Usa el parámetro fields para devolver solo campos específicos, reduciendo el tamaño del payload.

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

La respuesta solo incluirá los campos solicitados para cada objeto de cuota:

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

Filtrado por Rango de CuotasPermalink for this section

Usa min_odds y max_odds para filtrar por valor de cuotas americanas.

# Devolver solo cuotas en positivo (+100 y superiores) curl "https://api.sharpapi.io/api/v1/odds?league=nba&min_odds=100" \ -H "X-API-Key: YOUR_API_KEY" # Devolver solo cuotas entre -200 y +200 curl "https://api.sharpapi.io/api/v1/odds?league=nba&min_odds=-200&max_odds=200" \ -H "X-API-Key: YOUR_API_KEY"

Respuesta Agrupada por EventoPermalink for this section

Usa group_by=event para agrupar las cuotas por evento en lugar de una lista plana. Esto es útil para construir interfaces centradas en 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" } }

Acceso a Casas por PlanPermalink for this section

Las casas de apuestas incluidas en tus resultados de cuotas dependen de tu plan de suscripción:

PlanCasas DisponiblesCasas de Apuestas Incluidas
Free2DraftKings, FanDuel
Hobby5+ BetMGM, Caesars, theScore Bet
Pro15+ Bet365, BetRivers, y más
SharpLas 32Todas las casas de apuestas disponibles
EnterpriseLas 32Todas las casas de apuestas disponibles

Pinnacle (sharp book) requiere el plan Sharp o superior. Solicitar sportsbook=pinnacle en un plan Free, Hobby o Pro devolverá un error 403 tier_restricted.

Ejemplos de FiltradoPermalink for this section

# Obtener cuotas en directo de la NBA de todas tus casas disponibles curl "https://api.sharpapi.io/api/v1/odds?league=nba&live=true" \ -H "X-API-Key: YOUR_API_KEY" # Obtener cuotas moneyline y spread para un 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 las cuotas de spread de la NFL (usa next_cursor de cada respuesta) 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 - Obtén solo las cuotas que cambiaron desde una marca de tiempo dada
  • Best Odds - Obtén las mejores cuotas de todas las casas para cada selección
  • Odds Comparison - Compara cuotas entre casas lado a lado
  • Batch Odds - Obtén cuotas para varios eventos en una sola solicitud
  • Markets - Lista los tipos de mercado disponibles
  • Sportsbooks - Lista las casas de apuestas disponibles y su estado
Last updated on