Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

ScrapingBee is worth considering when you need one managed API for JavaScript rendering, rotating proxies and structured extraction. Its main trade-off is credit consumption: a static request can cost 1 credit, while a successful stealth request with JavaScript costs 75. Auto-Mode reduces configuration work by trying progressively more expensive settings, but it does not choose page-specific waits, selectors, cookies or geolocation for you.

What ScrapingBee does

ScrapingBee is a hosted web-scraping API. You send a URL and an API key; its infrastructure can fetch the page through rotating proxies, run a headless browser, execute JavaScript and return rendered HTML, text, Markdown, screenshots or extracted JSON. The official documentation says JavaScript rendering is enabled by default, so applications built with React, Angular, Vue or jQuery can be rendered before extraction.

The service is most useful when a normal HTTP client receives an empty shell, when the target varies by country, or when maintaining browser and proxy infrastructure would be more work than the data pipeline itself. It is not a permission slip to collect data from every website. Check the target’s terms, robots guidance and applicable law before collecting or redistributing information.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Who should use it

  • Developers scraping client-rendered pages that require a real browser.
  • Teams that need proxy rotation, premium or stealth pools, or geotargeting through one API.
  • Projects that want CSS/XPath extraction, screenshots or AI-assisted extraction without running their own browser fleet.

Who may not need it

If your targets are stable, public, server-rendered pages and your volume is small, a direct HTTP client can be cheaper and simpler. ScrapingBee becomes more attractive as JavaScript, anti-bot resistance, geographic variation or operational maintenance becomes the bottleneck.

How rendering and proxy choices affect credits

ScrapingBee’s practical decision is a balance between reliability and credits. The documented HTML API costs are:

Configuration Credits per successful call Typical use
Classic proxy, JavaScript off 1 Static HTML and low-friction targets
Classic proxy, JavaScript on 5 Client-rendered pages without unusually strong blocking
Premium proxy, JavaScript off 10 Static pages that need a higher-quality proxy pool
Premium proxy, JavaScript on 25 Rendered pages with more demanding access requirements
Stealth proxy, JavaScript on 75 Difficult targets where lower tiers fail
AI query or AI extraction +5 AI-assisted querying or extraction added to the request

Start at the least expensive configuration that works. Turn on JavaScript when the content is assembled in the browser. Escalate to premium or stealth proxies only after observing failures. A successful request that uses a more expensive configuration consumes that configuration’s rate; the table is not a flat per-request subscription fee.

ScrapingBee plans and free credits

These are the listed monthly plans and concurrency limits:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Plan Monthly price API credits Concurrent requests
Hobby $19/month 75,000 25
Freelance $49/month 250,000 50
Startup $99/month 1,000,000 100
Business $249/month 3,000,000 200
Business+ $599/month 8,000,000 400

ScrapingBee advertises 1,000 free API credits for a trial and says a credit card is not required. Its pricing page also states that customers pay only for successful requests and can cancel at any time. Credit consumption still depends on the configuration: 1,000 credits could represent 1,000 classic non-JavaScript calls, 200 classic JavaScript calls, or roughly 13 stealth JavaScript calls.

First request with cURL

Replace the API key with your own value. The minimal request asks for the target page and returns the response body:

curl 'https://app.scrapingbee.com/api/v1?url=https%3A%2F%2Fexample.com' 
  -H 'Authorization: Bearer YOUR-API-KEY'

For a client-rendered product page, enable JavaScript and wait for a selector that appears after rendering:

curl 'https://app.scrapingbee.com/api/v1?url=https%3A%2F%2Fexample.com&render_js=true&wait_for=.product-card' 
  -H 'Authorization: Bearer YOUR-API-KEY'

The API supports additional wait controls (`wait`, `wait_browser` and `wait_for`), viewport settings, resource blocking, custom headers and cookies, and extraction rules. A selector wait is generally safer than an arbitrary long delay because it expresses the condition your parser actually needs.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Python example

The official Python client keeps authentication and the request simple:

from scrapingbee import ScrapingBeeClient

client = ScrapingBeeClient(api_key='YOUR-API-KEY')
response = client.get('https://example.com')
print(response.status_code)
print(response.text[:500])

For a JavaScript-heavy page, pass the same request options supported by the API, for example:

response = client.get(
    'https://example.com',
    params={
        'render_js': 'true',
        'wait_for': '.product-card',
        'block_resources': 'image,media'
    }
)
response.raise_for_status()
html = response.text

Blocking images or media can reduce load time when you only need text, but do not block a resource that supplies the data your page requires.

Node.js example

With a Node.js runtime that provides fetch, send the API key in the Authorization header:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
const params = new URLSearchParams({
  url: 'https://example.com',
  render_js: 'true',
  wait_for: '.product-card'
});

const response = await fetch(`https://app.scrapingbee.com/api/v1?${params}`, {
  headers: { Authorization: 'Bearer YOUR-API-KEY' }
});

if (!response.ok) {
  throw new Error(`ScrapingBee returned ${response.status}`);
}

const html = await response.text();
console.log(html.slice(0, 500));

Auto-Mode: convenient, not fully automatic

Auto-Mode is designed for pages where you do not know which combination will succeed:

curl 'https://app.scrapingbee.com/api/v1?url=https%3A%2F%2Fexample.com&mode=auto' 
  -H 'Authorization: Bearer YOUR-API-KEY'

ScrapingBee tries configurations from cheaper to more expensive, varying JavaScript rendering, premium proxies and stealth proxies, and charges for the configuration that succeeds. This can reduce trial-and-error in a crawler that handles many unrelated sites.

