🎯 Um navegador em nuvem personalizável e anti-detecção alimentado por Chromium desenvolvido internamente, projetado para rastreadores web e agentes de IA. 👉Experimente agora
De volta ao blog

Dados de Compras do ChatGPT: Coleta de Produtos, Preços e Ofertas em Grande Escala

Emily Chen
Emily Chen

Advanced Data Extraction Specialist

29-Jun-2026

TL;DR:

  • Os dados de compras do ChatGPT são uma saída de produto estruturada, não capturas de tela. Um POST para o ator scraper.chatgpt com shopping ativado retorna produtos classificados, cada um com um preço, rating, contagem de avaliações e uma lista de ofertas por comerciante — como campos JSON.
  • Cada produto carrega ofertas de múltiplos comerciantes. Um único resultado de fones de ouvido retorna o mesmo modelo com preços da Sony, Best Buy, Walmart, Target e outros comerciantes em um array offers, cada um com sua própria disponibilidade e nota de entrega.
  • A flag de compras está dentro de input. A chamada que retorna produtos é {"actor":"scraper.chatgpt","input":{"prompt":"...","country":"US","shopping":true}} contra POST /api/v2/scraper/execute — os parâmetros de compras de nível superior são rejeitados.
  • O carrossel de produtos é renderizado por sessão, não em cada chamada. Um prompt de intenção de compra preenche products quando o ChatGPT mostra cartões de compras naquela sessão; a mesma chamada pode retornar apenas o texto da resposta com um array vazio — assim, a coleta é executada como um conjunto de prompts agendados e agrega as execuções populadas.
  • As respostas de compras custam mais do que respostas simples. Retornar cartões de produtos resolvidos é cobrado a uma taxa mais alta, por isso restrinja o conjunto de prompts aos produtos que importam.
  • O envelope combina com os outros atores LLM. Cada chamada retorna { status, task_id, task_result }, portanto, um cliente escrito aqui se estende ao Grok, Gemini e Perplexity sem alterações.
  • Gratuito para começar. Novas contas Scrapeless incluem créditos de teste gratuitos — inscreva-se em app.scrapeless.com.

Introdução: o botão de compra mudou para a resposta

O ChatGPT agora responde a perguntas de compras com um carrossel de produtos. Um comprador pede os melhores fones de ouvido com cancelamento de ruído, e o modelo retorna produtos classificados com imagens, preços, classificações em estrelas e uma linha de comerciantes para comprar — dentro do chat, antes que qualquer loja receba um clique. Para uma marca, um ranking de página de resultados não decide mais a venda; o que importa é se seu produto aparece naquele carrossel, e a que preço.

Essa superfície é difícil de ler a olho nu e mais difícil de acompanhar ao longo do tempo. Os preços mudam, os comerciantes rotacionam dentro e fora da lista de ofertas de cada produto, e o ranking muda por consulta e país. Capturá-lo dirigindo a interface de chat significa barreiras de login, cartões carregados de forma lenta e campos de produtos que se resolvem do lado do cliente depois que a resposta chega.

O ator scraper.chatgpt retorna esse carrossel como dados de produto estruturados: prompt para dentro, um array products para fora, cada produto carregando seu preço, rating, contagem de avaliações e uma lista de ofertas por comerciante. O que segue é a solicitação que preenche o array products, uma leitura campo a campo da resposta, um cliente Python que coleta um conjunto de prompts em uma programação e os atores acompanhantes que leem a mesma estrutura nos outros mecanismos de resposta. Para o lado da visibilidade da mesma mudança — quais marcas e fontes o modelo menciona em suas respostas — visibilidade da marca AI cobre o rastreamento da resposta e suas citações.


O que você pode fazer com isso

  • Rastreamento de compartilhamento de recomendações. Execute um conjunto fixo de prompts de compra em uma programação e registre quais produtos o ChatGPT classifica para cada um — o equivalente em compras à participação de voz.
  • Monitoramento de preços entre comerciantes. Leia cada oferta em um produto e observe o movimento do preço do mesmo modelo entre Sony, Best Buy, Walmart e Target a partir de uma única resposta.
  • Verificações de visibilidade de catálogo. Detecte quando seu produto entra ou sai do carrossel para um prompt de categoria, e em que classificação.
  • Análise de sortimento competitivo. Capture quais produtos o modelo apresenta para uma categoria em diferentes mercados, com classificações e contagens de avaliações como campos de comparação.
  • Monitoramento de ofertas e disponibilidade. Acompanhe quais comerciantes mostram estoque disponível para um produto e qual janela de entrega cada um cita.
  • Construção de conjunto de dados de compras. Colete linhas de prompt–produto–oferta como JSON limpo para modelos de preços ou pipelines de avaliação.

