FutPythonTrader API

Acesse dados históricos Bet365 via API REST

📊 Planos de Acesso
🆓 Plano Gratuito

Acesso às ligas:

  • BRAZIL 1
  • ENGLAND 1
  • FRANCE 1
  • GERMANY 1
  • ITALY 1
  • PORTUGAL 1
  • SPAIN 1
⭐ Plano Premium

Usuários que fazem parte da Comunidade FutPythonTrader ou assinam o Software de Backtesting têm acesso premium gratuito a esta API com todas as ligas liberadas!

Ligas disponíveis:

  • ARGENTINA 1
  • AUSTRALIA 1
  • AUSTRIA 1
  • AUSTRIA 2
  • BELGIUM 1
  • BELGIUM 2
  • BOSNIA 1
  • BRAZIL 1
  • BRAZIL 2
  • BULGARIA 1
  • CHILE 1
  • CHINA 1
  • COPA LIBERTADORES
  • CROATIA 1
  • CZECH 1
  • DENMARK 1
  • EGYPT 1
  • ENGLAND 1
  • ENGLAND 2
  • ENGLAND 3
  • ENGLAND 4
  • ESTONIA 1
  • EUROPA CHAMPIONS LEAGUE
  • FINLAND 1
  • FRANCE 1
  • FRANCE 2
  • FRANCE 3
  • GERMANY 1
  • GERMANY 2
  • GERMANY 3
  • GREECE 1
  • ICELAND 1
  • IRELAND 1
  • IRELAND 2
  • ISRAEL 1
  • ITALY 1
  • ITALY 2
  • ITALY 3
  • JAPAN 1
  • JAPAN 2
  • NETHERLANDS 1
  • NETHERLANDS 2
  • NORTHERN IRELAND 1
  • NORWAY 1
  • NORWAY 2
  • PARAGUAY 1
  • POLAND 1
  • PORTUGAL 1
  • PORTUGAL 2
  • PORTUGAL 3
  • ROMANIA 1
  • SAUDI ARABIA 1
  • SCOTLAND 1
  • SCOTLAND 2
  • SERBIA 1
  • SLOVAKIA 1
  • SLOVENIA 1
  • SOUTH AFRICA 1
  • SOUTH KOREA 1
  • SOUTH KOREA 2
  • SPAIN 1
  • SPAIN 2
  • SPAIN 3
  • SWEDEN 1
  • SWEDEN 2
  • SWITZERLAND 1
  • SWITZERLAND 2
  • TURKEY 1
  • TURKEY 2
  • UKRAINE 1
  • USA 1
  • WALES 1
🔐 Autenticação por Token
  1. Crie sua conta em Cadastro
  2. Obtenha seu token via página de perfil ou endpoint `POST /api/auth/login/`
  3. Use o header Authorization: Token <seu_token> em todas as chamadas
Exemplo - Obter token:
curl -X POST https://api.futpythontrader.com/api/auth/login/ \
    -H "Content-Type: application/json" \
    -d '{"username": "SEU_USUARIO", "password": "SUA_SENHA"}'

Resposta: {"token": "abc123...", "perfil": {...}}

🔌 Fontes de Dados Disponíveis

Escolha uma das fontes disponíveis:

bet365

Base de Dados Bet365

betfair

Base de Dados Betfair Exchange

footystats

Base de Dados FootyStats

Listar fontes disponíveis:
GET /api/dados/

Retorna a lista de todas as fontes de dados disponíveis.

🔌 Endpoints Disponíveis

Formato: Substitua {fonte} por uma das opções: bet365, betfair ou footystats

📊 Dados Históricos
1. Consultar dados (JSON)
GET /api/dados/{fonte}/?league=…&season=…&date=…

Retorna dados em formato JSON com filtros opcionais.

2. Download de dados (CSV)
GET /api/dados/{fonte}/download/?league=…&season=…&date=…

Baixa os dados filtrados em CSV.

3. Metadados das ligas
GET /api/dados/{fonte}/metadata/

Lista todas as ligas e temporadas disponíveis na fonte.

