Skip to content
Login Sign up

Errors & limits

EventCharged?
Successful request (HTTP 200)1 credit
Rendering-enabled success (render_js=1)1 credit
Failed request (timeouts, connection errors)0 credits
HTTP 4xx or 5xx from the target0 credits
Retries within one callCounted as the single parent call

You are billed only for responses that reach you with a 2xx status and a non-empty body.

PlanMax concurrent requests
Starter20
Growth50
Business100
Enterprise500

Requests above the cap return 429 Too Many Requests. Back off with exponential delay and retry.

StatusMeaningWhat to do
200Success, response body attachedProcess normally
400Bad request (malformed params)Fix the extract_rules or url parameter
401Invalid or missing api_keyCheck the key in the panel
403Plan does not allow this featureUpgrade or remove the flag (e.g. premium_proxy on Starter)
408Target site timed outRetry with a higher timeout=, or simpler options
422Render failed (JS crash, navigation error)Retry; check the site works in a real browser
429Concurrency cap exceededBack off and retry
500Shifter internal errorRetry after a short delay, or contact support if persistent
509Plan credits exhaustedUpgrade or wait for the next billing cycle

Failed fetches, CAPTCHAs, and transient 5xx from the target are retried automatically (up to 3 times) with different proxies before the endpoint returns an error. You are not charged for retries.

For long-running scrapes, pass webhook=<URL> to have the response POSTed to your endpoint when ready:

Terminal window
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://example.com&webhook=https%3A%2F%2Fyour.app%2Fcallback"

You still pay 1 credit per successful delivery.

Real-time credit usage and error rate are visible in the panel under Web Scraping API → Usage.

  • FAQ, credits, failures, custom scripts, scalability.
  • Advanced, headers, cookies, POST.