ScraperFlyAI-ready Web Data API

request control

Scraping API 429 rate limits and backoff decisions

A 429 or limit-style failure is usually an operating signal: the workflow is moving too fast, a credit or plan limit is being reached, concurrency is too aggressive, or the public target needs a calmer request rhythm. ScraperFly helps teams classify the limit before scaling the same request profile harder.

429 pacing workflow

Slow the workflow deliberately before you scale the same request harder

A 429 is not the same kind of failure as a malformed URL, missing API key, or target 403. It usually says the current request rhythm is too aggressive for an account limit, plan limit, concurrency setting, retry policy, or the public target's tolerance.

ScraperFly helps teams treat 429 as an operating signal. Check remaining credits, plan allowances, route concurrency, response evidence, and retry windows, then apply backoff or reduce pressure before adding heavier request controls.

backoffconcurrencyscale safely
Team reviewing scraping API 429 rate limits with backoff, concurrency, credits, retry window, and safe scaling controls

What does a 429 mean in scraping?

A 429 response usually means too many requests were sent for the current context. That context can be your account, your plan, a concurrency rule, the target website, a route class, or a narrow window of repeated retries. The right fix depends on which limit was hit.

That is why 429 handling should begin with classification. If every target starts failing at the same time, check account state, credits, monthly allowances, and global concurrency. If one target or route group returns 429 while other targets remain healthy, inspect target-side tolerance, retry rhythm, request spacing, and whether the route is heavier than expected.

Practical takeaway: a 429 is a pacing signal first. Reduce pressure and inspect limits before making every request more expensive.

How do you separate account limits from target-side rate limits?

Account-side limits usually show up across workflows or after a predictable usage threshold. They point to remaining credits, monthly plan allowances, concurrency ceilings, unpaid status, or an operating rule designed to keep the account stable. Target-side rate limits usually show up around a specific public website, route family, country, time window, or request profile.

Both cases deserve different action. Account limits need visibility and planning. Target-side limits need pacing, route grouping, backoff, and sometimes a narrower capture profile. Treating every 429 as a proxy problem can waste credits because the target may simply need fewer concurrent requests or a longer retry window.

429 signal Likely meaning Best next action
429 appears across many targetsAccount, plan, or global concurrency pressureCheck credits, plan limits, unpaid status, and worker settings.
429 appears on one targetThe public website is limiting the current request rhythmReduce concurrency and add route-specific backoff.
429 appears after retriesThe retry policy may be amplifying the limitUse bounded exponential backoff and retry caps.
429 appears only on rendered requestsThe request profile may be too heavy for volumeClassify which routes truly need rendering.
429 appears by country or time windowTarget tolerance may vary by region or scheduleGroup routes and pace requests by target context.

What should a safe backoff policy do?

A safe backoff policy slows down repeated attempts without hiding the underlying problem. It should retry only when the failure is likely temporary, increase delay after repeated limits, cap total attempts, and log the reason each retry happened. If the target keeps returning 429 after backoff, continuing to retry is usually less useful than reducing concurrency or changing the route strategy.

Backoff should also be scoped. One target's limit should not pause every unrelated workflow unless the evidence points to account-wide pressure. Route groups, domains, countries, and request profiles can have different tolerance. A production scraper becomes more reliable when it slows the right lane instead of stopping or accelerating the whole system.

For broader failure decisions, compare the scraping API 403 errors page and the empty HTML response scraping API guide. They cover cases where the response is blocked, incomplete, or misleading rather than simply rate-limited.

How should teams tune concurrency?

Concurrency should be based on evidence, not ambition. Start with conservative request volume, measure successful responses, latency, response size, and 429 frequency, then increase only when the target remains stable. A route that needs browser rendering, visual files, premium routing, or session continuity should usually scale more carefully than a simple HTML route.

Request weight matters because heavier profiles consume more resources and can increase pressure on both sides of the workflow. A basic HTML request is not the same as a rendered browser session with waits, screenshots, and stronger routing. The safest strategy is to classify route patterns first, then assign concurrency by target and profile.

Control Use it when 429-safe behavior
BackoffThe limit may be temporary or window-basedIncrease delay, cap attempts, and stop noisy retry loops.
Concurrency limitsToo many workers hit the same target at onceThrottle by domain, route group, and request profile.
Account checksLimits appear across workflowsReview credits, monthly allowance, unpaid status, and plan fit.
Route classificationSome pages are heavier than othersKeep simple pages light and isolate rendered or visual jobs.
Request controlsTarget behavior depends on contextAdd headers, sessions, country routing, or rendering only when evidence supports it.

When should a 429 change the request profile?

A 429 should change the request profile only after pacing has been checked. Sometimes the answer is simply less concurrency. Sometimes the route needs a different workflow: source HTML instead of rendered output, text or Markdown instead of screenshot and PDF, fewer waits, narrower target selection, or better grouping by domain and route family.

