Tutorial24 min read

Best Web Scraping Tools: How to Choose by Skill, Scale and Price

Short answer

The right web scraping tool depends on your skill and scale: point-and-click apps such as Browse AI or Octoparse for non-programmers, Python libraries such as Requests with Beautiful Soup or Scrapy for developers, Playwright or Puppeteer for JavaScript-heavy sites, and a scraping API when you do not want to manage proxies and blocks. A tool that scrapes more than a few hundred pages from one site usually needs rotating IPs. ProxyField's residential proxies plug into the code tools below over HTTP, HTTPS or SOCKS5 from $1.95/GB; start with the Easy Trial: 1 GB for $2.95.

residential IPs
412M+
from, traffic never expires
$1.95/GB
Easy Trial
1 GB for $2.95
On this page 13 sections
  1. Best web scraping tools for a small team, from no-code apps to APIs
  2. Website scraping tools compared
  3. What is web scraping software?
  4. How to choose the right web scraping tool
  5. No-code web scrapers and browser extensions
  6. Spreadsheet scraping: Excel
  7. Python and JavaScript libraries
  8. Crawling a whole site with these tools
  9. Scraping APIs
  10. Screen scraping tools
  11. Best web scraping tool for a production job of a few million pages a month
  12. Which tools take your own proxies
  13. Web scraping tools FAQ

Five questions pick the tool: can you code, is the data in the HTML, how many pages a month, does the site block you, and who fixes the scraper when the layout changes.

