Skip to Content

Oportunidades de Arbitragem

Encontre oportunidades de arbitragem com lucro garantido entre casas de apostas.

GET /api/v1/opportunities/arbitrage

Autenticação

Requer API key. Plano Hobby ou superior necessário. Sua conta deve ter o recurso arbitrage habilitado.

Parâmetros de Consulta

ParâmetroTipoPadrãoDescrição
sportstringallFiltrar por esporte(s), separados por vírgula (ex.: basketball, football)
leaguestringallFiltrar por liga(s), separadas por vírgula (ex.: nba, nfl, nhl)
sportsbookstringtier-allowedFiltrar por casa(s) de apostas, separadas por vírgula. Limites do plano são aplicados.
marketstringallFiltrar por tipo(s) de mercado, separados por vírgula. Suporta aliases de categoria — veja Odds: Aliases de Categoria de Mercado.
min_profitnumber0.5Percentual mínimo de lucro (ex.: 1.0 = 1%)
livebooleantrue = apenas ao vivo, false = apenas pré-jogo, omitir = ambos
formatstringjsonFormato da resposta: json ou csv. CSV é baixado como arbitrage_YYYY-MM-DD.csv.
limitinteger50Resultados por página (máx. 200)
offsetinteger0Deslocamento de paginação (máx. 5000)

Limite de lucro: Oportunidades com lucro acima de 10% são automaticamente filtradas. Quase sempre são arbitragens fantasmas causadas por odds desatualizadas ou suspensas, e não oportunidades reais.

Mudança incompatível: O campo game_state (placar/período/cronômetro) foi removido desta resposta. O estado do jogo ao vivo agora é servido exclusivamente pelo endpoint Game State e pelo canal de stream gamestate. Faça join entre as linhas e o estado do jogo usando event_id.

Filtrando Múltiplos Valores

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

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

Exemplos de Requisições

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

Resposta

Sucesso (200)

{ "success": true, "data": [ { "id": "arb_dk_pin_nba_lal_bos_ml", "event_id": "evt_nba_lal_bos_20260208", "event_name": "Los Angeles Lakers @ Boston Celtics", "sport": "basketball", "league": "nba", "market_type": "moneyline", "line": null, "profit_percent": 1.83, "implied_total": 98.2, "is_live": false, "start_time": "2026-02-08T19:00:00Z", "is_alternate_line": false, "possibly_stale": false, "oldest_odds_age_seconds": 8, "warnings": [], "ev_available": true, "ev_percentage": 3.5, "is_player_prop": false, "player_name": null, "stat_category": null, "legs": [ { "sportsbook": "draftkings", "selection": "Los Angeles Lakers", "odds_american": 145, "odds_decimal": 2.45, "implied_probability": 0.408, "stake_percent": 41.5, "timestamp": "2026-02-08T14:22:05.000Z", "external_event_id": "33483153", "selection_id": "sel_lal_ml", "market_id": "mkt_ml_33483153" }, { "sportsbook": "pinnacle", "selection": "Boston Celtics", "odds_american": -135, "odds_decimal": 1.74, "implied_probability": 0.574, "stake_percent": 58.5, "timestamp": "2026-02-08T14:22:08.000Z", "external_event_id": null, "selection_id": null, "market_id": null } ], "detected_at": "2026-02-08T14:22:10.456Z" } ], "pagination": { "limit": 50, "offset": 0, "has_more": false, "next_offset": null }, "meta": { "source": "cache", "summary": { "count": 3, "avg_profit": 1.23, "max_profit": 1.83, "by_market": { "moneyline": 2, "point_spread": 1 }, "by_sport": { "basketball": 3 } }, "filters": { "sport": null, "league": ["nba"], "sportsbook": null, "market": null, "live": null, "min_profit": 1.0 }, "books_analyzed": 8 } }

Cabeçalhos de Resposta

X-RateLimit-Limit: 300 X-RateLimit-Remaining: 297 X-RateLimit-Reset: 1707401000 X-Data-Delay: 0 X-Request-Id: req_arb789xyz012

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": "Arbitrage detection requires Hobby 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 da arbitragem (hash)
event_idstringIdentificador do evento
event_namestringNome legível do evento
sportstringIdentificador do esporte (minúsculas)
leaguestringIdentificador da liga
market_typestringTipo de mercado (moneyline, point_spread, total_points, etc.)
linenumber|nullLinha de spread/total (ex.: -3.5)
profit_percentnumberLucro garantido em percentual (ex.: 1.83 = 1,83%)
implied_totalnumberSoma das probabilidades implícitas em todas as pernas (abaixo de 100 = arbitragem existe)
is_livebooleanSe o evento está atualmente ao vivo
start_timestring|nullHorário de início do evento em ISO 8601
is_alternate_linebooleanSe utiliza uma linha não padrão
possibly_stalebooleanSe as odds podem ter se movido desde a detecção
oldest_odds_age_secondsnumber|nullIdade das odds mais antigas (em segundos) entre as pernas
warningsstring[]Sinalizadores de aviso. Valores possíveis: LIVE_GAME, LIVE_HIGH_PROFIT_SUSPICIOUS, LOW_IMPLIED_TOTAL, POTENTIALLY_STALE_ODDS, VERY_STALE_ODDS
ev_availablebooleanSe existe uma oportunidade de EV neste mercado
ev_percentagenumber|nullPercentual de EV, se disponível
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)
legsarrayArray com as pernas (legs) que formam a arbitragem
detected_atstringTimestamp ISO 8601 de quando a arbitragem foi detectada pela primeira vez

