API do Buscapé e do Zoom: ofertas, parcelamento e histórico de preços em JSON
Buscapé e Zoom são dois comparadores de preços sobre a mesma plataforma: produto, lojas, ofertas e histórico são iguais nos dois, só mudam os links e o texto editorial. Esta API lê o que qualquer pessoa vê nesses sites, sem login, e entrega em JSON o menor preço à vista, o parcelamento de cada loja e o gráfico de evolução de preços em forma de série diária. Não é a integração usada por lojas para enviar ofertas ao Buscapé: aqui nada é cadastrado nem anunciado. É o lado de quem pesquisa preço, consultado na hora. O parâmetro `site` define se os links e a ordem da busca seguem o Buscapé (padrão) ou o Zoom.
Endpoints
| endpoint | O que retorna | Obrigatórios |
|---|---|---|
| search | Busca por palavra-chave (`geladeira frost free`, `iphone 15`, `tv 55`). Cada linha é um produto do catálogo, com menor preço à vista, parcelamento, número de lojas, a loja com o melhor preço, nota e número de avaliações, ou uma oferta solta que o site não ligou a nenhum produto (`row_type: offer`). Filtros por faixa de preço, categoria, marca e loja; ordem por relevância ou preço. `facets` traz as categorias, marcas e lojas do resultado. | query |
| category | A listagem de uma categoria (8 = Geladeira, 7 = Celular e Smartphone), pelo id numérico ou pela URL da categoria, com as mesmas linhas, filtros e paginação da busca. | category_id |
| product | A ficha do produto: marca, caminho de categorias, imagens, ficha técnica completa (em eletrodomésticos, inclusive a faixa do Selo Procel), menor e maior preço à vista, número de ofertas e de lojas, melhor oferta, nota, posição de popularidade na categoria e a análise editorial do site (prós, contras e resumo). | product_id |
| offers | Todas as ofertas de um produto: loja, condição (novo ou usado), compra internacional, preço à vista, parcelamento (número de parcelas, valor, total, com ou sem juros), desconto e estoque quando a loja informa. As mesmas ordens do site: padrão, menor preço à vista, maior preço, menor total parcelado, maior desconto. | product_id |
| offer | Uma oferta isolada (linha `row_type: offer` da busca ou de `offers`): título, loja, preço à vista, preço de tabela, parcelamento, imagem e o cashback do site. | offer_id |
| price_history | O histórico de preços do próprio site: o menor preço à vista de cada dia e a loja que o tinha, em 40 dias, 3, 6 ou 12 meses, com mínimo, máximo, mediana e último preço do período. Cada ponto é conferido como sendo do produto pedido. | product_id |
| reviews | O bloco de avaliações: nota média, número de avaliações e até 10 avaliações com título, texto, estrelas, data e curtidas. Na maioria dos produtos são avaliações da loja vinculada (muitas vezes a Amazon), com o link para o restante em `external_reviews_url`. | product_id |
Cada chamada é cobrada em créditos. Chamadas com erro ou bloqueadas são gratuitas.
Exemplo que funciona
Geladeira Consul Frost Free 337 L (CRB39MK), consultada em 27 de outubro de 2026: 10 ofertas de 3 lojas. A mais barata à vista era da Fast Shop, R$ 1.855,82. Na Magazine Luiza o preço à vista era R$ 1.998,57, mas no cartão saía em 10x de R$ 214,90, total de R$ 2.149,00. Quem compara só `price` vê R$ 142,75 de diferença entre as duas lojas; quem compara o que o cliente paga parcelando precisa olhar `installment_total_price`. Repare também nos títulos: o mesmo modelo aparece em ofertas 110 V e 220 V, todas dentro do mesmo produto.
curl -X POST https://api.reefapi.com/zoom-buscape/v1/offers \
-H "x-api-key: SUA_CHAVE" \
-H "content-type: application/json" \
-d '{"product_id": "13994214"}'{
"ok": true,
"data": {
"product_id": "13994214",
"count": 10,
"total": 10,
"store_count": 3,
"cheapest_price": 1855.82,
"cheapest_installment_total": 1855.82,
"sort": "price_asc",
"currency": "BRL",
"offers": [
{
"offer_id": "1578172821",
"title": "Geladeira Consul 337 L Frost Free com Espaço Extra Frio Inox CRB39MK",
"seller": { "id": "23326", "name": "Fast Shop", "is_marketplace": false },
"condition": "new",
"cross_border": false,
"price": 1855.82,
"installment_total_price": 1855.82,
"installments": null,
"installment_plans": [],
"stock": null
},
{
"offer_id": "1578175588",
"title": "Geladeira Frost Free 337L com Espaço Extra Frio cor Inox Consul - CRB3",
"seller": { "id": "22905", "name": "Magazine Luiza", "is_marketplace": false },
"price": 1998.57,
"installment_total_price": 2149,
"installments": 10,
"installment_value": 214.9,
"installment_plans": [ { "months": 10, "value": 214.9, "total": 2149 } ],
"stock": 1011
},
...
{
"offer_id": "1562685049",
"title": "Refrigerador Consul Frost Free 337 Litros Inox Espaço Extra Frio CRB39MK – 220 Volts 220",
"seller": { "id": "23326", "name": "Fast Shop", "is_marketplace": false },
"price": 2295.72,
...
},
{
"offer_id": "1556342917",
"seller": { "id": "245", "name": "Webcontinental", "is_marketplace": false },
"price": 2510.05,
"installment_total_price": 2598.64,
"installments": 8,
"installment_value": 324.83,
...
},
...
]
},
"meta": { "record_count": 10, "site": "buscape", "upstream_requests": 1, "cache_hit": false, "mode": "live" }
}Scraper do Buscapé: o que dá errado sem dar erro
O gráfico de histórico é a parte que mais engana. Uma série com pontos de outro produto tem cara de série válida: datas em sequência, preços em reais, nenhum aviso. Por isso o motor confere cada ponto contra o id pedido e recusa a série inteira se aparecer um ponto de fora. Na construção, também comparamos o gráfico de 40 dias embutido na página do produto com a série devolvida, ponto a ponto, em 6 produtos (3 no Zoom, 3 no Buscapé): os 6 bateram. Na consulta de 3 meses da geladeira acima vieram 93 pontos, todos do mesmo produto (`identity.all_points_name_this_product: true`), com mínima de R$ 1.784,15 em 14 de outubro e máxima de R$ 2.149,99 em 19 de setembro.
Uma busca sem resultado não volta vazia: o site responde HTTP 404 com o texto "no results found", 19 bytes. Até 17 de outubro de 2026 o nosso motor lia isso como mudança de formato do site (SCHEMA_DRIFT), e não como uma busca sem resultado. Desde a versão 0.1.1 essa resposta vira NOT_FOUND, sem nova tentativa.
Na primeira rodada de testes da construção apareceram mais dois casos do mesmo tipo: `offers` com um id de produto inexistente devolvia sucesso com zero ofertas, e a URL de um produto desconhecido era resolvida para a categoria dele, como se fosse o produto. Os dois foram corrigidos antes da segunda rodada, em que os 10 casos negativos deram o erro certo.
Para conferir o preço de uma geladeira uma vez, abrir o Buscapé no navegador resolve. Em um monitor de preços que roda todo dia até a Black Friday, cada um desses casos vira uma linha plausível na planilha: o histórico de outro modelo, uma busca vazia contada como falha do site, uma categoria inteira no lugar de um produto.
Limites e observações honestas
- O Buscapé e o Zoom não oferecem nem endossam esta API, e não existe parceria entre a ReefAPI e esses sites.
- Frete não vem na resposta: o site só calcula depois que o comprador informa o CEP. A comparação entre lojas é sempre sem frete.
- A voltagem só aparece no título da oferta. Ofertas 110 V e 220 V do mesmo modelo ficam no mesmo produto, e o campo de variação veio como "Não Identificado"; o menor preço do produto pode ser de uma voltagem que não serve para você.
- Nem toda loja publica parcelamento: nas 10 ofertas da geladeira, as 4 da Fast Shop vieram sem plano (`installments: null`), enquanto Magazine Luiza e Webcontinental informavam 10x e 8x.
- A busca devolve no máximo o `page_size` pedido, às vezes menos: linhas que o site esconde não são repostas (pedimos 36 e vieram 31). O total informado pelo site para em 10.000 (`total_capped`).
- O ponto de hoje no histórico é o menor preço do dia até aquele momento e pode ficar abaixo da oferta mais barata na hora da chamada (aconteceu uma vez em 22 medições).
- Custo por chamada: `product` 3 créditos; `search`, `category` e `price_history` 2; `offers`, `offer` e `reviews` 1.
- Não há cache entre você e o site: cada chamada traz o preço exibido naquele instante.