Empresa brasileira · Entrega automática · Suporte em português Seg a sex, 9h as 18h · PIX em reais
ProxyBox
Coleta de dados

Erro 429 Too Many Requests em scraping: limite por IP, espera e quando o proxy resolve

O que significa o erro 429 Too Many Requests em coleta de dados, como ler o Retry-After, como fazer espera progressiva e quando distribuir requisições entre IPs resolve.

Por Redação ProxyBox · Editor técnico 4 min de leitura scraping · erros · automação
Guia completo de Coleta de dados

Este artigo aprofunda um ponto do tema. Para a visão inteira, leia O que é web scraping: como funciona, quando é legal no Brasil e onde entra o proxy.

Uma coleta que funcionava bem começa a devolver 429 Too Many Requests. É o servidor dizendo, sem ambiguidade, que você passou do ritmo aceito. A reação instintiva — tentar de novo na hora, ou trocar de IP — às vezes piora a situação. O primeiro passo é descobrir o que está sendo limitado.

O que o 429 quer dizer

O código 429 indica que o cliente enviou requisições demais num intervalo de tempo. Não é erro do seu código nem queda do site: é um controle de ritmo.

Muitos servidores enviam junto o cabeçalho Retry-After, com o tempo de espera antes da próxima tentativa — em segundos ou como uma data. Quando ele vem, é a informação mais valiosa da resposta.

Primeiro: o limite é por quê?

O limite é aplicado por Sinal típico Proxy ajuda?
Endereço IP 429 some ao mudar de rede; outros IPs seguem normais Sim, distribuindo o volume
Conta ou login 429 acompanha a conta em qualquer rede Não
Chave ou token de API 429 aparece para a chave, venha de onde vier Não
Janela global do serviço Todos os clientes recebem 429 no mesmo período Não

Um teste rápido: rode a mesma requisição, no mesmo momento, a partir de outra rede. Se lá passa e daqui não, o limite provavelmente é por endereço.

Espera progressiva: o que fazer em qualquer caso

Seja qual for a causa, a coleta precisa reagir ao 429 sem martelar o servidor:

import time, random, requests

def pegar(url, proxies, tentativas=5):
    espera = 2
    for _ in range(tentativas):
        r = requests.get(url, proxies=proxies, timeout=30)
        if r.status_code != 429:
            return r
        retry = r.headers.get("Retry-After")
        pausa = int(retry) if retry and retry.isdigit() else espera
        time.sleep(pausa + random.uniform(0, 1))
        espera *= 2
    return r

O que o código faz:

  1. Respeita o Retry-After quando o servidor informa.
  2. Sem Retry-After, dobra a espera a cada tentativa.
  3. Adiciona uma variação aleatória pequena, para várias tarefas não voltarem todas no mesmo instante.
  4. Para depois de algumas tentativas, em vez de insistir para sempre.

Quando distribuir entre IPs resolve

Se o limite é por endereço, concentrar toda a coleta num único IP é o que gera o 429. Distribuir as requisições entre muitos endereços reduz a taxa em cada um:

  • Páginas públicas, sem login → residencial rotativo por GB, que troca o endereço por requisição ou por sessão.
  • Destino que aceita IPv6 → lote de IPv6, com a rotação feita pela sua aplicação.
  • Destino que aceita datacenter e volume alto → lote de IPv4 MIX.

Mesmo distribuindo, mantenha a espera progressiva: ela protege a coleta quando um endereço específico é limitado.

Quando não troque de IP

  • Rotinas logadas. Trocar de IP no meio da sessão faz a conta parecer pular de lugar. Aqui a resposta é fila e espera com IP fixo.
  • API com chave. O limite é da chave. Mais IPs só geram mais 429.
  • Termos do serviço. Se o site limita coleta em termos de uso ou robots, distribuir IPs para contornar isso não é ajuste técnico. Respeite robots, termos e lei — e a nossa política de uso aceitável.

Cuidado com o consumo

No residencial a cobrança é por GB. Uma coleta que repete requisições por causa do 429 paga pelo tráfego das tentativas. Espera bem feita e requisições mais leves reduzem o custo — os ajustes estão em scraping por GB.

Resumo

  1. Leia o Retry-After e implemente espera progressiva.
  2. Descubra se o limite é por IP, conta, chave ou global.
  3. Só no limite por IP, distribua entre endereços.
  4. Em rotina logada, IP fixo com fila.

Qual produto usar para cada tipo de coleta, e como escolher entre residencial, IPv6 e datacenter, está em proxy para web scraping.

Perguntas frequentes

O que significa erro 429?
É o código HTTP Too Many Requests. O servidor está avisando que você enviou requisições demais num intervalo e precisa desacelerar.
O que é o cabeçalho Retry-After?
É a indicação do servidor de quanto tempo esperar antes de tentar de novo, em segundos ou como data. Quando existe, respeite esse valor.
Trocar de IP resolve o 429?
Só quando o limite é aplicado por endereço. Se o limite é por conta, token ou chave de API, a origem de rede não muda a contagem.
Proxy rotativo ou IP fixo para evitar 429?
Para coleta sem login em limite por IP, rotativo distribui o volume. Para rotinas logadas, IP fixo com fila e espera, porque trocar de IP no meio da sessão cria outro problema.

Quer aplicar isso na sua operação?

Preço público em reais, PIX e credenciais no painel em minutos. Se não souber qual tipo escolher, descreva a operação no WhatsApp — indicamos o mais barato que resolve.

Este conteúdo é informativo. Proxy é infraestrutura de rede: controlamos origem, exclusividade e geolocalização do IP. Aprovação ou restrição de contas depende também de comportamento de uso, impressão digital do navegador e das políticas internas de cada plataforma. Consulte a política de uso aceitável.

Suporte em português Fale no WhatsApp