Docs menu
Docs

ProxyField Scraper API Documentation

ProxyField's scraper APIs take a POST with a JSON body at https://api.proxyfield.io/v1, authenticated with an Authorization: Bearer <api_key> header, and return JSON that says whether the request was billed; the Google SERP API, for example, costs $1.20 per 1,000 successful results, or $0.80 from 10,000 results in one purchase. The APIs are in development: this page is their design, and access is through Contact sales.

residential IPs
412M+
from, traffic never expires
$1.95/GB
Easy Trial
1 GB for $2.95

Through the sales team on our 24/7 live chat

Through the sales team on our 24/7 live chat

On this page 19 sections

Status: in development

The APIs below are designed and priced, and they are not open for calls yet. Use this page to plan an integration; ask sales for access and the go-live date. Every API runs on ProxyField's own pool, is billed on successful results only, and is paid from the same crypto balance as your proxies.

APIEndpointReturnsOne billable resultPrice per 1,000 successful results
Google SERP APIPOST /v1/google/searchone Google results page as JSON: organic results, ads, the AI Overview, People Also Ask, the local pack, featured snippet, knowledge panel, inline shopping, top stories, related searchesone results page$1.20, from $0.80
Google AI Mode APIPOST /v1/google/ai-modethe AI Mode answer as text, Markdown and blocks, with its cited sourcesone answer$1.50, from $1.00
ChatGPT scraper APIPOST /v1/chatgptthe ChatGPT answer, its citations, the web searches it ran, product cardsone answer$1.50, from $1.00
Perplexity scraper APIPOST /v1/perplexitythe Perplexity answer, its sources, the follow-up questions it suggestsone answer$1.50, from $1.00
Web Scraping APIPOST /v1/scrapeany URL as HTML, Markdown, text, a JSON envelope or a screenshot; plain HTTP or JavaScript renderingone page fetchedHTTP $0.50, from $0.20; JS rendering $2.00, from $1.00
Amazon scraper APIPOST /v1/amazon/product, POST /v1/amazon/searcha product page, or a search or category results page, parsedone product page or one results page$0.60, from $0.30
Google Maps scraper APIPOST /v1/google/mapsone page of Google Maps results, up to 20 places, parsedone results page$1.50, from $1.00

The lower price in each row is the volume price: it applies from 10,000 successful results in one purchase.

Authentication

Send your API key in the Authorization header of every request:

Authorization: Bearer <api_key>

The header is the only place the key goes: the API takes no key in the query string, because URLs end up in logs. Your key is created in the ProxyField dashboard once sales opens access. A missing or unknown key returns 401 invalid_api_key, which is not billed.

Base URL and versions

All endpoints live under https://api.proxyfield.io/v1. A version only grows: new optional parameters, new response fields and new values of a field can appear within v1, so your code should ignore fields it does not know. Removing or renaming anything needs v2.

Requests

  • Every endpoint takes POST with a JSON body (Content-Type: application/json, UTF-8).
  • An unknown parameter returns 400 invalid_parameter, so a typo does not pass silently. null means "use the default".
  • A parameter that only works with another one, such as wait_for without render: true, returns 400 unsupported_combination.
  • Two parameters work on every endpoint:
ParameterTypeDefaultAllowed valuesWhat it does
timeoutinteger12000010000–180000 msHow long we keep trying, retries included. When it runs out, the answer is 504 timeout, which is not billed
tagstringnullup to 255 charactersYour own label, returned in metadata.tag and in job callbacks

Responses

Parsed endpoints return one JSON object with three parts: metadata, parameters (your request with the defaults filled in) and the API's own blocks.

metadata fieldMeaning
idthe request id, the same as the X-Request-Id header
apiwhich API answered, such as google_search
statussuccess (a result was delivered and billed) or no_result (AI APIs only: the engine showed no answer; not billed)
billedtrue if this response counts as one successful result
cachedtrue if the result came from the 1-hour cache (Google search and Maps)
created_at, processed_atISO 8601 times in UTC
html_urlthe raw HTML behind the parsed result, kept 48 hours and free to download
tagyour tag, or null