There are cases where request controls matter. Headers can help when a public target expects legitimate context. Sessions can help when rate behavior depends on continuity. Country routing can help when limits differ by geography. Premium routing can help when delivery route quality is the limiting factor. But those are targeted decisions, not default fixes for every 429.

Use the API Builder to test a smaller profile before scaling. Compare source HTML, rendered output, response formats, final URL, status, response size, and latency. The web scraping API response formats page can help choose the lightest output your downstream workflow can use.

How do credits and billing fit into 429 recovery?

Credits and billing do not replace pacing, but they do affect operating decisions. If a project is still discovering target tolerance, pay-as-you-go credits keep the buying path flexible. If recurring volume is predictable and route profiles are proven, monthly credits can make planning easier. Either way, request pressure still needs to match account limits and target tolerance.

ScraperFly's pricing model is useful because it lets teams start small, test the target, and scale after the workload is better understood. A team can keep uneven experiments on flexible credits, move recurring jobs to monthly plans, and avoid turning a short-lived test into a large fixed subscription. Review pricing and the web scraping API credit cost calculator when estimating how request weight and volume interact.

How does ScraperFly make 429 handling practical?

ScraperFly gives teams one API layer for request formats, rendering, routing, sessions, headers, visual output, and diagnostics. That makes rate-limit handling easier because the response evidence, request controls, and cost model stay in the same workflow. You can see whether the problem is account pressure, target pressure, route weight, or retry behavior.

The goal is not to push harder by default. The goal is to make a cleaner scaling decision: start with the lightest useful request, slow down when the target asks for space, reserve heavier profiles for routes that prove they need them, and grow volume once the retry rhythm is stable.

Practical takeaway: good 429 handling turns failed volume into better pacing, clearer limits, and a request profile that can scale without constantly fighting the target.

429 limit check

Find whether the limit comes from account pressure, concurrency, retries, or target tolerance

A 429 response is useful evidence when teams inspect where the limit appears: across the account, on one target, after retry loops, on heavy rendered routes, or inside a specific time window. ScraperFly helps turn that evidence into a calmer request plan.

Raw HTML response mapped to visible page data
01

Raw HTML availability

Check whether the fields you need are already present in the first HTML response.

Best first test for simple pages, articles, docs, listings, and product details.

Before and after JavaScript rendering comparison
02

JavaScript dependency

Compare raw HTML with the rendered DOM or screenshot before turning on browser rendering.

Use rendering when raw HTML is only a shell and scripts create the useful content.

Cookies, consent, session and access context for scraping
03

State & access context

Identify whether cookies, consent, login boundaries, pagination, or the same visitor state affect the response.

Use sessions and headers when continuity changes the data you receive.

Regional content variations across countries and routes
04

Geo/content variation

Test whether country, language, currency, inventory, SERP, ads, or route reputation changes the result.

Use geo or premium routing only when the target proves the response varies by route.

Checks that keep rate-limit handling practical

Where is the target field?

Find whether the field exists in raw HTML, rendered DOM, an API call, structured data, a file, or a later interaction state.

What changes the response?

Sample a few URLs and compare status, final URL, content length, redirects, empty states, and visible result differences.

What context is required?

Mark any dependency on consent, locale, cookies, headers, authentication boundary, pagination, filters, or previous requests.

What does failure look like?

Define the signals for blocked, partial, stale, redirected, empty, timed-out, or region-mismatched responses before scaling.

Classify pressure before scaling volume

Fetch mode

Raw HTML availability decides whether the first request can stay simple or needs rendering, waits, screenshots, or extraction.

Request context

State requirements decide whether to add headers, cookies, sessions, consent handling, or a stable visitor profile.

Routing choice

Geo and reputation findings decide whether standard routing is enough or a country/premium route is justified.

Validation rules

Known failure states become checks for retries, escalation, QA review, and deciding when a lighter profile is still complete.

Rate-limit economics

Control spend by matching request pressure to proven target tolerance

Rate-limit recovery should not make every job heavier. ScraperFly helps teams keep source HTML routes light, isolate rendered or visual jobs, and use credits around workloads that have been tested instead of guessing volume on day one.

A lightweight HTML request returning a simple response
01

Basic fetch

Use a basic fetch when public HTML already contains the fields you need.

Lightest request profile; keep it when the response is complete.

JavaScript rendering producing a complete DOM
02

Rendering

Use rendering when raw HTML is a shell and JavaScript completes the page.

Heavier profile; use it only when browser output changes the result.

Several requests preserving cookies and visitor state
03

Stateful session

Use sessions when cookies, consent, locale, or pagination change the response.

Heavier state profile; preserve it only when continuity matters.

Request routing through geo and higher quality routes
04

