Skip to Content

Oportunidades de Low Hold

Encontre mercados com o menor vig (hold) entre sportsbooks — as linhas mais apertadas disponíveis.

GET /api/v1/opportunities/low_hold

Autenticação

Requer chave de API. Tier Pro ou superior obrigatório. Sua conta deve ter o recurso low_hold habilitado.

Mudança incompatível: O campo game_state (placar/período/relógio) foi removido desta resposta. O estado ao vivo do jogo agora é servido exclusivamente pelo endpoint Game State e pelo canal de stream gamestate. Faça o join das linhas com o estado do jogo por event_id.

Parâmetros de Query

ParâmetroTipoPadrãoDescrição
sportstringtodosFiltrar por esporte(s), separados por vírgula (ex: basketball, football)
leaguestringtodasFiltrar por liga(s), separadas por vírgula (ex: nba, nfl, nhl)
sportsbookstringpermitidos pelo tierFiltrar por sportsbook(s), separados por vírgula. Limites do tier são aplicados.
marketstringtodosFiltrar por tipo(s) de mercado, separados por vírgula
max_holdnumber5.0Percentual máximo de hold (vig). Menor = linhas mais apertadas.
livebooleantrue = somente ao vivo, false = somente pré-jogo, omitir = ambos
statestringpaCódigo de estado dos EUA para geração de deep link (ex: pa, nj, co, mi)
sortstringholdCampo de ordenação: hold (menor primeiro, padrão), market, sport
limitinteger50Resultados por página (máx 200)
offsetinteger0Offset de paginação (máx 5000)

Filtrando Múltiplos Valores

Use valores separados por vírgula para filtros de seleção múltipla:

?sport=basketball,football&league=nba,nfl&max_hold=3

Exemplos de Requisições

# Moneylines de low-hold abaixo de 2% de vig curl -X GET "https://api.sharpapi.io/api/v1/opportunities/low_hold?league=nba&max_hold=2&market=moneyline" \ -H "X-API-Key: YOUR_API_KEY" # Com state para deep links curl -X GET "https://api.sharpapi.io/api/v1/opportunities/low_hold?league=nfl&state=nj" \ -H "X-API-Key: YOUR_API_KEY"

Resposta

Sucesso (200)

{ "success": true, "data": [ { "id": "lh_nba_lal_bos_ml_0", "event_id": "evt_nba_lal_bos_20260208", "event_name": "Los Angeles Lakers @ Boston Celtics", "sport": "basketball", "league": "nba", "market_type": "moneyline", "home_team": "Boston Celtics", "away_team": "Los Angeles Lakers", "start_time": "2026-02-08T19:00:00Z", "line": null, "hold_percentage": 1.8, "side1": { "selection": "Los Angeles Lakers", "books": ["draftkings", "betmgm"], "line": null, "odds": { "american": 145, "decimal": 2.45, "implied_probability": 0.408, "fair_probability": 0.415 }, "deep_links": { "draftkings": "https://sportsbook.draftkings.com/...", "betmgm": "https://sports.betmgm.com/..." } }, "side2": { "selection": "Boston Celtics", "books": ["pinnacle", "fanduel"], "line": null, "odds": { "american": -155, "decimal": 1.645, "implied_probability": 0.608, "fair_probability": 0.585 }, "deep_links": { "pinnacle": null, "fanduel": "https://sportsbook.fanduel.com/..." } }, "side3": null, "is_live": false, "is_alternate_line": false, "is_player_prop": false, "player_name": null, "stat_category": null, "all_books": ["draftkings", "betmgm", "pinnacle", "fanduel"], "confidence": 92, "odds_age_seconds": 5, "possibly_stale": false, "detected_at": "2026-02-08T14:22:10.456Z" } ], "pagination": { "limit": 50, "offset": 0, "total": 87, "has_more": true, "next_offset": 50 }, "meta": { "source": "cache", "summary": { "count": 87, "avg_hold": 2.4, "min_hold": 0.8, "by_market": { "moneyline": 35, "point_spread": 30, "total_points": 22 }, "by_sport": { "basketball": 87 } }, "filters": { "sport": null, "league": ["nba"], "sportsbook": null, "market": null, "max_hold": 5.0, "live": null, "state": "pa" } } }

Headers da Resposta

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

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": "This endpoint requires Pro tier or higher", "docs": "https://docs.sharpapi.io/en/pricing" } }

429 Rate Limited

{ "error": { "code": "rate_limited", "message": "Rate limit exceeded", "docs": "https://docs.sharpapi.io/en/api-reference/overview" } }

Campos da Resposta

