New — re-parse any saved capture, free

The scraper for SEO and AI SEO.

One API for ChatGPT, Perplexity, Gemini, AI Overview, and Google. Real answers, real sources, at any scale.

No credit card. Live in 60 seconds.

CopilotsoonGroksoon
live
POST/v1/scrape/chatgpt
curl -X POST https://api.scrapinator.com/v1/scrape/chatgpt \
  -H "Authorization: Bearer sk_live_••••" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "best CRM for early-stage startups",
    "country": "US",
    "language": "en",
    "include": { "markdown": true, "sources": true }
  }'
200 OKapplication/json
{
  "success": true,
  "surface": "chatgpt",
  "markdown": "### Best CRMs for early-stage startups\n\n1. **Attio** — modern, flexible, great for produc…",
  "sources": [
    {
      "url": "https://attio.com/blog/best-crm-startups",
      "title": "Best CRMs for startups in 2025 — Attio",
      "cited_text": "Attio is built for the way modern startups actually work."
    },
    {
      "url": "https://www.ycombinator.com/library/8r-startup-crm-guide",
      "title": "Y Combinator: choosing your first CRM",
      "cited_text": "Most YC companies start on HubSpot or Attio before $1M ARR."
    }
  ],
  "queries": [
    "best CRM early stage startup 2025",
    "Attio vs HubSpot startup",
    "free CRM seed stage"
  ],
  "entities": [
    "Attio",
    "HubSpot",
    "Folk",
    "Pipedrive"
  ]
}
  • 99.9% uptime
  • Sub-minute responses
  • Millions of captures / month
  • SOC 2 in progress
Why teams pick Scrapinator

Direct LLM APIs have hidden costs.

Four problems every SEO and AI SEO team hits — and how we fix them.

User interface is king

API responses are nothing like the UI. Direct LLM endpoints hide what users actually see.

We scrape the UI itself, in a real browser. What appears in ChatGPT lands in your JSON.

No sources, no citations

Direct provider APIs strip the one signal that matters for AI SEO.

Every cited source, in order, with the exact text the engine quoted.

Multiple integrations

ChatGPT, Perplexity, Gemini, AI Overview — each one is a separate engineering project.

One endpoint. One schema. Swap the surface name, get the same fields.

Unpredictable cost

Token-based pricing changes by model and provider. Forecasting becomes guesswork.

Flat credits per surface. Same query, same cost, every month.
How the integration works

Three lines. Every engine.

Get back markdown, sources, citations, queries, entities, and shopping cards — pulled clean from each response.

import { Scrapinator } from "scrapinator";

const sc = new Scrapinator({ apiKey: process.env.SCRAPINATOR_KEY });

const { result } = await sc.scrape({
  surface: "chatgpt",
  prompt: "best CRM for early-stage startups",
  country: "US",
});

console.log(result.markdown);
console.log(result.sources);

That's it. Same shape for every surface.

Structured data

One schema. Every surface.

Same response shape whether you ask ChatGPT or Google News. No special-casing.

Markdown / text / HTML

The answer in whatever format you need.

"markdown": "### Best CRMs\n1. Attio\n2. HubSpot Free"

Sources & citations

Every cited link, in order, with the exact quoted text.

"sources": [{ "url": "...", "cited_text": "..." }]

Search queries

The queries the engine ran behind the answer.

"queries": ["best crm 2025", "Attio vs HubSpot"]

Entities

Brands, products, and people mentioned.

"entities": ["Attio", "HubSpot", "Y Combinator"]

Re-parse, free

Schema changed? Re-parse any saved capture. Zero credits.

await sc.reparse({ captureId: "cap_2W5x..." })

Raw capture

DOM and screenshot saved with every request.

"raw": { "html_url": "...", "screenshot_url": "..." }
The honest comparison

What cloro doesn't do.

We're not the first scraper for AI engines. We just go further on the things that actually break in production.

FeatureDIYcloro.dev Scrapinator
Real-browser UI capture
ChatGPT / Perplexity / Gemini coverage
AI Overview + AI Mode
Sources + citations parsed
Re-parse old scrapes — free
Auto-failover between capture paths
Typed SDKs (TypeScript + Python)
Predictable credit pricing
Async + webhooks
Pricing

Pricing that scales with you.

Pick a plan that fits your volume. Re-parse old captures — always free.

Free

$0forever
  • 500 credits / month
  • 1 concurrent
  • Sync only
  • Community
  • Re-parse — free

Starter

$49/ month
  • 10,000 credits
  • 5 concurrent
  • Async + webhooks
  • Email support
  • Re-parse — free

Growth

Popular
$199/ month
  • 60,000 credits
  • 25 concurrent
  • Async + webhooks
  • Priority email + Slack
  • Re-parse — free

Scale

$799/ month
  • 300,000 credits
  • 100 concurrent
  • Async + webhooks
  • Dedicated Slack channel
  • Re-parse — free

Enterprise

Custom
  • Unlimited
  • Negotiated
  • Async + webhooks
  • Dedicated CSM + SLA
  • Re-parse — free
Credits per request

No token math. Ever.

Every surface has a flat cost in credits. You always know what a query will cost — and saved captures re-parse for free.

Google Search / Google News1 credit
AI Overview / AI Mode2 credits
ChatGPT / Perplexity / Gemini3 credits
Re-parse a saved capture0 credits
Async + webhook deliverySame price
Cost estimator

See what you'd pay.

Slide the captures. Adjust the surface mix. Get a real number.

20,000
1K500K
Google Search / News (1c)30%
AI Overview / AI Mode (2c)30%
ChatGPT / Perplexity / Gemini (3c)40%
Estimated monthly cost
$139
42,000 credits / month

Most teams pay less than they did with cloro — and re-parsing old captures stays free.

FAQ

The questions teams actually ask.

Still wondering whether Scrapinator fits? Talk to us — we'll send you a sandbox key and walk you through the surfaces you actually need.

SOC 2 Type II in progress. EU and US data residency. Captures encrypted at rest.

  • The OpenAI API doesn't return what users actually see. No sources, no citations, no AI Overview, no AI Mode, no shopping cards. If you do AI SEO, the UI is the product — the API is a different surface.

Run SEO and AI SEO scrapes at any scale.

One API. Every engine. Real answers. Real sources.

No credit card. Live in 60 seconds.

quickstart.tsts
import { Scrapinator } from "scrapinator";

const sc = new Scrapinator({ apiKey: process.env.SCRAPINATOR_KEY });

const { result } = await sc.scrape({
  surface: "chatgpt",
  prompt: "best CRM for early-stage startups",
  country: "US",
});

console.log(result.sources);