Field rules:

  • Every field is always present. A block that is not on the page comes back as null or [], never missing.
  • Names are snake_case. Links are url, every link has its domain, and every list item has a 1-based position.
  • AI answers share one citation shape: citations[] of {position, title, url, domain, snippet}. Text blocks point to them with citations: [1, 2].

Response headers, on every response including errors:

HeaderMeaning
X-Request-Idthe request id
X-Billedtrue if this response counts as one successful result
X-Cachehit or miss (Google search and Maps)
X-Concurrency-Limit, X-Concurrency-Remainingthe requests your account may run at once, and how many are free now
X-Target-Status, X-Final-UrlWeb Scraping API: the site's status code and the URL after redirects
Retry-Afteron 429 only

Countries and locations

Every API accepts the proxy pool's 195+ countries.

  • Google endpoints use Google's own names: gl (country of the results, a two-letter code), hl (interface language), google_domain, and location (a canonical name such as Austin,Texas,United States). The request leaves from an IP in the gl country. Find canonical names with GET /v1/google/locations?q=austin&gl=us&limit=20, which returns locations[] of {canonical_name, name, type, country_code} and is not billed.
  • The other endpoints use country, a two-letter code in lowercase.
  • A country the API does not accept returns 400 unsupported_country. Postal-code locations are not part of the first version.

Google SERP API: POST /v1/google/search

One request returns one Google results page, with the AI Overview, People Also Ask and the local pack parsed.

ParameterTypeDefaultAllowed valuesNotes
qstringrequired1–700 charactersThe query; Google operators such as site: and quotes work
glstringustwo-letter country codeCountry of the results; the request leaves from an IP there
hlstringende, fr, en-gb, es-419 …Interface language
google_domainstringgoogle.comany google.* domainResults are localised by gl and hl, not by the domain
locationstringnulla canonical country, region or city nameNot with uule
uulestringnullGoogle's encoded locationNot with location
devicestringdesktopdesktop, mobile
pageinteger11–10About 10 organic results a page; each page is one billed result
safestringoffactive, offSafeSearch
outputstringjsonjson, html, markdownhtml and markdown return the page itself, billed the same
no_cachebooleanfalseSkip the 1-hour cache

There is no num parameter: Google stopped serving 100 results on one page in September 2025, so a deeper rank check reads several pages, each one billed. When Google loads the AI Overview after the page, the API fetches it in the same request at no extra charge; ai_overview.status is present, absent or error. People Also Ask is returned as the page shows it, never expanded by clicking.