Por que o Scraper de Compras ChatGPT da Scrapeless

O scraper de compras ChatGPT da Scrapeless é o ator scraper.chatgpt com sua entrada shopping ativada — parte da linha Universal Scraping API. Para consultas de compras especificamente, ele traz:

  • Renderização do lado do servidor da sessão de chat, para que os cartões de produtos que normalmente se resolvem do lado do cliente venham já populados.
  • Saída residencial no país que você passar, porque tanto os produtos quanto seus preços são localizados.
  • A lista completa de ofertas por produto, não apenas o preço principal — cada comerciante que o modelo exibe para aquele item.
  • Um envelope ({ status, task_id, task_result }) compartilhado com os outros atores LLM, para que o mesmo cliente leia ChatGPT, Grok, Gemini e Perplexity.
  • Sem navegador para operar: um endpoint, um cabeçalho x-api-token, JSON de volta.

Obtenha sua chave de API no plano gratuito em app.scrapeless.com.


Pré-requisitos

  • Python 3.10 ou superior (o cliente abaixo usa apenas a biblioteca padrão mais requests)
  • Uma conta Scrapeless e chave de API — inscreva-se em app.scrapeless.com
  • A chave exportada como SCRAPELESS_API_KEY
  • Familiaridade básica com o terminal e JSON

Como funciona o scraper de compras do ChatGPT

A resposta de compras é a chamada padrão scraper.chatgpt com shopping definido como true dentro de input. O ator renderiza a consulta, aguarda a resolução do carrossel de produtos e retorna os cartões como uma matriz products ao lado do texto de resposta habitual e fontes citadas.

Parâmetros da Solicitação

Os parâmetros vão dentro do objeto input, não no nível superior do corpo.

Campo input obrigatório descrição
prompt sim a pergunta de compras; formule com intenção de compra para que o carrossel seja acionado
country sim código de região de duas letras (ex: BR); localiza produtos e preços
shopping não defina true para preencher a matriz products; uma resposta de compras é cobrada a uma taxa mais alta do que uma resposta simples
web_search não true permite que o modelo busque fontes ao vivo, o que melhora a resolução de produtos

Captura Rápida com curl

bash Copy
# Requer SCRAPELESS_API_KEY no ambiente.
curl -sS -X POST https://api.scrapeless.com/api/v2/scraper/execute \
  -H "Content-Type: application/json" \
  -H "x-api-token: ${SCRAPELESS_API_KEY}" \
  -d '{
    "actor": "scraper.chatgpt",
    "input": {
      "prompt": "melhores fones de ouvido com cancelamento de ruído da Sony para comprar",
      "country": "BR",
      "shopping": true,
      "web_search": true
    }
  }'
# Encaminhar para: | jq '.task_result.products' para o carrossel.

Envelope de Resposta

Os produtos estão sob task_result.products. Cada produto possui um price em destaque e um resumo de merchants, além de uma matriz offers com uma entrada por comerciante. A forma abaixo é uma captura real para o prompt dos fones de ouvido acima; os valores são de um ponto no tempo e o identificador do modelo foi gpt-5-mini.

json Copy
// O esquema é exatamente o que scraper.chatgpt retorna com a compra habilitada; os valores dos campos são uma amostra ilustrativa de uma execução ao vivo (ofertas ajustadas).
{
  "status": "success",
  "task_id": "…",
  "task_result": {
    "prompt": "melhores fones de ouvido com cancelamento de ruído da Sony para comprar",
    "model": "gpt-5-mini",
    "result_text": "Aqui estão os melhores fones de ouvido com cancelamento de ruído da Sony …",
    "products": [
      {
        "title": "Sony WH-1000XM6",
        "price": "R$ 398,00",
        "merchants": "Sony + outros",
        "rating": 4.7,
        "num_reviews": 6021,
        "url": "https://electronics.sony.com/audio/headphones/headband/p/wh1000xm6-b",
        "image_urls": ["https://…"],
        "offers": [
          { "merchant_name": "Sony",     "price": "R$ 398,00", "available": true, "details": "Em estoque online, entrega gratuita entre Qui - Sex" },
          { "merchant_name": "Best Buy",  "price": "R$ 398,00", "available": true, "details": "Em estoque online e nas proximidades, entrega gratuita até Sexta" },
          { "merchant_name": "Walmart",   "price": "R$ 398,00", "available": true, "details": "" },
          { "merchant_name": "Target",    "price": "R$ 398,00", "available": true, "details": "Em estoque online, entrega gratuita entre 19 - 25 Jun" }
        ]
      }
    ],
    "search_result": [ { "title": "…", "url": "https://…", "snippet": "…", "attribution": "…" } ]
  }
}

