Skip to content

About

ChatGPT scraper API: get ChatGPT answers and shopping results without the OpenAI API, no OpenAI key or ChatGPT account needed. Returns JSON with text, markdown, sources, citations, product recommendations, search queries and ads. An LLM scraper API: each request runs a real browser and retries on its own.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

ChatGPT Scraper

ChatGPT Scraper by cloro

cloro

The ChatGPT scraper by cloro gets ChatGPT responses programmatically, without the OpenAI API. It returns what ChatGPT's web interface shows a logged-out visitor, as structured JSON: answer text, cited sources and citation pills. Optional extras are Markdown, shopping cards, inline products, ads and the query fan-out terms behind the answer.

How do you scrape ChatGPT?

  1. Get an API key at cloro.dev.
  2. POST a prompt to https://api.cloro.dev/v1/monitor/chatgpt.
  3. Read the parsed fields from the JSON response.

The official OpenAI API is the wrong surface for brand monitoring, because the pages it cites differ from the ones ChatGPT's web UI shows its users. Reading that UI means getting past Cloudflare JA4 TLS fingerprinting and Turnstile, assembling a Server-Sent Events stream, and tracking CSS class names that change between deploys. cloro handles all of it server-side.

Request sample (Python)

import requests

payload = {
    'prompt': 'best project management software for remote teams',
    'country': 'US',
    'include': {'markdown': True, 'searchQueries': True},
}

response = requests.post(
    'https://api.cloro.dev/v1/monitor/chatgpt',
    headers={'Authorization': 'Bearer YOUR_API_KEY'},
    json=payload,
)

print(response.json())

Request sample (cURL)

curl -X POST https://api.cloro.dev/v1/monitor/chatgpt \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "best running shoes for flat feet", "country": "US", "include": {"shopping": true}}'

Node.js and async/webhook examples are in the endpoint documentation.

Request parameters

Parameter Description Default
prompt* The query or question (1-10,000 characters), or an array of up to 5 for a multi-turn conversation (result is then an array) –
country* Country code for localized results (US, GB, DE) –
state US state code for finer localization –
include.markdown Return the answer as Markdown false
include.html Return a URL to the full HTML (expires after 24h) false
include.rawResponse Return the unparsed upstream payload false
include.searchQueries Return the query fan-out terms ChatGPT searched false
include.shopping Return shopping cards and inline products false
include.ads Return sponsored blocks false
disableWebSearch Return the answer ChatGPT gives on its own instead of forcing a web search false

* Required

What data does the ChatGPT scraper return?

{
  "success": true,
  "result": {
    "text": "For remote teams, the strongest options are...",
    "citationPills": [{ "citationPillId": 0, "label": "Asana", "url": "https://asana.com", "domain": "asana.com" }],
    "searchQueries": ["best project management software 2026", "asana vs monday remote teams"],
    "markdown": "For remote teams, the strongest options are **Asana**..."
  }
}

Alongside text and markdown:

  1. sources: every cited URL with position, label and description.
  2. citationPills: the inline citation chips, one entry per cited source, sharing a citationPillId when a pill cites several.
  3. entities: the products, brands and concepts the answer names, each with a type.
  4. searchQueries: the query fan-out. ChatGPT decomposes one prompt into several searches, and these are the terms it actually ran, which is the clearest signal of how it read the question. It comes back empty on ChatGPT's default mobile-web interface; legacy: true asks for the legacy interface that returns it, on a best-effort basis (why).
  5. shoppingCards: product carousels, each grouping products[] with their price and merchant offers (schema).
  6. inlineProducts: products embedded in the answer text, separate from the carousels.
  7. ads: sponsored blocks, parsed. ChatGPT currently shows them only in answers to a follow-up prompt, and far more often on the legacy interface: send prompt as an array with legacy: true (details).
  8. map: business and location entries with rating, reviews and address.
  9. rawResponse: the unparsed upstream payload, when you want to parse it yourself.
  10. followUpForm: the form ChatGPT shows to refine the prompt: its questions, their options and the follow-up prompt it would send (schema). null when the answer has no form.

Full field-level schemas are in the endpoint reference.

Use cases

  • Brand monitoring: whether ChatGPT names you, and which sources it cites when it does.
  • Competitive intelligence: who else is named on the prompts your buyers ask.
  • Shopping and commerce: track how products surface in ChatGPT's shopping cards.
  • Query fan-out research: see the sub-queries behind an answer, which is what you can actually optimize for.

FAQ

Why not use the official OpenAI API?

With its web search tool it searches and cites sources, but it cites a different set of pages than ChatGPT shows its users. cloro reads ChatGPT's web interface in a real browser session, the surface users see.

Playwright or a paid API for scraping AI chat answers?

With Playwright you run the browser sessions, proxies, retries and parsing yourself. cloro runs them behind one API call: a real browser session on ChatGPT's web interface through a proxy in the country you set, up to 5 attempts, and JSON back. You pay only for results. It also returns Perplexity, Gemini, Copilot, Google AI Mode and AI Overview answers.

Is scraping ChatGPT allowed?

cloro reads publicly visible responses from its own sessions. Do not use it to access other users' conversations or private data, and check your own jurisdiction and terms.

Can I extract ChatGPT shopping results and product recommendations?

Yes. Set include.shopping: true. ChatGPT's current model shows products as cards in the answer, and they come back in inlineProducts with title, price, description, images, offers and the citations behind each product. Add include.productDetails: true for the rationale and reviews. Shopping is a +2 credit add-on; product details add +2 more. Older models also fill shoppingCards.

How often do the selectors break?

OpenAI ships UI changes roughly weekly, and dynamic CSS class names change between deploys. That maintenance is the point of a managed endpoint; a DIY scraper returns empty results rather than errors when it breaks, so alert on success rate rather than exceptions.

What is the recommended timeout?

At least 5 minutes (300 seconds), because cloro retries failed attempts server-side before it answers (retries and cancellation). Use the async endpoint for batches.

Learn more

Other cloro scrapers

AI Mode · AI Overview · Copilot · Gemini · Google Search · Google News · Perplexity

Contact us

Questions or support: ask the docs AI assistant.

About

ChatGPT scraper API: get ChatGPT answers and shopping results without the OpenAI API, no OpenAI key or ChatGPT account needed. Returns JSON with text, markdown, sources, citations, product recommendations, search queries and ads. An LLM scraper API: each request runs a real browser and retries on its own.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors