Credits, billing and refunds
Calls are priced in credits, bought in packs. Completed calls are charged; calls we can't complete are refunded; rejected calls are free.
Credits#
Every call has a fixed price in credits. Buy credits in packs, starting at $10 for 20,000 credits, by card through Stripe Checkout. Your first workspace gets 200 credits when you verify your email. Credits never expire: they stay in your workspace until you use them, and nothing renews.
| Call | Price | Per 1,000 calls | From our cache | Confirmed not found |
|---|---|---|---|---|
Company, by LinkedIn URL (POST /v1/company) |
2 credits | $1.00 to $0.50 | 1 credit | 1 credit, free from our cache |
Company, by website domain (POST /v1/domain) |
4 credits | $2.00 to $1.00 | 2 credits | 4 credits, free from our cache |
Web search (POST /v1/search) |
1 credit | $0.50 to $0.25 | 1 credit | n/a |
Cache check (POST /v1/cache) |
Free | Free | n/a | n/a |
Prices are in USD, VAT excluded. The current prices are always at GET https://api.happyfetch.net/v1/pricing.
What is charged#
| Outcome | What happens | Error codes |
|---|---|---|
| A result: company data, or a completed search (even with zero results) | Charged the call's price; a lookup from our cache costs less | none |
| A definitive "no such company" | Charged 1 credit by LinkedIn company URL, 4 by website domain when we look it up; free when the answer comes from our cache | not_found, unresolvable_id |
| We couldn't complete the call | Charged, then refunded automatically in the same request | upstream_error, parse_error, blocked, source_rate_limited, timeout, internal_error |
| The request was rejected before any work | Never charged | invalid_request, invalid_person_reference, invalid_domain, invalid_company_reference, unauthorized, insufficient_credits, route_not_found, idempotency_key_in_use, idempotency_key_reused, rate_limited, concurrency_limited, no_capacity |
The refund happens inside the same request: the error response already shows credits_charged: 0.
Seeing what you spent#
- Every call that reaches billing carries
X-Credits-ChargedandX-Credits-Remaining, with the same numbers inmeta. A request rejected before any work hasmeta.credits_charged: 0and no credit headers. - The console's ledger lists every credit movement (purchases, calls, refunds, grants) with the running balance. Each call line links to the request that caused it.
- We email the workspace's owners when the balance runs low. Change the level in the console.
Invoices#
Every purchase comes with an invoice. Add your company name, address and VAT number at checkout and they appear on it. The console's billing page links to each invoice, with a PDF, next to its purchase.
Refunds of purchases#
If a card payment is refunded or disputed, the credits it bought are removed. Credits already spent stay spent, and we'll contact you about any shortfall.