Skip to Content

Middles

Encontre oportunidades de middles onde dois sportsbooks têm linhas diferentes, criando uma lacuna em que ambas as apostas podem vencer.

GET /api/v1/opportunities/middles

Autenticação

Requer API key. Tier Pro ou superior obrigatório.

Parâmetros de Query

ParâmetroTipoPadrãoDescrição
sportstringtodosFiltra por esporte(s), separados por vírgula (ex.: basketball, football)
leaguestringtodasFiltra por liga(s), separadas por vírgula (ex.: nba, nfl, nhl)
sportsbookstringpermitidos pelo tierFiltra por sportsbook(s), separados por vírgula. Limites do tier são aplicados.
marketstringtodosFiltra por tipo(s) de mercado, separados por vírgula (ex.: point_spread, total_points). Suporta aliases de categoria — veja Odds: Aliases de Categoria de Mercado.
min_sizenumber0.5Tamanho mínimo do middle em pontos
livebooleantrue = apenas ao vivo, false = apenas pré-jogo, omitir = ambos
max_odds_agenumberIdade máxima das odds em segundos. Filtra oportunidades desatualizadas.
sortstringqualityCampo de ordenação: quality (padrão), ev, probability, middle_size
limitinteger50Resultados por página (máx. 200)
offsetinteger0Offset de paginação (máx. 5000)

Exemplos de Requisição

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

Resposta

