Skip to Content

Middles

Encuentra oportunidades de middles donde dos sportsbooks tienen líneas diferentes, creando una brecha en la que ambas apuestas pueden ganar.

GET /api/v1/opportunities/middles

Autenticación

Requiere API key. Se requiere nivel Pro o superior.

Parámetros de consulta

ParámetroTipoPor defectoDescripción
sportstringtodosFiltrar por deporte(s), separados por comas (p. ej. basketball, football)
leaguestringtodasFiltrar por liga(s), separadas por comas (p. ej. nba, nfl, nhl)
sportsbookstringpermitidos por nivelFiltrar por sportsbook(s), separados por comas. Se aplican los límites de nivel.
marketstringtodosFiltrar por tipo(s) de mercado, separados por comas (p. ej. point_spread, total_points). Admite alias de categorías — consulta Odds: Alias de Categorías de Mercado.
min_sizenumber0.5Tamaño mínimo del middle en puntos
livebooleantrue = solo en vivo, false = solo prepartido, omitir = ambos
max_odds_agenumberAntigüedad máxima de las cuotas en segundos. Filtra oportunidades obsoletas.
sortstringqualityCampo de ordenación: quality (por defecto), ev, probability, middle_size
limitinteger50Resultados por página (máx. 200)
offsetinteger0Desplazamiento de paginación (máx. 5000)

Ejemplos de solicitud

curl -X GET "https://api.sharpapi.io/api/v1/opportunities/middles?league=nfl&min_size=1" \ -H "X-API-Key: YOUR_API_KEY"

Respuesta

Éxito (200)

{ "success": true, "data": [ { "id": "a1b2c3d4e5f67890", "event_id": "evt_nfl_buf_kc_20260217", "event_name": "Buffalo Bills @ Kansas City Chiefs", "sport": "football", "league": "nfl", "market_type": "point_spread", "home_team": "Kansas City Chiefs", "away_team": "Buffalo Bills", "start_time": "2026-02-17T20:00:00Z", "side1": { "book": "draftkings", "selection": "Kansas City Chiefs", "line": -2.5, "odds": { "american": -110, "decimal": 1.909, "probability": 0.524, "fair_probability": 0.524 }, "stake_percent": 50.12, "odds_age_seconds": 5.0 }, "side2": { "book": "fanduel", "selection": "Buffalo Bills", "line": 7.5, "odds": { "american": -108, "decimal": 1.926, "probability": 0.519, "fair_probability": 0.519 }, "stake_percent": 49.88, "odds_age_seconds": 12.3 }, "middle_size": 5.0, "middle_numbers": [3, 4, 5, 6, 7], "middle_probability": 0.377, "expected_value": 31.52, "roi_percentage": 31.52, "worst_case_loss": -4.13, "best_case_profit": 83.54, "break_even_percent": 4.71, "odds_age_seconds": 12.3, "is_guaranteed_profit": false, "guaranteed_roi": null, "key_numbers": [3, 7], "key_number_probability": 0.242, "is_live": false, "is_player_prop": false, "player_name": null, "stat_category": null, "warnings": ["HIGH_PROBABILITY", "LARGE_GAP"], "detected_at": "2026-02-17T19:45:30Z" } ], "meta": { "count": 1, "total": 47, "source": "cache", "pagination": { "limit": 50, "offset": 0, "has_more": false, "next_offset": null }, "summary": { "count": 47 }, "filters": { "sport": null, "league": ["nfl"], "sportsbook": null, "market": null, "min_size": 1 }, "updated_at": "2026-02-17T19:45:30Z" } }

Cabeceras de respuesta

X-RateLimit-Limit: 300 X-RateLimit-Remaining: 296 X-RateLimit-Reset: 1707401000 X-Data-Delay: 0 X-Request-Id: req_mid456abc789

Respuestas de error

401 Unauthorized

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

403 Tier Required

{ "error": { "code": "tier_restricted", "message": "Middles detection requires Pro tier or higher", "docs": "https://docs.sharpapi.io/en/pricing" } }

Campos de respuesta