Algumas observações honestas ao executá-lo:

  • A população é por sessão, não por chamada. Um prompt conversacional retorna o texto da resposta com uma matriz vazia, e até mesmo um prompt de intenção de compra pode retornar com products vazio em uma determinada chamada — o carrossel renderiza probabilisticamente. Um prompt programado captura as execuções populadas à medida que aparecem; trate uma matriz vazia como anulável, não como um erro.
  • title, price e rating se resolvem juntos. Quando o carrossel é renderizado, esses campos chegam populados; uma chamada que apenas aciona parcialmente a compra pode retornar slots de produtos com campos vazios, que você trata como anuláveis e ignora.
  • offers é a superfície de monitoramento de preços. O mesmo produto se repete entre comerciantes em um ponto de preço por oferta; leia a matriz, não apenas o price de nível superior.
  • Preços e disponibilidade são de um ponto no tempo. Armazene o timestamp da captura em seu próprio pipeline; a resposta reflete o momento da execução.

Integrando a API em Python: colete um conjunto de prompts em grande escala

O padrão para a escala é um conjunto fixo de prompts, uma chamada cada, com produtos achatados em linhas. O cliente lê SCRAPELESS_API_KEY do ambiente, solicita dados de compras e emite uma linha por oferta para que uma tabela de preços seja gerada diretamente.

python Copy
"""Coletar dados de compras do ChatGPT para um conjunto de prompts (scraper.chatgpt).
    export SCRAPELESS_API_KEY=seu_token_api_aqui
    python collect_shopping.py
"""
import os
import requests

ENDPOINT = "https://api.scrapeless.com/api/v2/scraper/execute"
PROMPTS = [
    "melhores fones de ouvido com cancelamento de ruído da Sony para comprar",
    "melhor teclado mecânico econômico para comprar",
    "melhor aspirador robô abaixo de $300",
]


def shop(prompt: str, country: str = "US") -> list[dict]:
    resp = requests.post(
        ENDPOINT,
        headers={
            "Content-Type": "application/json",
            "x-api-token": os.environ["SCRAPELESS_API_KEY"],
        },
        json={
            "actor": "scraper.chatgpt",
            "input": {"prompt": prompt, "country": country, "shopping": True, "web_search": True},
        },
        timeout=220,
    )
    resp.raise_for_status()
    return resp.json().get("task_result", {}).get("products", []) or []


def offer_rows(prompt: str, products: list[dict]) -> list[dict]:
    rows = []
    for rank, product in enumerate(products, start=1):
        title = product.get("title")
        if not title:  # cartão meio-resolvido — trate como anulável, ignore
            continue
        for offer in product.get("offers") or []:
            rows.append({
                "prompt": prompt,
                "rank": rank,
                "product": title,
                "rating": product.get("rating"),
                "reviews": product.get("num_reviews"),
                "merchant": offer.get("merchant_name"),
                "price": offer.get("price"),
                "available": offer.get("available"),
            })
    return rows


if __name__ == "__main__":
    for prompt in PROMPTS:
        rows = offer_rows(prompt, shop(prompt))
        print(f"{prompt}: {len(rows)} linhas de ofertas")
        for row in rows[:5]:
            print(f"  #{row['rank']} {row['product']} — {row['merchant']} {row['price']}")

Cada prompt torna-se um conjunto de linhas de produto-comerciante-preço: classificação dentro do carrossel, o produto, sua classificação e contagem de resenhas, e uma linha por oferta de comerciante. Escreva essas linhas em um armazém em uma programação e movimentos de preços, mudanças de classificação e churn de comerciantes surgem como séries temporais.

Obtenha sua chave de API no plano gratuito: app.scrapeless.com