For a production job of 3 million pages a month, use Scrapy or Crawlee on rotating residential proxies (about 1,500 GB at 0.5 MB a page, $0.98 per 1,000 pages at $1.95/GB) or a scraping API billed per successful result ($600 to $6,000 a month on ProxyField's Web Scraping API, which is in development: contact sales).

Quick picks:

Best web scraping tools for a small team, from no-code apps to APIs

A small team picks by who will run the scraper: Browse AI or Octoparse if nobody codes, Python (Requests with Beautiful Soup, Playwright, Scrapy) with rotating proxies if one developer does, and a scraping API if your developers have no time to run infrastructure. At 150,000 pages a month, a do-it-yourself scraper uses about 75 GB of residential traffic, $198.75 at the 50 to 99 GB rate of $2.65/GB (at an assumed 0.5 MB a page), and ProxyField's Web Scraping API is priced at $75 for plain pages or $300 for rendered pages at the entry prices. The code route can be priced before you commit: a first run on rotating residential proxies starts with the Easy Trial, 1 GB for $2.95 (about 2,000 pages at 0.5 MB), with no subscription.

Vendor prices as published on each tool's own pricing page; check them again before you buy.

ToolKindBest forWhat it doesFree startPaid plans fromWatch out for
Browse AIno-code, clouda team with no coders; scheduled checks of a few sitesyou click or describe the data, it extracts rows and re-runs on a schedule; Google Sheets, Airtable, Zapier, Make, webhooks, REST API50 credits a month, 2 websites, 3 users (1 credit = 10 rows from a page or one screenshot)Personal: $19 a month billed annually or $48 monthly; 2,000 credits a month on the monthly plan, 5 websites, 3 users. Professional, for a team: $69 a month billed annually or $87 monthly; 5,000 credits a month and up, 10 websites, 10 users. Unused credits reset each cycle. A real job: 100 product rows a week are 10 credits a run, 40 a month, so the free 50 credits cover ittemplates break when the site's layout changes
Octoparseno-code, desktop and cloudrecurring jobs of hundreds to thousands of pagespoint-and-click task editor, pagination, cloud runs, scheduling, Data Export API on paid plans10 tasks, 50,000 exported rows a month, local runsStandard: $69 a month billed annually, 100 tasks, up to 3 concurrent cloud runs; Professional: $249 a month billed annually, 250 tasks, up to 20 concurrent cloud runstemplates break on layout changes; the pricing page lists IP rotation and its own residential proxies as plan features
Web Scraperbrowser extension, with a clouda few pages with pagination, from your browseryou build a "sitemap" of clicks in the browser's developer panelthe extension runs locallycloud: Project $50 a month billed annually, 5,000 URL credits; Professional $100, 20,000 URL creditsthe local extension uses your browser's IP and proxy setting
Requests + Beautiful SoupPython librariesone developer, static pagesfetch and parse HTMLfree, open sourceyour servers, plus proxies at volume: the Easy Trial is 1 GB for $2.95, then $2.79/GB from 10 GBno JavaScript: script-built pages come back empty
Playwrightbrowser automationone developer, JavaScript-heavy pagesdrives Chromium, Firefox and WebKitfree, open sourceyour servers, plus proxies at volumemore CPU and traffic than plain HTTP
ScrapyPython frameworka growing crawlqueue, concurrency, retries, exportfree, open sourceyour servers, plus proxies at volumeyou maintain selectors, retries and storage
ProxyField Web Scraping APIscraping API (in development: contact sales)developers with no time to run infrastructuresend a URL, get the page back, plain HTTP or rendered–$0.50 per 1,000 successful results plain, $2.00 rendered; from $0.20 and $1.00 at 10,000 results in one purchasenot live yet; you still parse the page

One pick per team:

  • Nobody codes: Browse AI (free plan of 50 credits a month; Personal $19 a month billed annually).
  • No-code with pagination, many tasks and cloud runs: Octoparse (Standard $69 a month billed annually).
  • One developer: Requests with Beautiful Soup for static pages, Playwright for script-built pages, on rotating proxies from 1 GB for $2.95.
  • A crawl that grows: Scrapy (or Crawlee in Node.js).
  • No time for infrastructure: a scraping API, billed per successful result.

Monthly cost at 150,000 pages, by stack:

StackFirst thing to installTime to first dataWho maintains itMonthly cost at 150,000 pages
No-code appBrowse AI or Octoparse, or a browser extensionminutes to hours: click one templateyou fix templates when layouts change; the vendor runs the appthe app's plan, which grows with rows, credits or tasks
Python with proxiespip install requests beautifulsoup4; Playwright for script-built pages, Scrapy as the job growshours to days: write and debug a scriptyour developer fixes selectorsabout $198.75 of proxy traffic, plus a small server; a first test run: 1 GB for $2.95
Scraping APIan HTTP client: one call per URLminutes once you have accessthe vendor fetches; you parse$75 plain HTTP, $300 rendered

Whether a no-code app takes your own proxies depends on the app, so check its documentation. Many small teams start with a no-code app and move hard or high-volume targets to code or an API later. The no-code apps step by step: no-code web scrapers.

Website scraping tools compared

The table below lists 11 tools and tool types by skill level, JavaScript support, proxy support and pricing model; the licenses and proxy methods of the open-source tools come from their package registries and documentation.

ToolTypeSkill levelJavaScript renderingProxy support (how)Pricing modelBest forSetup guide
Point-and-click scraping apps (Browse AI, Octoparse, ParseHub)No-code appNoneVaries by appVaries by app; check its proxy settingsFree plans, then from $19 (Browse AI) or $69 (Octoparse) a month billed annually (table)One-off lists and scheduled checks of a few sites–
Browser scraping extensionsBrowser extensionNoneReads the page your browser has renderedUses your browser's proxy settingVaries by extensionCopying a table from the page you are viewingChrome
Excel Power Query "From Web"Spreadsheet connectorBasicBuilt for pages that expose HTML tablesNo IP rotationBuilt into ExcelRefreshable tables in a workbook–
Requests and Beautiful SoupPython librariesBeginner PythonNoproxies= argument, user:pass in the proxy URL; SOCKS with requests[socks] (docs)Open source: Requests Apache-2.0 (PyPI), Beautiful Soup MIT (PyPI)Static pages, first scripts–
ScrapyPython frameworkIntermediate PythonNo by default; a headless browser can be addedproxy request meta key, or http_proxy / https_proxy variables (docs)Open source, BSD-3-Clause (PyPI)Large crawls with retries and pipelines–
PlaywrightBrowser automation (Node.js, Python, Java, .NET)IntermediateYesproxy option with server, username and password, per browser or per context; HTTP(S) or SOCKS5 (docs)Open source, Apache-2.0 (npm, PyPI)JavaScript-heavy sitesPlaywright
PuppeteerBrowser automation (Node.js)Intermediate JavaScriptYes--proxy-server launch flag plus page.authenticate(); proxyServer per browser context (docs)Open source, Apache-2.0 (npm)Chrome automation in Node.jsPuppeteer
SeleniumBrowser automation (Java, Python, C#, Ruby, JavaScript, Kotlin)IntermediateYesProxy capability or Chrome's --proxy-server flag (docs)Open source, Apache-2.0 (PyPI)Teams that already run Selenium testsSelenium
CrawleeCrawling framework (Node.js, Python)IntermediateYes with its Playwright and Puppeteer crawlers; no with its HTTP and Cheerio crawlersProxyConfiguration with a list of proxy URLs, rotated round-robin (docs)Open source, Apache-2.0 (npm, PyPI)Large crawls that mix plain fetches and browsers–
Scraping APIsHosted APIBeginner (HTTP calls)Usually as an optionBuilt in: the API manages the IPsPer request or per successful resultNo infrastructure to runWeb scraping API
RPA and OCR toolsDesktop automationVariesNot applicableNot applicableVaries by vendorData that exists only on screen–

How to read the table: "open source" means you pay nothing for the library itself, but you still pay for servers and for proxies once you scrape at volume. The no-code apps, extensions, scraping APIs and RPA tools are listed by category. Examples: point-and-click apps such as Octoparse, ParseHub and Browse AI (ParseHub is not in the price table); extensions such as Instant Data Scraper, Web Scraper and Data Miner; RPA tools such as UiPath and Microsoft Power Automate. Check each product's own pricing page before you choose.

What is web scraping software?

Web scraping software is a program that fetches web pages and extracts the fields you need, such as names, prices or links, into a table, a spreadsheet or JSON. It comes in five kinds: no-code apps and browser extensions, spreadsheet functions, code libraries and frameworks, browser automation tools, and hosted scraping APIs. Each kind trades ease of use against control and cost at scale. For the basics of how scraping works, see what web scraping is.

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

How to choose the right web scraping tool

Choose by skill first, then by the page and the scale:

You arePickBest forTradeoffStart here
Cannot codea point-and-click app such as Browse AI or Octoparsea few sites, scheduledtemplates break on layout changes; plans grow with rows or tasksthe app's free plan
Some PythonRequests with Beautiful Soupstatic pagesno JavaScriptBeautiful Soup documentation
The page needs JavaScriptPlaywrightscript-built pagesmore CPU and traffic; behind a login, only data your own account is entitled toPlaywright installation
A large crawlScrapy or Crawleemany pages, retries, exportyou maintain selectors, retries and storageScrapy at a glance
No time to maintain scrapersa scraping APIchanging targets, no infrastructureper-result price; you depend on the vendorone HTTP call per URL

Then check five questions, in this order: can you code, does the page need JavaScript, how many pages you need, whether the site blocks scrapers, and who maintains the scraper.

Before you start: check whether the site offers an official API or a data export, because either is steadier than any scraper. Then read the site's robots.txt, the file defined by the Robots Exclusion Protocol (RFC 9309, 2022; MDN's robots.txt configuration guide explains the file), and its terms, which say what automated access it allows. Scrape public pages only, and follow the site's terms.

  1. Can you code? No: start with a point-and-click app or a browser extension. Some Python or JavaScript: Requests with Beautiful Soup, or Playwright. Comfortable with code: Scrapy or Crawlee.

  2. Is the data in the HTML, or loaded by JavaScript? Open the page source (Ctrl+U or Cmd+Option+U). If the data is there, a plain HTTP library is enough. If it appears only after the page runs scripts, use a browser tool (Playwright, Puppeteer, Selenium) or find the JSON request the page makes and call it directly, which the Scrapy documentation recommends before reaching for a browser. The same test as a command:

    Shell
    curl -s "https://example.com/product/123" | grep -c "19.99"

    Replace the URL and 19.99 with a value you can see on the page. 0 means the value is not in the HTML the server sends, so the page builds it with JavaScript (or the site refused the request: curl -sI URL shows the status code); 1 or more means a plain HTTP library is enough.

    What to do next: on 1 or more, write the script with Requests and Beautiful Soup; on 0 with a 200 status, open the browser's developer tools (Network tab, filter Fetch/XHR) and look for the JSON request that carries the value, or use Playwright; on 403 or 429, the site limits requests per IP, so plan for rotating proxies (question 4).

  3. How many pages per day, from how many sites? A few dozen pages: a spreadsheet or an extension. Thousands: a library with retries. Hundreds of thousands or more: a framework with a queue, scheduling and a rotating proxy pool, or a scraping API.

  4. Does the site block scrapers? Rate limits, 403 errors and CAPTCHAs mean the site limits requests per IP. You will need rotating IPs, realistic request pacing, and for some sites a real browser.

  5. Who maintains the scraper when the site changes? Layouts change and selectors break. If nobody on your team can fix code, a no-code app or a scraping API keeps the maintenance with the vendor.

A first week: test 20 pages by hand with the tool you picked; then run 500 to 1,000 pages per domain and note the share of successful responses, the average page size and the share that needs a browser; then decide the stack and the budget from those three numbers.

Three worked choices:

Your projectPickWhyWhat it costs
A price list of 100 products from one shop, weekly, no codera no-code app such as Browse AI100 rows are 10 credits a run, 40 a month; the free 50 credits a month cover it$0 on the free plan
A JavaScript storefront, 50,000 pages a month, one developerPlaywright on rotating residential proxiesthe prices load by script, so plain HTTP sees an empty pageabout 25 GB at 0.5 MB a page, $69.75 at $2.79/GB, plus a server
A million pages a month from sites that blockScrapy or Crawlee on rotating proxies, or a scraping APIyou need a queue, retries and new IPsabout $1,045 of traffic (500 GB at $2.09/GB), or $500 to $2,000 on the API (production)

Comparison by tool type:

Tool typeLearning curveMaintenanceJavaScript supportProxy integrationCost modelBest for
No-code apps and extensionsLowestVendor maintains the app; you redo templates when layouts changeVaries by app; extensions read the rendered pageVaries: some apps accept your proxies, extensions use the browser'sSet by each vendorNon-programmers, one-off jobs
Spreadsheet functionsLowQueries break when the page changesLimited (Excel)No IP rotationPart of the spreadsheetSmall, simple tables
HTTP libraries (Requests, Beautiful Soup)ModerateYou fix selectorsNoYou add it: one argumentOpen source plus your servers and proxiesStatic pages
Frameworks (Scrapy, Crawlee)Moderate to steepYou fix spiders; the framework handles retriesScrapy: through an add-on; Crawlee: browser crawlers built inYou add it: one setting or a proxy listOpen source plus your servers and proxiesLarge, recurring crawls
Browser automation (Playwright, Puppeteer, Selenium)ModerateYou fix selectors and waitsFullYou add it: a launch optionOpen source plus heavier servers and more proxy trafficJavaScript-heavy sites
Scraping APIsLowVendor handles fetching; you parse or receive parsed dataUsually an optionBuilt inPer request or per successful resultTeams without scraping infrastructure

No-code web scrapers and browser extensions

No-code scrapers let you click the fields you want on a page and export them to CSV, Excel or Google Sheets without writing code. They come in two forms.

Point-and-click apps run as a desktop program or in the vendor's cloud. You load a page, click a name and a price, and the app finds the matching items on the page and in the next pages. Depending on the app, you can schedule runs and follow pagination. The limits: templates break when a site changes its layout, larger jobs usually need a higher plan, and whether you can bring your own proxies depends on the app, so check its documentation before you buy.

Browser extensions run inside Chrome or another browser and scrape the page you are looking at. They are the fastest way to copy a table or a list of search results into a spreadsheet. Because the extension works inside your browser, it sends requests through whatever proxy your browser uses; to change the IP, set the proxy in the browser, as our Chrome proxy guide shows. Extensions suit one page at a time, not thousands.

Spreadsheet scraping: Excel

Excel can pull a table from a public web page with a built-in feature, with no add-on and no code. It has no IP rotation, so it suits small tables, not a crawl.

Excel: Power Query "From Web"

In Excel, Data > Get Data > From Other Sources > From Web opens Power Query's web connector: paste a URL, pick a table in the Navigator, then load it or shape it in the Power Query Editor (Microsoft: Import data from the web). Refreshing the query pulls the current table from the page. Pages without standard HTML tables, or pages that load data with scripts, may not import cleanly.

Python and JavaScript libraries

Code libraries give you full control over what you fetch and how you parse it, and each one takes a proxy with one setting. Every snippet below uses the ProxyField gateway gate.proxyfield.io:7000; replace <login> and <password> with your credentials. <login>-country-us-city-new_york asks for an exit IP in New York, United States. Region, session and session time go in the same username: -region-<region>, -session-<id> and -ttl-<seconds> (30 to 129,600 seconds, 20 minutes by default), as in <login>-country-us-region-new_york-city-new_york-session-he9f2qga-ttl-600; every part after the login is optional.

Requests and Beautiful Soup

Requests fetches a page over HTTP and Beautiful Soup parses the HTML, which makes them the simplest start for static pages in Python. Neither runs JavaScript. Requests takes a proxy through its proxies argument, with the username and password inside the proxy URL.

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

proxy = "http://<login>-country-us-city-new_york:<password>@gate.proxyfield.io:7000"
html = requests.get("https://example.com", proxies={"http": proxy, "https": proxy}, timeout=30).text
print(BeautifulSoup(html, "html.parser").title.string)

Full setup, including sessions and SOCKS5: Python proxy setup.

Scrapy

Scrapy is a Python framework for crawling many pages: it runs requests concurrently, retries failures, follows links and exports items to JSON or CSV. It does not render JavaScript by default; its documentation recommends calling the page's own data requests first, or adding a headless browser such as Playwright through Scrapy's asyncio support. The proxy goes in each request's proxy meta key.

Python
# pip install scrapy  ->  scrapy runspider title_spider.py -O titles.json
import scrapy

PROXY = "http://<login>-country-us-city-new_york:<password>@gate.proxyfield.io:7000"

class TitleSpider(scrapy.Spider):
    name = "title"

    async def start(self):
        yield scrapy.Request("https://example.com", meta={"proxy": PROXY})

    def parse(self, response):
        yield {"title": response.css("title::text").get()}

The async def start() method above arrived in Scrapy 2.13; on older versions, name it start_requests() and drop async.

Playwright

Playwright drives Chromium, Firefox and WebKit from Node.js, Python, Java or .NET, so it sees a page after its scripts have run. It takes a proxy for the whole browser or for each browser context, over HTTP(S) or SOCKS5, with the username and password as separate fields.

Python
# pip install playwright && playwright install chromium
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={"server": "http://gate.proxyfield.io:7000",
                                       "username": "<login>-country-us-city-new_york", "password": "<password>"})
    page = browser.new_page()
    page.goto("https://api.ipify.org?format=json")
    print(page.inner_text("body"))
    browser.close()

