Bright Data vs AnswerLine
Bright Data covers Google through its SERP API and the AI assistants through Web Scraper API scrapers, both at a flat price per 1,000 successful requests or records. This API returns one engine-specific JSON schema per request, priced in credits.
Coverage
| Bright Data | AnswerLine | |
|---|---|---|
| ChatGPT | Yes, ChatGPT scraper: answer text and HTML, citations, search sources, model. | Yes, POST /v1/monitor/chatgpt. |
| Perplexity | Yes, Perplexity scraper: answer text, HTML and markdown, sources. | Paused, coming back soon. |
| Gemini | Yes, Gemini scraper; its docs say European countries are not available (checked 2026-09-17). | Yes, POST /v1/monitor/gemini. |
| Microsoft Copilot | Yes, Microsoft Copilot scraper: prompt, answer and sources. | Paused, coming back soon. |
| Grok | Sold on a product page, but the AI scrapers docs page marks Grok as currently unavailable (checked 2026-09-17). | Paused, coming back soon. |
| Google AI Mode | Yes, Google AI scraper: answer text and HTML, links and citations. | Yes, POST /v1/monitor/aimode. |
| Google AI Overview | Yes, through the SERP API with brd_ai_overview=2, which their page says increases the likelihood of receiving one. | Supported by the API. +35 credits, added once per request. |
| Google Search | Yes, SERP API, as parsed JSON, markdown or HTML. | Supported by the API. |
| Google News | Yes, SERP API news search. | Supported by the API. |
Bright Data's pricing
| Product | Free | Pay-as-you-go | Scale plan |
|---|---|---|---|
| SERP API | 5K requests / month | $1.50 / 1K requests | $499 / month with 380K requests, then $1.30 / 1K |
| Web Scraper API (AI scrapers) | 5K records / month | $1.50 / 1K records | $499 / month with 384,000 records, then $1.30 / 1K |
Price per request
| Request | AnswerLine credits | AnswerLine price | Bright Data |
|---|---|---|---|
| ChatGPT | 7 | $0.001 | $0.0015 |
| Perplexity (paused, coming back soon) | 56 | $0.006 | $0.0015 |
| Gemini | 5.6 | $0.001 | $0.0015 |
| Microsoft Copilot (paused, coming back soon) | 90 | $0.009 | $0.0015 |
| Grok (paused, coming back soon) | 56 | $0.006 | $0.0015 listed; docs mark it unavailable |
| Google AI Mode | 70 | $0.007 | $0.0015 |
| Google AI Overview | 70 | $0.007 | $0.0015; no separate AI Overview price listed |
| Google Search | 35 | $0.004 | $0.0015 |
| Google News | 35 | $0.004 | $0.0015 |
How requests, geo, billing and delivery work
| Bright Data | AnswerLine | |
|---|---|---|
| Parsing depth | SERP API parsed JSON in a light and a full form; the full form adds the AI Overview, People Also Ask, knowledge panel and more. AI scrapers return answer text, HTML or markdown with citations and sources, delivered as JSON, NDJSON or CSV. | One JSON schema per engine in the OpenAPI document. Assistants: answer text, markdown and sources, plus the engine-specific fields each schema defines. Google Search: organic results, ads, People Also Ask, local pack, knowledge graph and the AI Overview. Google News: the news results with their source, date and position. |
| Geo targeting | SERP API: gl, hl and uule (a canonical location or coordinates) and device. AI scrapers take a country input. | country on every engine: ChatGPT, Gemini, AI Mode and Google Search answer from 213 countries, Copilot takes any country, and Google News the 71 countries with a Google News edition. Google Search and AI Mode also take a city, and Gemini a US state. |
| Billing on failures | Pay only for successful SERP requests; no charges for failed scraper deliveries. | A failed request or task is not charged, and neither is a queued task you clear before it starts. |
| Async and webhooks | SERP API async requests with a webhook per request or per zone, results kept 48 hours. Scrapers are triggered async and deliver by webhook, API download or to S3, GCS, Azure, Snowflake and SFTP. | 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 Bright Data fits
- A flat $1.50 per 1,000 records on pay-as-you-go for every engine; compare it with this API's per-request prices above for your engine mix.
- Their homepage claims 400M+ proxy IPs in 195 countries, seven search engines in the SERP API, and a dataset marketplace and scrapers for hundreds of other domains.
- Results can go straight to cloud storage or a data warehouse instead of a webhook receiver you run.
This API fits when you want one request contract across engines, with per-task idempotency keys and signed webhooks. The guide below compares the two integrations.
Choosing between them
Bright Data makes sense if you already buy its proxies or datasets, if your team is comfortable with zones and dataset ids, if you want results delivered straight into cloud storage or a warehouse, or if a flat price per record across engines is the deciding factor at your volume.
This API makes sense if the job is a recurring AI-visibility pipeline where each answer is one request with its own key, market and webhook, and you want one documented schema per engine instead of mapping scraper records.
Both return JSON over HTTPS; moving between them is mostly a change of request shape and delivery.
How the products are organized
Bright Data splits the job across two products (checked 2026-09-17):
- SERP API for Google Search, Google News and the AI Overview. You create a SERP zone and send either a full Google URL to its request endpoint, or query parameters to its async endpoint. Parsed JSON comes back when you ask for it.
- Web Scraper API for the assistants. Each engine is a scraper identified by a dataset id, called synchronously for small inputs or triggered asynchronously, with results delivered as a snapshot.
This API has one product. Every engine is POST /v1/monitor/<engine> for a synchronous answer, or a task with taskType set to the engine for async work. Auth, errors, credits, idempotency and webhooks are the same across engines.
Three things change when you migrate:
- Identifiers. Zones and dataset ids disappear. Your code references an engine name.
- Delivery. Snapshots delivered in bulk become one webhook delivery per finished task.
- Geo. Bright Data’s scrapers take a
countryinput; its SERP API takesgl,hlanduule. Here ChatGPT, Gemini, Google Search and Google AI Mode answer from 213 countries, and Gemini also takes a USstate. Copilot takes anycountry, Google Search and AI Mode also takelocationoruuleandhl, and Google News takescountryandhl.
Migration: the same ChatGPT job
On Bright Data
Bright Data’s docs show a synchronous scrape request with a dataset id in the query string, bearer auth, and a JSON array of inputs where each input has a url, a prompt and an optional country (checked 2026-09-17, docs.brightdata.com):
curl -X POST "https://api.brightdata.com/datasets/v3/scrape?dataset_id=gd_m7aof0k82r803d5bjm&format=json" \
-H "Authorization: Bearer $BRIGHTDATA_API_KEY" \
-H "Content-Type: application/json" \
-d '[{ "url": "https://chatgpt.com/", "prompt": "Best payroll software for a UK startup", "country": "GB" }]'
The documented record fields include answer_text, answer_html, citations, search_sources, web_search_triggered and model. The same docs describe optional web_search and require_sources inputs.
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 payroll software for a UK startup",
"country": "GB",
"include": { "markdown": true }
}'
Field mapping for the parts most pipelines store:
| Bright Data ChatGPT record | This API |
|---|---|
answer_text |
result.text |
answer_html |
result.markdown with include.markdown (include.html is refused with a 400 today) |
citations, search_sources |
result.sources[] and result.citationPills[] |
web_search_triggered |
web search is forced by default; set disableWebSearch: true to let ChatGPT decide |
model |
result.model |
Migration: Google with the AI Overview
On Bright Data
The SERP API’s async request, per its docs, posts query parameters with a country and asks for parsed JSON; to raise the chance of an AI Overview, their AI Overview page says to add brd_ai_overview=2 (checked 2026-09-17, docs.brightdata.com):
curl -X POST "https://api.brightdata.com/unblocker/req?customer=$ACCOUNT_ID&zone=$SERP_ZONE" \
-H "Authorization: Bearer $BRIGHTDATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "country": "us", "query": { "q": "payroll software", "hl": "en", "gl": "us" }, "brd_json": "1" }'
The response id comes back in a header, and the result is collected later or delivered to a webhook configured on the zone or the request.
On this API
The same job is one task:
curl -X POST https://api.answerline.dev/v1/async/task \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"taskType": "GOOGLE",
"payload": {
"query": "payroll software",
"country": "US",
"include": { "aioverview": { "markdown": true } }
},
"idempotencyKey": "payroll-us-2026-09-17",
"webhook": { "url": "https://your-app.com/hooks/answers" }
}'
The delivery carries response.result.aioverview, or null when Google showed no AI Overview, with its sources, citationPills and relatedLinks, next to organicResults, peopleAlsoAsk and the other blocks. The AI Overview add-on is priced on the request, so it is charged whenever include.aioverview is present; see credits.
Receiving results: snapshots vs task deliveries
Bright Data’s scraper jobs return a snapshot: a batch of records you download, or that they push to a webhook or storage target. Its SERP async callbacks, per its docs, usually arrive within minutes but can take up to eight hours at peak, and results are stored for 48 hours.
This API sends one signed delivery per finished task. What that means for your receiver:
- Verify first. Check
Webhook-Signature(HMAC-SHA256 of timestamp and raw body) before parsing. The TypeScript SDK exportsverifyWebhook. - Deduplicate by
task.id. Deliveries can arrive more than once and in any order. - Answer fast. A delivery succeeds on a 2xx within 15 seconds and is otherwise retried, up to 10 attempts, the last about 21 to 43 minutes after the first.
- Treat
FAILEDas data. A failed task is not charged; decide whether to resubmit it with a new idempotency key.
import express from "express";
import { verifyWebhook } from "@answerline/sdk";
const app = express();
app.post("/hooks/answers", express.raw({ type: "application/json" }), async (req, res) => {
if (!(await verifyWebhook(req.body, req.get("webhook-signature"), process.env.WEBHOOK_SECRET!))) {
return res.sendStatus(400);
}
const { task, response } = JSON.parse(req.body.toString("utf8"));
await saveAnswer(task.id, task.status, response); // your storage
res.sendStatus(204);
});
If you do want bulk files in a warehouse, write deliveries to object storage from this receiver; the per-task payload is the same JSON GET /v1/async/task/{id} returns.
Records versus credits
Bright Data prices a record the same whatever the engine. This API prices each engine in credits (for example, 7 credits for a ChatGPT task and 35 for a one-page Google News task, with add-ons listed in credits), and the dollar value of a credit depends on your plan.
A fair comparison:
- Count answers per engine per month, including every market variant.
- For Bright Data, multiply total records by the pay-as-you-go rate, or use the Scale plan if your monthly total exceeds its included records.
- For this API, sum credits per engine and pick the smallest plan that covers them on pricing.
- Add the cost of what you’d build around each: dataset-to-row mapping and snapshot handling on one side, a webhook receiver on the other.
- Check what is charged when an answer comes back incomplete. Bright Data says failed deliveries are not charged; here a failed task is not charged, and a completed one is charged even when an engine returned no sources.
Proving the switch with a parallel run
Before a dataset id changes in production, collect from both sides for a week or two and keep the rows together, tagged by provider.
- Pick 30 to 50 prompts that matter to your reports, across the engines you use on Bright Data that this API serves.
- Keep Bright Data’s jobs unchanged. Add a task per prompt, engine and market here, with an idempotency key such as
<prompt-id>-<engine>-<market>-<day>. - Normalize both into the same rows: answer text, cited domains, market, engine, collected-at time, and whether the answer came back at all.
- Record Bright Data records that never arrived and tasks that ended
FAILEDin the same table, so gaps are visible on both sides.
Then read four things off the table:
- Completion rate per engine and market: answers you can use divided by answers you asked for.
- Cited domains: overlap of the domain sets per prompt. Expect differences between any two runs of the same prompt; compare the overlap between providers with the overlap between two days on one provider.
- Cost per usable answer, including anything you re-ran.
- Operational effort: time spent on snapshot handling and delivery failures versus webhook receiver issues.
Migrate one dataset id at a time, and keep the storage delivery running for the engines still on Bright Data. A snapshot pipeline and a webhook receiver can write the same table, so switching off the first is a separate, reversible change from switching on the second.
Failures and what they cost
Bright Data’s pricing page says failed deliveries are not charged (checked 2026-09-17), and code built around snapshots usually treats a missing record as a gap for the next job to fill. Task deliveries have no next job: a task either completes or ends FAILED, uncharged, and the gap stays in your table until you resubmit it under a new idempotency key.
Deciding that resubmission policy is the real work, because a snapshot pipeline never had to. After that, branch on the code in the error body rather than on the HTTP status: authentication and errors lists the codes, and rate limits explains the three distinct 429s and when each one clears.
Questions that settle it
- Which markets do you need? Bright Data’s scrapers take a
country, though its Gemini docs said European countries are not available (checked 2026-09-17). Here ChatGPT and Gemini answer from 213 countries, including GB, DE and FR, and Gemini also takes a US state. - Where do results land? Warehouse-first teams benefit from Bright Data’s storage delivery; service-first teams from per-task webhooks.
- Is proxy or dataset spend already committed? Consolidating on Bright Data can win on procurement alone.
Mistakes to avoid when migrating
- Comparing one record to one answer blindly. Check whether a record in your Bright Data job holds one prompt and one answer, as the ChatGPT example does, before multiplying prices.
- Losing the market in the key. Put the market in the idempotency key; otherwise a second market for the same prompt collides with the first.
- Treating
aioverview: nullas an error. Google shows AI Overviews for some queries and not others. Store the null; it is a measurement. - Polling at scale. For thousands of tasks use webhooks, not a poll loop per task; async tasks covers the queue limits.
See the quickstart, or the ChatGPT engine page for every result field.
Bright Data is a trademark of its owner. AnswerLine is not affiliated with or endorsed by Bright Data.
Questions
Does Bright Data scrape ChatGPT, Perplexity, Gemini, Copilot and Grok?
Bright Data sells Web Scraper API scrapers for ChatGPT, Perplexity, Gemini, Microsoft Copilot and Google AI Mode. It also has a Grok product page, but its AI scrapers documentation marked Grok as currently unavailable when checked on 2026-09-17, and its Gemini docs say European countries are not available.
How much does Bright Data charge per AI answer?
Its pricing pages, checked 2026-09-17, list $1.50 per 1,000 records on pay-as-you-go and a $499 monthly Scale plan with 384,000 records, then $1.30 per 1,000. Failed deliveries are not charged.
Can I get Google AI Overviews from Bright Data's SERP API?
Yes. Its AI Overview page says adding brd_ai_overview=2 to the request increases the likelihood of receiving the AI Overview, which is parsed into the full JSON output. This API's Google Search endpoint returns result.aioverview when include.aioverview is set, or null when Google showed none.
What is the main integration difference?
Bright Data's ChatGPT scraper is called through a dataset endpoint with a dataset id and a JSON array of inputs, and async jobs return a snapshot to download or deliver. This API uses one endpoint per engine, with async tasks that carry their own idempotency key and signed webhook.
Which fits large one-off data pulls?
Bright Data's delivery to S3, GCS, Azure, Snowflake and SFTP fits bulk exports into a warehouse. This API fits recurring prompt sets where each answer is stored by your own service as it arrives.