CampoTipoDescripción
idstringIdentificador único del middle (hash)
event_idstringIdentificador del evento
event_namestringNombre legible del evento
sportstringIdentificador del deporte
leaguestringIdentificador de la liga
market_typestringTipo de mercado (point_spread, total_points, tipos de player props)
home_teamstringNombre del equipo local
away_teamstringNombre del equipo visitante
start_timestring|nullHora de inicio del partido (ISO 8601)
side1objectPrimer lado de la apuesta middle
side2objectSegundo lado de la apuesta middle
middle_sizenumberTamaño de la brecha del middle en puntos
middle_numbersnumber[]Valores enteros que harían acertar el middle
middle_probabilitynumberProbabilidad estimada de que el middle acierte (específica del deporte)
expected_valuenumberEV en dólares por cada $100 apostados en total
roi_percentagenumberEV como porcentaje del stake total
worst_case_lossnumberPérdida cuando el middle falla (negativo = pérdida)
best_case_profitnumberBeneficio cuando el middle acierta (ambas apuestas ganan)
break_even_percentnumberTasa mínima de aciertos necesaria para no perder
odds_age_secondsnumber|nullAntigüedad de las cuotas subyacentes más obsoletas en el momento de la detección
is_guaranteed_profitbooleanTrue cuando worst_case_loss >= 0 (arb + middle)
guaranteed_roinumber|nullROI% en el peor caso cuando está garantizado (null en caso contrario)
key_numbersnumber[]Números clave dentro del rango del middle (p. ej., NFL 3, 7)
key_number_probabilitynumberProbabilidad combinada solo de los números clave
quality_scorenumberMétrica de calidad multifactor (0-100)
market_overroundnumberProbabilidad implícita combinada en ambos lados
is_livebooleanIndica si el partido está actualmente en juego
is_player_propbooleanIndica si se trata de un middle de player prop
player_namestring|nullNombre del jugador (si es player prop)
stat_categorystring|nullTipo de estadística (si es player prop, p. ej., points, rebounds)
warningsstring[]Indicadores de advertencia (ver más abajo)
detected_atstringCuándo se detectó el middle (ISO 8601)

Objeto Side

CampoTipoDescripción
bookstringSportsbook para este lado
selectionstringNombre de la selección
linenumberValor de la línea en este sportsbook
odds.americannumberCuotas americanas
odds.decimalnumberCuotas decimales
odds.probabilitynumberProbabilidad implícita (0-1)
odds.fair_probabilitynumberProbabilidad justa ajustada por el overround
stake_percentnumberAsignación recomendada de stake (% del total)
odds_age_secondsnumber|nullAntigüedad de las cuotas de este lado en el momento de la detección
deep_linkstring|nullEnlace directo para realizar esta apuesta en el sportsbook

Indicadores de advertencia

AdvertenciaSignificado
HIGH_PROBABILITYLa probabilidad del middle supera el 15% — inusualmente probable que acierte
LARGE_GAPEl tamaño del middle supera los 3 puntos — verifica que las líneas sean correctas
STALE_ODDSUna o ambas cuotas tienen más de 30 segundos
LIVE_GAMEEl partido está actualmente en curso
GUARANTEED_PROFITLa pérdida en el peor caso es positiva — esto también es un arbitraje

Endpoint de detalle

Obtén una única oportunidad de middle por su ID.

GET /api/v1/opportunities/middles/:id
ParámetroTipoDescripción
idpathObligatorio. Hash hexadecimal de 16 caracteres (p. ej., a1b2c3d4e5f67890)

Devuelve un único objeto middle (mismo esquema que los elementos de la lista). Devuelve 404 si no se encuentra y 400 si el formato del ID no es válido.

curl -X GET "https://api.sharpapi.io/api/v1/opportunities/middles/a1b2c3d4e5f67890" \ -H "X-API-Key: YOUR_API_KEY"

¿Qué son los middles?

Un middle se produce cuando dos sportsbooks ofrecen líneas diferentes en el mismo mercado, creando una brecha numérica en la que ambas apuestas pueden ganar simultáneamente.