Full setup, including one country per context: Playwright proxy setup.

Puppeteer

Puppeteer controls Chrome, and Firefox, from Node.js. The proxy address goes in Chrome's --proxy-server launch flag, and the credentials go in page.authenticate().

JavaScript
// npm i puppeteer
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({ args: ['--proxy-server=http://gate.proxyfield.io:7000'] });
  const page = await browser.newPage();
  await page.authenticate({ username: '<login>-country-us-city-new_york', password: '<password>' });
  await page.goto('https://api.ipify.org?format=json');
  console.log(await page.evaluate(() => document.body.innerText));
  await browser.close();
})();

Full setup: Puppeteer proxy setup.

Selenium

Selenium automates real browsers from Java, Python, C#, Ruby, JavaScript and Kotlin, and many QA teams already run it. Chrome's --proxy-server flag takes an address but no username and password, so the short version below works when you authenticate by IP allowlist: add your server's IP in the ProxyField dashboard first, and replace <port> with the port you set up there for it.

Python
# pip install selenium
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=http://gate.proxyfield.io:<port>")  # IP allowlist auth: the port you set up in the dashboard
driver = webdriver.Chrome(options=options)
driver.get("https://api.ipify.org?format=json")
print(driver.find_element("tag name", "body").text)
driver.quit()

