# ChatGPT Search Scraper — Answers, Sources & Citations (`memo23/chatgpt-search-scraper`) Actor

Scrape ChatGPT Search for any query: the full AI answer, every cited source with title and URL, and follow-up questions. No OpenAI key, no login. Paste a list of queries and export JSON, CSV or Excel.

- **URL**: https://apify.com/memo23/chatgpt-search-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** SEO tools, AI, Automation
- **Security:** Limited permissions
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 chatgpt answers

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## ChatGPT Search Scraper — Answers, Sources & Citations

> **$0.004 per answer** · no OpenAI key · no login · the answer *and* every source it cited

Ask **ChatGPT Search** anything and get the answer back as data: the full answer text, every **cited source** with its title, domain and URL, and the follow-up questions ChatGPT suggests. Paste one query or a thousand, one per line, and export JSON, CSV or Excel.

### Why use this scraper

- **The citations, not just the prose.** Every source ChatGPT leaned on comes back with title, domain and URL, so you can see which pages the model is actually repeating.
- **No key, no account.** You do not need an OpenAI subscription or an API key. Paste queries and run.
- **Built for lists.** One query per line, answered in parallel, one row each.
- **Priced per answer.** $0.004 when an answer comes back, nothing when one does not.
- **Same row shape as our other AI engines.** The Perplexity Search Scraper and the combined AI Search Scraper emit identical fields, so one parser reads all three.

### Use cases

- See which domains ChatGPT cites for the queries that matter to your brand.
- Track whether your site is being used as a source, and which page.
- Compare ChatGPT's answer against Perplexity's for the same question.
- Feed answers and sources into an LLM visibility or share-of-voice report.
- Pull answers in bulk for research, content planning or competitive monitoring.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `queries` | string | — (required) | One query per line |
| `maxItems` | integer | `10000` | Hard cap on answer rows |
| `maxConcurrency` | integer | `4` | Queries answered in parallel |
| `proxy` | object | residential | Leave as is unless you supply your own |

```json
{
    "queries": "best CRM tools for startups\nbest project management software"
}
```

### Output

| Field | Description |
|---|---|
| `query` | The query this row answers |
| `engine` | Always `chatgpt` |
| `answer` | The full answer text |
| `sources` | `[{ url, domain, title }]` — every cited source |
| `sourceUrls` | The same URLs as a flat list, handy for sheets |
| `followUpQuestions` | Suggested next questions, when ChatGPT offers them |
| `model` | The model that answered |
| `scrapedAt` | ISO timestamp |

```json
{
    "query": "best CRM tools for startups",
    "engine": "chatgpt",
    "answer": "The best CRM for a startup depends on your business model, team size…",
    "sources": [
        { "url": "https://www.techsifted.com/roundups/best-crm-for-startups-2026/", "domain": "techsifted.com", "title": "Best CRM for Startups 2026" }
    ],
    "sourceUrls": ["https://www.techsifted.com/roundups/best-crm-for-startups-2026/"],
    "followUpQuestions": [],
    "model": "gpt-6",
    "scrapedAt": "2026-11-01T10:00:00.000Z"
}
```

### Pricing

**$0.004 per answer**, plus a $0.005 actor-start fee per GB of run memory. A query that returns no answer is not charged. 100 answers cost $0.40.

### FAQ

**Do I need an OpenAI API key?** No. Neither a key nor a login.

**How many queries can I send?** As many as you like — one per line. They are answered in parallel and capped by `maxItems`.

**Why did a query return no answer?** Occasionally a query is refused or times out. That row is skipped and not charged; the rest of the run is unaffected.

**Can I get Perplexity answers too?** Yes — the [Perplexity Search Scraper](https://apify.com/memo23/perplexity-search-scraper) does the same for Perplexity, and the [AI Search Scraper](https://apify.com/memo23/ai-search-scraper) runs ChatGPT, Perplexity and Google AI Overviews together in one job with the same output fields.

**Are the sources deduplicated?** They come back as ChatGPT cites them, in order, including repeats across sections, so you can see weighting.

### Support

Found a bug or need another field? Open an issue on the Actor's Issues tab — it is monitored.

### 🤖 For AI Agents & LLM Apps

**Purpose:** Turn a list of queries into ChatGPT Search answers with their citations.

**Minimal input (tested):**

```json
{ "queries": "best CRM tools for startups", "maxItems": 5 }
```

**Behaviors agents should know:**

- One row per query; `engine` is always `chatgpt`.
- `sources[]` and `sourceUrls[]` are parallel — same URLs, one with metadata.
- Billing is `chatgpt-answer` at $0.004, only on a returned answer. Bound with `maxItems`.
- `followUpQuestions` is often empty; treat it as optional.

### ⚠️ Disclaimer

This Actor retrieves publicly accessible answers from ChatGPT Search. Use the output in line with OpenAI's terms and applicable law; answers are machine-generated and may be wrong or out of date, so verify before relying on them. You are responsible for how you use the output.

### SEO Keywords

chatgpt search scraper, chatgpt scraper, chatgpt api alternative, scrape chatgpt answers, chatgpt citations, chatgpt sources, AI search scraper, LLM visibility, AI brand monitoring, generative engine optimization, GEO tracking, AI answer tracking, chatgpt search results, AI SEO, apify chatgpt.

# Actor input Schema

## `queries` (type: `string`):

What to ask ChatGPT Search — one query per line. Each line becomes one answer row.

## `maxItems` (type: `integer`):

Hard cap on answer rows for the whole run.

## `maxConcurrency` (type: `integer`):

How many queries run at once.

## `proxy` (type: `object`):

Leave as is unless you want to supply your own proxy. The Actor picks a suitable exit by default.

## Actor input object example

```json
{
  "queries": "best CRM tools for startups",
  "maxItems": 10000,
  "maxConcurrency": 4,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": "best CRM tools for startups"
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/chatgpt-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "queries": "best CRM tools for startups" }

# Run the Actor and wait for it to finish
run = client.actor("memo23/chatgpt-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": "best CRM tools for startups"
}' |
apify call memo23/chatgpt-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/chatgpt-search-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Mp74MnHJAcV0n9bhs/builds/xDixraVlgfJzmKFlG/openapi.json
