Tutorial18 min read

What Is a Scraper API? Scrape, Crawl and Map Endpoints

Short answer

A scraper API is a web service that fetches pages for you: you send a URL and your API key in one HTTP request, and it returns the page's HTML, Markdown or extracted data as JSON, with proxy rotation, JavaScript rendering and retries done on the provider's side. Its endpoints differ by scope: scrape is "give me this page" (one URL, answered in the same response); crawl is "explore this site and give me the pages' content" (a start URL plus a page limit, depth and URL patterns, run as an asynchronous job that returns a job ID you poll or receive by webhook); map is "tell me which pages exist" (a list of a site's URLs, with no page content). Scraper APIs charge per request or credit, per successful result or, for proxy-style products, per GB. ProxyField's Web Scraping API is designed to bill successful results only.

residential IPs
412M+
from, traffic never expires
$1.95/GB
Easy Trial
1 GB for $2.95
On this page 9 sections
  1. How a scraper API works
  2. Scrape, crawl and map endpoints explained
  3. How do web scraping APIs charge: per request, per successful result or per GB?
  4. What a scraper API handles for you
  5. How to use a web scraping API
  6. Scraper API vs proxies vs an official API
  7. Who benefits from a scraper API
  8. How reliable is a scraper API?
  9. What Is a Scraper API? Scrape FAQ

Its design prices plain HTTP pages at $0.50 per 1,000 successful results, or $0.20 from 10,000 results in one purchase; it is in development, so access is through Contact sales. To run your own scraper today, ProxyField residential proxies start with the Easy Trial: 1 GB for $2.95.

How a scraper API works

A scraper API wraps the whole fetching side of a scraper behind one endpoint. A typical call goes through six steps:

  1. You send a request with the target URL and options: the country to fetch from, whether to render JavaScript, the device type, sometimes the fields you want.
  2. The API picks an IP from its proxy pool, in the country you asked for.
  3. It fetches the page, either as a plain HTTP request or in a headless browser that runs the page's scripts.
  4. It checks the response. In a typical scraper API, a block page, a CAPTCHA page, a 403 or a 429 counts as a failure, and the API retries with another IP.
  5. It parses the result when the API offers parsing: it returns the HTML as is, or turns it into JSON or Markdown.
  6. It returns the result to you and records whether the request counts for billing.

From your side, scraping a page becomes one HTTP call. This is the request format of ProxyField's Web Scraping API as designed in the API documentation; the API is in development, so access is through Contact sales:

Shell
curl https://api.proxyfield.io/v1/scrape \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.example-shop.com/product/42", "render": false, "country": "us", "output": "json"}'
JSON
{
  "metadata": {"id": "req_41ac7e93d05f2b68", "api": "web_scrape", "status": "success", "billed": true, "cached": false, "tag": null},
  "status_code": 200,
  "final_url": "https://www.example-shop.com/product/42",
  "content_type": "text/html; charset=utf-8",
  "content": "<!DOCTYPE html><html>…</html>"
}

The parameters that decide the result: url; render (false is plain HTTP, true loads the page in a browser and sets the price); country, a two-letter code from the pool's 195+ countries; output (html, markdown, text, json or screenshot); and, with rendering, wait_for (a CSS selector) and up to 20 browser actions such as click and scroll. metadata.billed and the X-Billed header say whether the call counted. In this design, blocked pages are retried on new IPs within the request's timeout (120,000 ms by default), and the retries are not billed.

Scrape, crawl and map endpoints explained

Scraper APIs split the work by scope: one page, a whole section of a site, or only the list of its pages.

FeatureScrapeCrawlMap
You sendOne URLA start URL and rulesA domain or start URL
You get backThat page's HTML, Markdown, text, screenshot or extracted fieldsThe content of many pages, found by following linksA list of URLs, with no page content
How it runsSynchronous: the answer comes in the same HTTP responseAsynchronous: the call returns a job ID at once; you poll the job's status or receive a webhook when it finishes; large results come back in pagesUsually synchronous, and fast, because it reads sitemaps and links without fetching every page in full
Controls it typically takesRendering on or off, a wait for a selector or a time, browser actions, country, output format, timeoutPage limit, link depth, include and exclude path patterns, subdomains on or off, whether to use the sitemap, and the scrape options applied to each pageA search term to filter URLs, a result limit, subdomains, whether to use the sitemap
Use it whenYou already know which pages you needYou need every product, article or listing under a sectionYou want to see a site's structure first, or choose URLs yourself
Billed asOne result per URL fetched; in ProxyField's design, one billed result per URL, and a batch of up to 1,000 URLs is one result per URLEvery page the crawl fetches, including the category, filter and pagination pages it passes throughUsually one call; with ProxyField's design you map by fetching the sitemap, which is one billed result for the sitemap file

In one line each: scrape is "give me this page", crawl is "explore this site and give me the pages' content", map is "tell me which pages exist".

The three chain together. Map finds the URLs, you filter them (for example, keep only /product/ pages), and scrape fetches each one. Crawl does map and scrape in one job, which is simpler but gives you less control over which pages you pay for. Two other endpoint types are common: search or SERP endpoints take a query and return parsed results, and batch endpoints take a list of known URLs and return a job.

What a crawl and a map call look like

The shape below is typical of scraper APIs that have crawl and map endpoints. It is a generic example on a placeholder host, not ProxyField's API: ProxyField's design has no crawl or map endpoint (see the next sections). Field names vary by provider; the flow does not.

1. Start a crawl. The call returns a job ID at once, not the pages:

Shell
curl -X POST https://api.scraper.example/v1/crawl \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.example-shop.com/category/shoes/", "limit": 500, "max_depth": 2,
       "include_paths": ["/product/"], "exclude_paths": ["/cart", "/login"],
       "webhook": "https://your-app.example.com/hooks/crawl"}'