For username and password authentication in Selenium, see Selenium proxy setup.

Crawlee

Crawlee is a crawling framework for Node.js and Python with plain HTTP crawlers and browser crawlers (Playwright, Puppeteer) behind one interface, plus queues, retries and sessions. Its ProxyConfiguration takes a list of proxy URLs and rotates through them. With a rotating gateway, one URL is enough, because the gateway assigns the IPs.

JavaScript
// npm i crawlee  ->  save as crawl.mjs and run: node crawl.mjs
import { CheerioCrawler, ProxyConfiguration } from 'crawlee';

const proxyConfiguration = new ProxyConfiguration({
  proxyUrls: ['http://<login>-country-us-city-new_york:<password>@gate.proxyfield.io:7000'],
});
const crawler = new CheerioCrawler({
  proxyConfiguration,
  async requestHandler({ request, $ }) {
    console.log(request.url, $('title').text());
  },
});
await crawler.run(['https://example.com']);

Crawling a whole site with these tools

A web crawler follows links from page to page to find every URL on a site; a scraper then extracts the fields from each page. Most scraping jobs need both, and the tools above split the work this way:

  • Scrapy and Crawlee are crawlers and scrapers in one: they follow links, keep a queue of URLs, skip pages they have seen and retry failures.
  • Requests with Beautiful Soup, Playwright, Puppeteer and Selenium fetch the pages you give them; for a site crawl you add the link-following and the queue yourself.
  • No-code apps follow pagination and sometimes links to detail pages, within the limits of their plan.