BlockFields
search_informationquery_displayed, total_results, spelling_correction
ai_overviewstatus, text_blocks[] (type, text, items[], citations[]), citations[], markdown
ads[]position, block (top or bottom), title, url, displayed_url, domain, description
organic_results[]position (counted across pages), title, url, displayed_url, domain, snippet, date, sitelinks[]
related_questions[]People Also Ask: position, question, answer, source
local_resultsplaces[]: position, title, place_id, rating, reviews_count, price_level, category, address, phone, hours_summary, website, gps_coordinates
featured_snippettitle, url, domain, snippet
knowledge_graphtitle, type, description, source, website, attributes
shopping_results[]position, title, price, extracted_price, currency, merchant, url, rating, reviews_count
top_stories[]position, title, url, source, date
related_searches[]position, query
paginationcurrent_page, next_page
Shell
# The request the Google SERP API takes (access through Contact sales)
curl https://api.proxyfield.io/v1/google/search \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{"q": "espresso machine", "gl": "us", "hl": "en", "location": "Austin,Texas,United States"}'
JSON
{
  "metadata": {"id": "req_7f3c9a1e52d84b0c", "api": "google_search", "status": "success", "billed": true, "cached": false, "html_url": "https://api.proxyfield.io/v1/requests/req_7f3c9a1e52d84b0c/html", "tag": null},
  "ai_overview": {"status": "present", "markdown": "An espresso machine forces hot water through finely ground coffee at about 9 bar of pressure [1][2]. ...", "citations": [{"position": 1, "title": "Espresso machine", "url": "https://en.wikipedia.org/wiki/Espresso_machine", "domain": "en.wikipedia.org", "snippet": "An espresso machine brews coffee by forcing pressurized water near boiling point through a puck of ground coffee."}]},
  "organic_results": [{"position": 1, "title": "Espresso machine - Wikipedia", "url": "https://en.wikipedia.org/wiki/Espresso_machine", "displayed_url": "en.wikipedia.org › wiki › Espresso_machine", "domain": "en.wikipedia.org", "snippet": "An espresso machine brews coffee by forcing pressurized water near boiling point through a puck of ground coffee and a filter.", "date": null, "sitelinks": []}],
  "related_questions": [{"position": 1, "question": "What is the difference between espresso and coffee machines?", "answer": "Espresso machines use pressure to push water through finely ground coffee, while drip machines let water flow through coarser grounds by gravity.", "source": {"title": "Espresso vs drip coffee", "url": "https://www.example-coffee-guide.com/espresso-vs-drip", "domain": "www.example-coffee-guide.com"}}],
  "pagination": {"current_page": 1, "next_page": 2}
}

The example is shortened; a full response has every block of the table, null or [] where the page has none.

Google AI Mode API: POST /v1/google/ai-mode

One request is one prompt and returns one answer.

ParameterTypeDefaultAllowed valuesNotes
qstringrequired1–400 charactersThe prompt
glstringustwo-letter country code
hlstringenas on the SERP API
locationstringnulla canonical country, region or city name
devicestringdesktopdesktop, mobile

The response holds answer_text, answer_markdown (with [n] source markers), text_blocks[] (paragraphs, lists and tables) and citations[]. If Google shows no AI Mode answer, metadata.status is no_result, the answer fields are null and nothing is billed. Follow-up questions in the same conversation are not part of the first version. The AI Overview inside a normal results page comes from the Google SERP API.

ChatGPT scraper API: POST /v1/chatgpt

Each prompt is asked in a fresh conversation and returns that one answer.

ParameterTypeDefaultAllowed valuesNotes
promptstringrequired1–4,000 characters
countrystringustwo-letter country codeThe country the question is asked from
web_searchbooleantrueAsk with web search on; web_search_used reports whether ChatGPT searched
include_htmlbooleanfalseAlso return answer_html
FieldMeaning
answer_text, answer_markdown, answer_htmlthe answer; answer_html only with include_html
modelthe model name if the page shows one, else null
web_search_usedwhether ChatGPT searched the web for this answer
citations[]the sources cited in the answer
search_queries[]the web searches ChatGPT ran for the answer, when shown, at no extra charge
products[]product cards: position, title, price, extracted_price, currency, rating, reviews_count, merchant, url
Shell
# The request the ChatGPT scraper API takes (access through Contact sales)
curl https://api.proxyfield.io/v1/chatgpt \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "What are good lightweight trail running shoes for beginners?", "country": "us", "web_search": true}'
JSON
{
  "metadata": {"id": "req_c40e8b2a9f1d6377", "api": "chatgpt", "status": "success", "billed": true, "cached": false, "tag": "brand-monitor-us"},
  "model": null,
  "web_search_used": true,
  "answer_markdown": "For beginners, look for a trail shoe with a **moderate drop**, a protective but flexible sole and **lugs of about 4 to 5 mm** [1]. ...",
  "citations": [{"position": 1, "title": "Trail running shoes: a beginner's guide", "url": "https://www.example-running.com/trail-shoes-beginners", "domain": "www.example-running.com", "snippet": "Lug depth and drop matter more than brand."}],
  "search_queries": [],
  "products": []
}

AI answers can take longer than a page fetch, so large runs go best as jobs (see Jobs and batches).

Perplexity scraper API: POST /v1/perplexity