JSON
{"id": "crawl_9f2c41d7", "status": "queued", "url": "https://api.scraper.example/v1/crawl/crawl_9f2c41d7"}

2. Poll the job (or wait for the webhook). While it runs you see progress; finished pages come back in pages of results, with a link to the next page:

Shell
curl https://api.scraper.example/v1/crawl/crawl_9f2c41d7 -H "Authorization: Bearer <api_key>"
JSON
{
  "id": "crawl_9f2c41d7",
  "status": "running",
  "completed": 120,
  "total": 500,
  "next": "https://api.scraper.example/v1/crawl/crawl_9f2c41d7?skip=100",
  "data": [
    {"url": "https://www.example-shop.com/product/42", "status_code": 200, "markdown": "# Trail Runner 3\n\nPrice: $129.95 …"}
  ]
}

The status moves from queued to running to completed (or failed). limit is the hard page cap and max_depth the link depth; without them a crawl stops only at the provider's default cap.

3. A map call is a single synchronous request that returns URLs only:

Shell
curl -X POST https://api.scraper.example/v1/map \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.example-shop.com", "search": "product", "limit": 1000}'
JSON
{"links": ["https://www.example-shop.com/product/42", "https://www.example-shop.com/product/43", "…"]}

How to configure a crawl job

A crawl job needs limits, or it will fetch far more pages than you meant to pay for. Set these before you start one:

  • Start URL and scope: the section to crawl (/blog/ or /category/shoes/), and whether subdomains count.
  • Depth: how many links away from the start URL to follow. Depth 2 or 3 covers most category trees.
  • Page limit: a hard cap on pages, so a calendar or a filter combination cannot loop forever.
  • Include and exclude patterns: keep /product/, skip /cart, /login, ?sort= and ?page= duplicates.
  • Sitemap: use the site's sitemap to find pages faster, skip it, or crawl only the URLs it lists.
  • Rendering: turn JavaScript rendering on only if the pages need it, because it usually costs more per page.
  • Delivery: poll the job status, or receive a webhook when it finishes, and verify the webhook's signature.

Check permission before you set the limit. A crawl follows links on its own, so it reaches pages you never looked at. Read the site's robots.txt first: RFC 9309 defines its User-agent, Allow and Disallow rules, and a crawl should stay out of disallowed paths. Read the site's terms as well, because robots.txt is not the whole answer: an API makes fetching easier, but it does not give you permission to collect or republish a site's content. Scrape public pages only, and follow the site's terms.

Map then scrape, with ProxyField's API design