A diferencia del arbitraje (que garantiza beneficio), los middles te dan la oportunidad de ganar ambos lados de una apuesta si el resultado final cae en el “medio” de las dos líneas.

Ejemplo de middle de spread

DraftKings: Chiefs -2.5 @ -110 FanDuel: Bills +7.5 @ -108

Apuestas:

  • Chiefs -2.5 en DraftKings
  • Bills +7.5 en FanDuel

Posibles resultados:

Chiefs ganan porChiefs -2.5Bills +7.5Resultado
1-2 puntosPierdeGanaDivisión (pequeña pérdida)
3, 4, 5, 6 o 7GanaGanaMIDDLE ACERTADO
8+ puntosGanaPierdeDivisión (pequeña pérdida)

Si los Chiefs ganan por 3-7, ambas apuestas ganan. Los números 3 y 7 son números clave de la NFL (gol de campo y touchdown), lo que hace que este middle sea especialmente valioso.

Números clave

Algunos deportes tienen incrementos de puntuación que aumentan la distribución de probabilidad:

DeporteNúmeros clavePor qué
NFL3, 7, 10, 14Gol de campo (3), touchdown (7), combinaciones
NHL1La mayoría de los partidos se deciden por 1 gol (~47%)
MLB1La mayoría de los partidos se deciden por 1 carrera (~30%)
Soccer1La mayoría de los partidos se deciden por 1 gol (~38%)

Cuando un middle contiene números clave, los campos key_numbers y key_number_probability lo destacan. Un middle de NFL que abarca el 3 y el 7 tiene una probabilidad combinada de números clave de ~24,2%.

Beneficio garantizado (Arb + Middle)

Cuando is_guaranteed_profit es true, el middle también es un arbitraje — el peor caso aún produce beneficio. Este es el tipo de middle más raro y valioso. El campo guaranteed_roi muestra el retorno mínimo incluso si el middle falla.

Guía de tamaño del middle

Tamaño del middleCalidadMercados típicos
0,5 puntosEstrechoOportunidades raras, baja tasa de acierto
1,0 puntosEstándarComún en spreads y totales
1,5 - 2,0 puntosBuenoBúscalos activamente
2,5+ puntosExcelentePoco frecuentes pero muy rentables

Usa min_size=1 para filtrar middles estrechos. Los middles más grandes tienen mayor probabilidad de caer dentro de la brecha, lo que los hace más rentables de forma consistente a lo largo del tiempo.

Consideraciones de riesgo

Los middles no están libres de riesgo como el arbitraje (a menos que is_guaranteed_profit sea true). Cuando el resultado cae fuera del middle, pierdes el vig del lado perdedor (normalmente entre el 4-5% de una pata). Sin embargo, cuando un middle acierta, ganas ambas apuestas, lo que compensa con creces a lo largo del tiempo.

Frescura de las cuotas

El campo odds_age_seconds muestra la antigüedad de las cuotas subyacentes cuando se detectó el middle. Cada lado también tiene su propio odds_age_seconds. Si cualquiera de los lados supera los 30 segundos, se añade la advertencia STALE_ODDS. Las cuotas obsoletas pueden haberse movido ya — actúa con rapidez sobre las oportunidades frescas.

Buenas prácticas

  1. Céntrate en middles más grandes — Establece min_size en al menos 1.0 para mejores tasas de acierto
  2. Vigila los números clave — Los middles que contienen NFL 3/7 o NHL/MLB/soccer 1 tienen tasas de acierto elevadas
  3. Prioriza el beneficio garantizado — Filtra por is_guaranteed_profit para encontrar oportunidades sin riesgo
  4. Comprueba la frescura de las cuotas — Un odds_age_seconds bajo significa que las líneas son actuales y accionables
  5. Combínalo con el endpoint de resumen — Usa /middles/summary para vistas generales de dashboard
  6. Actúa con rapidez — Las líneas convergen a medida que los books se ajustan, cerrando la ventana del middle
  7. Usa streaming — Suscríbete a los eventos middles:detected mediante SSE o WebSocket para alertas en tiempo real

Endpoints relacionados

Last updated on