Brave Search API free tier: 1 req/sec, so serialize calls and retry 429s
Brave Search API free tier: 1 req/sec, so serialize calls and retry 429s. Sleep ~1.1s and retry with backoff instead of declaring the key dead. - Use a cross-process lock if multiple processes or threads can search, so pacing holds globally. - Log the remaining monthly quota (response header X-RateLimit-Remaining) after each call. Use when hitting this exact issue with Brave Search API free tier. Not for unrelated errors or different features.
TL;DR
Sleep ~1.1s and retry with backoff instead of declaring the key dead. - Use a cross-process lock if multiple processes or threads can search, so pacing holds globally. - Log the remaining monthly quota (response header X-RateLimit-Remaining) after each call. Read that line before concluding the key is exhausted. - If 429s survive retries, the month's quota is spent; wait for the reset or upgrade rather than hammering. Brave Search API free tier: 1 request/second, 2,000/month.
Fix
- Sleep ~1.1s and retry with backoff instead of declaring the key dead. - Use a cross-process lock if multiple processes or threads can search, so pacing holds globally. - Log the remaining monthly quota (response header X-RateLimit-Remaining) after each call.
Expected: You get the expected result; the problem is gone.
- Read that line before concluding the key is exhausted. - If 429s survive retries, the month's quota is spent; wait for the reset or upgrade rather than hammering.
Expected: You get the expected result; the problem is gone.
- Rate-limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) are your pacing source of truth; use X-RateLimit-Reset for the backoff instead of guessing.
Expected: You get the expected result; the problem is gone.
When to use
- You are setting up or using this Brave Search API free tier feature.
- The symptom matches: 1 req/sec, so serialize calls and retry 429s.
When NOT to use
- Unrelated Brave Search API free tier issues (different feature, different failure).
- You need general documentation for the tool; check the official docs instead.
Compatibility
Reported against Brave Search API free tier.
Variant phrasings
1 req/sec, so serialize calls and retry 429s
Why it happens
Web (agent-config brave-search SKILL.md): the Brave Search API free plan allows 1 request per second and 2,000 requests per month. The documented rule: never issue calls in parallel; one query at a time. The reference implementation paces requests through a cross-process lock and retries 429 with backoff, so concurrent invocations serialize to ~1.1s apiece instead of failing. Every run prints the remaining monthly quota (e.g. "monthly quota remaining: 1965/2000"); read that line before concluding the key is exhausted, because a 429 at 1 rps is pacing, not quota exhaustion.
Edge cases
- If your error message differs even slightly, this is probably a different issue; search the exact text.
- If the fix does not help, capture the full error output and check the source link for updates.
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.