ParameterTypeDefaultAllowed valuesNotes
promptstringrequired1–8,000 characters
countrystringustwo-letter country code
include_htmlbooleanfalseAlso return answer_html

The response holds answer_text, answer_markdown (with [n] markers that point to the numbered sources), answer_html, model (or null), citations[] and related_questions[], the follow-ups Perplexity suggests. Each prompt returns that one answer and no data from any account.

Web Scraping API: POST /v1/scrape

Any public URL, fetched over plain HTTP or loaded in a browser. render alone decides the price: false is the HTTP price, true the JavaScript-rendering price.

ParameterTypeDefaultAllowed valuesNotes
urlstringrequiredan absolute http(s) URL, up to 8,192 characters
renderbooleanfalsefalse: plain HTTP; true: loaded in a browser
methodstringGETGET, POST, PUT
bodystringnullup to 1 MBFor POST and PUT
headersobjectnonestring valuesSent to the site as given
cookiesstringnullname=value; name2=value2
countrystringanytwo-letter country codeThe exit IP's country; there is no city setting
session_idstringnullup to 64 characters: letters, digits, _ and -The same exit IP for requests with the same id, for up to 10 minutes
devicestringdesktopdesktop, mobile
waitinteger00–35000 msExtra wait after load (render only)
wait_forstringnulla CSS selector, or XPath if it starts with /Wait until it appears (render only)
wait_untilstringdomcontentloadeddomcontentloaded, load, networkidleThe page event that counts as loaded (render only)
actionsarray[]up to 20 actionsBrowser actions, run in order (render only)
block_resourcesbooleantrueSkip images, fonts and media (render only; off for screenshots)
window_width, window_heightinteger1920, 1080320–3840
outputstringhtmlhtml, markdown, text, json, screenshotscreenshot returns a PNG and needs render
screenshotbooleanfalseAlso take a PNG, returned base64 with output: json (render only)
screenshot_full_pagebooleanfalseThe whole page, not only the window
follow_redirectsbooleantrue
Action typeFieldsDoes
clickselectorclicks the first match
fillselector, valuetypes into a field
scrollto: "bottom" or y (pixels)scrolls the page
waitms (up to 10000)waits
wait_forselector, timeout_ms (up to 30000)waits for an element
evaluatescript (up to 10,000 characters)runs JavaScript; its return value goes to actions_log[].result
infinite_scrollmax_count (up to 50), delay_ms (up to 5000)scrolls until nothing new loads or max_count is reached

output: html, markdown or text returns the body itself, with the site's status code in X-Target-Status and the URL after redirects in X-Final-Url. output: json returns metadata, parameters, status_code, final_url, content_type, headers (the site's), cookies[], content, screenshot (base64 or null) and actions_log[]. Blocked pages are retried on new IPs within timeout, and the retries are not billed. If no valid page comes back in time, the answer is 502 target_unavailable with the site's last status, not billed.

Shell
# The request the Web Scraping API takes (access through Contact sales)
curl https://api.proxyfield.io/v1/scrape \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.example-shop.com/category/grinders?page=2", "render": true, "wait_for": ".product-card", "country": "gb", "output": "json", "actions": [{"type": "click", "selector": "#accept-cookies"}, {"type": "scroll", "to": "bottom"}]}'
JSON
{
  "metadata": {"id": "req_41ac7e93d05f2b68", "api": "web_scrape", "status": "success", "billed": true, "cached": false, "html_url": null, "tag": null},
  "status_code": 200,
  "final_url": "https://www.example-shop.com/category/grinders?page=2",
  "content_type": "text/html; charset=utf-8",
  "cookies": [{"name": "consent", "value": "accepted", "domain": ".example-shop.com", "path": "/"}],
  "content": "<!DOCTYPE html><html lang=\"en-GB\"><head><title>Grinders - page 2</title></head><body>...</body></html>",
  "screenshot": null,
  "actions_log": [{"type": "click", "ok": true}, {"type": "scroll", "ok": true}]
}