Objeto Leg

CampoTipoDescrição
sportsbookstringCasa de apostas desta perna
selectionstringA seleção (nome do time, Over/Under, etc.)
odds_americannumberOdds americanas desta perna
odds_decimalnumberOdds decimais desta perna
implied_probabilitynumberProbabilidade implícita (0,0 a 1,0)
stake_percentnumberPercentual do stake total a ser apostado nesta perna
timestampstring|nullQuando estas odds foram capturadas (ISO 8601)
external_event_idstring|nullID nativo do evento na casa de apostas
selection_idstring|nullID da seleção/resultado na casa de apostas
market_idstring|nullID do mercado na casa de apostas

Formato CSV

Quando ?format=csv, a resposta é baixada como arbitrage_YYYY-MM-DD.csv com as colunas:

event,sport,market,line,profit%,implied_total,book1,selection1,odds1,stake1%,book2,selection2,odds2,stake2%,is_live,is_alternate_line,possibly_stale,warnings,detected_at

Como Funciona a Arbitragem

A arbitragem explora diferenças de preço entre casas de apostas para garantir lucro independentemente do resultado. Quando a soma das probabilidades implícitas de todas as pernas de um mercado é menor que 100%, existe uma oportunidade de arbitragem.

O Princípio Central

Book A: Team X +150 (implied 40.0%) Book B: Team Y -130 (implied 56.5%) Total implied: 96.5% < 100% = ARBITRAGE

Quando o total está abaixo de 100%, você pode apostar proporcionalmente em todos os resultados e garantir lucro.

Cálculo do Lucro

Profit % = (100 / implied_total) - 100

Usando o exemplo acima:

Profit % = (100 / 96.5) - 100 = 3.63%

Isso significa que, para cada US$ 1.000 apostados, você está garantido a obter aproximadamente US$ 36,30 de lucro.

Calculando Stakes Ótimos

Para garantir retornos iguais independentemente do resultado, distribua os stakes proporcionalmente:

// Decimal odds: Team X = 2.50, Team Y = 1.77 const impliedX = 1 / 2.50; // 0.400 const impliedY = 1 / 1.77; // 0.565 const total = impliedX + impliedY; // 0.965 const stakeX = impliedX / total; // 41.5% of bankroll const stakeY = impliedY / total; // 58.5% of bankroll

Exemplo Completo de Stake

Banca total para esta arbitragem: US$ 1.000

PernaStakeOddsRetorno se Vencer
Team X @ DraftKingsUS$ 415+150US$ 1.037,50
Team Y @ PinnacleUS$ 585-130US$ 1.035,00

Lucro garantido: ~US$ 35-38 (3,5-3,8%) independentemente do resultado.

Arbitragem de Três Vias

Esportes como futebol e hóquei possuem mercados de três vias (casa/empate/visitante), que também podem gerar arbitragem:

Home Win: +200 (33.3%) Draw: +250 (28.6%) Away Win: +180 (35.7%) Total implied: 97.6% -> 2.4% arbitrage profit

O mesmo cálculo de stake se aplica — divida a probabilidade implícita de cada perna pelo total para determinar a alocação do stake.

Por Que Existem Arbitragens

  1. Diferenças de timing - Casas de apostas atualizam odds em velocidades diferentes
  2. Opiniões divergentes - As casas têm modelos de risco e exposições distintas
  3. Promoções - Odds turbinadas em uma casa criam diferenças artificiais
  4. Erros - Ocasionalmente, uma casa publica odds incorretas

Boas Práticas

Risco de Conta: Casas de apostas monitoram ativamente atividade de arbitragem. Contas que apostam exclusivamente em arbs podem ser limitadas ou restringidas. Considere intercalar apostas de arbitragem com atividade recreativa.

  1. Aja rápido - Janelas de arbitragem geralmente são curtas (segundos a minutos)
  2. Arredonde seus stakes - Uma aposta de US$ 47,32 parece suspeita; arredonde para US$ 50
  3. Use stakes pré-calculados - O campo stake_percent fornece a alocação ótima
  4. Verifique as odds antes de apostar - Sempre confirme que as odds na casa de apostas não se moveram
  5. Comece com arbs maiores - Foque em min_profit=1 ou superior para absorver movimentações de linha
  6. Acompanhe o implied_total - Totais menores significam lucros garantidos maiores
  7. Diversifique entre casas de apostas - Espalhar a atividade por várias casas reduz o risco em cada conta

Arbitragem vs +EV

AspectoArbitragem+EV
RiscoZero (lucro garantido)Existe variância
Lucro por aposta1-3% típico2-10% de edge
Risco de contaAlto (limitações prováveis)Menor
Capital necessárioAlto (apostar em ambos os lados)Menor
SustentabilidadeLimitada pela saúde da contaViável a longo prazo

Muitos apostadores experientes preferem apostas +EV em vez de arbitragem porque as contas duram mais e os edges esperados costumam ser maiores. Veja o endpoint Oportunidades +EV para detalhes.

Endpoints Relacionados

Last updated on