Como extrair dados de produtos da Amazon sem ser bloqueado

Resultados de busca, preços, avaliações e ASINs da Amazon em JSON: por que o DIY falha rápido, quanto custam os dados e um exemplo testado em Python.

Monitoramento de preços, acompanhamento de concorrentes, enriquecimento de catálogo: todos começam com a mesma necessidade, dados de produtos da Amazon como campos estruturados em vez de HTML. Veja como conseguir isso de forma confiável, com um exemplo testado e o custo real por requisição.

Por que fazer scraping direto da Amazon falha?

A Amazon roda uma das infraestruturas anti-bot mais agressivas da web pública, e ela te derruba em estágios, não de uma vez:

  1. Os bloqueios vêm rápido. IPs de datacenter recebem a checagem de robô depois de um punhado de requisições. Proxies residenciais duram mais, mas custam dinheiro de verdade por gigabyte, e a Amazon perfila ativamente o comportamento da sessão, não só os IPs.
  2. O markup muda o tempo todo. A Amazon faz testes A/B de layout por marketplace, por categoria e por sessão. Um parser que funciona hoje na eletrônica de amazon.com quebra amanhã nos utensílios domésticos de amazon.de.
  3. O modo de falha silencioso é pior que o barulhento. Em vez de uma página de erro, você geralmente recebe uma página degradada: sem preço, sem avaliação, só resultados patrocinados. Sua pipeline continua rodando e silenciosamente enche seu banco de dados de buracos.

O resultado: o caminho DIY não é um script, é um orçamento de proxy mais uma equipe de parser. Se dados de produto não são o seu produto, esse é o lugar errado para gastar tempo de engenharia.

A versão que funciona

import requests

API_KEY = "faf_live_..."  # sua chave FastAF

resp = requests.get(
    "https://api.fastaf.co/v1/amazon",
    params={
        "query": "mechanical keyboard",
        "domain": "com",
    },
    headers={"Authorization": f"Bearer {API_KEY}"},
    timeout=60,
)
resp.raise_for_status()

for item in resp.json()["results"]:
    if item["type"] == "search_product":
        print(f'{item["price"]:>8}  {item["stars"]}★ ({item["total_reviews"]})  {item["asin"]}  {item["title"][:60]}')

Rodamos exatamente essa requisição enquanto escrevíamos este post (agosto de 2026). Uma busca retornou 16 produtos orgânicos mais os blocos de marca patrocinada, por 1 crédito, cada produto trazendo: asin, price e extracted_price (numérico), old_price para descontos riscados, stars, total_reviews, number_of_people_bought (“3K+ bought in past month”), is_best_seller, is_amazon_choice, has_prime, limited_time_deal, estimativas de entrega e a URL do produto. O parâmetro domain troca o marketplace (com, co.uk, de, it, …), page pagina, postal_code localiza disponibilidade e entrega.

Endpoint de busca ou de produto?

O endpoint de busca acima responde “o que se posiciona para essa query e a que preço”. Para dados completos de uma listagem, passe um ASIN:

resp = requests.get(
    "https://api.fastaf.co/v1/amazon",
    params={"resource": "product", "asin": "B0CF3VGQFL", "domain": "com"},
    headers={"Authorization": f"Bearer {API_KEY}"},
    timeout=60,
)

Isso retorna a página completa do produto como campos: bullet points, descrição, imagens, variantes, informações de vendedor e buybox, rankings de categoria. O padrão prático para monitoramento de preços é buscar uma vez para descobrir ASINs e posições, depois acionar o endpoint de produto só para as listagens que você realmente monitora.

Quanto custam os dados da Amazon?

Uma requisição Amazon na FastAF custa 1 crédito, o endpoint mais barato que oferecemos, porque não é necessária renderização de JavaScript. Concretamente, nos preços de agosto de 2026:

Volume Créditos Pacote que cobre Custo
1.000 produtos, atualização diária 30.000 (30 dias) Growth, $29 ~$11,60 do pacote
10.000 produtos, atualização diária 300.000 (30 dias) Scale, $99 o pacote inteiro
Varredura pontual de catálogo, 50.000 itens 50.000 Growth, $29 ~$19,30 do pacote

Uma requisição falha ou bloqueada nunca é cobrada: os créditos são reservados quando a requisição começa e devolvidos se nenhum resultado vier. O plano gratuito é de 500 créditos sem cartão, ou seja, 500 requisições Amazon, suficiente para validar a cobertura de campos na sua categoria antes de pagar qualquer coisa.

Os erros que realmente custam dinheiro

Monitorar com busca em vez do endpoint de produto. Os resultados de busca omitem dados por vendedor e podem mudar de ordem; os ASINs são estáveis. Descubra com busca, monitore com resource=product.

Ignorar extracted_price. O campo price é uma string de exibição (“$69.99”); extracted_price é o número. Fazer parsing por regex de strings de exibição é como nascem bugs de moeda.

Atualizar tudo na mesma frequência. Preços de listagens voláteis (ofertas, disputas de buybox) mudam a cada hora; itens de cauda longa do catálogo mudam semanalmente. Divida seus níveis de atualização e a maior parte do seu orçamento de créditos desaparece.

Supor um único marketplace. O mesmo ASIN pode ter preço, disponibilidade e até título diferentes entre com, de e co.jp. Se você vende em três mercados, monitore três valores de domain; são três créditos, não um.