ChatGPT answers API

ChatGPT Scraper API: ChatGPT Answers and Citations as JSON

Searlo's ChatGPT scraper API asks chatgpt.com your prompt as a logged-out visitor and returns the answer, its citations and the list of cited domains as JSON, so you can track whether ChatGPT names your brand and which sites it sends people to. Each answer costs 8 credits.

GET/api/v1/search/web?q=postgres+connection+pooling&num=3
200 OK0.17s1 credit85,000 results
{  "searchTime": 0.17,  "totalResults": 85000,  "page": 1,  "organic": [    {      "position": 1,      "title": "31.10. Connection Pools and Data Sources",      "link": "www.postgresql.org/docs/…",      "domain": "postgresql.org",      "snippet": "For an environment without an application se…"    },    { "position": 2, "domain": "medium.com", … },    { "position": 3, "domain": "stackoverflow.blog", … }  ],  "credits": 1}

How do you scrape ChatGPT responses with their citations?

Send the prompt to GET /search/ai/chatgpt. Searlo asks chatgpt.com in a real browser session as a logged-out visitor, waits for the answer to finish, and returns the text, the citations and the cited domains as JSON. Each answer costs 8 credits, which is $2.40 per 1,000 answers at $0.30 per 1,000 credits.

It is the consumer answer, not an OpenAI API call, so it varies from run to run and a live one typically takes 10 to 30 seconds.

Endpoint
GET https://api.searlo.tech/api/v1/search/ai/chatgpt?q=…&gl=us&hl=en
Price
8 credits per answer: $2.40 per 1,000 at $0.30 per 1,000 credits, $1.60 on the Enterprise pack, $6.38 on the smallest pack— our pricing
Whose answer
A logged-out chatgpt.com visitor's: no account, history, memory or custom instructions
Latency and caching
Typically 10-30 s live; the same request within 1 hour is served from cache unless cache=false
Citations
Present when ChatGPT searches the web; a general-knowledge answer can have none
AI citations vs Google's top 10
On average 12% of URLs cited by ChatGPT, Gemini and Copilot rank in Google's top 10 for the same query (15,000 queries, August 2025)— Ahrefs

Third-party figures on this page last verified against the sources linked above. Prices change; if you find one of these stale, tell us and we will correct it.

What the ChatGPT scraper API returns

Ask ChatGPT which running shoe, CRM or agency to choose and it answers with a few names and, when it searched the web, a few cited pages. For anyone responsible for a brand's visibility, that answer is the thing to measure, and the only way to see it is to ask. Your Google rankings won't tell you: in Ahrefs' study of 15,000 queries, on average only 12% of the URLs cited by ChatGPT, Gemini and Copilot ranked in Google's top 10 for the same query.

GET /search/ai/chatgpt asks for you. Searlo opens chatgpt.com in a real browser session as a logged-out visitor, submits the prompt, waits for ChatGPT to finish writing and reads the answer off the page. You get the answer text, each citation with its index, URL, title and domain, and sources: the unique domains cited, which is the list you count for share of voice.

Logged out means no account, chat history, memory or custom instructions shape the answer. Runs are comparable with each other, and what you record is the ChatGPT that anyone without an account sees.

Searlo is independent and is not affiliated with, endorsed by or sponsored by OpenAI. ChatGPT is a trademark of OpenAI.

Ask ChatGPT in one request

Pass the prompt as q, with gl and hl for country and language. A live answer typically takes 10 to 30 seconds, so give your HTTP client a generous timeout.

curl "https://api.searlo.tech/api/v1/search/ai/chatgpt?q=best+running+shoes+for+flat+feet&gl=us&hl=en" \
  -H "x-api-key: YOUR_API_KEY"

# A fresh, independent sample (billed like any live call): add cache=false
curl "https://api.searlo.tech/api/v1/search/ai/chatgpt?q=best+running+shoes+for+flat+feet&gl=us&hl=en&cache=false" \
  -H "x-api-key: YOUR_API_KEY"
import requests