ProxyField's API design has a scrape endpoint and batch jobs rather than separate crawl and map endpoints, so you build map-then-scrape from those two. Most sites list their pages in an XML sitemap, which the sitemaps protocol caps at 50,000 URLs per file; robots.txt, defined in RFC 9309, usually names it in a Sitemap: line.

  1. Map

    Fetch the sitemap through POST /v1/scrape with {"url": "https://www.example-shop.com/sitemap.xml", "render": false, "output": "text"}. That is one billed result.

  2. Filter

    Keep the <loc> URLs you want, such as those containing /product/.

  3. Scrape in batches

    Send up to 1,000 URLs per call to POST /v1/jobs/batch:

JSON
{
  "api": "web_scrape",
  "params": {"render": false, "country": "us", "output": "json"},
  "items": [{"url": "https://www.example-shop.com/product/42"}, {"url": "https://www.example-shop.com/product/43"}],
  "callback_url": "https://your-app.example.com/hooks/proxyfield",
  "tag": "shop-products"
}
  1. Collect: each finished job is POSTed to your callback_url, signed with an X-ProxyField-Signature header (an HMAC-SHA256 of the body with your webhook secret), or you poll GET /v1/batches/{id}, which returns counts per status and one job ID per URL, in the order you sent them:
JSON
{
  "id": "bat_7e19c4a2d0f5b683",
  "api": "web_scrape",
  "created_at": "2026-10-26T15:20:00Z",
  "counts": {"total": 1000, "queued": 0, "running": 12, "done": 975, "failed": 13},
  "jobs": [
    {"index": 0, "id": "job_a1b2c3d4e5f60718", "status": "done"},
    {"index": 1, "id": "job_a1b2c3d4e5f60719", "status": "done"}
  ]
}

GET /v1/jobs/{id} returns one job's result once its status is done. Results are kept 48 hours, and the status calls are not billed. An account runs 20 direct requests at once; higher limits go through sales.

What this map-then-scrape run costs: 1 sitemap fetch plus 1,000 product pages is 1,001 billed results, about $0.50 at the plain-HTTP entry price of $0.50 per 1,000, or $0.20 when the results come from a purchase of 10,000 or more. With JavaScript rendering on every product page, the same run costs about $2.00, or $1.00 at the volume price. A crawl job that follows every link instead also pays for the category, filter and pagination pages it passes through.

How do web scraping APIs charge: per request, per successful result or per GB?

All three exist. Per request or credit is the common model for general scraper APIs, per successful result bills only the calls the provider counts as a success, and per GB belongs to proxies, unblockers and scraping browsers, where you pay for the bytes that pass through.

They often sit side by side at one provider: per request or credit (each call, or a credit cost per call that rises with rendering and hard targets), per successful result (only the calls the provider counts as a success) or per GB (the bytes that pass through). ProxyField's scraper APIs are designed to bill per successful result: $0.50 per 1,000 plain-HTTP pages and $2.00 per 1,000 rendered pages, or $0.20 and $1.00 from 10,000 results in one purchase. The same comparison in brief, with its FAQ, is on the pricing page.

ModelWhat you pay forWhat raises the billWatch for
Per requestEach callRetries you send yourselfWhether failed calls count; providers differ
Per successful resultEach result the provider counts as a successRendering and premium targets, if priced higherHow "success" is defined: are a 404 and a 200 sign-in page billed?
CreditsA bundle of credits, usually in a monthly subscription; a plain page costs 1 creditRendering, hard targets and premium IPs cost several credits or dozens eachUnused credits that expire at the end of the month
Per GBBytes of traffic; common for proxies, unblockers and scraping browsersHeavy pages, JavaScript, images and retriesPage weight, which is hard to predict before you test

Credits make a bill hard to forecast. As an illustration with no provider named: if a plain page costs 1 credit and a rendered page 10, then 100,000 rendered pages use 1,000,000 credits, ten times the plain-page plan you might have sized for. A per-result price for the same job is a single figure: 100 × $1.00 = $100 in ProxyField's design (the worked example below).

Before you choose any provider, check four things:

  1. Are retries billed, or only the final result?
  2. Are 404s and sign-in pages billed?
  3. What multiplier do rendering and hard targets carry?
  4. Does every response say what it cost, in a header or a field?

