Skip to main content

Documentation Index

Fetch the complete documentation index at: https://developers.scrapeunblocker.com/llms.txt

Use this file to discover all available pages before exploring further.

ScrapeUnblocker rate-limits per-account, not per-IP. Your plan determines:
  • Concurrent requests - how many in-flight requests we’ll accept at once.
  • Monthly request quota - total calls per billing period.
Free trial accounts start with a small concurrency limit. Paid plans scale up. Exact numbers for each tier are on the pricing page.

When you hit the limit

If you exceed your concurrency cap, additional requests queue briefly on our side rather than failing immediately. If queuing would exceed a reasonable wait, you’ll get a 429 Too Many Requests response. The recommended client behavior:
  1. Run a fixed worker pool sized to your concurrency limit.
  2. On 429, back off for the duration in the Retry-After header (if present), otherwise 5 seconds.
  3. Resume.
import time
import requests

def call(url, key):
    while True:
        r = requests.post(
            "https://api.scrapeunblocker.com/getPageSource",
            params={"url": url},
            headers={"x-scrapeunblocker-key": key},
            timeout=120,
        )
        if r.status_code == 429:
            wait = int(r.headers.get("Retry-After", "5"))
            time.sleep(wait)
            continue
        return r

Monthly quota

When you’ve used your monthly quota, requests return 402 Payment Required. Upgrade your plan or wait for the next billing cycle. You can monitor remaining quota in the dashboard.

Need more throughput?

Contact us via the help center - we offer custom limits for high-volume customers.