⚽ Jogos do Dia
4. Listar datas disponíveis
GET /api/dados/jogos-do-dia/{fonte}/datas/

Retorna lista de datas com jogos disponíveis.

5. Consultar jogos do dia (JSON)
GET /api/dados/jogos-do-dia/{fonte}/{data}/?league=…

Retorna jogos de uma data específica em JSON. Data no formato: YYYY-MM-DD

6. Download de jogos do dia (CSV)
GET /api/dados/jogos-do-dia/{fonte}/{data}/download/?league=…

Baixa jogos de uma data específica em CSV.

🐍 Exemplos em Python
Listar fontes disponíveis:
import requests

TOKEN = "seu_token_aqui"
headers = {"Authorization": f"Token {TOKEN}"}

url = "https://api.futpythontrader.com/api/dados/"
response = requests.get(url, headers=headers)

data = response.json()
print("Fontes disponíveis:", data['fontes_disponiveis'])
# Output: ['bet365', 'betfair', 'footystats']
Exemplo: Comparar dados de diferentes fontes
import requests
import pandas as pd
import io

TOKEN = "seu_token_aqui"
HEADERS = {"Authorization": f"Token {TOKEN}"}

def baixar_dados(fonte, params=None):
    url = f"https://api.futpythontrader.com/api/dados/{fonte}/download/"
    response = requests.get(url, headers=HEADERS, params=params)
    if response.status_code == 200:
        return pd.read_csv(io.BytesIO(response.content))
    return pd.DataFrame()

# Baixar mesma liga de diferentes fontes
params = {"league": "ENGLAND 1", "season": "2024/2025"}

df_bet365 = baixar_dados("bet365", params)
df_betfair = baixar_dados("betfair", params)
df_footystats = baixar_dados("footystats", params)

print(f"Bet365: {len(df_bet365)} registros")
print(f"Betfair: {len(df_betfair)} registros")
print(f"FootyStats: {len(df_footystats)} registros")
Consultar dados com filtros:
import requests
import pandas as pd

TOKEN = "seu_token_aqui"
headers = {"Authorization": f"Token {TOKEN}"}
params = {"league": "ENGLAND 1", "season": "2025/2026"}

# Exemplo com Bet365
url = "https://api.futpythontrader.com/api/dados/bet365/"
response = requests.get(url, headers=headers, params=params)

if response.status_code == 200:
    data = response.json()
    print(f"Fonte: {data['fonte']}")
    print(f"Total de registros: {data['total']}")
    print(data['dados'][:5])
else:
    print(f"Erro Bet365: {response.status_code} - {response.text}")

# Exemplo com Betfair Exchange
url_betfair = "https://api.futpythontrader.com/api/dados/betfair/"
response = requests.get(url_betfair, headers=headers, params=params)

if response.status_code == 200:
    data = response.json()
    print(f"Fonte: {data['fonte']}")
    print(f"Total de registros: {data['total']}")
else:
    print(f"Erro Betfair: {response.status_code} - {response.text}")

# Exemplo com FootyStats
url_footystats = "https://api.futpythontrader.com/api/dados/footystats/"
response = requests.get(url_footystats, headers=headers, params=params)

if response.status_code == 200:
    data = response.json()
    print(f"Fonte: {data['fonte']}")
    print(f"Total de registros: {data['total']}")
else:
    print(f"Erro FootyStats: {response.status_code} - {response.text}")
Baixar CSV:
import requests

TOKEN = "seu_token_aqui"
headers = {"Authorization": f"Token {TOKEN}"}

# Exemplo: baixar dados do Betfair Exchange
url = "https://api.futpythontrader.com/api/dados/betfair/download/"
params = {"league": "BRAZIL 1"}
response = requests.get(url, headers=headers, params=params)

with open("betfair_brazil.csv", "wb") as f:
        f.write(response.content)
print("Download concluído!")
Filtrar por data específica:
params = {"date": "2024-08-01"}  # ou '2024-08-01,2024-08-31' para intervalo
response = requests.get(url, headers=headers, params=params)
Consultar jogos do dia e criar DataFrame:
import requests
import pandas as pd