ProxyField's scraper APIs are designed to bill on successful results only, priced per 1,000 results, with no credits and no per-target multiplier: the price depends on the API and, on the Web Scraping API, on render. That is the only multiplier: a rendered page costs 4 times a plain one at the entry price ($2.00 vs $0.50 per 1,000) and 5 times from 10,000 results ($1.00 vs $0.20).

Which responses are billed in ProxyField's design:

ResponseBilled?
The page you asked for, fetchedyes, one result
The site's 404 or 410 (the HTTP status codes for a missing page)yes, as is the market norm
A sign-in page the site serves with a 200 statusyes
An error responseno
A blocked or timed-out requestno
Our internal retries on new IPsno
An AI answer the engine did not show (no_result)no

Every response carries metadata.billed and an X-Billed header. There is no subscription: the APIs are paid from the same crypto balance as the proxies, and the balance never expires.

APIWhat it returnsPrice per 1,000 successful results
Web Scraping API, plain HTTPAny URL$0.50, or $0.20 from 10,000 results
Web Scraping API, JavaScript renderingAny URL, rendered in a browser$2.00, or $1.00 from 10,000 results
Google SERP APIThe Google results page as JSON, with the AI Overview, People Also Ask and the local pack parsed$1.20, or $0.80 from 10,000 results
Google AI Mode, ChatGPT and Perplexity APIsThe AI answer$1.50, or $1.00 from 10,000 results
Amazon scraper APIAmazon product and search pages$0.60, or $0.30 from 10,000 results

The lower price applies from 10,000 successful results in one purchase. Details: web scraping API, pricing.

Worked example: 100,000 pages, three ways

Way to fetch 100,000 pagesAssumptionCost
Web Scraping API, plain HTTP100,000 results bought in one purchase100 × $0.20 = $20
Web Scraping API, JavaScript renderingthe same100 × $1.00 = $100
Your scraper + residential proxies, light pagesabout 100 KB per page, so about 10 GB10 GB × $2.79 = $27.90, plus your servers
Your scraper + residential proxies, heavy pagesabout 500 KB per page, so about 50 GB50 GB × $2.65 = $132.50, plus your servers

Per-GB pricing rewards light pages and punishes heavy ones; per-result pricing costs the same whatever a page weighs.

Break-even: per result or per GB?

A plain-HTTP result at $0.20 per 1,000 costs $0.0002 a page. At $2.79/GB, that buys about 72 KB of proxy traffic, so pages lighter than 72 KB cost less through your own proxies and heavier ones cost less through the API (before your servers and your time). The break-even page weight for each API price:

API price per 1,000 resultsCost per pageBreak-even page weight at $2.79/GB (10–49 GB)At $1.95/GB (1,000+ GB)
Plain HTTP, $0.50$0.0005about 179 KBabout 256 KB
Plain HTTP, $0.20 from 10,000$0.0002about 72 KBabout 103 KB
Rendered, $2.00$0.002about 717 KBabout 1,026 KB
Rendered, $1.00 from 10,000$0.001about 358 KBabout 513 KB

Measure your own pages first: the HTML of a product page alone is often far lighter than the full page with images and scripts that a browser loads, and only the bytes your scraper fetches count. (1 KB = 1,000 bytes and 1 GB = 1,000,000 KB here.) ProxyField residential proxies cost $2.95/GB for 1 GB, $2.79 from 10 GB, $2.65 from 50 GB, $2.49 from 100 GB, $2.29 from 250 GB, $2.09 from 500 GB and $1.95 from 1,000 GB, with no subscription; the traffic never expires and all purchases are final. The full comparison: scraper API vs proxies.

Easy Trial: 1 GB for $2.95.
Try for the price of 1 GB, no subscription, traffic never expires.

What a scraper API handles for you

The reason to pay for a scraper API is the work it takes off your hands. With your own scraper, each of these is your job:

TaskDo it yourselfScraper API
IP rotation and the proxy poolYou buy proxies and rotate themIncluded in the price
GeotargetingYou pick proxy locationsA country parameter
JavaScript renderingYou run and scale headless browsersA render option
Block detection and retriesYou detect block pages and retryDone by the API; billing rules for failures vary by provider
Headers and browser fingerprintsYou keep them realisticManaged by the provider
ParsingYou write and fix selectorsOptional parsed output on some APIs
InfrastructureServers, queues, monitoringNone

