Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Implement Bright Data rate limiting, backoff, and idempotency patterns. Use when handling rate limit errors, implementing retry logic, or optimizing API request throughput for Bright Data. Trigger with phrases like "brightdata rate limit", "brightdata throttling", "brightdata 429", "brightdata retry", "brightdata backoff".
.claude/skills/jeremylongshore-brightdata-rate-limits/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 48% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 96% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -1% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 45% | 0% |
Bright Data does not publish one global proxy request limit. Build separate controllers for proxy traffic and dataset jobs, honor current provider signals, and keep target, cost, and policy ceilings stricter than capacity.
Read recent receipts and Grep for 429, Retry-After, provider error codes, active dataset jobs, per-IP concentration, and queue depth. Do not infer capacity from successful bursts alone.
Write independent limits for proxy requests, Browser API sessions, async triggers, progress polling, downloads, and delivery workers. One product's success must not raise another product's ceiling.
Retry only idempotent transient work. Honor provider guidance, use bounded jitter, cap attempts and elapsed time, and open the circuit on policy, authentication, or data errors.
Edit one limit at a time, run an approved canary, compare throughput, error, and cost, and retain the lower limit unless the evidence and owner approve promotion.
Use Read and Grep to analyze redacted metrics and documented codes. Use Write and Edit for controller configuration, tests, and runbooks. This skill does not run live traffic or change Bright Data account limits.
If dataset triggers return a tenant-specific parallel-job error, stop launching new jobs and continue bounded progress polling for owned snapshots. If proxy traffic returns a per-IP 429, reduce pressure and review distribution rather than guessing a universal rate.
| Failure | Meaning | Response | |---------|---------|----------| | No provider code is retained | 429 cause is ambiguous | Improve redacted instrumentation before tuning | | Retries amplify queue depth | Backoff lacks admission control | Open the circuit and drain owned work | | Throughput improves but cost or error ceiling fails | Optimization violates the budget | Roll back the changed limit |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | pass→pass | 15,264 | 11,575 | -24% | 1 | 1 | 0% | 2,554 | 3,709 | +45% | 0 | 0 | — |
case-01 | fail→fail | 17,748 | 17,724 | -0% | 1 | 1 | 0% | 3,975 | 5,334 | +34% | 0 | 0 | — |
case-02 | fail→pass | 20,394 | 20,498 | +1% | 1 | 1 | 0% | 3,997 | 5,926 | +48% | 0 | 0 | — |
case-03 | fail→fail | 20,087 | 12,262 | -39% | 1 | 1 | 0% | 3,736 | 4,125 | +10% | 0 | 0 | — |
case-05 | fail→pass | 8,796 | 7,975 | -9% | 1 | 1 | 0% | 1,488 | 2,916 | +96% | 0 | 0 | — |
case-06 | pass→pass | 9,947 | 7,685 | -23% | 1 | 1 | 0% | 2,028 | 3,223 | +59% | 0 | 0 | — |
case-07 | pass→pass | 14,317 | 7,760 | -46% | 1 | 1 | 0% | 2,350 | 3,117 | +33% | 0 | 0 | — |
case-08 | pass→pass | 11,861 | 9,241 | -22% | 1 | 1 | 0% | 2,016 | 3,372 | +67% | 0 | 0 | — |
case-09 | pass→pass | 10,162 | 10,143 | -0% | 1 | 1 | 0% | 1,772 | 3,278 | +85% | 0 | 0 | — |
case-10 | fail→fail | 15,080 | 12,586 | -17% | 1 | 1 | 0% | 2,614 | 3,795 | +45% | 0 | 0 | — |
case-11 | fail→pass | 13,588 | 4,237 | -69% | 1 | 1 | 0% | 2,361 | 2,340 | -1% | 0 | 0 | — |
case-12 | fail→pass | 12,115 | 7,494 | -38% | 1 | 1 | 0% | 2,205 | 2,945 | +34% | 0 | 0 | — |
case-13 | fail→pass | 12,746 | 9,979 | -22% | 1 | 1 | 0% | 2,362 | 3,426 | +45% | 0 | 0 | — |
case-14 | pass→fail | 19,117 | 8,761 | -54% | 1 | 1 | 0% | 1,726 | 3,101 | +80% | 0 | 0 | — |
case-15 | fail→pass | 15,145 | 13,060 | -14% | 1 | 1 | 0% | 2,438 | 3,926 | +61% | 0 | 0 | — |
case-16 | fail→fail | 15,975 | 11,841 | -26% | 1 | 1 | 0% | 2,943 | 3,913 | +33% | 0 | 0 | — |
case-17 | pass→pass | 16,689 | 8,079 | -52% | 1 | 1 | 0% | 3,233 | 3,141 | -3% | 0 | 0 | — |
case-18 | pass→pass | 13,037 | 6,563 | -50% | 1 | 1 | 0% | 2,251 | 2,653 | +18% | 0 | 0 | — |
case-19 | pass→pass | 16,174 | 5,846 | -64% | 1 | 1 | 0% | 2,666 | 2,571 | -4% | 0 | 0 | — |
case-20 | pass→pass | 10,674 | 9,963 | -7% | 1 | 1 | 0% | 2,078 | 3,559 | +71% | 0 | 0 | — |
case-21 | pass→pass | 6,217 | 6,499 | +5% | 1 | 1 | 0% | 1,176 | 2,896 | +146% | 0 | 0 | — |
case-22 | pass→pass | 12,147 | 10,560 | -13% | 1 | 1 | 0% | 2,441 | 3,375 | +38% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +23 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
The publisher has shipped newer versions since this run, so these numbers describe v1, not the version currently listed.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.