Amazon scraper API: POST /v1/amazon/product and POST /v1/amazon/search

Two operations: one product page, or one search or category results page.

ParameterOperationTypeDefaultAllowed valuesNotes
asinproductstringnull10 characters, A-Z 0-9Send asin or url
urlproduct, searchstringnulla product page, or a search or category results page
querysearchstringnullup to 500 charactersSend query or url
domainbothstringcomcom, co.uk, de, fr, it, es, ca, co.jpThe marketplace: the part after amazon.
zip_codebothstringnulla 5-digit US ZIP code, domain: com onlyPrices, delivery and stock as Amazon shows them for that delivery ZIP
localebothstringnulle.g. en_US, es_US, de_DEMust be a language the marketplace offers
pagesearchinteger11–20Each page is one billed result
sort_bysearchstringfeaturedfeatured, price_low_to_high, price_high_to_low, average_review, newest, best_sellers

The first version covers amazon.com, amazon.co.uk, amazon.de, amazon.fr, amazon.it, amazon.es, amazon.ca and amazon.co.jp; another marketplace returns 400 unsupported_marketplace. The zip_code is Amazon's own delivery setting on amazon.com, not a way to pick the IP.

  • Product: asin, parent_asin, url, title, brand, price, price_strikethrough, currency, discount_percentage, coupon, stock, is_prime, delivery[], delivery_location, buybox (seller_name, seller_id, fulfilled_by_amazon), other_sellers_count, rating, reviews_count, sales_rank[], categories[], bullet_points[], description, images[], variations[], product_details.
  • Search: results[] with position, organic_position, sponsored_position, is_sponsored, asin, title, url, image, price, price_strikethrough, currency, rating, reviews_count, sales_volume, is_prime, is_amazons_choice, is_best_seller; plus page, last_page and total_results. A results page with no products is still a result.
  • An ASIN or URL with no product page returns 404 target_not_found, not billed. Review pages, the offers list and best-seller lists are not part of the first version.
Shell
# The request the Amazon scraper API takes (access through Contact sales)
curl https://api.proxyfield.io/v1/amazon/product \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{"asin": "B0EXAMPLE7", "domain": "com", "zip_code": "10001"}'

Google Maps scraper API: POST /v1/google/maps

One request returns one results page of up to 20 places.

ParameterTypeDefaultAllowed valuesNotes
qstringrequired1–700 charactersWhat to search for, such as coffee roasters
llstringnull@latitude,longitude,zoomz, zoom 3–21The map centre and zoom; send ll or location
locationstringnulla canonical region or city nameInstead of ll
glstringustwo-letter country code
hlstringenas on the SERP API
pageinteger11–6Up to 20 places a page; each page is one billed result
no_cachebooleanfalseSkip the 1-hour cache

Each place in places[] has position (counted across pages), title, place_id, address, phone, website, domain, rating, reviews_count, price_level, category, categories[], gps_coordinates, open_state, hours (per weekday), service_options, thumbnail and description; pagination gives current_page, next_page and places_on_page. Review texts, emails and single-place details are not part of the first version.

JSON
{
  "metadata": {"id": "req_5d2e7a9c0b4f8136", "api": "google_maps", "status": "success", "billed": true, "cached": false, "tag": null},
  "parameters": {"q": "coffee roasters", "ll": "@30.2672,-97.7431,14z", "location": null, "gl": "us", "hl": "en", "page": 1},
  "places": [{"position": 1, "title": "Example Roasting Co.", "place_id": "ChIJexample0101AustinTX", "address": "507 Example Ave, Austin, TX 78702", "phone": "+1 512-555-0187", "website": "https://www.example-roasting.com/", "domain": "www.example-roasting.com", "rating": 4.8, "reviews_count": 1126, "category": "Coffee roasters"}]
}

Jobs and batches

Every API can also run as a job: a job takes the same parameters as the direct call and returns the same body in result. Use jobs for AI answers and for large runs.

