Oxylabs vs AnswerLine
Oxylabs' Web Scraper API has parsed sources for ChatGPT, Perplexity, Gemini, Google AI Mode and Google Search, billed per 1,000 results on monthly plans. This API serves ChatGPT, Gemini, Perplexity, Copilot, Grok, Google AI Mode, Google Search, and Google News, priced per engine from a prepaid USD balance.
Coverage
| Oxylabs | AnswerLine | |
|---|---|---|
| ChatGPT | Yes, chatgpt source: response text, markdown, citations, search queries, shopping products and ads. | Yes, POST /v1/monitor/chatgpt. |
| Perplexity | Yes, perplexity source: answer, top sources, related queries and inline products. | Yes, POST /v1/monitor/perplexity. |
| Gemini | Yes, gemini source: response text, markdown and citations. | Yes, POST /v1/monitor/gemini. |
| Copilot | Not in the AI targets list of Oxylabs' public docs (checked 2026-09-17). | Yes, POST /v1/monitor/copilot. |
| Grok | Not in Oxylabs' public docs (checked 2026-09-17). | Yes, POST /v1/monitor/grok. |
| Google AI Mode | Yes, google_ai_mode source: response text, citations and links. | Yes, POST /v1/monitor/aimode. |
| Google AI Overview | Yes, ai_overviews inside google_search results with rendering on; their docs describe this as maximizing the chance of getting one. | Supported by the API. +$0.00071 on every tier, charged only when the response holds an AI Overview. |
| Google Search | Yes, google_search source with parsing. | Supported by the API. |
| Google News | Yes, google_search with the news search context. | Supported by the API. |
Oxylabs' Web Scraper API plans
| Plan | Monthly | Results included | Google, no JS / 1K | With JS rendering / 1K |
|---|---|---|---|---|
| Free trial | $0 | Up to 2,000 | — | — |
| Micro | $49 | Up to 98,000 | $1.00 | $1.35 |
| Starter | $99 | Up to 220,000 | $0.90 | $1.30 |
| Advanced | $249 | Up to 622,500 | $0.80 | $1.25 |
Price per request
| Request | AnswerLine (Starter) | AnswerLine (Max) | Oxylabs |
|---|---|---|---|
| ChatGPT | $0.0006 | $0.00042 | No separate price published |
| Perplexity | $0.0015 | $0.001 | No separate price published |
| Gemini | $0.0006 | $0.00042 | No separate price published |
| Copilot | $0.00274 | $0.00274 | Not listed |
| Grok | $0.00218 | $0.00218 | Not listed |
| Google AI Mode | $0.00206 | $0.00206 | No separate price published; requires rendering |
| Google AI Overview | $0.00174 | $0.00174 | Requires rendering; JS-rendered results are $0.00135 |
| Google Search | $0.00103 | $0.00103 | $0.001 without JS |
| Google News | $0.0002 | $0.00014 | $0.001 without JS |
How requests, geo, billing and delivery work
| Oxylabs | AnswerLine | |
|---|---|---|
| Parsing depth | Parsed JSON per source with a parse status code; raw HTML, markdown and screenshots on request, and a custom parser for any page. | 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 | Google: geo_location as city, state, country, coordinates or criteria id, plus locale. AI sources take a country. | country on every engine: ChatGPT, Gemini, AI Mode and Google Search answer from 213 countries, Copilot, Perplexity and Grok take 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 | Results with 2xx and 4xx status are billable; 429 and 5xx are not, and faults on your side are still billed. | A failed request or task is not charged, and neither is a queued task you clear before it starts. |
| Async and webhooks | Realtime (synchronous) or Push-Pull jobs with callback_url and batches of up to 5,000 queries; results can go to S3 or GCS. The AI sources are Push-Pull only. | 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 Oxylabs fits
- The same plan covers 100+ pre-configured targets and any website through its universal source.
- Their product page claims 175M+ residential IPs and 20M+ mobile IPs.
- Google geo_location accepts coordinates and criteria ids, and batches of up to 5,000 jobs can be delivered to cloud storage.
This API fits AI visibility work that wants synchronous or async requests on every engine with a price stated per engine. The guide below maps an Oxylabs job to a task here.
Which to use
Oxylabs is the answer when AI answers are one of many scraping targets you already run through its Web Scraper API, when you need hyperlocal Google targeting by coordinates, batches of thousands of URLs delivered to cloud storage, or its proxy network for sites no structured API covers.
This API is the answer when the job is AI visibility: prompts sent to ChatGPT, Gemini, Perplexity, Copilot and Grok, stored as documented fields, with Google Search and its AI Overview, Google AI Mode and Google News alongside.
Oxylabs’ group has owned ScrapingBee since June 2025; ScrapingBee says it keeps operating as a separate product and entity (Proxyway, ScrapingBee, checked 2026-09-23).
Sources vs engines
An Oxylabs request names a source: google_search, chatgpt, perplexity, gemini, google_ai_mode, or universal for any URL. Every source shares the same job envelope: geo_location, parse, render, callback_url, storage options. Parsed output is source-specific and flagged with a parse_status_code (checked 2026-09-17 on developers.oxylabs.io).
A request here names an engine by endpoint (/v1/monitor/chatgpt) or by taskType (CHATGPT). There are no parse or render flags: every response is structured JSON, with the schema in the API reference.
What this means for a migration:
- No parse status to check. A task either completes with its parsed result or fails, uncharged.
- Sync where you want it. Oxylabs’ docs list its AI sources as Push-Pull only (checked 2026-09-17). Here any served engine can be called synchronously for interactive features or queued as a task.
- Geo is narrower but explicit. Oxylabs’ Google source accepts cities, states, coordinates and criteria ids; its AI sources take a country. Here ChatGPT, Gemini, Google Search and Google AI Mode answer from 213 countries, and Gemini also takes a US state; Copilot, Perplexity and Grok take any country, Google Search and AI Mode add
locationoruuleandhl, and Google News takes a country andhl.
Migration: a ChatGPT job with a callback
On Oxylabs
Their ChatGPT docs show a Push-Pull job with basic auth, a prompt, parsing, a country as geo_location, and a callback URL (checked 2026-09-17, developers.oxylabs.io):
curl -X POST https://data.oxylabs.io/v1/queries \
-u "$OXYLABS_USER:$OXYLABS_PASS" \
-H "Content-Type: application/json" \
-d '{
"source": "chatgpt",
"prompt": "best project management tool for construction firms",
"parse": true,
"geo_location": "United States",
"callback_url": "https://your-app.com/oxylabs-callback"
}'
The callback tells you the job is done; results are then fetched from the job’s results endpoint (type=parsed). Their docs describe an optional search flag that turns on web search for this source, off by default.
On this API
curl -X POST https://api.answerline.dev/v1/async/task \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"taskType": "CHATGPT",
"payload": {
"prompt": "best project management tool for construction firms",
"country": "US",
"include": { "markdown": true }
},
"idempotencyKey": "pm-construction-US-2026-09-17",
"webhook": { "url": "https://your-app.com/hooks/answers" }
}'
The webhook delivery carries the result itself, so there is no second fetch. ChatGPT decides on its own whether to search, so sources can be empty; disableWebSearch changes nothing today.
Mapping the parsed fields
Oxylabs chatgpt parsed |
This API |
|---|---|
response_text |
result.text |
markdown_text |
result.markdown with include.markdown |
citations, links |
result.sources[], result.citationPills[] |
search_queries |
result.searchQueries with include.searchQueries |
shopping_products |
result.inlineProducts[] with include.shopping (price, link and merchant offers; shoppingCards[] is empty today); product names in result.entities[] |
ads |
result.ads[] with include.ads |
llm_model |
result.model |
On this API every ChatGPT include flag but include.html is free. searchQueries and ads come back empty on the ChatGPT answers served today.
Google Search and AI Overviews
Oxylabs returns AI Overviews inside google_search results when you enable rendering; its docs describe this as maximizing the chance of getting one. Here the AI Overview is an explicit add-on to the Google Search endpoint:
import os, requests
r = requests.post(
"https://api.answerline.dev/v1/monitor/google",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={
"query": "construction project management software",
"country": "US",
"include": {"aioverview": {"markdown": True}},
},
timeout=330,
)
result = r.json()["result"]
aio = result.get("aioverview")
print("AI Overview shown" if aio else "No AI Overview", len(result["organicResults"]))
aioverview is null when Google didn’t show one. When it is present, sources holds the source rail and citationPills the inline chips, which lets you separate “cited in the answer text” from “listed in the rail”.
Batches and throughput
Oxylabs’ batch endpoint takes up to 5,000 queries per call. This API’s batch takes up to 500 tasks per call, and each task is admitted on its own: an overflowing queue rejects the whole batch with 429 QUEUE_LIMIT_EXCEEDED, otherwise items fail individually. A 5,000-prompt run is ten batch calls with the same idempotency key scheme.
There is no concurrency cap. Tasks wait in your queue (about 100,000 tasks of a typical prompt at a time), until they start; GET /v1/async/status shows queued and processing counts. See rate limits.
Cost comparison approach
Oxylabs charges per result, with the rate depending on target and rendering, on monthly plans with an included result count. The pricing page lists no separate rate for AI sources. This API charges a dollar price per request per engine from a prepaid balance; at the Starter tier ChatGPT tasks are $0.0006, Perplexity $0.0015, Copilot $0.00274, Grok $0.00218, Gemini $0.0006, Google AI Mode $0.00206, a one-page Google Search $0.00103 plus $0.00071 for the AI Overview, and Google News $0.0002.
- Ask Oxylabs which rate applies to the AI sources you use; the pricing page checked on 2026-09-17 lists no separate rate for them.
- Count answers per engine and per market.
- Account for billing rules: Oxylabs bills 4xx results as successful; here failed tasks are free.
- Compare the cost of the results you can use, not results returned. An Oxylabs result with a parse failure, or a Google result without the AI Overview you needed, costs the same as a good one.
Running Push-Pull jobs alongside tasks
Leave the Oxylabs jobs running and add tasks beside them for a week or two, writing both into the same table with a provider column.
- Choose prompts for the assistants both sides cover.
- Keep the Oxylabs Push-Pull jobs as they are, with the same
geo_locationcountries. - Submit matching tasks here with
countryset to the same country and a webhook per task. - Write both into one table: provider, engine, market, prompt, answer text, cited domains, parse status on Oxylabs, task status here.
Read these off the combined table:
- Usable-result rate: Oxylabs results with a successful parse status versus
COMPLETEDtasks here. - Cited domains per prompt, set against how far the domain set moves between two consecutive days on either side.
- Billing: what you paid for results you couldn’t use on each side, given that Oxylabs bills 4xx results.
Move one source at a time. A Push-Pull job and a task can write the same row, so an engine is migrated only when you delete its results fetch, not when you send the first task.
Failure and billing semantics
Oxylabs bills by result status: its billing docs count 2xx and 4xx results as successful and billable, exclude 429 and 5xx, and bill client-side faults. The same docs say a 2xx or 4xx result is billed even when it lacks the expected information. Here there is no partial result: a task is COMPLETED and charged, or FAILED and free.
That removes one branch from your code and adds another. Instead of reading job status and parse status, branch on the error code returned at submission. The authentication and errors page defines those codes, and rate limits sets out the queue limit that takes the place of Oxylabs’ job throughput.
Where each one fits
- Synchronous AI answers? Oxylabs’ docs list its AI sources as Push-Pull only (checked 2026-09-17); here every served engine can be called synchronously.
- Coordinates or Google criteria ids? Oxylabs.
- Non-AI scraping on the same contract? Oxylabs.
- Per-task webhooks with signatures and idempotency? This API.
Traps in the migration
- Keeping the two-step fetch. Oxylabs callbacks announce completion; deliveries here carry the data. Remove the results fetch or you’ll call an endpoint that doesn’t exist.
- Free-text geo. Oxylabs warns that an unrecognized Google
geo_locationis not rejected. Herecountryis an ISO 3166-1 alpha-2 code; list the codes an engine supports withGET /v1/countriesonce and cache them. - Prompt length. Oxylabs documents a 4,000-character limit for its ChatGPT source; here prompts can be at most 2,000 characters on every engine, and a longer one is refused with a 400. Keep prompts to what a user would type; long pasted context measures something else.
- Retry storms. Don’t resubmit a task that is still
QUEUEDorPROCESSING. OnlyCOMPLETEDandFAILEDare final, and a repeated idempotency key answers409anyway.
The ChatGPT engine page has the result schema; the quickstart has a working request.
Oxylabs is a trademark of its owner. AnswerLine is not affiliated with or endorsed by Oxylabs.
Questions
Which AI assistants does Oxylabs' Web Scraper API support?
As checked on 2026-09-17, its docs list chatgpt, perplexity and gemini sources under LLMs and AI, plus a google_ai_mode source and AI Overviews inside google_search, and no Copilot or Grok source.
Can I call Oxylabs' ChatGPT source synchronously?
Oxylabs' docs, checked 2026-09-17, say Realtime and Proxy Endpoint are not available for the AI assistant sources, so they run as Push-Pull jobs. This API accepts every engine it serves as a synchronous monitor call or as an async task.
How does Oxylabs bill failed results?
Its billing docs, checked 2026-09-17, count results with 2xx and 4xx status codes as successful and billable, do not bill 429 and 5xx, and bill faults on the client side. This API does not charge a failed request or task.
Is there a separate Oxylabs price for ChatGPT or Perplexity results?
The pricing page checked on 2026-09-17 lists prices for Google, Amazon, other targets and JavaScript rendering, but no separate price for the AI assistant sources.
What do I change to migrate an Oxylabs Push-Pull job?
Replace the job POST with POST /v1/async/task or /v1/async/task/batch, move source-specific fields into payload, replace callback_url with webhook.url, and replace geo_location with country (one of 213 countries on ChatGPT, Gemini, Google Search and AI Mode; any country on Copilot, Perplexity and Grok).