Billing and credits
How credits work, what each call costs, top-up tiers, and the four billing rules.
SerpHubAPI uses prepaid credits. One set of credits covers every endpoint and engine. Top up in USD, spend credits per call.
The four rules
- Failed calls are free. If a call returns an error — including when every attempt to complete it fails — you pay nothing.
- Empty results are free. If a search succeeds but finds nothing, it costs 0 credits.
- Cache hits are free. With
mode=cache_first, a result served from cache costs 0 credits. - Paid balance never expires. Credits you buy stay in your wallet until you use them.
Every response tells you exactly what it cost in meta.credits_charged (or the X-Credits-Charged header for Markdown responses).
What each call costs
| Action | Credits |
|---|---|
Live search (mode=live) | the service's price — e.g. google/web 10, deepseek/web 5 (all prices) |
Cache-first search (mode=cache_first) | half the service's price, rounded up (google/web: 5) |
| Cache-first search, cache hit | 0 |
Page fetch (/v1/fetch) | 5 per page |
include_content on search | 3 per page (max 5 pages) |
| Empty result | 0 |
| Failed call | 0 |
GET /v1/searches/{id}, /v1/account, /v1/services, /v1/engines | 0 |
The number of results (num) does not change the price.
Example: a live search with include_content: 3 where all three pages are fetched costs 10 + 9 = 19 credits. If one page fails, it costs 16.
Holds
Before a call runs, its maximum possible cost is reserved from your balance; whatever isn't used is released as soon as the call finishes. If your balance can't cover the maximum, the call returns 402 insufficient_balance. For example, a live search with include_content: 5 needs 25 credits available.
Free credits
- Every new account gets 1,000 gift credits (about 100 live searches). No card required.
- Gift credits are valid for 30 days from sign-up. Unused gift credits expire after that.
- Gift credits are always spent first, before paid credits.
GET /v1/account shows gift_credits, gift_expires_at and paid_credits separately.
Top-up tiers
| Tier | Price | Credits | ≈ per 1,000 live searches |
|---|---|---|---|
| Free | $0 | 1,000 (gift, 30 days) | — |
| Starter | $15 | 15,000 | $10.00 |
| Growth | $49 | 60,000 | ≈ $8.17 |
| Business | $149 | 220,000 | ≈ $6.77 |
| Scale | $499+ | Custom | Contact sales |
- Custom amounts: you can top up any whole-dollar amount from $15; a custom amount gets the per-dollar rate of the largest tier it reaches (e.g. $100 is credited at the Growth rate, $200 at the Business rate), so it is never worse than the tier below it.
- For Scale, email support@serphubapi.com.
- Top-ups are one-time payments by card, in USD. There is no subscription and nothing renews automatically.
Top up and see your history at /dashboard/wallet.
Low-balance email
When your balance drops below 200 credits (you can change the threshold or turn the email off at /dashboard/settings), we email you once. When it reaches zero, calls return 402 insufficient_balance with a clear error — never a silent failure. After you top up, the reminder is re-armed.
Ledger and usage
- Every charge, refund and top-up is a ledger entry. View and export it as CSV at /dashboard/wallet.
- Usage by day, endpoint, engine and key is at /dashboard/usage.
- Individual calls with their cost are at /dashboard/logs.
- To keep one integration from using up the shared balance, set a daily credit limit on its key at /dashboard/keys.
Refunds
Billing questions and refund requests: support@serphubapi.com. Include the email on your account and the receipt number. See also Invoices.