Sucesso (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" } }

Cabeçalhos da Resposta

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

Respostas de Erro

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 da Resposta

CampoTipoDescrição
idstringIdentificador único do middle (hash)
event_idstringIdentificador do evento
event_namestringNome legível do evento
sportstringIdentificador do esporte
leaguestringIdentificador da liga
market_typestringTipo de mercado (point_spread, total_points, tipos de player prop)
home_teamstringNome do time da casa
away_teamstringNome do time visitante
start_timestring|nullHorário de início do jogo (ISO 8601)
side1objectPrimeiro lado da aposta middle
side2objectSegundo lado da aposta middle
middle_sizenumberTamanho da lacuna do middle em pontos
middle_numbersnumber[]Valores inteiros que acertariam o middle
middle_probabilitynumberProbabilidade estimada de o middle acertar (específica do esporte)
expected_valuenumberEV em dólares por $100 apostados no total
roi_percentagenumberEV como porcentagem do stake total
worst_case_lossnumberPerda quando o middle erra (negativo = perda)
best_case_profitnumberLucro quando o middle acerta (ambas as apostas vencem)
break_even_percentnumberTaxa mínima de acerto necessária para empatar
odds_age_secondsnumber|nullIdade da odd subjacente mais antiga no momento da detecção
is_guaranteed_profitbooleanVerdadeiro quando worst_case_loss >= 0 (arbitragem + middle)
guaranteed_roinumber|nullROI% no pior caso quando garantido (null caso contrário)
key_numbersnumber[]Números-chave dentro do intervalo do middle (ex.: NFL 3, 7)
key_number_probabilitynumberProbabilidade combinada apenas dos números-chave
quality_scorenumberMétrica de qualidade multifatorial (0-100)
market_overroundnumberProbabilidade implícita combinada de ambos os lados
is_livebooleanSe o jogo está atualmente em andamento
is_player_propbooleanSe este é um middle de player prop
player_namestring|nullNome do jogador (se for player prop)
stat_categorystring|nullTipo de estatística (se for player prop, ex.: points, rebounds)
warningsstring[]Sinalizadores de aviso (veja abaixo)
detected_atstringQuando o middle foi detectado (ISO 8601)

Objeto Side

CampoTipoDescrição
bookstringSportsbook deste lado
selectionstringNome da seleção
linenumberValor da linha neste sportsbook
odds.americannumberOdds americanas
odds.decimalnumberOdds decimais
odds.probabilitynumberProbabilidade implícita (0-1)
odds.fair_probabilitynumberProbabilidade justa ajustada para overround
stake_percentnumberAlocação recomendada de stake (% do total)
odds_age_secondsnumber|nullIdade das odds deste lado no momento da detecção
deep_linkstring|nullLink direto para fazer esta aposta no sportsbook

Sinalizadores de Aviso

AvisoSignificado
HIGH_PROBABILITYProbabilidade do middle excede 15% — incomumente provável de acertar
LARGE_GAPTamanho do middle excede 3 pontos — verifique se as linhas estão corretas
STALE_ODDSUma ou ambas as odds têm mais de 30 segundos
LIVE_GAMEJogo está atualmente em andamento
GUARANTEED_PROFITPerda no pior caso é positiva — isto também é uma arbitragem

Endpoint de Detalhe

Busca uma única oportunidade de middle pelo seu ID.

GET /api/v1/opportunities/middles/:id
ParâmetroTipoDescrição
idpathObrigatório. Hash hexadecimal de 16 caracteres (ex.: a1b2c3d4e5f67890)

Retorna um único objeto middle (mesmo schema dos itens da lista). Retorna 404 se não encontrado, 400 se o formato do ID for inválido.

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

O Que São Middles?

Um middle ocorre quando dois sportsbooks oferecem linhas diferentes no mesmo mercado, criando uma lacuna numérica em que ambas as apostas podem vencer simultaneamente.

Diferente da arbitragem (que garante lucro), os middles dão a você uma chance de vencer ambos os lados de uma aposta se o resultado final cair no “meio” das duas linhas.

Exemplo de Middle de Spread

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

Você aposta:

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

Resultados possíveis:

Chiefs Vencem PorChiefs -2.5Bills +7.5Resultado
1-2 pontosPerdeVenceEmpate (pequena perda)
3, 4, 5, 6, ou 7VenceVenceMIDDLE ACERTOU
8+ pontosVencePerdeEmpate (pequena perda)

Se os Chiefs vencerem por 3-7, ambas as apostas vencem. Os números 3 e 7 são números-chave da NFL (field goal e touchdown), tornando este middle especialmente valioso.

Números-Chave

Certos esportes têm incrementos de pontuação que aumentam a distribuição de probabilidade:

EsporteNúmeros-ChavePor quê
NFL3, 7, 10, 14Field goal (3), touchdown (7), combinações
NHL1Maioria dos jogos decididos por 1 gol (~47%)
MLB1Maioria dos jogos decididos por 1 corrida (~30%)
Futebol1Maioria das partidas decididas por 1 gol (~38%)

Quando um middle contém números-chave, os campos key_numbers e key_number_probability destacam isso. Um middle da NFL abrangendo 3 e 7 tem uma probabilidade combinada de números-chave de ~24,2%.

Lucro Garantido (Arb + Middle)

Quando is_guaranteed_profit é verdadeiro, o middle também é uma arbitragem — o pior caso ainda gera lucro. Este é o tipo mais raro e mais valioso de middle. O campo guaranteed_roi mostra o retorno mínimo mesmo se o middle errar.

Guia de Tamanho do Middle

Tamanho do MiddleQualidadeMercados Típicos
0.5 pontosEstreitoOportunidades raras, baixa taxa de acerto
1.0 pontosPadrãoComum em spreads e totais
1.5 - 2.0 pontosBomProcure ativamente por estes
2.5+ pontosExcelenteIncomum mas altamente lucrativo

Use min_size=1 para filtrar middles estreitos. Middles maiores têm uma probabilidade mais alta de cair na lacuna, tornando-os mais consistentemente lucrativos ao longo do tempo.

Considerações de Risco

Middles não são livres de risco como a arbitragem (a menos que is_guaranteed_profit seja verdadeiro). Quando o resultado fica fora do middle, você perde o vig do lado perdedor (tipicamente 4-5% de uma perna). No entanto, quando um middle acerta, você vence ambas as apostas, o que mais que compensa ao longo do tempo.

Atualidade das Odds

O campo odds_age_seconds mostra quão antigas eram as odds subjacentes quando o middle foi detectado. Cada lado também tem seu próprio odds_age_seconds. Se algum dos lados exceder 30 segundos, o aviso STALE_ODDS é adicionado. Odds desatualizadas podem já ter se movido — aja rapidamente em oportunidades novas.

Boas Práticas

  1. Foque em middles maiores — Defina min_size para pelo menos 1.0 para melhores taxas de acerto
  2. Fique atento a números-chave — Middles contendo 3/7 da NFL ou 1 de NHL/MLB/futebol têm taxas de acerto elevadas
  3. Priorize lucro garantido — Filtre por is_guaranteed_profit para encontrar oportunidades sem risco
  4. Verifique a atualidade das oddsodds_age_seconds baixo significa que as linhas estão atuais e acionáveis
  5. Combine com o endpoint de resumo — Use /middles/summary para visões gerais de dashboard
  6. Aja rapidamente — As linhas convergem conforme os books se ajustam, fechando a janela do middle
  7. Use streaming — Inscreva-se nos eventos middles:detected via SSE ou WebSocket para alertas em tempo real

Endpoints Relacionados

Last updated on