Pricing and quotas
Usage is counted in credits. One credit is one search: a GET /v1/query costs
one, and a POST /v1/bulk costs one per query row inside it. A result served
from cache still costs one. A request rejected for a bad parameter costs
nothing; a search the upstream engine failed to answer is charged, because the
search was run.
The free trial
Section titled “The free trial”Every new account is granted 100 free requests at signup. No card. The grant is one per email address, so an account created again with an email that has already had it starts with zero.
Those 100 requests are a lifetime allowance, not a monthly one. They never
reset, which means a trial account has no quota period and no reset date:
X-Quota-Reset is absent from its responses and the 402 body carries
"resets_at": null. Once they are spent, every call answers 402 quota_exceeded until the account takes a plan.
Prices are per month and the same on both channels. Buying direct and subscribing on RapidAPI cost the same.
| Plan | Per month | Requests per month | Credit packs per 1,000 | Concurrency |
|---|---|---|---|---|
| Starter | $9 | 5,000 | $1.50 | 2 concurrent requests |
| Growth | $49 | 75,000 | $0.80 | 5 concurrent requests |
| Business | $99 | 200,000 | $0.60 | 10 concurrent requests |
| Custom | Contact us | — | — | — |
Custom is a contract plan. Write to [email protected] with the volume,
the concurrency and any invoicing terms you need and we price it.
Every plan stops at its quota. The rate in that column is what a credit pack costs once the quota is gone: it is priced per credit and quoted per 1,000, so Starter’s $1.50 per 1,000 is $0.0015 a credit. Packs are paid for up front, and no usage is ever billed to you afterwards. Credit packs covers the sizes and the rules.
Concurrency is enforced as a rolling per-minute limit of 60 requests for each
concurrent request: 2 concurrent requests is 120 requests a minute, 5 is 300,
10 is 600. The trial is 1 concurrent request, 60 a minute. Rate
limits covers that side, including the headers and the
429 response.
The concurrency and the quota are separate counters: one caps how fast you may call, the other how much you may call in a billing period.
The quota period
Section titled “The quota period”On a paid plan the period is your billing cycle. It runs from the day you subscribed and renews monthly on that same day, so a plan taken on the 14th resets on the 14th, not on the 1st. Every credit spent in that window counts against the plan’s quota, whichever key spent it: the quota is per account, not per key.
The counter resets when the next cycle begins, and X-Quota-Reset on every
response gives that exact moment. Unused requests do not carry over; credits
from a pack do, because they sit outside the period.
An account that has no subscription billing cycle of its own is measured on the
calendar month in UTC instead, starting on the 1st at 00:00:00Z. That covers
a plan held through the RapidAPI marketplace and a plan we set by hand under a
custom contract.
The trial has no period at all. Its 100 requests are counted from the day the account was created and never reset.
Running out
Section titled “Running out”Every quota is a hard limit, on the trial and on every paid plan alike.
On the trial the 100 requests never reset, so once they are spent every
call answers 402 quota_exceeded until the account
takes a plan.
On a paid plan, a spent quota falls through to the account’s credit
balance. While that balance lasts, searches keep running and come out of it.
With the quota gone and the balance at zero, calls answer 402 until the next
cycle begins or a pack is bought.
A refused request is not logged as a query and costs nothing.
Credit packs
Section titled “Credit packs”A credit pack is paid for up front. Buy one from the billing page of the dashboard, which opens a Polar checkout; the credits land on your credit balance as soon as the payment clears.
| Pack | Starter | Growth | Business |
|---|---|---|---|
| 10,000 credits | $15 | $8 | $6 |
| 50,000 credits | $75 | $40 | $30 |
| 100,000 credits | $150 | $80 | $60 |
The rate is the plan’s own: $1.50 per 1,000 on Starter, $0.80 on Growth, $0.60 on Business. Custom plans price pack credits in the contract.
The rules, in full:
- Buying a pack needs an active paid subscription. The trial cannot buy one: its 100 requests are the whole allowance.
- Credits never expire. They are not tied to a period and do not reset with one.
- Each cycle spends the plan’s monthly quota first. The balance is touched only once the quota is gone.
- The balance survives a renewal, an upgrade, a downgrade and a cancellation, and stays spendable after the subscription ends.
X-Credits-Balanceon every response reports what is left of it.- With no quota and no balance, a request answers
402 quota_exceeded. - Payments are final; there are no refunds on plans or credit packs. Cancel any time to stop renewal.
Headers
Section titled “Headers”GET /v1/query and POST /v1/bulk answer with quota headers on every
response, success or error:
| Header | Meaning |
|---|---|
X-Quota-Limit |
Requests included in the plan for the current period, or 100 on the trial. |
X-Quota-Used |
Credits spent in the current period, this request included. |
X-Quota-Remaining |
limit minus used, never below 0. Sits at 0 while a plan is running on pack credits. |
X-Quota-Reset |
Unix time in seconds at which the current period ends. Absent on the trial, which has no period. |
X-Credits-Balance |
Your credit balance, which sits outside the period. 0 when no pack has been bought. |
They accompany the X-RateLimit-* headers, which describe the per-minute
window instead. Traffic that arrives through the RapidAPI marketplace carries
neither set of quota headers: RapidAPI meters its own subscribers.
402 quota_exceeded
Section titled “402 quota_exceeded”Answered when the account has nothing left to spend: a trial with its 100 requests gone, or a paid plan with both its quota and its credit balance at zero. The body below is the trial case.
HTTP/1.1 402 Payment RequiredX-Quota-Limit: 100X-Quota-Used: 100X-Quota-Remaining: 0X-Credits-Balance: 0Content-Type: application/json
{ "error": "quota_exceeded", "message": "Your 100 free trial requests are used up. Upgrade to keep searching.", "request_id": "9c2f0f1a-6d3b-4d8e-8f37-2f1a4c9b7e51", "plan": "trial", "quota": 100, "credits_used": 100, "remaining": 0, "resets_at": null}| Field | Meaning |
|---|---|
error |
Always quota_exceeded. |
message |
Human-readable and safe to show an end user. |
request_id |
The same value as the X-Request-Id response header. |
plan |
The plan id the account is on: trial, starter, growth, business or enterprise. |
quota |
Requests included in the plan for this period, or 100 on the trial. |
credits_used |
Credits already spent. |
remaining |
Requests left, 0 on a refusal. |
resets_at |
ISO 8601 timestamp at which the period ends and the counter returns to zero. null on the trial, which never resets. |
A bulk request is checked before anything is dispatched: a batch of 20 queries
with 5 credits left, quota and credit balance together, answers 402 as a whole,
runs nothing and charges nothing. Errors lists every other
code.
On RapidAPI
Section titled “On RapidAPI”A subscription taken on the marketplace is counted and billed by RapidAPI
against the slot you picked there: BASIC for the trial, PRO for Starter,
ULTRA for Growth, MEGA for Business, CUSTOM for a custom plan. The price
is the one published above, the same as buying direct. The quota and the
per-minute limit come from that subscription, RapidAPI enforces them, and
RapidAPI invoices you. Credit packs are sold from our dashboard only, so
a marketplace subscription cannot buy one. The quota headers and the 402
above belong to direct traffic only. Usage still lands in the same account, so the dashboard’s
analytics cover both channels.
Paying for a plan
Section titled “Paying for a plan”Plans and credit packs bought direct are sold through Polar, which is the merchant of record for the sale: Polar sells the subscription or the pack to you, takes the payment, handles the tax that applies to your billing address, issues the invoice and stores the payment method. Card details go to Polar and its payment provider and never reach us.
Take a plan from the billing page of the dashboard. That page opens Polar’s checkout, and the plan is live on your account as soon as the payment clears. The same page sells the credit packs.
Changing plan
Section titled “Changing plan”Upgrades and downgrades are both done from the same billing page.
- An upgrade applies immediately. The difference in price is invoiced right away and the larger quota is available from that moment.
- A downgrade applies at the end of the billing period you have already paid for. Nothing changes before then.
- Payments are final; there are no refunds on plans or credit packs. Cancel any time to stop renewal.
Manage billing on that page opens the Polar customer portal. Cancelling the subscription, changing the card and downloading invoices all happen there, and every invoice for a direct plan or a credit pack is issued by Polar and kept in that portal. After a cancellation the plan keeps serving until the end of the period you have paid for, and whatever is left of your credit balance stays spendable after that.
Subscribing on the RapidAPI listing stays an alternative, at the same price, billed by RapidAPI instead.