# ChatGPT Search Scraper: Answers, Citations & Sources API (`plainrows/chatgpt-search-scraper`) Actor

ChatGPT Search Scraper and MCP tool: send prompts, get ChatGPT's answer with web search as JSON: markdown text, ChatGPT citations and sources, search results, fan-out queries, brands and products. No account, no browser. $0.008 per answer, plus $0.001 per run; empty or failed answers are free.

- **URL**: https://apify.com/plainrows/chatgpt-search-scraper.md
- **Developed by:** [PlainRows](https://apify.com/plainrows) (community)
- **Categories:** AI, SEO tools, Developer tools
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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, Citations & Sources API

Give it **a list of prompts** and get one row per prompt: **ChatGPT's answer with web search (Markdown), every source it cites (rank, URL, domain, title), the web search results it read, the searches it ran (fan-out queries), and the brands and products it names**.

A **ChatGPT scraper alternative**: no browser, no proxies, no CAPTCHAs, no OpenAI account. Prompts run five at a time, usually 15 to 30 seconds each; a prompt not answered within 3 minutes gets a free row. **You only pay for prompts that got an answer: $0.008 per answer**, plus $0.001 per run.

**Where the answers come from:** this Actor gets ChatGPT's answers (with web search) through a commercial data API that collects them from ChatGPT. Answers vary with the model, the time and the location, so they can differ from what you see in your own ChatGPT account.

### Typical uses

- **AI search visibility (GEO / AEO)**: which sites does ChatGPT cite, which brands and products does it recommend, for the prompts your buyers type?
- **Citation research**: `sources` and `citedDomains` show the pages ChatGPT relies on; `searchResults` shows what it read but did not cite.
- **Query research**: `fanOutQueries` shows the web searches ChatGPT ran behind one prompt: keywords to target.
- **Answers with sources for your app or agent**: ChatGPT search as plain JSON, with the citations kept apart from the text.
- **Weekly reports**: schedule a run and send the rows to Google Sheets, Looker Studio, Slack, n8n, Make or Zapier.

### What you get for each prompt

| Field | Description |
|---|---|
| `prompt` | The prompt asked |
| `answer`, `answerLength` | ChatGPT's answer as Markdown (headings, lists, tables, images, links) |
| `sources`, `sourcesCount` | Each cited source: `rank`, `url`, `domain`, `title`, `snippet`, `publicationDate` (up to 50) |
| `citedDomains` | Domains cited, in order, without duplicates |
| `searchResults`, `searchResultsCount` | Web search results ChatGPT read: `rank`, `url`, `domain`, `title`, `description` (up to 50) |
| `fanOutQueries` | Web searches ChatGPT ran for the answer |
| `brandEntities` | Brands and products named in the answer: `name` (as written), `title`, `category`, `urls` |
| `products` | The brand entities of category `product` |
| `model`, `chatgptUrl`, `answeredAt` | Model reported by the data source, a link that opens the prompt in ChatGPT, when it answered |
| `found`, `status`, `message` | `ANSWERED` for a billed row; free rows say why: `EMPTY_ANSWER`, `UNREADABLE`, `REJECTED`, `PROVIDER_ERROR`, `NOT_CHECKED` |
| `country`, `languageCode`, `checkedAt` | Location and language of the answer; when the run started |

Missing values are `null` or empty lists, never guessed.

### Input

```json
{
  "prompts": ["best standing desk for small spaces", "Which CRM do small agencies recommend in 2026?"],
  "country": "US",
  "languageCode": "en",
  "includeSearchResults": true
}
```

- **prompts**: up to 200 prompts per run, 1 to 500 characters each. Each prompt is one answer.
- **country** (default US): US, GB, CA, AU, IE, IN, DE, AT, CH, FR, BE, ES, MX, IT, NL, PT, BR, PL, SE, JP.
- **languageCode** (optional): two-letter code; default is the main language of the country.
- **includeSearchResults** (default true): turn it off to keep only the count of search results. The price does not change.

### Pricing

Pay per event, no subscription:

- **ChatGPT answer: $0.008** per prompt that got a non-empty answer, at every Apify plan, free plan included.
- **Actor start: $0.001** per run.

Empty answers, prompts the data source refused or failed, answers that came back in an unexpected format, and prompts not reached (budget or timeout) get a free row with `found: false` and the reason. The run never spends more than the maximum cost you set.

**Free Apify plan:** each run asks the first 3 prompts, so you can test the output. A paid Apify plan removes this limit.

### Good to know

- **Answers vary from one run to the next**, even for the same prompt: track trends over several runs, not a single answer.
- Not every answer cites sources: ChatGPT searches the web when it decides to, so `sources` can be empty on general-knowledge prompts (the answer is still billed).
- For one table of brand mentions across ChatGPT, Gemini and Google AI Mode, use [AI Visibility Tracker](https://apify.com/plainrows/ai-search-brand-visibility); for Perplexity, [Perplexity Search API](https://apify.com/plainrows/perplexity-search-api).
- Not affiliated with OpenAI.

### What this is not

- Not the OpenAI API: you cannot pick the model, set a system prompt or continue a conversation. One prompt, one fresh answer.
- Not a login-based scraper: no account, no chat history, no personal context.
- Not a rank tracker for Google: for Google results use a SERP tool.

### Run summary

Each run stores a summary in the key-value store (`OUTPUT`): prompts asked, answers billed, empty answers (`promptsEmpty`), prompts that failed and are worth a retry (`promptsFailed`), unreadable answers (`promptsUnreadable`), and anything skipped because of the free-plan or budget limit.

### Use it from code, automations or AI agents

**API (one call, results returned directly):**

```bash
curl -X POST "https://api.apify.com/v2/acts/plainrows~chatgpt-search-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"prompts": ["best standing desk for small spaces"]}'
```

**n8n, Make, Zapier:** use the Apify integration, pick `plainrows/chatgpt-search-scraper`, schedule it and send the rows to Google Sheets or Slack.

**AI agents (MCP tool):** add `https://mcp.apify.com?tools=plainrows/chatgpt-search-scraper` to Claude, Cursor or any MCP client, then ask "What does ChatGPT answer to these prompts, and which sites and products does it cite?".

### FAQ

**Is this a ChatGPT search API?**
Yes: one call per list of prompts, JSON rows back with the answer, its sources and the searches behind it, usable from the Apify API, n8n, Make, Zapier or as an MCP tool.

**How do I see if ChatGPT cites my site?**
Look for your domain in `citedDomains` (and its position in `sources.rank`); `searchResults` tells you if ChatGPT read your page without citing it.

**Do I pay for empty answers or errors?**
No. Only prompts with a non-empty answer are charged ($0.008), plus $0.001 per run.

### More PlainRows tools

Same pay-per-result pricing, same clean JSON, built to chain together in n8n, Make, Zapier or AI agents.

- **SEO and keywords:** [Keyword Search Volume, CPC & Difficulty](https://apify.com/plainrows/keyword-search-volume) · [Keyword Planner Alternative (Bulk Search Volume & CPC)](https://apify.com/plainrows/keyword-planner-alternative) · [Google Keyword Planner API (Google Ads Search Volume & CPC)](https://apify.com/plainrows/google-keyword-planner-api) · [Bing Keyword Search Volume & CPC](https://apify.com/plainrows/bing-keyword-search-volume) · [Keyword Ideas Generator](https://apify.com/plainrows/keyword-ideas-generator) · [Google Autocomplete & People Also Ask](https://apify.com/plainrows/google-autocomplete-questions) · [Google Trends Explorer](https://apify.com/plainrows/google-trends-explorer) · [Google Trends Keyword Discovery (Rising & Related)](https://apify.com/plainrows/google-trends-keyword-discovery) · [Website Organic Traffic & Top Keywords](https://apify.com/plainrows/domain-seo-overview) · [Competitor Keywords API (Ranked Keywords)](https://apify.com/plainrows/competitor-keywords-api) · [Bulk Website Traffic Checker](https://apify.com/plainrows/website-traffic-checker) · [SEO Competitors & Keyword Gap Finder](https://apify.com/plainrows/seo-competitors-keyword-gap) · [PPC Competitor Keywords (SpyFu Alternative)](https://apify.com/plainrows/ppc-competitor-keywords) · [Bulk Domain Authority Checker](https://apify.com/plainrows/domain-authority-checker) · [Backlink Checker](https://apify.com/plainrows/backlink-checker) · [Backlink API (Referring Domains & Backlinks Data)](https://apify.com/plainrows/backlink-api) · [Broken Link Checker](https://apify.com/plainrows/broken-link-checker) · [SEO Audit API (On-Page SEO Checker)](https://apify.com/plainrows/seo-audit-api) · [AI Search Visibility Tracker (ChatGPT, Gemini, AI Mode)](https://apify.com/plainrows/ai-search-brand-visibility) · [AI Overview Tracker (Google AI Overview Citations)](https://apify.com/plainrows/ai-overview-tracker) · [Perplexity Search API (Answers & Citations)](https://apify.com/plainrows/perplexity-search-api) · [AI Citations Finder (LLM Mentions in ChatGPT & AI Overviews)](https://apify.com/plainrows/ai-citations-finder) · [Keyword Rank Checker (Google SERP Position)](https://apify.com/plainrows/keyword-rank-checker) · [Google Search API (SERP Scraper & Web Results)](https://apify.com/plainrows/google-search-api) · [Bing Search API (Bing SERP & Web Results)](https://apify.com/plainrows/bing-search-api) · [Google Maps Rank Tracker (Geo-Grid Local SEO)](https://apify.com/plainrows/google-maps-rank-tracker)
- **Leads and companies:** [Google Maps Scraper](https://apify.com/plainrows/google-maps-businesses) · [Google Maps Email Extractor](https://apify.com/plainrows/google-maps-email-extractor) · [Google Maps Businesses Without Website](https://apify.com/plainrows/google-maps-no-website-leads) · [Yellow Pages Australia Scraper](https://apify.com/plainrows/yellowpages-au-scraper) · [Website Technology Checker](https://apify.com/plainrows/website-tech-stack) · [Website Email Extractor](https://apify.com/plainrows/website-email-extractor) · [Contact Details Scraper (Emails, Phones, Socials)](https://apify.com/plainrows/contact-details-scraper) · [ATS Jobs Scraper (Workday, Greenhouse, Lever, Ashby)](https://apify.com/plainrows/ats-job-postings) · [Workday Jobs Scraper](https://apify.com/plainrows/workday-jobs-scraper) · [Greenhouse Jobs Scraper](https://apify.com/plainrows/greenhouse-jobs-scraper) · [Lever Jobs Scraper](https://apify.com/plainrows/lever-jobs-scraper) · [Ashby Jobs Scraper](https://apify.com/plainrows/ashby-jobs-scraper) · [Google Jobs Scraper](https://apify.com/plainrows/google-jobs-scraper) · [Reed.co.uk Jobs Scraper (UK)](https://apify.com/plainrows/reed-jobs-scraper) · [jobs.ch & jobup.ch Jobs Scraper (Switzerland)](https://apify.com/plainrows/jobs-ch-scraper) · [Arbeitsagentur Jobs Scraper (Germany)](https://apify.com/plainrows/arbeitsagentur-jobs-scraper) · [Gupy Jobs Scraper (Brazil)](https://apify.com/plainrows/gupy-jobs-scraper) · [Catho Jobs Scraper (Brazil)](https://apify.com/plainrows/catho-jobs-scraper) · [Vagas.com.br Jobs Scraper (Brazil)](https://apify.com/plainrows/vagas-jobs-scraper) · [Jobs.cz Scraper (Czech Republic)](https://apify.com/plainrows/jobs-cz-scraper) · [Remote Jobs Scraper (Himalayas, RemoteOK, Jobicy)](https://apify.com/plainrows/remote-jobs-aggregator) · [Google Ads Scraper (Transparency Center)](https://apify.com/plainrows/google-ads-transparency) · [Company Registry Lookup (SIRENE, LEI, Brreg)](https://apify.com/plainrows/company-registry-lookup) · [Public Tenders Search (EU TED & UK)](https://apify.com/plainrows/public-tenders-search)
- **E-commerce and travel:** [Amazon Product Search Scraper](https://apify.com/plainrows/amazon-product-search) · [Amazon Keyword Research (Search Volume & Reverse ASIN)](https://apify.com/plainrows/amazon-keyword-research) · [Google Shopping Prices Scraper](https://apify.com/plainrows/google-shopping-prices) · [Google Hotels Prices Scraper](https://apify.com/plainrows/google-hotels-prices) · [Google Hotels Scraper](https://apify.com/plainrows/google-hotels-scraper) · [Tripadvisor Reviews Scraper](https://apify.com/plainrows/tripadvisor-reviews) · [Trustpilot Reviews Scraper](https://apify.com/plainrows/trustpilot-reviews)
- **Marketplaces and classifieds:** [Property Finder Scraper (UAE)](https://apify.com/plainrows/propertyfinder-scraper) · [Redfin Scraper (US Homes for Sale)](https://apify.com/plainrows/redfin-scraper) · [Otomoto Scraper (Polish Car Listings)](https://apify.com/plainrows/otomoto-scraper) · [Otodom Scraper (Poland Property)](https://apify.com/plainrows/otodom-scraper) · [Imovirtual Scraper (Portugal Property)](https://apify.com/plainrows/imovirtual-scraper) · [Standvirtual Scraper (Portugal Cars)](https://apify.com/plainrows/standvirtual-scraper) · [Immoweb Scraper (Belgium Property)](https://apify.com/plainrows/immoweb-scraper) · [Blocket Scraper (Sweden)](https://apify.com/plainrows/blocket-scraper) · [FINN.no Scraper (Norway)](https://apify.com/plainrows/finn-scraper) · [coches.net Scraper (Spain Cars)](https://apify.com/plainrows/coches-net-scraper) · [2dehands Scraper (Belgium)](https://apify.com/plainrows/2dehands-scraper) · [Storia Scraper (Romania Property)](https://apify.com/plainrows/storia-scraper) · [Autovit Scraper (Romania Cars)](https://apify.com/plainrows/autovit-scraper) · [FINN.no Car Scraper (Norway Cars)](https://apify.com/plainrows/finn-cars-scraper) · [DBA Scraper (Denmark)](https://apify.com/plainrows/dba-scraper) · [Tori.fi Scraper (Finland)](https://apify.com/plainrows/tori-scraper)
- **Content and media:** [Google News Scraper](https://apify.com/plainrows/google-news-scraper) · [YouTube Search Scraper](https://apify.com/plainrows/youtube-search-scraper) · [YouTube Search API (JSON)](https://apify.com/plainrows/youtube-search-api) · [YouTube Comments Scraper](https://apify.com/plainrows/youtube-comments-scraper) · [Google Images Scraper](https://apify.com/plainrows/google-images-scraper) · [Website Screenshot API](https://apify.com/plainrows/website-screenshot) · [PDF to Markdown Converter (PDF to Text for AI & RAG)](https://apify.com/plainrows/pdf-to-markdown) · [Google Maps Reviews Scraper](https://apify.com/plainrows/google-maps-reviews) · [Google Reviews Scraper](https://apify.com/plainrows/google-reviews-scraper) · [App Store & Google Play Reviews Scraper](https://apify.com/plainrows/app-reviews-scraper) · [App Store & Google Play App Details Scraper](https://apify.com/plainrows/app-details-scraper) · [Google Play Reviews Scraper](https://apify.com/plainrows/google-play-reviews-scraper) · [App Store Reviews Scraper](https://apify.com/plainrows/app-store-reviews-scraper)

### Support

Missing a field or found a bug? Open an issue on this page. Issues are read and answered.

# Actor input Schema

## `prompts` (type: `array`):

One prompt per line, as you would type it in ChatGPT. Up to 200 prompts per run, 1 to 500 characters each. Each prompt is one ChatGPT answer with web search.

## `country` (type: `string`):

Country ChatGPT answers and searches the web from (two-letter ISO code).

## `languageCode` (type: `string`):

Two-letter language code, e.g. "en", "de", "fr". Default: the main language of the country.

## `includeSearchResults` (type: `boolean`):

Add the web search results ChatGPT read (url, domain, title, description). Off: only their count. The price per answer does not change.

## Actor input object example

```json
{
  "prompts": [
    "best standing desk for small spaces",
    "Which CRM do small agencies recommend in 2026?"
  ],
  "country": "US",
  "includeSearchResults": true
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "prompts": [
        "best standing desk for small spaces",
        "Which CRM do small agencies recommend in 2026?"
    ],
    "country": "US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("plainrows/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 = {
    "prompts": [
        "best standing desk for small spaces",
        "Which CRM do small agencies recommend in 2026?",
    ],
    "country": "US",
}

# Run the Actor and wait for it to finish
run = client.actor("plainrows/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 '{
  "prompts": [
    "best standing desk for small spaces",
    "Which CRM do small agencies recommend in 2026?"
  ],
  "country": "US"
}' |
apify call plainrows/chatgpt-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,plainrows/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/NADCvY5zPW6fyIxDf/builds/9scnaGCf1dPhtsZ1O/openapi.json