A crawl sends many requests to one site, so pace it, respect the site's robots.txt and its terms, and spread the requests over rotating IPs once the site starts to limit you.

Scraping APIs

A scraping API fetches a URL for you and returns the HTML or the extracted data, handling proxies, JavaScript rendering and retries on its side. You send one HTTP request per page and receive the result; there are no browsers or IP pools to run. Scraping APIs are billed per request or per successful result, and a page rendered in a browser usually costs more than a plain fetch. An API beats a do-it-yourself stack when your team has no one to maintain scrapers, when the targets change often, or when you need results this week rather than a crawler next month. Do-it-yourself with your own proxies usually wins when you scrape a few sites at high volume and can maintain the code.

ProxyField's web scraping API is designed to fetch any URL as plain HTTP ($0.50 per 1,000 successful results) or with JavaScript rendering ($2.00), billed on successful results only. It is in development: contact sales.

Screen scraping tools

Screen scraping tools read data from what a screen shows, not from a web page's HTML: legacy desktop apps, terminal screens, PDFs and scanned documents. Robotic process automation (RPA) tools record clicks and keystrokes and copy values out of an application's interface, and OCR (optical character recognition) turns images and scanned pages into text. Use them only when the data has no web page or API behind it: they are slower and break more easily than HTML scraping.