CampoTipoDescrição
idstringIdentificador único de low-hold (hash)
event_idstringIdentificador do evento
event_namestringNome legível do evento
sportstringIdentificador do esporte (minúsculo)
leaguestringIdentificador da liga
market_typestringTipo de mercado (moneyline, point_spread, total_points, etc.)
home_teamstringNome do time da casa
away_teamstringNome do time visitante
start_timestring|nullHorário de início do evento em ISO 8601
linenumber|nullLinha de spread/total (ex: -3.5, 220.5)
hold_percentagenumberPercentual de hold/vig do mercado (ex: 1.8 = 1.8%)
side1objectPrimeiro lado do mercado
side2objectSegundo lado do mercado
side3object|nullTerceiro lado (apenas para mercados de 3 vias, como moneyline de futebol)
is_livebooleanSe o evento está ao vivo no momento
is_alternate_linebooleanSe utiliza uma linha não-padrão
is_player_propbooleanSe é um mercado 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)
all_booksstring[]Todos os sportsbooks participantes deste mercado
confidencenumberMétrica de confiança (0-100)
odds_age_secondsnumberIdade da odd mais antiga em segundos
possibly_stalebooleanSe os dados de odds podem ter se movido desde a detecção
detected_atstringQuando a oportunidade foi detectada (ISO 8601)

Objeto Side

CampoTipoDescrição
selectionstringNome da seleção (ex: “Lakers”, “Over”)
booksstring[]Sportsbooks oferecendo o melhor preço neste lado
linenumber|nullValor da linha para este lado
odds.americannumberOdds americanas
odds.decimalnumberOdds decimais
odds.implied_probabilitynumberProbabilidade implícita (0-1)
odds.fair_probabilitynumberProbabilidade justa ajustada pelo hold
deep_linksobjectMapa do nome do sportsbook para a URL do deep link (ou null se indisponível)

Os deep links são gerados com base no parâmetro de query state. Passe o código do estado dos EUA do seu usuário (ex: ?state=nj) para obter as URLs corretas dos sportsbooks para a jurisdição dele.


O Que É Hold?

Hold (também chamado de vig ou juice) é a margem embutida do sportsbook em um mercado. É a diferença entre a soma das probabilidades implícitas e 100%.

Hold % = (implied_prob_side1 + implied_prob_side2 - 1) × 100

Exemplo

DraftKings: Lakers +145 (implícita 40,8%) Pinnacle: Celtics -155 (implícita 60,8%) Combinada: 101,6% Hold: 1,6%

Um hold de 1,6% significa que o sportsbook fica com cerca de US$ 1,60 de cada US$ 100 apostados neste mercado. Hold menor = melhor valor para apostadores.

Por Que Low Hold Importa

Hold %QualidadeFonte Típica
< 1,5%ExcelenteSharp books, melhor preço entre books
1,5 - 3%BomMercados competitivos
3 - 5%MédioPrecificação varejista padrão
5%+RuimProps, mercados exóticos

Mercados de low-hold dão a você odds melhores independentemente de qual lado você apostar. Combinados com detecção de +EV, eles ajudam a maximizar os retornos esperados.

Low Hold vs Arbitragem

Low HoldArbitragem
HoldBaixo, mas > 0%Abaixo de 0% (hold negativo)
RiscoNormal (você escolhe um lado)Zero (aposta nos dois lados)
Caso de usoObter o melhor preçoGarantir lucro
VolumeCentenas disponíveisRaro (dígitos únicos)

Oportunidades de low-hold são muito mais comuns do que arbitragens. Elas representam as linhas mais apertadas disponíveis entre os books — ideais para apostadores que querem o melhor preço sem precisar apostar em ambos os lados.

Mercados de Três Vias

Para esportes com três resultados possíveis (futebol, resultado final do hóquei), a resposta inclui side3:

{ "side1": { "selection": "Home Win", "..." : "..." }, "side2": { "selection": "Draw", "..." : "..." }, "side3": { "selection": "Away Win", "..." : "..." }, "hold_percentage": 2.1 }

O cálculo do hold se estende a todos os três lados: implied_prob_1 + implied_prob_2 + implied_prob_3 - 1.

Boas Práticas

  1. Defina um max_hold apertado — Use max_hold=2 ou max_hold=3 para focar nos mercados de melhor valor
  2. Passe o parâmetro state — Obtenha deep links precisos para a jurisdição do seu usuário
  3. Combine com dados de +EV — Low hold + EV positivo é a combinação ideal
  4. Verifique possibly_stale — Pule oportunidades em que as odds podem já ter se movido
  5. Use streaming — Assine eventos low_hold:detected via SSE ou WebSocket para alertas em tempo real
  6. Monitore all_books — Mais books participando geralmente significa precificação mais confiável

Endpoints Relacionados

Last updated on