You still decide what to scrape, how often, and what to do with the data. You also stay responsible for scraping lawfully: an API does not change what is allowed. See is web scraping legal.

How to use a web scraping API

Using a scraper API takes five steps:

  1. Get an API key

    From the provider's dashboard.

  2. Test one URL

    In the provider's playground, or with cURL, to see what the response looks like.

  3. Choose the options per target

    Country, rendering on or off, and output format. Use the lowest-cost option that returns the data, which is usually plain HTTP.

  4. Call the API from your code

    And parse the response. A short Python version, in the request format of ProxyField's design:

Python
# pip install requests beautifulsoup4
import requests
from bs4 import BeautifulSoup

resp = requests.post(
    "https://api.proxyfield.io/v1/scrape",
    json={"url": "https://www.example-shop.com/product/42", "render": False, "country": "us", "output": "json"},
    headers={"Authorization": "Bearer <api_key>"},
    timeout=130,
)
resp.raise_for_status()
data = resp.json()
print(data["metadata"]["billed"], data["status_code"])
print(BeautifulSoup(data["content"], "html.parser").title.get_text(strip=True))
  1. Scale it. Send requests concurrently up to your account's limit, or use batch jobs for long URL lists. Log failures and the cost per page, so you can see which targets need rendering.

Rendered requests take longer, so give them a generous timeout. AI agents can call a scraper API the same way, or through an MCP server: see web scraping MCP servers.

Scraper API vs proxies vs an official API

A scraper API sits between two other ways to get web data:

FeatureOfficial API of the siteScraper APIYour scraper + proxies
What you getThe data the site chooses to expose, in a stable formatAny public page, as HTML or parsed JSONAnything your code can fetch and parse
Who handles IPs and blocksNobody needs to: you are an allowed clientThe providerYou
Cost modelFree tier or the site's own pricingPer request, per successful result or creditsServers plus proxy traffic per GB
ControlLow: only the fields and rate limits the site allowsMedium: the API's parametersFull
Best forSites with a good public APITeams without scraping infrastructureHigh volume on a few sites you know well

If the site has an official API that covers your data, use it first: web scraping vs API compares the two.

Who benefits from a scraper API

A scraper API pays off for:

  • Teams without a scraping engineer: analysts, marketers and founders who can make an HTTP call but do not want to run browsers and proxy pools.
  • Many different targets: when you scrape hundreds of sites a little each, writing block handling per site costs more than the API.
  • Projects that need data this week, not after a month of building a crawler.
  • AI agents and pipelines that need one dependable "fetch this URL" tool.

It pays off less for a team that scrapes a few sites at high volume and can maintain its own code. There, residential proxies billed per GB can cost less per page, as the worked example shows. ProxyField residential proxies rotate the IP on every request or hold a sticky session from 30 s to 36 h, with unlimited concurrent threads: see rotating proxies.

How reliable is a scraper API?

How reliable a scraper API is depends on the target, not on the API alone. The same API can return nearly every page of a simple site and fail often on a heavily protected one. Three things tell you what to expect:

  • Test on your own targets. Run a few hundred real URLs through the API and count the successes and the cost per successful page.
  • Check what counts as success. A 200 response can still be a block page or an empty template, so validate the fields you need, not only the status code.
  • Prefer billing on successful results, and read how the provider defines a successful result.

Keep a fallback for the targets that matter most: a second API, or your own scraper with proxies for the pages the API cannot fetch.

What Is a Scraper API? Scrape FAQ

What is a scraper API?

ProxyField's Web Scraping API is one scraper API: it is designed to fetch any URL, plain HTTP or with JavaScript rendering, for $0.50 per 1,000 successful results ($0.20 from 10,000) or $2.00 ($1.00 from 10,000) rendered, and it is in development, through Contact sales. In general, a scraper API is a web service that fetches pages for you, with the proxies, rendering and retries on the provider's side.

Is a scraper API the same as a web scraping API?

