ScrapingBee vs AnswerLine
ScrapingBee is a general scraping API with dedicated Google, ChatGPT and Gemini endpoints, billed in credits on monthly plans. This API is built only for AI answers and search results.
Coverage
| ScrapingBee | AnswerLine | |
|---|---|---|
| ChatGPT | Yes, ChatGPT API: answer as text, markdown and a markdown tree; their docs say citations are not returned every time. | Yes, POST /v1/monitor/chatgpt. |
| Perplexity | No prompt endpoint; their Perplexity page covers scraping public shared answers with the general API. | Yes, POST /v1/monitor/perplexity. |
| Gemini | Yes, Gemini API: answer and citations. | Yes, POST /v1/monitor/gemini. |
| Microsoft Copilot | No prompt endpoint; shared-chat pages through the general API. | Yes, POST /v1/monitor/copilot. |
| Grok | No prompt endpoint; shared-chat pages through the general API. | Yes, POST /v1/monitor/grok. |
| Google AI Mode | Yes, search_type=ai_mode on the Google API, with a 400-character query limit. | Yes, POST /v1/monitor/aimode. |
| Google AI Overview | Yes, ai_overviews in Google API results on regular (not light) requests. | Supported by the API. +2 credits, added once per request. |
| Google Search | Yes, Google API. | Supported by the API. |
| Google News | Yes, search_type=news on the Google API. | Supported by the API. |
ScrapingBee's plans
| Plan | Monthly | API credits | Concurrent requests |
|---|---|---|---|
| Hobby | $19 | 75,000 | 25 |
| Freelance | $49 | 250,000 | 50 |
| Startup | $99 | 1,000,000 | 100 |
| Business | $249 | 3,000,000 | 200 |
| Business + | $599 | 8,000,000 | 400 |
Price per request
| Request | AnswerLine credits | AnswerLine price | ScrapingBee |
|---|---|---|---|
| ChatGPT | 5 | $0.003 | 15 credits, $0.0038 ($0.0012) |
| Perplexity | 4 | $0.002 | No prompt endpoint |
| Gemini | 4 | $0.002 | 15 credits, $0.0038 ($0.0012) |
| Microsoft Copilot | 5 | $0.003 | No prompt endpoint |
| Grok | 4 | $0.002 | No prompt endpoint |
| Google AI Mode | 4 | $0.002 | A Google API search type; no separate price published |
| Google AI Overview | 5 | $0.003 | Regular request, 15 credits, $0.0038 ($0.0012) |
| Google Search | 3 | $0.002 | Light request, 10 credits, $0.0025 ($0.0008) |
| Google News | 3 | $0.002 | A Google API search type; no separate price published |
How requests, geo, billing and delivery work
| ScrapingBee | AnswerLine | |
|---|---|---|
| Parsing depth | Google: organic, ads, People Also Ask, local, maps, news and AI Overview fragments with their references. ChatGPT: text, markdown and a markdown tree, without a citations field. Gemini: text, markdown and citations. | One JSON schema per engine in the OpenAPI document. Assistants: answer text, markdown and sources, plus the engine-specific fields each schema defines. Google: organic results, ads, People Also Ask, local pack, knowledge graph and the AI Overview with its sources. |
| Geo targeting | Google: country_code, latitude, longitude, radius and device. ChatGPT and Gemini: country_code. | country on every engine; US state on ChatGPT, Perplexity, Gemini, Copilot and Grok; location, uule, hl and device on Google Search and AI Mode. |
| Billing on failures | Pay only for successful requests; their ChatGPT and Gemini pages say failed requests are not charged. | A failed request or task is not charged, and neither is a queued task you clear before it starts. |
| Async and webhooks | No async or webhook support documented; calls are synchronous and retried for up to 30 seconds. | Synchronous monitor calls, or async tasks and batches with idempotency keys, polled or delivered to a signed webhook with up to 10 delivery attempts. |
Where ScrapingBee is stronger
- JavaScript scenarios, premium and stealth proxies, screenshots and AI extraction rules work on any page, and there are Amazon, Walmart and YouTube endpoints.
- Their docs list a CLI, a remote MCP server, and n8n, Make, Zapier and LangChain integrations.
- Plans start at $19 a month with 25 concurrent requests, rising to 400 on Business +.
Choose this API when you need Perplexity, Copilot and Grok answers from a prompt, sources as an array on every answer, US state targeting, and async batches with webhooks for scheduled runs. The guide below shows both requests.
Which to pick
Pick ScrapingBee if you scrape many kinds of pages, need JavaScript scenarios, screenshots or AI extraction rules on arbitrary sites, and its Google, ChatGPT and Gemini endpoints return enough for your AI use case. It also has a low entry plan and ready integrations with n8n, Make, Zapier and LangChain.
Pick this API if you track how brands appear in AI answers, where citations and the market matter as data. It takes prompts on every assistant it covers, Perplexity, Copilot and Grok included, and returns Google Search with the AI Overview as structured fields, all with async tasks and signed webhooks.
Where the two overlap, and where they don’t
Both products return JSON for Google and ChatGPT. The difference is how much of the answer is broken out:
- ChatGPT. ScrapingBee returns
results_text,results_markdownandresults_json(a markdown syntax tree), withllm_modelandprompt. Its docs point you to the full HTML for citation pills (checked 2026-09-17, scrapingbee.com). This API returnstext,markdownandsources[]as fields. - Gemini. Both return the answer and a citations or sources array. This API’s schema adds
citationPillsandplaces. - Google. Both return organic results, People Also Ask, local results and the AI Overview with references. ScrapingBee covers more Google search types (images, lens, shopping, maps); this API adds People Are Saying and the AI Overview’s citation pills and related links.
- Perplexity, Copilot, Grok. ScrapingBee’s pages cover public shared pages through its general API, which means you need someone to have shared the answer and your own extraction rules. This API takes your prompt on Perplexity, Copilot and Grok and returns the answer as JSON.
Migration: the same ChatGPT request
On ScrapingBee
Per its docs, a GET with the prompt, web search turned on, a country code, and bearer auth (the api_key query parameter is marked deprecated):
curl "https://app.scrapingbee.com/api/v1/chatgpt?prompt=best+noise-cancelling+headphones+for+flights&search=true&country_code=us" \
-H "Authorization: Bearer $SCRAPINGBEE_API_KEY"
Note that ScrapingBee’s search defaults to false, so omitting it measures ChatGPT without web search.
On this API
curl -X POST https://api.answerline.dev/v1/monitor/chatgpt \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "best noise-cancelling headphones for flights",
"country": "US",
"include": { "markdown": true }
}'
Here the default is the opposite: web search is forced unless you set disableWebSearch: true. If you are continuing a time series that was collected without search on ScrapingBee, set that flag, or start a new series and mark the change.
Field mapping
| ScrapingBee ChatGPT | This API |
|---|---|
results_text |
result.text |
results_markdown |
result.markdown with include.markdown |
| citations inside the markdown | result.sources[] |
llm_model |
result.model |
full_html with add_html |
result.html with include.html |
With sources as an array you no longer need to parse links out of markdown, which breaks whenever the answer formatting changes.
Migration: Google with the AI Overview
On ScrapingBee
curl "https://app.scrapingbee.com/api/v1/google?search=noise+cancelling+headphones&country_code=us&light_request=false" \
-H "Authorization: Bearer $SCRAPINGBEE_API_KEY"
light_request=false is required for the ai_overviews field, per its docs, which makes the request 15 credits instead of 10.
On this API
import { Client } from "@answerline/sdk";
const client = new Client({ apiKey: process.env.API_KEY!, baseUrl: "https://api.answerline.dev" });
const { result } = await client.google({
query: "noise cancelling headphones",
country: "US",
pages: 1,
include: { aioverview: { markdown: true } },
});
const pills = result.aioverview?.citationPills ?? [];
console.log(result.organicResults[0]?.link, pills.map((p: { domain: string }) => p.domain));
From synchronous calls to scheduled runs
ScrapingBee’s documented calls are synchronous, and its docs say failed requests are retried for up to 30 seconds. A daily prompt set therefore becomes a loop in your own worker, bounded by your plan’s concurrent requests.
This API lets you hand the loop over:
import os, requests
prompts = ["best noise-cancelling headphones for flights", "Sony or Bose for travel?"]
markets = ["US", "GB", "DE"]
tasks = [
{
"taskType": engine,
"payload": {"prompt": p, "country": c},
"idempotencyKey": f"headphones-{i}-{engine}-{c}-2026-09-17",
"webhook": {"url": "https://your-app.com/hooks/answers"},
}
for i, p in enumerate(prompts)
for c in markets
for engine in ("CHATGPT", "GEMINI", "COPILOT")
]
r = requests.post(
"https://api.answerline.dev/v1/async/task/batch",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json=tasks,
timeout=60,
)
print(r.json()["summary"])
Tasks queue for your plan’s concurrency, run, and arrive as signed deliveries. A task that fails is not charged, and you resubmit only those, with a new key.
Comparing cost
ScrapingBee charges 15 credits for ChatGPT, Gemini and a regular Google request, 10 for a light Google request, and the dollar value of a credit falls on larger plans. This API’s credits per request: ChatGPT, Copilot and Grok tasks 5, Gemini 4, Google Search 3 for the first page and 2 more for the AI Overview; synchronous calls add 2. The units differ, so compare dollars per answer:
- Credit value = plan price / plan credits, on each side.
- Dollars per answer = credit value × credits per request, per engine.
- For ScrapingBee Google with AI Overviews, use the regular-request cost.
- Add the worker you’d run for scheduling and retries on a synchronous-only API, or subtract it if you already have one.
Running both side by side before cutting over
Start with a parallel run: the same prompts, markets and schedule on ScrapingBee and on this API for one or two weeks, stored in the same table with a provider column.
- Choose prompts for ChatGPT and Gemini, which both sides cover, and Google queries where you read AI Overviews.
- Fix the web search setting: send
search=trueon ScrapingBee, ordisableWebSearch: truehere, so both runs measure the same thing. - Use regular (not light) ScrapingBee Google requests so AI Overviews can appear.
- Submit tasks here with webhooks, keyed by prompt, engine, market and day, and store both sides in one table.
What to compare at the end of the run:
- Citations captured: answers with at least one citation on each side; ScrapingBee’s docs say citations are not returned every time.
- AI Overview presence on the same Google queries and markets.
- Worker effort: your own retry loop and concurrency handling on the synchronous side, versus the queue here.
- Cost per usable answer at the plan each side needs.
Cut over one engine at a time and keep the parallel data: it is the only record of how the switch itself moved your numbers.
Handling errors after the switch
ScrapingBee retries failed requests for up to 30 seconds and publishes which status codes are billed on its general API: 200, 404, 410 and 413 are billed, 400, 401, 403, 429 and 500 are not.
This API’s errors carry a stable code to branch on (authentication and errors):
| Situation | Status and code | What to do |
|---|---|---|
| Too many requests this second | 429 RATE_LIMIT_EXCEEDED |
Back off with jitter and retry; nothing ran or was charged. |
| Every concurrency slot busy on a synchronous call | 429 CONCURRENT_LIMIT_EXCEEDED |
Retry when a running call finishes, or send a task instead. |
| Queue would overflow | 429 QUEUE_LIMIT_EXCEEDED |
The whole submission was rejected; resubmit later. |
| API shedding load | 429 SERVICE_OVERLOADED |
Wait at least Retry-After seconds. |
| Balance can’t cover the request | 403 INSUFFICIENT_CREDITS |
Top up or wait for the next cycle; check GET /v1/credits. |
| Repeated idempotency key | 409 RESOURCE_CONFLICT |
The task already exists; fetch it instead of creating it. |
| Engine failed after automatic retries | 500 or 502 EXTERNAL_SERVICE_ERROR |
Not charged. For tasks, resubmit with a new key if you still need the answer. |
Every response carries an X-Request-Id; send your own to tie a request to your logs, and quote it to support. The TypeScript SDK applies this retry policy for you.
Decision checklist
- Citations as data? Choose the API that returns them as arrays for every engine you track.
- Perplexity, Copilot or Grok from a prompt? This API.
- Scheduled volume? Async tasks and webhooks replace your own queue.
- Non-search scraping? Keep ScrapingBee for it.
- Integrations? Both have n8n and Zapier options; this API also has an MCP server and LangChain tools.
Pitfalls
- Web search defaults flip. Off by default on ScrapingBee’s ChatGPT API, on by default here. Don’t mix series.
- AI Mode input length. ScrapingBee documents a 400-character limit for its AI Mode search type; keep prompts natural in any case.
- Light requests hide AI Overviews. If you compare AI Overview presence between providers, make sure the ScrapingBee side used regular requests.
- Parsing citations from markdown. Replace it with the arrays; markdown link formats change.
Start with the quickstart or the Gemini engine page.
Questions
Does ScrapingBee's ChatGPT API return citations?
ScrapingBee's ChatGPT docs, checked 2026-09-17, list the answer as text, markdown and a markdown tree, and say the API is not able to return citations 100% of the time; citations appear inside the markdown rather than as a separate field. This API returns sources as a separate array.
Can ScrapingBee query Perplexity, Copilot or Grok with a prompt?
As checked on 2026-09-17, its Perplexity, Copilot and Grok pages describe scraping public shared answer pages with its general HTML API, not sending a prompt. This API takes prompts on Perplexity, Copilot and Grok.
How many credits does a ScrapingBee Google search cost?
Its Google API docs say a light request costs 10 credits and a regular request 15, and AI Overviews are only returned on regular requests. Its ChatGPT and Gemini endpoints cost 15 credits per request.
Does ScrapingBee support webhooks?
No async or webhook support was found in its documentation on 2026-09-17; documented calls are synchronous. This API supports synchronous calls and async tasks with signed webhooks.
Can I target a US state with ScrapingBee?
Its Google API takes country_code plus latitude, longitude and radius, and its ChatGPT and Gemini APIs take country_code. This API takes a US state on every assistant and a location name or uule on Google Search.