FutPythonTrader API
Acesse dados históricos de 3 fontes 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 por fonte:
- 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
- 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
- SWEDEN 1
- SWEDEN 2
- SWITZERLAND 1
- TURKEY 1
- UKRAINE 1
- USA 1
- WALES 1
- ARGENTINA 1
- AUSTRALIA 1
- AUSTRIA 1
- AUSTRIA 2
- BELGIUM 1
- BELGIUM 2
- BOSNIA 1
- BRAZIL 1
- BRAZIL 2
- BULGARIA 1
- CHILE 1
- CHINA 1
- 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
- ARGENTINA 1
- AUSTRALIA 1
- AUSTRIA 1
- AUSTRIA 2
- BELGIUM 1
- BELGIUM 2
- BOSNIA 1
- BRAZIL 1
- BRAZIL 2
- BULGARIA 1
- CHILE 1
- CHINA 1
- CROATIA 1
- CZECH 1
- DENMARK 1
- EGYPT 1
- ENGLAND 1
- ENGLAND 2
- ENGLAND 3
- ENGLAND 4
- ESTONIA 1
- EUROPA CHAMPIONS LEAGUE
- 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
- POLAND 1
- PORTUGAL 1
- PORTUGAL 2
- PORTUGAL 3
- ROMANIA 1
- SAUDI ARABIA 1
- SCOTLAND 1
- SCOTLAND 2
- SERBIA 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
- USA 1
🔐 Autenticação por Token
- Crie sua conta em Cadastro
- Obtenha seu token via página de perfil ou endpoint `POST /api/auth/login/`
- 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:
Base de Dados Bet365
Base de Dados Betfair Exchange
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.
🐍 Códigos Prontos por Fonte
Copie, cole no seu Notebook e troque apenas o TOKEN.
⚽ Jogos do Dia — Bet365
import requests
import pandas as pd
TOKEN = "SEU_TOKEN_AQUI"
DIA = "2026-04-08"
HEADERS = {"Authorization": f"Token {TOKEN}"}
def drop_reset_index(df):
df = df.dropna()
df = df.reset_index(drop=True)
df.index += 1
return df
url = f"https://api.futpythontrader.com/api/dados/jogos-do-dia/bet365/{DIA}/"
response = requests.get(url, headers=HEADERS)
if response.status_code == 200:
data = response.json()
print(f"Total de jogos: {data['total']}")
df_jogos = pd.DataFrame(data['dados'])
df_jogos = df_jogos.sort_values(by=['Date', 'Time'], ascending=[True, True])
df_jogos = drop_reset_index(df_jogos)
display(df_jogos)
else:
print(f"Erro: {response.status_code}")
📊 Base de Dados — Bet365
import requests
import pandas as pd
import io
TOKEN = "SEU_TOKEN_AQUI"
HEADERS = {"Authorization": f"Token {TOKEN}"}
FONTE = "bet365"
BASE_URL = f"https://api.futpythontrader.com/api/dados/{FONTE}/download/"
def drop_reset_index(df):
df = df.dropna()
df = df.reset_index(drop=True)
df.index += 1
return df
def get_dataframe(params=None):
print(f"Baixando dados da fonte '{FONTE}'...")
response = requests.get(BASE_URL, headers=HEADERS, params=params)
if response.status_code == 200:
df = pd.read_csv(io.BytesIO(response.content))
print(f"Sucesso! {len(df)} linhas.")
return df
print(f"Erro: {response.status_code} — {response.text}")
return pd.DataFrame()
# --- Carregar base completa ---
base = get_dataframe(params={})
df = base.copy()
df = df.sort_values(by=['Date', 'Time'], ascending=[True, True])
df = drop_reset_index(df)
display(df)
⚽ Jogos do Dia — Betfair Exchange
import requests
import pandas as pd
TOKEN = "SEU_TOKEN_AQUI"
DIA = "2026-04-08"
HEADERS = {"Authorization": f"Token {TOKEN}"}
def drop_reset_index(df):
df = df.dropna()
df = df.reset_index(drop=True)
df.index += 1
return df
url = f"https://api.futpythontrader.com/api/dados/jogos-do-dia/betfair/{DIA}/"
response = requests.get(url, headers=HEADERS)
if response.status_code == 200:
data = response.json()
print(f"Total de jogos: {data['total']}")
df_jogos = pd.DataFrame(data['dados'])
df_jogos = df_jogos.sort_values(by=['Date', 'Time'], ascending=[True, True])
df_jogos = drop_reset_index(df_jogos)
display(df_jogos)
else:
print(f"Erro: {response.status_code}")
📊 Base de Dados — Betfair Exchange
import requests
import pandas as pd
import io
TOKEN = "SEU_TOKEN_AQUI"
HEADERS = {"Authorization": f"Token {TOKEN}"}
FONTE = "betfair"
BASE_URL = f"https://api.futpythontrader.com/api/dados/{FONTE}/download/"
def drop_reset_index(df):
df = df.dropna()
df = df.reset_index(drop=True)
df.index += 1
return df
def get_dataframe(params=None):
print(f"Baixando dados da fonte '{FONTE}'...")
response = requests.get(BASE_URL, headers=HEADERS, params=params)
if response.status_code == 200:
df = pd.read_csv(io.BytesIO(response.content))
print(f"Sucesso! {len(df)} linhas.")
return df
print(f"Erro: {response.status_code} — {response.text}")
return pd.DataFrame()
# --- Carregar base completa ---
base = get_dataframe(params={})
df = base.copy()
df = df.sort_values(by=['Date', 'Time'], ascending=[True, True])
df = drop_reset_index(df)
display(df)
⚽ Jogos do Dia — FootyStats
import requests
import pandas as pd
TOKEN = "SEU_TOKEN_AQUI"
DIA = "2026-04-08"
HEADERS = {"Authorization": f"Token {TOKEN}"}
def drop_reset_index(df):
df = df.dropna()
df = df.reset_index(drop=True)
df.index += 1
return df
url = f"https://api.futpythontrader.com/api/dados/jogos-do-dia/footystats/{DIA}/"
response = requests.get(url, headers=HEADERS)
if response.status_code == 200:
data = response.json()
print(f"Total de jogos: {data['total']}")
df_jogos = pd.DataFrame(data['dados'])
df_jogos = df_jogos.sort_values(by=['Date', 'Time'], ascending=[True, True])
df_jogos = drop_reset_index(df_jogos)
display(df_jogos)
else:
print(f"Erro: {response.status_code}")
📊 Base de Dados — FootyStats
import requests
import pandas as pd
import io
TOKEN = "SEU_TOKEN_AQUI"
HEADERS = {"Authorization": f"Token {TOKEN}"}
FONTE = "footystats"
BASE_URL = f"https://api.futpythontrader.com/api/dados/{FONTE}/download/"
def drop_reset_index(df):
df = df.dropna()
df = df.reset_index(drop=True)
df.index += 1
return df
def get_dataframe(params=None):
print(f"Baixando dados da fonte '{FONTE}'...")
response = requests.get(BASE_URL, headers=HEADERS, params=params)
if response.status_code == 200:
df = pd.read_csv(io.BytesIO(response.content))
print(f"Sucesso! {len(df)} linhas.")
return df
print(f"Erro: {response.status_code} — {response.text}")
return pd.DataFrame()
# --- Carregar base completa ---
base = get_dataframe(params={})
df = base.copy()
df = df.sort_values(by=['Date', 'Time'], ascending=[True, True])
df = drop_reset_index(df)
display(df)
📊 Integração com Excel — Power Query
Conecte a API diretamente no Excel ou Power BI via Power Query. Os dados serão importados como tabela e podem ser atualizados com um clique.
Passo a passo no Excel
- Aba Dados → Obter Dados → De Outras Fontes → Consulta em Branco
- Clique em Editor Avançado e cole o código abaixo
- Substitua
SEU_TOKEN_AQUIpelo seu token e ajuste os filtros - Clique em Concluído → Fechar e Carregar
Base completa — Bet365
let
TOKEN = "SEU_TOKEN_AQUI",
FONTE = "bet365",
URL = "https://api.futpythontrader.com/api/dados/" & FONTE & "/download/",
Resposta = Web.Contents(URL, [
Headers = [Authorization = "Token " & TOKEN]
]),
Tabela = Csv.Document(Resposta, [Delimiter=",", Encoding=65001, QuoteStyle=QuoteStyle.None]),
Resultado = Table.PromoteHeaders(Tabela, [PromoteAllScalars=true])
in
Resultado
Filtrar por liga e temporada
let
TOKEN = "SEU_TOKEN_AQUI",
FONTE = "bet365",
LIGA = "ENGLAND 1",
TEMPORADA = "2024/2025",
URL = "https://api.futpythontrader.com/api/dados/" & FONTE & "/download/"
& "?league=" & Uri.EscapeDataString(LIGA)
& "&season=" & Uri.EscapeDataString(TEMPORADA),
Resposta = Web.Contents(URL, [
Headers = [Authorization = "Token " & TOKEN]
]),
Tabela = Csv.Document(Resposta, [Delimiter=",", Encoding=65001, QuoteStyle=QuoteStyle.None]),
Resultado = Table.PromoteHeaders(Tabela, [PromoteAllScalars=true])
in
Resultado
Passo a passo no Excel
- Aba Dados → Obter Dados → De Outras Fontes → Consulta em Branco
- Clique em Editor Avançado e cole o código abaixo
- Substitua
SEU_TOKEN_AQUI, aFONTEe aDATA - Clique em Concluído → Fechar e Carregar
Jogos do dia — qualquer fonte
let
TOKEN = "SEU_TOKEN_AQUI",
FONTE = "bet365", // "bet365" | "betfair" | "footystats"
DATA = "2026-04-08", // formato YYYY-MM-DD
URL = "https://api.futpythontrader.com/api/dados/jogos-do-dia/"
& FONTE & "/" & DATA & "/",
Resposta = Web.Contents(URL, [
Headers = [Authorization = "Token " & TOKEN]
]),
JSON = Json.Document(Resposta),
ListaDados = JSON[dados],
Tabela = Table.FromList(ListaDados, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
Resultado = Table.ExpandRecordColumn(
Tabela, "Column1",
Record.FieldNames(Tabela[Column1]{0})
)
in
Resultado
Authorization.
🔍 Exemplos de Filtros
Passe params para filtrar os dados retornados pela função get_dataframe().
Filtrar por liga
df = get_dataframe(params={"league": "ENGLAND 1"})
Filtrar por liga e temporada
df = get_dataframe(params={"league": "BRAZIL 1", "season": "2024/2025"})
Filtrar por data
df = get_dataframe(params={"date": "2026-04-08"})
💡 Dicas importantes
- Fontes disponíveis: bet365, betfair e footystats.
- Usuários gratuitos têm acesso apenas às ligas listadas no topo desta página.
- Sempre inclua a barra final (
/) nas URLs dos endpoints. - Guarde seu token com segurança — ele dá acesso total à sua conta.