Premium routing & geo

Use premium routing or geo only when origin, country, reputation, or regional content changes the result.

Heaviest routing profile; apply it only to targets that prove they need it.

What increases request pressure

More infrastructure work

Browser rendering, routing choices, and longer waits mean the platform has to do more than return a simple response.

More target uncertainty

Redirects, empty states, rate limits, and challenge pages often require stronger delivery options or retries.

More state to preserve

Cookies, sessions, consent, and multi-page flows add moving parts that a plain stateless fetch does not have.

More evidence to return

Screenshots, PDFs, rendered output, and richer response artifacts are useful, but they are heavier than plain HTML.

How to keep volume predictable

Sample before scale

Test a small URL set first and group targets by the lightest profile that returns complete data.

Do not render by default

Inspect raw HTML before turning on rendering. Many public pages already contain the data you need.

Escalate by evidence

Move up only when the response shows missing content, state dependency, geo variance, or routing problems.

Measure useful results

Optimize around valid records delivered, not raw request volume. A lighter profile is best only when it stays complete.

429 recovery builder

Build retry and backoff behavior around the response you actually received

Use the API Builder to compare request profiles, response formats, and target behavior before increasing volume. A good 429 recovery path adjusts pacing, concurrency, retry windows, and request weight with evidence.

01
01

Slow request pressure before adding heavier controls

Reduce concurrency, add backoff, and cap retries when a route starts returning 429.

02
02

Separate account limits from target tolerance

Review credits, plan limits, concurrency, and whether the 429 appears globally or only on one target.

03
03

Use heavier profiles only for routes that prove they need them

Keep simple pages on lightweight capture and isolate rendering, visual output, or routing changes to harder route classes.

429 handling controls

url

The public URL or route group returning 429 responses.

render

Use browser execution only when it changes useful public content.

format

Choose the lightest output your downstream workflow can use.

session

Use continuity only when related public requests depend on shared state.

country

Test regional tolerance only when target evidence varies by location.

premium

Use stronger routing for proven hard routes, not as the first answer to pacing problems.

cURL example

Generate Markdown with the same request shape you can move into production

curl "https://scraperfly.com/api/v1?url=https%3A%2F%2Fexample.com&format=markdown" \
  -H "apikey: YOUR_API_KEY"

Flexible scaling

Start small, learn the target limit, then choose the credit path that fits

ScraperFly lets teams test targets with free and pay-as-you-go credits before committing to recurring monthly volume. Once the route profile, concurrency, and retry rhythm are proven, monthly credits make predictable workloads easier to plan.

Free

Free

Try ScraperFly with enough credits to run real test requests.

$01000 credits included

  • No card required
  • API access for testing
  • Upgrade only when you need more volume
Free sign up
No subscription

Pay as you go

Buy credits once and spend them whenever your project needs them.

Credit packsNo monthly commitment

  • Credits stay available until used
  • Best for uneven workloads
  • Switch here automatically if a subscription payment fails
Free sign up
Monthly

Solo

A compact monthly plan for small recurring scraping jobs.

$9.9910,000 credits every month

  • Unused credits roll over
  • Good for scheduled jobs and small monitors
  • Cancel or change plan from the customer portal
Free sign up
Monthly

Team

Higher monthly credit volume for monitoring and production pipelines.

$49.99100,000 credits every month

  • Unused credits roll over
  • Built for frequent production workloads
  • Use the same dashboard, logs, and customer portal controls
Free sign up

Need more volume or custom limits? Contact support and we will map a plan around your targets, rendering mix, and routing needs.

429 questions

Common questions about scraping API 429 rate limits

Quick answers for teams evaluating web scraping API behavior: request formats, JavaScript rendering, proxy routing, credits, files, security, and billing.

Quick answers

What 429 tells you

Read rate limits as pressure signals.

Is 429 always a target block?

No. It can come from account limits, plan limits, concurrency, retries, or target-side rate limiting.

Should I retry immediately?

No. Immediate retries can amplify the problem. Use backoff, retry caps, and route-level pacing.

Backoff and concurrency

Slow the right workflow lane.

How should backoff work?

Increase delay after repeated limits, cap attempts, and stop retry loops that keep hitting the same window.

How should concurrency be tuned?

Start conservative, group by target and route type, then increase only while success rate and latency remain stable.

When to change profile

Add heavier controls with evidence.

Does rendering fix 429?

Rendering fixes missing browser-built content, not request pressure. Use it only when it improves the response.

Does premium routing fix 429?

Sometimes, but only when route quality is the limiting factor. Test pacing first.

Credits and scaling

Match buying path to proven volume.

Do credits remove target limits?

No. Credits fund usage, but concurrency and target tolerance still need to be respected.

When should I choose monthly credits?

Choose monthly credits after recurring volume and route profiles are predictable.