429 response can mean several different things. Read its code before deciding whether to wait, stop a browser, or check your account quota.
Requests per minute and per hour
Every request to/profiles and /fingerprint counts once against the minute window and once against the hour window, so creating a profile and starting it are two requests. Stopping a browser and GET /profiles/active are not counted. Other endpoints, such as /proxies/* and /users/*, and the CDP connection to a running browser are not counted either. Responses report the allowance and remaining requests:
GET /users/plan returns the same numbers in rpm, rph, rpm_remaining and rph_remaining without spending a request.
A request leaves each window a minute or an hour after it was made. When either window is full, the request gets 429 rate_limits_reached with Retry-After, the seconds until the next request fits.
POST /scrape has its own minute budget, separate from the profile windows: 60 requests per browser slot of the plan, a request a second per slot, with no hour window. Its responses carry X-Ratelimit-Limit and X-Ratelimit-Remaining for that budget, and a rejected request answers 429 with rate_limits_reached and Retry-After. A scrape on a running profile is not counted.
Use bounded backoff with jitter and reduce the request rate after rate_limits_reached. Avoid frequent polling of account or session endpoints when an application record can answer the same question.
Parallel browsers
Running browsers count against the slot limit even if the worker that started them has crashed, and so does aPOST /scrape request while it runs. GET /users/browser-limits reports the current count and, on capped accounts, the available slots; see concurrency for the response and how to use it. Availability can change immediately, so your application must still handle a rejected start.
Traffic
Shared and premium proxy traffic have separate quota endpoints:403 with shared_pool_unavailable or premium_pool_unavailable means that tier is not enabled for your account, and premium_quota_not_applicable means the plan has no premium quota to report.
Using another tier requires that tier to be enabled for your account. A different proxy may also change the site’s behavior or invalidate a login tied to an IP. Choose it deliberately. See proxy selection.
Reduce unnecessary downloads with request blocking or shared cache, and measure the effect on completed jobs.
Stored objects
Deleting a profile also deletes its saved state. Export anything you need before deleting it.