CallDoes
POST /v1/jobs with {api, params, callback_url, tag}queues one request and returns 202 with the job (status: queued)
POST /v1/jobs/batch with {api, params, items[], callback_url, tag}queues up to 1,000 requests of one API; params are shared and each item overrides them; returns 202 with the batch and one job id per item, in order
GET /v1/jobs/{id}status is queued, running, done or failed; result when done, error when failed
GET /v1/batches/{id}the counts per status and the job ids
  • A job has up to 10 minutes; its timeout is ignored.
  • Results are kept for 48 hours after the job finishes (expires_at), then return 410 expired. Fetching a result again is not billed.
  • callback_url receives a POST of the finished job, result included, signed with X-ProxyField-Signature: sha256=<HMAC of the body with your webhook secret>. A failed callback is retried 3 times. A batch calls it once per job.
JSON
{
  "id": "bat_7e19c4a2d0f5b683",
  "api": "google_search",
  "counts": {"total": 2, "queued": 2, "running": 0, "done": 0, "failed": 0},
  "jobs": [{"index": 0, "id": "job_a1b2c3d4e5f60718", "status": "queued"}, {"index": 1, "id": "job_a1b2c3d4e5f60719", "status": "queued"}]
}

Helpers, none of them billed: GET /v1/google/locations, GET /v1/jobs/{id}, GET /v1/batches/{id}, GET /v1/requests/{id}/html and GET /v1/usage, which counts billed results and unbilled requests per API and day.

Billing

The scraper APIs are billed on successful results only, priced per 1,000 successful results (prices in the table above and on pricing).

Billed (X-Billed: true, metadata.billed: true):

  • a response with metadata.status: success;
  • Web Scraping API: a site's 2xx answer, including a sign-in page the site serves with a 200 status, and a site's 404 or 410;
  • a job that ends done with a result, by the same rule as a direct call.

Not billed:

  • every error response (4xx, 5xx): bad parameters, an empty balance, rate limits, our failures, target_unavailable, timeout;
  • AI APIs: no_result, when the engine showed no answer;
  • Amazon: 404 target_not_found;
  • our internal retries: only the final delivered result counts;
  • jobs that end failed;
  • cached results: on Google search and Maps, the same parameters within 1 hour come from the cache with metadata.cached: true and X-Cache: hit; no_cache: true fetches fresh and is billed;
  • the helpers.

Volume price: the lower price of each API applies from 10,000 successful results in one purchase.

Payment: the APIs are paid from the same crypto balance as ProxyField proxies, in USDT, BTC, ETH or 10 other coins (crypto payments). The balance never expires, and there is no subscription or monthly fee.

Limits

  • 20 requests at once per account (direct calls in flight); the next one returns 429 concurrency_limit with Retry-After. Higher limits through sales. Your account's own limit is in X-Concurrency-Limit and in GET /v1/usage.
  • Up to 1,000 requests in one batch; a larger batch returns 400 invalid_parameter.
  • Too many calls in a short time return 429 rate_limited with Retry-After.
  • Limits apply per account, never per key, and a 429 is never billed.

Errors

Errors use real HTTP status codes and one body: error with code, message, param and target_status, plus request_id.

JSON
{
  "error": {"code": "unsupported_combination", "message": "wait_for needs render=true.", "param": "wait_for", "target_status": null},
  "request_id": "req_b7d40e2c19a6f853"
}
HTTPerror.codeWhenBilled
400missing_parameter, invalid_parameter, unsupported_combination, unsupported_country, unsupported_marketplacethe request is wrong; param names the fieldno
401invalid_api_keyno key, or an unknown keyno
402insufficient_balancethe balance cannot pay for one more resultno
403account_suspendedthe account is suspendedno
404not_found, target_not_foundan unknown job, batch or request id; Amazon: no product page for this ASIN or URLno
410expireda job result or stored HTML past its 48 hoursno
429concurrency_limit, rate_limitedsee Limitsno
500internal_errorour faultno
502target_unavailableno valid page after our retries; target_status has the site's last codeno
504timeoutno result within timeoutno