resp = requests.get(
    "https://api.searlo.tech/api/v1/search/ai/chatgpt",
    headers={"x-api-key": "YOUR_API_KEY"},
    params={"q": "best running shoes for flat feet", "gl": "us", "hl": "en"},
    timeout=180,  # a live answer typically takes 10-30 seconds
)
resp.raise_for_status()
data = resp.json()

print(data["answer"][:300])
for c in data["citations"]:
    print(c["index"], c["domain"], c["url"])
print("cited domains:", data["sources"], "| cached:", data["cached"])
const params = new URLSearchParams({
  q: "best running shoes for flat feet",
  gl: "us",
  hl: "en",
});

const resp = await fetch(
  `https://api.searlo.tech/api/v1/search/ai/chatgpt?${params}`,
  {
    headers: { "x-api-key": "YOUR_API_KEY" },
    signal: AbortSignal.timeout(180_000), // live answers typically take 10-30 s
  },
);
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
const data = await resp.json();

console.log(data.answer.slice(0, 300));
for (const c of data.citations) console.log(c.index, c.domain, c.url);
console.log("cited domains:", data.sources, "| cached:", data.cached);

Example response (illustrative)

Real keys, illustrative values, shortened. On ChatGPT, answerMarkdown carries the same rendered text as answer, threadUrl is null because a logged-out conversation has no shareable link, and model is empty.

{
  "success": true,
  "searchParameters": {
    "q": "best running shoes for flat feet",
    "type": "ai",
    "engine": "chatgpt",
    "mode": "ui",
    "gl": "us",
    "hl": "en"
  },
  "answer": "If you have flat feet, look for a stability shoe with a firm midsole and structured arch support. Reviewers commonly recommend stability models such as the Brooks Adrenaline GTS and the ASICS Gel-Kayano…",
  "answerMarkdown": "If you have flat feet, look for a stability shoe with a firm midsole and structured arch support. Reviewers commonly recommend stability models such as the Brooks Adrenaline GTS and the ASICS Gel-Kayano…",
  "citations": [
    { "index": 1, "url": "https://www.runnersworld.com/gear/…", "title": "Best Running Shoes for Flat Feet", "domain": "runnersworld.com" },
    { "index": 2, "url": "https://www.verywellfit.com/…", "title": "The Best Shoes for Flat Feet", "domain": "verywellfit.com" },
    { "index": 3, "url": "https://www.rei.com/learn/…", "title": "How to Choose Running Shoes", "domain": "rei.com" }
  ],
  "sources": ["runnersworld.com", "verywellfit.com", "rei.com"],
  "related": [],
  "model": "",
  "threadUrl": null,
  "complete": true,
  "fetchedAt": "2026-09-29T08:12:45.301Z",
  "source": "searlo.tech(chatgpt)",
  "cached": false
}

Response fields

Keys in a successful GET /search/ai/chatgpt response
KeyTypeWhat it holds
answerstringThe answer as plain text
answerMarkdownstringOn ChatGPT, the same rendered text as answer
citationsarrayEach cited page as { index, url, title, domain }
sourcesarrayThe unique cited domains, www. removed: the list to count for share of voice
relatedarrayFollow-up suggestions where the page shows them; can be empty
modelstringEmpty on ChatGPT
threadUrlnullAlways null: a logged-out conversation has no shareable link
completebooleanfalse if the capture ended before ChatGPT finished writing; incomplete answers are never cached
cachedbooleantrue when the answer came from the 1-hour cache
searchParameters, fetchedAt, sourceobject, string, stringYour request echoed back, when the answer was captured, and the engine tag

Request parameters

Query parameters for GET /search/ai/chatgpt; send your key in the x-api-key header
ParameterRequiredDefaultWhat it does
qYesnoneThe prompt, up to 500 characters
glNousCountry to ask from; the request goes out through an exit in that country when one is available
hlNoenLanguage to ask in
cacheNotruefalse forces a fresh run, billed like any live call; otherwise the same request within 1 hour gets the stored answer

Why a ChatGPT answer costs 8 credits

A Google web search on Searlo is 1 credit. A ChatGPT answer is 8, and the reason is the same thing that makes it worth having: it is produced live, in chatgpt.com's own interface. Every uncached call is a real browser session that loads ChatGPT, asks the question, waits the 10 to 30 seconds ChatGPT takes to write, and retries when ChatGPT pushes back.