Auto-Mode does not infer page-specific selectors, waits, cookies, custom headers or geolocation. If a page needs wait_for=.results, an authenticated cookie or a country-specific location, supply those options yourself. A useful workflow is to discover a working configuration manually, then decide whether Auto-Mode is worth the additional uncertainty for that target set.

Proxy mode versus API mode

In API mode, your application calls ScrapingBee’s endpoint and receives the fetched content. Proxy mode lets an existing HTTP client send traffic through ScrapingBee’s proxy endpoints:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • proxy.scrapingbee.com:8886 for HTTP
  • proxy.scrapingbee.com:8887 for HTTPS
  • socks.scrapingbee.com:8888 for SOCKS5

The API key is used as the username, and supported parameters are supplied as the password. JavaScript is on by default in proxy mode; explicitly disable it for a static request so you do not pay for browser rendering you do not need.

Proxy mode is a good fit when an existing scraper, browser or command-line tool already understands proxies and you want to change routing without rewriting its extraction code. API mode is usually easier when you want ScrapingBee to return rendered content, screenshots or extraction results directly.

Extraction, screenshots and browser controls

Beyond the URL, rendering and proxy tier, the API exposes controls for viewport dimensions, resource blocking, custom headers and cookies, and extraction rules. These let you:

  • Wait for a CSS selector or a browser condition before reading the page.
  • Set a viewport appropriate for a desktop or mobile layout.
  • Send login, locale or authorization headers when you are permitted to do so.
  • Extract selected CSS/XPath fields instead of parsing an entire document downstream.
  • Return screenshots or structured data for workflows that need visual or normalized output.

AI query and AI extraction add five credits to the underlying request. Treat those features as a convenience layer, not a substitute for validating the returned fields: a changed page layout can still produce an incomplete result.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Reliability, performance and cost practices

Use the cheapest stable configuration

Measure success by the fields your parser needs, not merely by receiving an HTTP response. Keep static pages on classic proxy without JavaScript, enable rendering only when the content is absent without it, and move to premium or stealth pools when repeated target-specific failures justify the extra credits.

Make waits deterministic

A selector wait communicates completion better than a fixed sleep. Use a fixed delay only when the page has no reliable element that signals readiness. Keep selectors specific enough to avoid matching a placeholder element.

Control concurrency

Each plan has a documented concurrency ceiling. Queue work to that limit rather than launching an unlimited burst; otherwise you can create retries, rate pressure and unnecessary credit consumption. Rendering and stealth requests also take more time than a classic static request, so throughput will vary by configuration.

Separate failures from empty data

Record the requested URL, selected options, response status, response length and parser result. An HTTP response containing a login wall, consent page or bot challenge is not equivalent to a successful extraction. This distinction is especially important when Auto-Mode changes the configuration between attempts.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Common problems and fixes

Authentication fails

Check that the key is current, that the Authorization header is exactly Bearer YOUR-API-KEY, and that the key has not been accidentally exposed in a client-side application. Keep it server-side and rotate it if it appears in logs or source control.

The HTML contains only an app shell

The target probably renders its data in the browser. Retry with render_js=true, then add a selector wait for the element that contains the completed data. If the page still lacks content, inspect whether an API call, cookie or location is required.

The selector wait times out

Verify the selector in a normal browser, account for iframes and changing class names, and confirm that the element is present for the chosen URL and locale. Increase a wait only after confirming that the selector is correct; a longer timeout cannot fix a selector that never appears.

The target blocks classic proxies

Try a premium proxy, then stealth with JavaScript if the target’s access rules permit your collection. Do not jump directly to stealth for every URL: its 75-credit price can consume a small plan quickly.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Proxy mode behaves differently from API mode

Confirm the protocol-specific port, pass the API key as the username, and explicitly disable JavaScript for static traffic. Move back to API mode when you need ScrapingBee’s extraction, screenshot or page-wait response controls in a single request.

Results are slow or inconsistent

Reduce unnecessary resources, use a precise wait, avoid excessive concurrency and log which proxy/rendering tier succeeded. Auto-Mode may select different tiers on different attempts, so explicit settings are easier to benchmark for a single known target.

When a screenshot API is the better fit

If the deliverable is a clean image or PDF rather than scraped fields, ScreenshotNeo is the alternative to try first: it removes consent banners, newsletter popups and chat widgets before capture, bills only clean shots, and has a $5 paid plan for 3,000 shots.

Or skip the browser setup

For a screenshot, one GET request is enough. See the ScreenshotNeo documentation for all options.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp

ScreenshotNeo removes cookie and consent banners, newsletter popups and chat widgets before the shot. Bot checks, blank pages, timeouts, failed loads and cache hits are not billed, and response headers identify the page verdict and billing result. Its MCP server provides take_screenshot, get_page_info and capture_pdf tools for Claude, Cursor and other MCP clients. The Free plan includes 1,000 screenshots each month with no card; paid plans start at $5 for 3,000 shots.

Create a free ScreenshotNeo account to use the 1,000-shot monthly allowance without a card.

Legal and operational boundaries

ScrapingBee’s examples and API mechanics do not grant permission to collect a particular site’s content. Review the site’s terms, robots guidance, privacy obligations and applicable laws, especially for personal data, authenticated areas and high-volume collection. Respect access controls rather than attempting to defeat them.

Frequently Asked Questions

Are unsuccessful ScrapingBee requests charged?

The pricing page states that customers pay only for successful requests. You should still log failures and parser results so that an HTTP response containing a challenge or incomplete page is not mistaken for a successful extraction.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Can I cancel a ScrapingBee subscription?

ScrapingBee’s pricing statement says you can cancel at any time. Check the account’s current billing terms before changing a production plan.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.