API

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

endpointO que retornaObrigatórios
searchBusca 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
categoryA 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
productA 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
offersTodas 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
offerUma 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_historyO 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
reviewsO 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.

Requisição
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"}'
Resposta (resumida)
{
  "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.