Calling a model through OpenAI's API answers a different question: what a model says to your code. It doesn't tell you what chatgpt.com says to a person, and that is the answer AI visibility work is about.

Credits are charged per successful call, live or cached. Refused or failed calls (HTTP 429 or 503, success: false) are refunded automatically. Packs are one-time purchases with no subscription; new users' credits are valid for 90 days.

What ChatGPT answers cost on each pack

8 credits per answer. Pack price ÷ credits × 8, rounded to the cent
PackPriceChatGPT answersPer 1,000 answers
Micro$3.99625$6.38
Starter$9.992,500$4.00
Builder$29.999,375$3.20
Scale$74.9931,250$2.40
Pro$199.99112,500$1.78
Enterprise$799500,000$1.60

Latency, caching and non-determinism

ChatGPT's answers are non-deterministic. Ask the same question twice and the wording changes, and the brands it names and the pages it cites can change too. One answer is an anecdote. For tracking, ask each prompt several times and report a rate, such as 'cited in 5 of 8 answers this week'.

  • A live answer typically takes 10 to 30 seconds. Run tracking jobs in the background; the samples allow 180 seconds.
  • The same request (prompt, gl and hl) within 1 hour returns the stored answer with cached: true. Pass cache=false for every sample you want independent.
  • Send repeat samples one after another. Identical requests in flight at the same moment can be merged into one run: both are billed and both get the same answer.
  • ChatGPT cites only when it searches the web. An answer with no citations is still a finding: it came from the model's own knowledge, not from any page.
  • If ChatGPT capacity is full, the API returns 429 with a Retry-After header. Wait that long and retry; the refused call costs nothing.
  • Country targeting is best-effort: the request goes out through an exit in the gl country when one is available.

Compare ChatGPT with the other engines

Pair it with Google data

What teams track in ChatGPT

  • Whether ChatGPT names your brand for the category questions your buyers ask
  • Which publishers and review sites ChatGPT cites in your market
  • Competitor mentions and citations over time, prompt by prompt
  • AEO and GEO client reports with a rate per prompt instead of a screenshot
  • Before-and-after checks around a content or PR campaign

FAQ

ChatGPT scraper API: FAQ

Is there an official API for the answers on chatgpt.com?

OpenAI's API gives developers access to its models; it is not a feed of what chatgpt.com shows people. Searlo is independent and not affiliated with OpenAI. Its ChatGPT scraper API asks chatgpt.com as a logged-out visitor and returns that answer and its citations as JSON.

How much does the ChatGPT scraper API cost?

8 credits per answer: $2.40 per 1,000 answers at $0.30 per 1,000 credits (the Scale pack), $1.60 on the Enterprise pack and $6.38 on the smallest. Packs are one-time purchases with no subscription, and the 3,000 free credits cover 375 answers.

Will I see the same answer when I'm logged in?

Not necessarily. Searlo asks as a logged-out visitor, so no account, history, memory or custom instructions shape the answer. A signed-in user can get a different answer, and so can the same logged-out prompt a minute later.

Why do some answers have no citations?

ChatGPT cites sources when it searches the web to answer. When it answers from its own knowledge it may cite nothing, and citations comes back empty. That is still a data point: the answer did not come from any page.

How do I track my brand across many ChatGPT answers?

Run a fixed prompt set, several times per prompt with cache=false, then count the answers whose sources include your domain and whose answer text names your brand. The AI visibility API page has a complete Python script that does this for all four engines.

How long does a request take?

A live answer typically takes 10 to 30 seconds, because ChatGPT has to write it. The same request within an hour returns the cached answer without a new run. There is no faster live path: the wait is ChatGPT's.

What rate limits apply?

ChatGPT calls share your account's search rate limit, the same on every plan: 300 req/s, 10,000/min and 900,000/day. The tighter limit in practice is ChatGPT capacity. When it is full the API returns 429 with a Retry-After header, and the refused call is not charged.

Start tracking ChatGPT answers

3,000 free credits and no card: enough for 375 ChatGPT answers.