Rate limits
Requests are counted per credential over a rolling 60-second window. The count
is per HTTP request: a POST /v1/bulk carrying 50 searches is one hit, the
same as a single GET /v1/query.
The limit is set by your plan. It caps how fast you may call; how much you may call in a month is the separate monthly quota on Pricing and quotas.
Limits per plan
Section titled “Limits per plan”Pricing states this as concurrency. One concurrent request is 60 requests per rolling minute, so a plan’s per-minute limit is its concurrency times 60.
| Plan | Concurrency | API key or MCP | Dashboard session |
|---|---|---|---|
| Trial | 1 concurrent request | 60 / minute | 120 / minute |
| Starter | 2 concurrent requests | 120 / minute | 120 / minute |
| Growth | 5 concurrent requests | 300 / minute | 300 / minute |
| Business | 10 concurrent requests | 600 / minute | 600 / minute |
| Custom | 20 concurrent requests and up | 1,200 / minute | 1,200 / minute |
Live and test keys share the plan’s limit, and each key has its own counter: two keys on a Growth account get 300 a minute each. MCP calls made with a key share that key’s bucket with its HTTP calls, and an app connected by signing in is metered per account. A dashboard session never drops below 120 a minute, so the playground stays usable on the trial.
Two principals are not metered by plan:
| Principal | Metered on | Requests per minute |
|---|---|---|
| RapidAPI marketplace | the marketplace user | 1,200 |
| Landing-page demo | the client IP | 5 |
RapidAPI enforces the per-minute limit of the slot you subscribed to before a request ever reaches us; the 1,200 above is the ceiling behind it.
Headers
Section titled “Headers”GET /v1/query and POST /v1/bulk answer with three headers on every
response, success or error:
| Header | Meaning |
|---|---|
X-RateLimit-Limit |
Requests allowed per window for this credential. |
X-RateLimit-Remaining |
Requests left in the window, after this one. |
X-RateLimit-Reset |
Unix time in seconds at which the current window ends. |
The X-Quota-* headers sit alongside them and report the month instead.
A refused request is 429 rate_limited and adds Retry-After, the whole
number of seconds to wait, never below 1:
HTTP/1.1 429 Too Many RequestsX-RateLimit-Limit: 60X-RateLimit-Remaining: 0X-RateLimit-Reset: 1757329260Retry-After: 37Content-Type: application/json
{ "error": "rate_limited", "message": "Rate limit of 60 requests per minute exceeded. Retry in 37 seconds.", "request_id": "7d1c2f34-1b7e-4d2a-9c33-1f6f0e2b8a90"}A refused request costs no credit and no quota.
Getting more throughput
Section titled “Getting more throughput”Batch. Fifty searches through POST /v1/bulk cost one hit; the same fifty
through GET /v1/query cost fifty. A Growth key’s 300 requests a minute is up
to 15,000 searches a minute in bulk. The POST /v1/bulk
reference covers per-row overrides and the
60-second batch budget.
Past that, the next plan raises the ceiling. The limits per plan are on Pricing and quotas.