Yes. "Scraper API", "scraping API" and "web scraping API" name the same kind of service: an endpoint that fetches a URL and returns its HTML or data. Some providers also sell site-specific scraper APIs, for example for search results or a marketplace, which return parsed fields for one kind of page.

How does a scraper API work?

You call its endpoint with a target URL and options such as country and rendering. The API fetches the page through its proxy pool, in a headless browser if you asked for rendering, and in a typical design retries with another IP when it gets a block page. Then it returns the HTML or parsed data and records whether the call is billed.

What's the difference between a scraper API's scrape, crawl and map endpoints?

Scrape fetches one URL and returns its content in the same response. Crawl takes a start URL plus a page limit, depth and URL patterns, follows links and runs as an asynchronous job that you poll or receive by webhook. Map returns only a list of a site's URLs, with no content, so you can choose the pages to scrape.

What is a map endpoint in a scraper API?

An endpoint that lists a site's URLs, usually from its sitemaps and links, without fetching each page's content. It is usually much faster than a crawl and often takes a search term to filter the list. You then send the URLs you want to the scrape or batch endpoint.

What is a crawl API?

A crawl API is an endpoint that crawls a site for you: you give it a start URL, a depth and a page limit, and it follows links, fetches every matching page and delivers the results as a job. You collect the results by polling the job or receiving a webhook. It saves you from writing link-following, de-duplication and queue logic.

Is a crawl endpoint synchronous or asynchronous?

Asynchronous in almost every scraper API: the call returns a job ID at once, and the pages arrive later. You check the job's status until it is done, or give a webhook URL that receives the result, and large results come back in pages.

How do I get the results of a crawl or batch job from a scraper API?

Either poll the job's status URL until it reads done and then page through its results, or give a webhook URL when you start the job and the API posts each result to it; check the webhook's signature before you trust the body. In ProxyField's API design, GET /v1/batches/{id} returns counts per status and one job ID per URL, a callback is signed with an HMAC-SHA256 X-ProxyField-Signature header, and results are kept 48 hours.

How do I configure a crawl job in a crawler API?

Set the start URL and scope, a link depth (2 or 3 covers most category trees) and a hard page limit. Add include and exclude URL patterns to skip carts, logins and sorted duplicates, decide whether to use the sitemap, and turn on JavaScript rendering only if the pages need it. Then choose how to receive results: polling or a webhook.

How do I use a web scraping API?

Get an API key, test one URL in the provider's playground or with cURL, and then call the endpoint from your code with the URL and options as parameters. Use plain HTTP where it returns the data and rendering only where needed. Log failures and the cost per page as you scale.

Show 5 more questionsShow fewer questions

How reliable is a scraper API?

It depends on the target: the same API can fetch almost every page of a simple site and fail often on a heavily protected one. Test a few hundred of your real URLs, check the returned fields rather than only the status code, and prefer billing on successful results, after checking how the provider defines a success.

Who benefits from a scraper API?

Teams that need web data but have no one to run browsers and proxy pools. It also suits projects that touch many different sites, work that needs results quickly, and AI agents that need a "fetch this URL" tool. Teams that scrape a few sites at high volume can pay less with their own scraper and proxies.

What are the benefits of a web scraping API?

You skip the infrastructure: no proxy pool, no headless browsers, no block detection to maintain. You get geotargeting and rendering as parameters, and with billing per successful result you pay only for the results the provider counts as successful. The trade-off is less control over how each page is fetched, and a higher cost per page at large volume.

How much more does JavaScript rendering cost in a scraper API?

It depends on the provider: credit-based APIs usually charge several credits for a rendered page instead of one, and per-result APIs set a separate rendered price. In ProxyField's Web Scraping API design, a rendered page costs 4 times a plain one at the entry price ($2.00 vs $0.50 per 1,000 successful results) and 5 times from 10,000 results ($1.00 vs $0.20). Turn rendering on only for pages that need it.

What's the difference between a web scraping tool and a web scraping API?

A web scraping tool is software you run, such as a library, a framework or a point-and-click app, and you supply the IPs and fix it when sites change. A web scraping API is a hosted service you call over HTTP, and it runs the fetching, proxies and retries for you. Many teams combine them: their own parser on top of pages fetched by an API.

Easy Trial: 1 GB for $2.95.

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