ChatGPT Scraper avatar

ChatGPT Scraper

Pricing

from $2.00 / 1,000 chatgpt searches

Go to Apify Store
ChatGPT Scraper

ChatGPT Scraper

Send prompts to chatgpt.com and get the answers back as structured JSON — text, markdown, HTML, citations and sources.

Pricing

from $2.00 / 1,000 chatgpt searches

Rating

0.0

(0)

Developer

R.L.

R.L.

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Ask ChatGPT anything at scale and get structured JSON back — the answer as plain text, markdown and HTML, plus the sources it cited when it searched the web.

No OpenAI API key, no ChatGPT account, no browser. This Actor talks to chatgpt.com's own logged-out web interface over plain HTTP, which makes it fast and cheap: 20 prompts answered in 50 seconds for 0.055 compute units.

What you can use it for

  • AI visibility / brand monitoring — track whether ChatGPT recommends you, and which sources it cites when it does.
  • SEO and citation research — see which domains ChatGPT pulls from for a topic, with titles and publication dates.
  • Market and competitor research — ask the same question from different countries and compare the answers.
  • Content and product research — batch hundreds of prompts and get a clean dataset instead of copy-pasting from a chat window.

Input

FieldTypeDescription
promptsstring[]Required. One prompt per conversation, up to 4096 characters each.
countrystringAnswer as if browsing from this country. Picked from a dropdown; needs a proxy to have any effect.
additionalPromptstringA follow-up asked in the same conversation. Its answer is the one saved.
requireSourcesbooleanFlag answers that cite no web sources as failed.
maxConcurrencyintegerPrompts answered at once. Default 5, max 20.
maxRetriesintegerRetries per prompt, each from a fresh session and exit node. Default 3.
proxyConfigurationobjectResidential proxy strongly recommended — see Proxies.
{
"prompts": [
"Top hotels in New York",
"What are the biggest business trends to watch in the next five years?"
],
"country": "us",
"additionalPrompt": "Which of these are pet-friendly?",
"maxConcurrency": 5,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Every prompt in a run uses the same country and additionalPrompt. To compare countries, run one task per country.

Output

One dataset row per prompt.

{
"url": "https://chatgpt.com/?q=Name+exactly+three+rivers+in+Lithuania",
"prompt": "Name exactly three rivers in Lithuania",
"answer_text": "Nemunas\nNeris\nVenta",
"answer_text_markdown": "- Nemunas\n- Neris\n- Venta",
"answer_html": "<ul>\n<li>Nemunas</li>\n<li>Neris</li>\n<li>Venta</li>\n</ul>\n",
"model": null,
"web_search_triggered": false,
"citations": [],
"references": [],
"search_sources": [],
"links_attached": [],
"country": null,
"prompt_sent_at": "2026-09-10T13:57:19.000Z",
"index": 0,
"conversation_id": "6aa2b73f-4cec-83ea-a725-21ed1554e4f0"
}
FieldDescription
answer_text / answer_text_markdown / answer_htmlThe same answer as plain text, markdown and rendered HTML.
web_search_triggeredWhether ChatGPT went to the web for this answer.
citationsInline sources attached to individual claims: {url, title, attribution, position, published_at?, is_supporting?}.
referencesThe answer-level source list behind ChatGPT's "Sources" button, same shape. A URL can appear in both — ChatGPT shows them as separate things.
search_sourcesEvery source touched, deduplicated: {url, title, favicon}.
links_attachedLinks written into the answer body: {url, text, position}.
indexPosition of the prompt in your input.
conversation_idChatGPT's id for the conversation the answer came from.
modelAlways null — the logged-out interface never names the model it used.

Prompts that fail after every retry are still saved, carrying error and error_code instead of an answer, so a run never silently drops one.

Answers are pushed the moment they land, so with concurrency on, rows arrive out of order. Sort by index to get your input order back.

Pricing

$2 per 1000 searches ($0.002 each), charged per answer actually delivered. Prompts that fail cost nothing.

Proxies

ChatGPT rate limits datacenter IPs hard: they start timing out and then get blocked by Cloudflare after a few dozen requests. Run this on residential proxies, which is the default configuration. country works by choosing the proxy's exit node, so it does nothing without one.

Speed and reliability

Measured on 20 mixed prompts through Apify residential proxies:

SettingWall clockCompute units
maxConcurrency: 1278s0.308
maxConcurrency: 550s0.055

Individual prompts take roughly 8-25 seconds depending on answer length and whether ChatGPT searches the web.

Transient failures happen — a dead proxy exit, an HTTP 503 from ChatGPT, or ChatGPT deciding a particular session must sign in. Each is retried from a fresh session and a different exit node with growing backoff, and in testing every one recovered: 60 out of 60 prompts answered across runs at both concurrency settings.

How it works

ChatGPT's logged-out interface is a server-rendered web app, so a whole turn can run over plain HTTP requests: the Actor completes the site's anti-bot handshake (including its proof-of-work challenge), submits the prompt, and reads the streamed answer, which arrives with markdown, HTML and source metadata already attached. No browser is started, which is why runs are quick and cheap compared with browser-driven scrapers.

Limitations

  • One country per run.
  • Answers come from the logged-out ChatGPT, so there is no account history, no file uploads, no image generation, and no choice of model.
  • ChatGPT is non-deterministic: the same prompt can return different answers and cite different sources on different runs.
  • Answers can be wrong or out of date. Treat the cited sources as the ground truth, not the prose.