Best web scraping tool for a production job of a few million pages a month

Scrapy or Crawlee on rotating proxies: about $2,925 for 3 million pages at 0.5 MB a page and $1.95/GB; ProxyField's Web Scraping API, in development, is priced at $600 to $6,000 for the same 3 million pages. For a few million pages a month, the setup that holds up is a crawling framework with a queue and retries (Scrapy or Crawlee) on rotating proxies, with headless browsers only on the pages that need them, or a scraping API billed per successful result if you would rather not run that stack. At 3 million pages a month, ProxyField's Web Scraping API is priced at $600 to $1,500 for plain HTTP pages and $3,000 to $6,000 for rendered pages; your own crawler uses about 1,500 GB of residential traffic at 0.5 MB a page, $2,925 at the 1,000+ GB rate of $1.95/GB, plus servers. The API is in development: contact sales. From 1 TB, the proxy price is individual too: contact sales.

What a billed result is (the API's design, API documentation): a page returned from the target, including a 404 or 410 and a sign-in page the site serves with a 200 status. Blocked and timed-out requests, error responses and the API's internal retries are not billed. Proxy traffic is billed per GB whatever the page returns.

Step one: test a sample from every target domain. Fetch 500 to 1,000 pages from each site with plain HTTP and with a browser, and note three numbers: the share of successful responses, the average page size, and the share of pages that need rendering. Those three numbers decide the stack and the bill.

Pages a monthStackWho maintains itYou pay per
Up to about 50,000Requests with Beautiful Soup, or Playwright for script-built pages; a no-code app for non-codersone developer, or the app's vendorthe app's plan, or GB of proxy traffic
100,000 to 1 millionScrapy or Crawlee with a rotating proxy pool, or a scraping APIa developer, part-timeGB of proxy traffic, or 1,000 successful results
1 million and moreScrapy or Crawlee on several workers with a shared queue, rotating proxies, browsers only where needed, and monitoring; or a scraping APIa developer or a team; with an API, the vendor runs the fetchingGB at the 1,000+ GB rate, or 1,000 successful results at the volume price

What 3 million pages a month cost (ProxyField prices; page sizes are assumptions, so measure yours):

RouteBasisMonthly cost
Web Scraping API, plain HTTP$0.50 per 1,000 successful results, from $0.20 at volume$1,500; $600 at the volume price
Web Scraping API, JavaScript rendering$2.00 per 1,000 successful results, from $1.00 at volume$6,000; $3,000 at the volume price
Your crawler on residential proxies, plain HTTP0.5 MB a page = 1,500 GB, at the 1,000+ GB rate of $1.95/GB$2,925, plus servers
Your crawler on residential proxies, rendered pages2 MB a page = 6,000 GB, at $1.95/GB$11,700, plus servers

The 1,500 GB and 6,000 GB rows use the 1,000+ GB rate; from 1 TB the price is individual through sales, so treat them as a ceiling, not a quote.

The formula for any volume: pages × average MB per page ÷ 1,000 = GB; GB × price per GB ÷ share of successful responses = monthly proxy cost. Example: 3,000,000 × 0.5 ÷ 1,000 = 1,500 GB; 1,500 × $1.95 ÷ 0.95 = about $3,079 at 95 of 100 pages successful on your target. Use your own measured share (ProxyField's 99.6% success rate is according to our service data, not a figure for your target).

The same jobs per 1,000 pages: API $0.50 plain ($0.20 at the volume price) and $2.00 rendered ($1.00); proxies $0.98 per 1,000 pages at 0.5 MB and $1.95/GB (2,000 pages per GB), or 2 GB × $1.95 at 2 MB (500 pages per GB). Divide by your share of successful responses to get the price of a usable page on proxies. At these page sizes the API's design prices a page below the proxy traffic it takes ($0.50 against $0.98 plain, $2.00 against 2 GB × $1.95 rendered), so your own crawler wins on control and on being available today, not on price per page.

Rendering only where needed is the biggest saving: if 20% of the 3 million pages need a browser, the API bill at the entry prices is $1,200 for 2.4 million plain pages plus $1,200 for 600,000 rendered ones, $2,400 in all instead of $6,000. On proxies, the tier rate applies to the whole purchase, so 1,500 GB bought at once is billed at $1.95/GB.

The API bill by volume and rendering share (ProxyField Web Scraping API; entry price / volume price, the volume price from 10,000 successful results in one purchase):

Pages a month0% rendered20% rendered100% rendered
1 million$500 / $200$800 / $360$2,000 / $1,000
3 million$1,500 / $600$2,400 / $1,080$6,000 / $3,000
10 million$5,000 / $2,000$8,000 / $3,600$20,000 / $10,000

The API's limits (its design):

  • 20 concurrent requests per account, with higher limits through sales; batches of up to 1,000 requests with a signed callback per finished job; results kept for 48 hours.
  • Paid from the same crypto balance as proxies, which never expires; no subscription or monthly fee.

What a production setup needs:

  • A framework with a queue, retries and concurrency. Scrapy and Crawlee both retry failed requests and run many requests at once.
  • Browsers only where needed. A browser page costs far more CPU, memory and traffic than a plain HTTP fetch. Fetch the HTML or the page's JSON requests first, and render in a browser only the pages that need it; block images, fonts and media when you do.
  • A proxy pool with per-request rotation, and sticky sessions for logins or multi-step flows. Rotating proxies give each request a new IP; a sticky session keeps one IP for the steps that must share it.
  • Monitoring for layout changes. Alert when a field comes back empty or the item count drops, so a silent layout change does not fill your data with blanks.

Proxy type by target. Rotating datacenter proxies are the low-cost choice for sites that do not block datacenter ranges, at $0.29/GB down to $0.22/GB from 1,000 GB; residential proxies or mobile proxies are for protected sites.

ProxyField fits this setup: a new IP on every request or sticky sessions from 30 s to 36 h, unlimited concurrent threads, and HTTP, HTTPS and SOCKS5 through one gateway. You pay per GB with no subscription. Traffic never expires, and all purchases are final. The full architecture (queues, workers, storage) is in large-scale web scraping; proxy choice by job is in proxies for web scraping.

Which tools take your own proxies

Yes, beyond small volumes: sites limit how many requests one IP may send, so any tool that scrapes more than light, occasional traffic from one site needs rotating IPs. Scraping APIs include the IPs in their price, and no-code apps vary. Libraries, frameworks, browser automation tools and extensions use your own proxies, and spreadsheet functions have no IP rotation.

ProxyField works with Scrapy, Selenium, Playwright, Puppeteer, Beautiful Soup, Python requests, Node.js, cURL, Postman and Crawlee over HTTP, HTTPS and SOCKS5. Authenticate with a username and password on gate.proxyfield.io:7000, or allowlist your IP and connect to the port you set up in the dashboard, and target by country, region (state) or city. SOCKS5 runs on the same gate.proxyfield.io:7000 with the same username and password; with the IP allowlist, use the port you set up in the dashboard. For logins that need the same IP for weeks, use a dedicated static residential (ISP) proxy, priced per IP for a 30-day term. Scrape public data only, and check the rules for your use: is web scraping legal.

When a scraper needs proxies and what they cost per job: proxies for web scraping, residential from $1.95/GB.

Get started: residential proxies: start with the Easy Trial (1 GB for $2.95), no subscription. Traffic never expires, and all purchases are final.

Web scraping tools FAQ

What are the best web scraping tools?

ProxyField sorts them by skill and scale: point-and-click scraping apps for non-programmers, Requests with Beautiful Soup for Python beginners, Scrapy or Crawlee for large crawls, Playwright or Puppeteer for JavaScript-heavy sites, and a scraping API when you don't want to manage IPs. Any of the code tools can route through ProxyField residential proxies, from $1.95/GB, over HTTP, HTTPS or SOCKS5.

What is the best web scraping tool for beginners?

ProxyField points beginners to a no-code app such as Browse AI (a free plan of 50 credits a month) or a browser extension, because you click the data you want instead of writing code, and export it to a spreadsheet. If you want to learn to code, Requests with Beautiful Soup in Python is the simplest start for pages whose data is in the HTML.

What is web scraping software?

A program that fetches web pages and extracts the data you need, such as names, prices or links, into a table, a spreadsheet or JSON. It ranges from no-code apps and spreadsheet functions to code libraries, browser automation tools and hosted scraping APIs.

How do I choose the right web scraping tool for my project and skill level?

Answer five questions: can you code, is the data in the HTML or loaded by JavaScript, how many pages you need, whether the site blocks scrapers, and who will fix the scraper when the site changes. Non-coders pick a no-code app, static pages need an HTTP library, JavaScript pages need a browser tool, and large or protected jobs need rotating proxies or a scraping API.

What are the best web scraping tools for a small team, from no-code apps to APIs?

ProxyField's pick by who runs the scraper: Browse AI if nobody codes (a free plan of 50 credits a month, Personal from $19 a month billed annually), Octoparse for no-code jobs with many tasks (Standard $69 a month billed annually), Requests with Beautiful Soup or Playwright on rotating proxies if one developer does (1 GB for $2.95), Scrapy as the crawl grows, and a scraping API if nobody has time to run infrastructure. At 150,000 pages a month of 0.5 MB, the code route uses about 75 GB, $198.75 at $2.65/GB.

Which JavaScript libraries are used for web scraping?

Puppeteer and Playwright drive a headless browser from Node.js, Cheerio parses HTML without a browser, and Crawlee combines crawling, queues and both kinds of fetching. All accept a proxy server with a username and password.

Which Java libraries are used for web scraping?

jsoup fetches and parses HTML with CSS selectors, and Selenium and Playwright have Java bindings for pages that need a real browser. Each can send its requests through an HTTP proxy.

What is a web scraping framework?

A library that runs the whole scraping job, not only the fetch: a queue of URLs, concurrency, retries, parsing and export. Scrapy (Python) and Crawlee (Node.js and Python) are the common open-source ones.

What's the best web scraping tool for a production job that has to collect a few million pages a month?

ProxyField suggests Scrapy or Crawlee on rotating proxies, with headless browsers only on the pages that need them: at 3 million pages a month of 0.5 MB, that is about 1,500 GB, $2,925 at $1.95/GB. Or a scraping API if you don't want to run that stack. At 3 million pages a month, ProxyField's Web Scraping API (in development; contact sales) is priced at $1,500 over plain HTTP at $0.50 per 1,000 successful results ($600 at the $0.20 volume price), $2,400 if 20% of pages need rendering, and $3,000 to $6,000 if every page is rendered. Test a sample from every target domain before you commit.

How much does it cost to scrape a million pages a month?

On ProxyField's Web Scraping API (in development; contact sales), 1 million successful results cost $500 over plain HTTP or $2,000 with JavaScript rendering at the entry prices, and $200 or $1,000 at the volume prices. On your own scraper at 0.5 MB a page, 1 million pages is about 500 GB of residential traffic, $1,045 at the 500 to 999 GB rate of $2.09/GB, plus servers.

Show 1 more questionShow fewer questions

What are the best screen scraping tools?

ProxyField points to two kinds: RPA (robotic process automation) tools and OCR (optical character recognition) tools. RPA copies values out of desktop and legacy applications, and OCR turns images and scanned documents into text. Use them only when the data has no web page or API behind it.

Easy Trial: 1 GB for $2.95.

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