What the first version leaves out

  • Expanded People Also Ask, which ProxyField does not sell.
  • Other Google tabs and engines (News, Images, the Shopping tab, Jobs, Bing), and parsed endpoints for other sites: the Web Scraping API fetches those pages as HTML, Markdown or text.
  • Postal-code locations for Google, and Amazon delivery ZIP codes outside amazon.com.
  • Amazon review pages, the offers list and best-seller lists; Google Maps review texts and single-place details.
  • Follow-up turns in AI Mode and ChatGPT: one request is one answer.
  • GET requests and a key in the query string.
  • SDKs, an MCP server, and a no-code dashboard with CSV export.

Acceptable use applies to every request: public pages only, and follow the site's terms (acceptable use policy).

ProxyField Scraper API Documentation FAQ

Where is the ProxyField scraper API documentation?

ProxyField's scraper API documentation is this page: authentication, the base URL https://api.proxyfield.io/v1, the 7 APIs with their parameters, fields and sample JSON, billing per 1,000 successful results ($1.20 for Google results pages, $0.50 for a plain-HTTP page), limits and errors. The APIs are in development, so access is through Contact sales.

How do I get a ProxyField API key?

Contact sales for access; once it opens, you create the key in your ProxyField dashboard. You send it in the Authorization: Bearer <api_key> header of every request, never in the URL.

Is the ProxyField API open for calls today?

Not yet: the scraper APIs are in development, and this page is their design. Prices are set, and sales gives you access and the go-live date.

Which endpoints does the ProxyField API have?

Eight: /v1/google/search, /v1/google/ai-mode, /v1/chatgpt, /v1/perplexity, /v1/scrape, /v1/amazon/product, /v1/amazon/search and /v1/google/maps, each a POST with a JSON body. Jobs and batches use /v1/jobs and /v1/jobs/batch, and the helpers cover locations, job status, stored HTML and usage.

Which parameters does a request need?

Only the one that says what to fetch: q on the Google APIs, prompt on ChatGPT and Perplexity, url on the Web Scraping API, and asin, url or query on Amazon. Every other parameter has a default, and an unknown one returns a 400 error, which is not billed.

Is there a limit to the number of concurrent requests?

Yes: 20 direct requests at once per account, and up to 1,000 requests in one batch. Higher limits are available through sales, and a request over the limit gets a 429 with Retry-After, which is not billed.

What does a 429 error from the ProxyField API mean?

It means your account reached its limit: concurrency_limit when 20 requests are already running, or rate_limited when too many calls arrive in a short time. Wait for the seconds in Retry-After and send the request again; a 429 is never billed.

Am I charged when an API request fails?

No. Errors, blocked and timed-out requests, our internal retries and AI requests where the engine showed no answer are not billed; every response says in X-Billed whether it counted.

Which status codes from the target site are billed?

On the Web Scraping API, a site's 2xx answers are billed, including a sign-in page served with a 200 status, and so are its 404 and 410, as is the market norm. Other errors from the site are retried on new IPs, and a page that never arrives within the time limit is not billed.

When should I use jobs instead of a direct request?

Use jobs for AI answers, which take longer than a page fetch, and for large runs: a batch queues up to 1,000 requests and calls your callback_url for each finished job. Results stay available for 48 hours after a job finishes.

Show 2 more questionsShow fewer questions

Which languages and SDKs does the ProxyField API support?

Any language that can send an HTTPS request with a JSON body, as in the cURL samples on this page. The first version has no SDK, no MCP server and no no-code export.

How do I pay for the scraper APIs?

From the same crypto balance as ProxyField proxies, in USDT, BTC, ETH or 10 other coins. The balance never expires, there is no subscription or monthly fee, and the volume price applies from 10,000 successful results in one purchase.

Easy Trial: 1 GB for $2.95.

Try for the price of 1 GB, no subscription, traffic never expires.