Oportunidades de Arbitragem
Encontre oportunidades de arbitragem com lucro garantido entre casas de apostas.
GET /api/v1/opportunities/arbitrageAutenticação
Requer API key. Plano Hobby ou superior necessário. Sua conta deve ter o recurso arbitrage habilitado.
Parâmetros de Consulta
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
sport | string | all | Filtrar por esporte(s), separados por vírgula (ex.: basketball, football) |
league | string | all | Filtrar por liga(s), separadas por vírgula (ex.: nba, nfl, nhl) |
sportsbook | string | tier-allowed | Filtrar por casa(s) de apostas, separadas por vírgula. Limites do plano são aplicados. |
market | string | all | Filtrar por tipo(s) de mercado, separados por vírgula. Suporta aliases de categoria — veja Odds: Aliases de Categoria de Mercado. |
min_profit | number | 0.5 | Percentual mínimo de lucro (ex.: 1.0 = 1%) |
live | boolean | — | true = apenas ao vivo, false = apenas pré-jogo, omitir = ambos |
format | string | json | Formato da resposta: json ou csv. CSV é baixado como arbitrage_YYYY-MM-DD.csv. |
limit | integer | 50 | Resultados por página (máx. 200) |
offset | integer | 0 | Deslocamento 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,nflExemplos de Requisições
cURL
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_arb789xyz012Respostas 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
| Campo | Tipo | Descrição |
|---|---|---|
id | string | Identificador único da arbitragem (hash) |
event_id | string | Identificador do evento |
event_name | string | Nome legível do evento |
sport | string | Identificador do esporte (minúsculas) |
league | string | Identificador da liga |
market_type | string | Tipo de mercado (moneyline, point_spread, total_points, etc.) |
line | number|null | Linha de spread/total (ex.: -3.5) |
profit_percent | number | Lucro garantido em percentual (ex.: 1.83 = 1,83%) |
implied_total | number | Soma das probabilidades implícitas em todas as pernas (abaixo de 100 = arbitragem existe) |
is_live | boolean | Se o evento está atualmente ao vivo |
start_time | string|null | Horário de início do evento em ISO 8601 |
is_alternate_line | boolean | Se utiliza uma linha não padrão |
possibly_stale | boolean | Se as odds podem ter se movido desde a detecção |
oldest_odds_age_seconds | number|null | Idade das odds mais antigas (em segundos) entre as pernas |
warnings | string[] | Sinalizadores de aviso. Valores possíveis: LIVE_GAME, LIVE_HIGH_PROFIT_SUSPICIOUS, LOW_IMPLIED_TOTAL, POTENTIALLY_STALE_ODDS, VERY_STALE_ODDS |
ev_available | boolean | Se existe uma oportunidade de EV neste mercado |
ev_percentage | number|null | Percentual de EV, se disponível |
is_player_prop | boolean | Se é um mercado de player prop |
player_name | string|null | Nome do jogador (se for player prop) |
stat_category | string|null | Tipo de estatística (se for player prop, ex.: points, rebounds) |
legs | array | Array com as pernas (legs) que formam a arbitragem |
detected_at | string | Timestamp ISO 8601 de quando a arbitragem foi detectada pela primeira vez |
Objeto Leg
| Campo | Tipo | Descrição |
|---|---|---|
sportsbook | string | Casa de apostas desta perna |
selection | string | A seleção (nome do time, Over/Under, etc.) |
odds_american | number | Odds americanas desta perna |
odds_decimal | number | Odds decimais desta perna |
implied_probability | number | Probabilidade implícita (0,0 a 1,0) |
stake_percent | number | Percentual do stake total a ser apostado nesta perna |
timestamp | string|null | Quando estas odds foram capturadas (ISO 8601) |
external_event_id | string|null | ID nativo do evento na casa de apostas |
selection_id | string|null | ID da seleção/resultado na casa de apostas |
market_id | string|null | ID 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_atComo 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% = ARBITRAGEQuando 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) - 100Usando 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 bankrollExemplo Completo de Stake
Banca total para esta arbitragem: US$ 1.000
| Perna | Stake | Odds | Retorno se Vencer |
|---|---|---|---|
| Team X @ DraftKings | US$ 415 | +150 | US$ 1.037,50 |
| Team Y @ Pinnacle | US$ 585 | -130 | US$ 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 profitO 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
- Diferenças de timing - Casas de apostas atualizam odds em velocidades diferentes
- Opiniões divergentes - As casas têm modelos de risco e exposições distintas
- Promoções - Odds turbinadas em uma casa criam diferenças artificiais
- 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.
- Aja rápido - Janelas de arbitragem geralmente são curtas (segundos a minutos)
- Arredonde seus stakes - Uma aposta de US$ 47,32 parece suspeita; arredonde para US$ 50
- Use stakes pré-calculados - O campo
stake_percentfornece a alocação ótima - Verifique as odds antes de apostar - Sempre confirme que as odds na casa de apostas não se moveram
- Comece com arbs maiores - Foque em
min_profit=1ou superior para absorver movimentações de linha - Acompanhe o
implied_total- Totais menores significam lucros garantidos maiores - Diversifique entre casas de apostas - Espalhar a atividade por várias casas reduz o risco em cada conta
Arbitragem vs +EV
| Aspecto | Arbitragem | +EV |
|---|---|---|
| Risco | Zero (lucro garantido) | Existe variância |
| Lucro por aposta | 1-3% típico | 2-10% de edge |
| Risco de conta | Alto (limitações prováveis) | Menor |
| Capital necessário | Alto (apostar em ambos os lados) | Menor |
| Sustentabilidade | Limitada pela saúde da conta | Viá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
- Oportunidades +EV - Apostas com valor esperado positivo
- Middles - Oportunidades de discrepância de linha
- Conceitos de Arbitragem - Teoria detalhada de arbitragem
- Exemplo de Scanner de Arbitragem - Construa um scanner em tempo real