TOKEN = "seu_token_aqui"
headers = {"Authorization": f"Token {TOKEN}"}

# 1. Listar datas disponíveis
url_datas = "https://api.futpythontrader.com/api/dados/jogos-do-dia/bet365/datas/"
response = requests.get(url_datas, headers=headers)
datas = response.json()['datas_disponiveis']
print(f"Datas disponíveis: {datas}")

# 2. Buscar jogos de uma data específica
data_escolhida = "2025-12-21"
url_jogos = f"https://api.futpythontrader.com/api/dados/jogos-do-dia/bet365/{data_escolhida}/"
response = requests.get(url_jogos, headers=headers)

if response.status_code == 200:
    data = response.json()
    print(f"Total de jogos: {data['total']}")
    
    # Criar DataFrame com os jogos
    df_jogos = pd.DataFrame(data['dados'])
    
    # Visualizar os primeiros jogos
    print("\n--- Jogos do Dia ---")
    print(df_jogos.head())
    
    # Visualizar colunas disponíveis
    print(f"\nColunas disponíveis: {df_jogos.columns.tolist()}")
    
    # Filtrar jogos de uma liga específica
    if 'League' in df_jogos.columns:
        jogos_england = df_jogos[df_jogos['League'] == 'ENGLAND 1']
        print(f"\nJogos da ENGLAND 1: {len(jogos_england)}")
        print(jogos_england[['Home', 'Away', 'Time']])
else:
    print(f"Erro: {response.status_code}")
Baixar jogos do dia em CSV:
import requests

TOKEN = "seu_token_aqui"
headers = {"Authorization": f"Token {TOKEN}"}

# Baixar jogos do dia da Betfair
data = "2025-12-21"
url = f"https://api.futpythontrader.com/api/dados/jogos-do-dia/betfair/{data}/download/"
response = requests.get(url, headers=headers, params={"league": "ENGLAND 1"})

if response.status_code == 200:
    with open(f"jogos_do_dia_{data}.csv", "wb") as f:
        f.write(response.content)
    print("Download concluído!")
else:
    print(f"Erro: {response.status_code}")
📚 Exemplos Completos de Uso

Código completo para trabalhar com DataFrames do pandas:

Configuração Inicial:
import requests
import pandas as pd
import io

# Configuração Global
TOKEN = "seu_token_aqui"
HEADERS = {"Authorization": f"Token {TOKEN}"}

# Escolha a fonte de dados: 'bet365', 'betfair' ou 'footystats'
FONTE = "bet365"  # Altere aqui para mudar a fonte
BASE_URL_DOWNLOAD = f"https://api.futpythontrader.com/api/dados/{FONTE}/download/"

def get_dataframe(params=None):
    """
    Função auxiliar para baixar o CSV e converter direto para DataFrame.
    """
    print(f"Baixando dados da fonte '{FONTE}' com filtros: {params} ...")
    response = requests.get(BASE_URL_DOWNLOAD, headers=HEADERS, params=params)

    if response.status_code == 200:
        # Lê os bytes do CSV diretamente para um DataFrame
        df = pd.read_csv(io.BytesIO(response.content))
        print(f"Sucesso! DataFrame criado com {len(df)} linhas.")
        return df
    else:
        print(f"Erro na requisição: {response.status_code}")
        print(response.text)
        return pd.DataFrame() # Retorna DF vazio em caso de erro
Exemplo: Comparar dados de diferentes fontes
import requests
import pandas as pd
import io

TOKEN = "seu_token_aqui"
HEADERS = {"Authorization": f"Token {TOKEN}"}

def baixar_dados(fonte, params=None):
    url = f"https://api.futpythontrader.com/api/dados/{fonte}/download/"
    response = requests.get(url, headers=HEADERS, params=params)
    if response.status_code == 200:
        return pd.read_csv(io.BytesIO(response.content))
    return pd.DataFrame()

