O que é fantasma da série b
O termo aparece com frequência em comunidades brasileiras de desenvolvimento e automação, mas a realidade é mais simples do que o nome sugere. Trata-se de um script ou utilitário que lida com a coleta, processamento ou manipulação de dados relacionados à Série B do futebol brasileiro. Não é uma ferramenta oficial da CBF, não tem vínculo com nenhuma liga ou confederação. É um projeto de código aberto que circulou por fóruns e repositórios GitHub ao longo dos anos.
Entendendo o fantasma da série b na prática
O funcionamento básico é direto. O script faz requisições a APIs públicas de estatísticas esportivas, extrai os dados dos jogos da Série B e salva em formato estruturado. A saída comum é um arquivo CSV ou JSON com campos como data, mandante, visitante, placar, cartões, substituições e estatísticas individuais. Quem usa normalmente integra isso com planilhas, dashboards ou modelos preditivos. O problema é que a maioria das versões disponíveis na internet está desatualizada. As APIs que o script consultava mudaram endpoints, alguns servidores foram descontinuados e a estrutura dos dados mudou sem aviso. No meu primeiro contato com uma dessas versões antigas, o script falhava silenciosamente nas requisições de escanteios e faltas porque o endpoint havia sido alterado de GET para POST com payload JSON. Passei cerca de duas horas apenas rastreando onde os dados paravam de chegar. A solução foi modificar o método da requisição e adicionar um verificador de status code que imprime erro antes de salvar qualquer coisa. Isso economiza dor de cabeça significativo.
Como configurar e rodar
A configuração depende da versão que você encontrar, mas o padrão geral segue estes passos: Primeiro, verifique se o Python está instalado na versão 3.8 ou superior. A maioria desses scripts usa bibliotecas como requests, pandas e BeautifulSoup. Instale com pip install -r requirements.txt se o repositório tiver esse arquivo. Se não tiver, os pacotes principais são requests, pandas e lxml.
Depois, baixe o script principal e os arquivos de configuração. A maioria oferece um arquivo config.json ou config.py onde você define a temporada, os times de interesse e o caminho de saída dos dados. Altere essas variáveis antes de rodar. Eu já vi gente executar com a temporada errada e se perguntar por que os dados não batiam com o que via na ESPN ou no GloboEsporte. Para executar, use python main.py ou o comando equivalente indicado no repositório. O processo leva entre 3 e 8 minutos dependendo do volume de jogos e da velocidade da sua conexão. Se o script travar no meio, não desista imediatamente. Verifique o log de erros na pasta logs ou no terminal. Na maioria das vezes é um timeout de rede ou um rate limit da API.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Pegadinhas e limitações reais
O maior problema que encontrei na prática é a inconsistência dos dados brutos. Diferentes fontes registram eventos de forma diferente. Um cartam amarelo pode ser anotado no minuto 45+2 por uma fonte e no minuto 47 por outra. Substituições também variam — algumas APIs registram o minuto exato da saída, outras o da entrada. Se você for usar esses dados para análise séria, precisa normalizar tudo manualmente. Gastei uma tarde inteira criando um dicionário de mapeamento de nomes de times porque cada fonte usa abreviações diferentes. Corinthians aparece como COR, Corinthians-SP, FC Corinthians, e às vezes só como Corinthians mesmo. Sem normalização, seus agrupamentos ficam inutilizáveis. Outro ponto crítico: a cobertura de dados não é completa. Estatísticas avançadas como xG, passe progressivo e recuperação de bola praticamente não existem nessas versões gratuitas. O script entrega o essencial, mas se você precisa de métricas mais refinadas, precisa cruzar com outra fonte ou pagar por uma API premium como a Sportmonks ou Football-Data.org.
Também é importante saber que o script não mantém histórico de alterações. Se você rodar duas vezes na mesma temporada, vai duplicar os registros a menos que adicione um check de existência antes de inserir. Eu criei uma consulta SQL simples que verifica se o jogo já existe pelo date, home_team e away_team antes de salvar. Resolveu o problema de duplicação em segundos.
Onde encontrar
O fantasma da série b não tem um repositório único ou oficial. Aparece em múltiplos forks e mirrors espalhados pelo GitHub e em fóruns como Reprate, Clube HDF e grupos de Telegram de futebol e dados. Procure pelos termos "serie-b-dataset", "brasil-football-stats" ou "fantasma-serie-b" no GitHub. A versão mais ativa que vi recentemente tem cerca de 200 stars e issues abertas sobre compatibilidade com a API de 2024. Leitura obrigatória antes de baixar é a seção de issues — quase sempre tem trabalho de alguém já resolvendo o problema que você vai enfrentar. O download em si é feito pelo botão verde Code > Download ZIP no repositório, ou via git clone se tiver o Git instalado. Nenhuma licença restrita, uso livre para projetos pessoais e estudos. Para uso comercial, leia o arquivo LICENSE do repositório específico que você baixar, porque os forks podem ter licenças diferentes do original.
Alternativas quando o script não funciona
Se o fantasma da série b não rodar no seu ambiente ou os dados estiverem muito incompletos para o que você precisa, considere alternativas diretas. O website da CBF mantém estatísticas oficiais dos jogos, acessíveis via web scraping ou consulta manual. O portal GeoFortuna oferece dados estruturados gratuitos com boa cobertura da Série B. E a API do football-data.org tem plano gratuito que permite até 10 requisições por minuto, suficiente para atualização diária sem custo. Nenhuma dessas opções é perfeita. A CBF tem dados oficiais mas interface ruim para extração automática. O GeoFortuna é prático mas limitado a estatísticas básicas de jogo. A football-data.org é bem documentada mas dados históricos vão apenas até 2018 no plano gratuito. Escolha conforme o que você realmente precisa.
O fantasma da série b continua sendo uma opção válida para quem quer dados brutos rápidos e não se importa em gastar tempo limpando e validando o resultado. Só não espere que funcione fora da caixa sem ajustes. O cenário de APIs brasileiras muda com frequência e qualquer script público envelhece rápido. Mantenha o código sob versionamento, faça testes de integração semanais se for usar em produção, e nunca confie nos dados sem uma validação cruzada com pelo menos uma outra fonte.