> ## Documentation Index
> Fetch the complete documentation index at: https://docs.brightdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ChatGPT Scraper API

> Use the Bright Data [ChatGPT Scraper API](https://brightdata.com/products/web-scraper/chatgpt) to extract structured search results, citations and answers. Handles up to 20 inputs per request.

Send a prompt, get structured search results back. The Bright Data ChatGPT Scraper API handles proxies, browser automation, and parsing so you can focus on your data pipeline.

<Tip>
  New to Bright Data? [Create a free account](https://brightdata.com/products/web-scraper/chatgpt?hs_signup=1\&utm_source=docs) and get **5,000 free credits every month**, no credit card required. That's up to **5,000 ChatGPT records** to start scraping. See the [free tier](/general/account/billing-and-pricing/free-tier).
</Tip>

## How it works

You send a prompt to the Bright Data ChatGPT Scraper API. Bright Data handles the scraping infrastructure and returns clean, structured JSON with the answer, citations, and sources.

```text theme={null}
Your app  -->  Bright Data API  -->  Structured JSON
           POST /datasets/v3/scrape
           Authorization: Bearer YOUR_API_KEY
```

All requests use the `dataset_id` for ChatGPT Search and return results in JSON, NDJSON, or CSV.

## What the response looks like

A single record returned by the Bright Data ChatGPT Scraper API on September 6, 2026, trimmed to the fields shown. Run the request yourself in the [quickstart](/products/scrapers/chatgpt/quickstart).

```json theme={null}
{
  "url": "https://chatgpt.com/?q=Top%20hotels%20in%20New%20York",
  "prompt": "Top hotels in New York",
  "answer_text": "Map data is currently unavailable Aman New York 4.3 Отель 2 450 $ The Plaza Hotel The Carlyle, A Rosewood Hotel 4.5 Отель 1 359 $ The Mark Hotel 4.5 Отель 2...",
  "model": null,
  "web_search_triggered": true,
  "citations": [
    {
      "url": "https://www.timeout.com/newyork/hotels/best-luxury-hotels-in-nyc?utm_source=chatgpt.com",
      "title": "16 Best Luxury Hotels in New York City For 2026 | World-Class Hotels in NYC",
      "description": "Time Out Worldwide",
      "icon": null
    }
  ],
  "search_sources": [
    {
      "url": "https://www.timeout.com/newyork/hotels/best-luxury-hotels-in-nyc?utm_source=chatgpt.com",
      "title": "16 Best Luxury Hotels in New York City For 2026 | World-Class Hotels in NYC",
      "snippet": null,
      "rank": 1
    }
  ],
  "prompt_sent_at": "2026-09-06T10:22:47.311Z",
  "answer_html": "<html lang=\"en-US\" dir=\"ltr\" data-theme=\"light\" data-contrast=\"default\" data-build=\"prod-4ec31e730ff961987ab0f9a7e9dd6248f66da3b0\" data-close-image-viewer=\"C...",
  "is_map": true
}
```

## Which capabilities are supported

<CardGroup cols={2}>
  <Card title="Search with Citations" icon="quote-right" href="/api-reference/scrapers/ai-search-apis/chatgpt-search-by-prompt">
    Get structured answers with source citations, positions, and linked references from ChatGPT web search.
  </Card>

  <Card title="Follow-up Prompts" icon="comments" href="/api-reference/scrapers/ai-search-apis/chatgpt-search-by-prompt">
    Send an additional prompt to get follow-up answers within the same search context.
  </Card>

  <Card title="Shopping and Map Results" icon="store" href="/api-reference/scrapers/ai-search-apis/chatgpt-search-by-prompt">
    Detect when ChatGPT returns shopping product cards or map-based results for location queries.
  </Card>

  <Card title="Web Search Control" icon="globe" href="/products/scrapers/concepts/query-fan-out">
    Use `web_search` to allow or disable live web search and `web_search_triggered` to know whether a search actually ran.
  </Card>
</CardGroup>

## Request methods

The Bright Data Scraper API supports two request methods. Choose based on your volume and latency needs.

| Method           | Endpoint                                                         | Best for                                          |
| :--------------- | :--------------------------------------------------------------- | :------------------------------------------------ |
| **Synchronous**  | `/scrape`                                                        | Real-time lookups, up to 20 URLs                  |
| **Asynchronous** | [`/trigger`](/products/scrapers/scrapers-library/async-requests) | Batch jobs, 20 or more URLs, production pipelines |

Learn more in [Understanding sync vs. async requests](/concepts/sync-vs-async).

Both endpoints accept the inputs as a bare JSON array, which is what every example on this page uses, or as an object with an `input` array. Use the object form when you also send `custom_output_fields` or `limit_per_input` on either endpoint, or a `deliver` block on `/trigger`. See [Request body](/api-reference/scrapers/synchronous-requests#request-body).

## Capabilities and limits

| Capability                     | Detail                                                                                                                                                                                                                                    |
| :----------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Output formats**             | JSON, NDJSON, CSV                                                                                                                                                                                                                         |
| **Max URLs per sync request**  | 20                                                                                                                                                                                                                                        |
| **Max URLs per async request** | Unlimited, up to 1 GB of input per job                                                                                                                                                                                                    |
| **Data freshness**             | Real-time (scraped on demand)                                                                                                                                                                                                             |
| **Delivery options**           | API download, [webhook](/products/scrapers/scrapers-library/data-delivery), [Amazon S3](/products/scrapers/scrapers-library/data-delivery), Snowflake, Azure, GCS ([all destinations](/products/scrapers/scrapers-library/data-delivery)) |
| **Pricing**                    | Pay per successful record ([see pricing](https://brightdata.com/pricing/web-scraper))                                                                                                                                                     |

## Which other AI answer engines have a scraper

The scraper library also covers five other engines. Each takes a prompt and returns the answer with its citations; each link opens the scraper in the Control Panel, and each country list says where the engine can be targeted.

| Engine         | Scraper                                                                                             | Country list                                                                                                                             |
| :------------- | :-------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |
| Perplexity     | [Open in the Control Panel](https://brightdata.com/cp/scrapers/browse?domain=perplexity.ai)         | [Countries](https://github.com/brightdata/answer-engines-country-codes/blob/main/perplexity_countries.csv)                               |
| Gemini         | [Open in the Control Panel](https://brightdata.com/cp/scrapers/browse?domain=gemini.google.com)     | [Countries](https://github.com/brightdata/answer-engines-country-codes/blob/main/gemini_countries.csv), European countries not available |
| Copilot        | [Open in the Control Panel](https://brightdata.com/cp/scrapers/browse?domain=copilot.microsoft.com) | [Countries](https://github.com/brightdata/answer-engines-country-codes/blob/main/copilot_countries.csv)                                  |
| Google AI Mode | [Open in the Control Panel](https://brightdata.com/cp/scrapers/browse?domain=google.com)            | [Countries](https://github.com/brightdata/answer-engines-country-codes/blob/main/google_aimode_countries.csv)                            |
| Grok           | Currently unavailable                                                                               | [Countries](https://github.com/brightdata/answer-engines-country-codes/blob/main/grok_countries.csv)                                     |

ChatGPT's own country list is on [GitHub](https://github.com/brightdata/answer-engines-country-codes/blob/main/chatgpt_countries.csv). Web search control differs by engine: ChatGPT and Grok take the `web_search` input, Gemini decides on its own. See [Query fan-out and web search control](/products/scrapers/concepts/query-fan-out).

## Common questions

### Is the data scraped in real time?

Yes. Each request triggers a live ChatGPT search session. There is no cached or stale data. Processing time varies with prompt complexity, whether web search is enabled and scraper workload. The Bright Data ChatGPT Scraper API does not publish a fixed response time. A synchronous request waits up to 1 minute, then returns HTTP `202` with a `snapshot_id` and continues asynchronously.

### Why do response times change over time?

OpenAI changes how its pages are served, and the Bright Data ChatGPT Scraper API collectors are updated to match. A collector update can change how long a scrape takes even when the success rate stays the same. For production workloads, build against the [async workflow](/products/scrapers/scrapers-library/async-requests) or [webhook delivery](/products/scrapers/scrapers-library/data-delivery) so a longer run does not break the integration.

### Can I maintain conversation context across requests?

No. Each request starts a fresh ChatGPT session. There is no memory or context carried over between requests. To ask a follow-up question within a single request, use the `additional_prompt` field.

### How is this different from scraping using proxies or Web Unlocker API?

When scraping using proxies or Web Unlocker API, you still need to write and maintain your own parsing logic and update it whenever the target site changes its page structure. The Bright Data Scraper API handles the entire stack: proxy rotation, anti-bot bypassing and parsing. You send a URL or keyword and get clean, structured JSON back, with no scraping infrastructure or parser maintenance on your end.

## Next steps

<CardGroup cols={3}>
  <Card title="Quickstart" icon="rocket" href="/products/scrapers/chatgpt/quickstart">
    Search ChatGPT with your first prompt in 5 minutes.
  </Card>

  <Card title="Endpoints" icon="bolt" href="/products/scrapers/chatgpt/send-first-request">
    One request per endpoint, each with a captured response.
  </Card>

  <Card title="API reference" icon="code" href="/api-reference/scrapers/ai-search-apis/chatgpt-search-by-prompt">
    Endpoint specs, parameters, and response schemas.
  </Card>
</CardGroup>