Atores acompanhantes para os outros motores de resposta

Carrosséis de compras estão aparecendo em todos os motores de resposta, e o mesmo envelope lê todos eles. Troque o ator, mantenha o cliente:

  • scraper.grok — Respostas do Grok, com seu comportamento de busca ao vivo
  • scraper.gemini — Respostas do Gemini
  • scraper.perplexity — Respostas e fontes do Perplexity
  • scraper.overview e scraper.aimode — Superfícies da Visão Geral da IA do Google e Modo de IA

Cada um retorna { status, task_id, task_result }, então a função offer_rows acima funciona sem mudanças uma vez que uma plataforma expõe produtos. A comparação dos melhores scrapers LLM cobre essas superfícies lado a lado.


Como evitar problemas comuns

  • Produtos vazios? Duas causas. O prompt pode não ser suficientemente transacional — use linguagem de compra explícita ("melhor ... para comprar", "... abaixo de $300") e mantenha shopping e web_search ambos true. Ou o carrossel simplesmente não foi renderizado naquela sessão: a população é por sessão, então um conjunto de prompts agendado agrega as execuções que retornam cards, e o código a jusante trata um array vazio como anulável.
  • Cartões meio-resolvidos. Um slot de produto pode chegar com title/price vazios; trate esses campos como anuláveis e pule a linha ao invés de armazenar brancos.
  • Saída localizada. country muda tanto os produtos quanto seus preços, então defina-o por mercado e compare como frutas com frutas — uma execução em US e uma em JP são conjuntos de dados diferentes.
  • Custo. A resposta de compras é cobrada a uma taxa mais alta do que uma resposta simples, então mantenha o conjunto de prompts restrito aos produtos que você realmente rastreia.

Conclusão: o carrossel como um feed de dados

O ChatGPT Shopping se reduz a uma única dependência: um único HTTP POST com shopping ativado retorna produtos classificados e suas ofertas por comerciante em formato JSON. Defina o país, formule o prompt para intenção de compra, leia o array offers em vez do preço principal e trate cartões meio resolvidos como anuláveis. Execute um conjunto fixo de prompts em uma programação com créditos da Universal Scraping API e o carrossel se torna uma série temporal de preço e sortimento. A forma da solicitação e os nomes dos campos são confirmados com o LLM Chat Scraper ativo.


Pronto para Construir Seu Pipeline de Dados de Compras com IA?

Junte-se à nossa comunidade para reivindicar um plano gratuito e conectar-se com desenvolvedores que estão construindo pipelines de dados de respostas de IA: Discord · Telegram.

Inscreva-se em app.scrapeless.com para créditos de teste gratuitos e direcione o conjunto de prompts acima para as categorias de produtos e mercados necessários para seu programa de precificação.


Perguntas Frequentes

P: É legal coletar dados do ChatGPT Shopping?
Os dados retornados são a resposta de compras publicamente visível que o ChatGPT mostra a qualquer usuário. Assim como em qualquer raspagem, a legalidade depende da jurisdição e do uso — revise os termos relevantes e consulte um advogado antes de construir sobre isso. Colete apenas dados públicos de produtos e ofertas, nunca dados pessoais.

P: Por que o array products está vazio?
O carrossel só é renderizado para consultas transacionais. Um prompt conversacional retorna result_text com um array products vazio; reformule com intenção de compra e mantenha shopping: true.

P: Preciso de um proxy ou de um navegador?
Não. Renderização, gerenciamento de sessões e egressos residenciais são executados no lado do servidor. Você envia um POST com um cabeçalho x-api-token e recebe JSON de volta; o campo country seleciona o mercado de egressos.

P: Como isso é diferente do guia da API do scraper do ChatGPT?
Esse guia cobre o texto da resposta e suas citações para rastreamento de visibilidade. Este cobre o caminho shopping: o array products e suas offers por comerciante, para monitoramento de preços e sortimento.

P: Quantos comerciantes retornam por produto?
Vários — a captura de fones de ouvido retornou o mesmo modelo com preços iguais em Sony, Best Buy, Walmart, Target e mais em um único array offers, cada um com sua própria disponibilidade e nota de entrega.

P: Posso rodar isso em diferentes países?
Sim. Passe um country diferente por chamada; a resposta, os produtos e os preços são todos localizados, então cada mercado é seu próprio conjunto de dados.

Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.

Artigos mais populares

Catálogo