# Baixar mesma liga de diferentes fontes
params = {"league": "ENGLAND 1", "season": "2024/2025"}

df_bet365 = baixar_dados("bet365", params)
df_betfair = baixar_dados("betfair", params)
df_footystats = baixar_dados("footystats", params)

print(f"Bet365: {len(df_bet365)} registros")
print(f"Betfair: {len(df_betfair)} registros")
print(f"FootyStats: {len(df_footystats)} registros")
1) Gerar DataFrame com TODAS as ligas e TODAS as temporadas:
# Sem filtros, a API retorna a base completa
df_completo = get_dataframe(params={})

# Visualizar
display(df_completo)
2) Gerar DataFrame com UMA liga específica e todas as temporadas:
# Filtra apenas pela liga, ignorando a temporada
params_liga = {
    "league": "ENGLAND 1"  # Exemplo: Premier League
}

df_liga = get_dataframe(params=params_liga)

# Visualizar
display(df_liga)
3) Gerar DataFrame com TODAS as ligas e UMA temporada:
# Filtra apenas pela temporada, trazendo todas as ligas daquele ano
params_temporada = {
    "season": "2024/2025"  # Certifique-se do formato correto da data na API
}

df_temporada = get_dataframe(params=params_temporada)

# Visualizar
display(df_temporada)
4) Ver todas as ligas e temporadas disponíveis:
# Supondo que você já tenha baixado dados em 'df_completo'
if not df_completo.empty:
    # Listar todas as ligas únicas
    ligas_disponiveis = df_completo['League'].unique()
    print(f"--- Ligas Disponíveis ({len(ligas_disponiveis)}) ---")
    for liga in sorted(ligas_disponiveis):
        print(liga)

    print("\n" + "="*30 + "\n")

    # Listar todas as temporadas únicas
    temporadas_disponiveis = df_completo['Season'].unique()
    print(f"--- Temporadas Disponíveis ({len(temporadas_disponiveis)}) ---")
    for temp in sorted(temporadas_disponiveis):
        print(temp)
5) Ver todas as colunas disponíveis:
if not df_completo.empty:
    colunas = df_completo.columns.tolist()

    print(f"--- Total de Colunas: {len(colunas)} ---")
    print(colunas)

    # Exemplo para ver os tipos de dados também (int, float, object)
    print("\n--- Info do DataFrame ---")
    print(df_completo.info())
💻 Exemplos com cURL
Listar fontes disponíveis:
curl -H "Authorization: Token SEU_TOKEN" \
    "https://api.futpythontrader.com/api/dados/"
Consultar dados (Bet365):
curl -H "Authorization: Token SEU_TOKEN" \
    "https://api.futpythontrader.com/api/dados/bet365/?league=ENGLAND%201&season=2025/2026"
Consultar dados (Betfair):
curl -H "Authorization: Token SEU_TOKEN" \
    "https://api.futpythontrader.com/api/dados/betfair/?league=ENGLAND%201&season=2025/2026"
Baixar CSV (FootyStats):
curl -H "Authorization: Token SEU_TOKEN" \
    "https://api.futpythontrader.com/api/dados/footystats/download/?league=FRANCE%201" \
    -o footystats_france.csv
Obter metadados de uma fonte:
curl -H "Authorization: Token SEU_TOKEN" \
    "https://api.futpythontrader.com/api/dados/betfair/metadata/"
Listar datas de jogos do dia:
curl -H "Authorization: Token SEU_TOKEN" \
    "https://api.futpythontrader.com/api/dados/jogos-do-dia/bet365/datas/"
Consultar jogos do dia:
curl -H "Authorization: Token SEU_TOKEN" \
    "https://api.futpythontrader.com/api/dados/jogos-do-dia/footystats/2025-12-21/?league=SPAIN%201"
Baixar jogos do dia em CSV:
curl -H "Authorization: Token SEU_TOKEN" \
    "https://api.futpythontrader.com/api/dados/jogos-do-dia/betfair/2025-12-21/download/" \
    -o jogos_do_dia_2025-12-21.csv