Credits & billing
How requests are metered in credits, what each operation costs, the planned plans, and the billing endpoints.
Metering during the beta
Shadow mode lets you see exactly what your integration would cost before paid plans launch. When enforcement is switched on, requests that need more credits than you have get 402, and requests above your plan's concurrency get 429 (see Errors).
How charging works
- When a metered request arrives, its cost is reserved on your account. For a cost that depends on the work (the Airbnb priced calendar), the most the request could cost is reserved.
- The request runs.
- On success (2xx) the reservation is captured. On any error (4xx or 5xx) it is released, so failed and blocked requests are free.
- Empty results are free too, even though they return 200: an OTA compare where no source returned a price, a calendar where no night priced, a destination-search page with no properties, and a Google Flights search, return-leg, booking-options or location search that found nothing.
An answer that carries information is charged even when it is a "no": an Expedia or Vrbo quote saying the stay can't be sold as asked (a minimum stay, dates taken) is billed like any other answer, because the reason is availability data. Only a reply with nothing in it is free.
Costs are fixed per operation, not per byte or per night: a calendar call costs 5 credits whether it prices 30 nights or 330. Calendar jobs charge each item as it succeeds, priced exactly like POST /v1/calendar with the same surcharges (5 for a default item). Two operations scale with the work they do: destination search (per page) and the Airbnb priced calendar (per priced night), below. Credits reset every period and do not roll over.
Cost by operation
| Operation | Credits | Endpoints |
|---|---|---|
Property search / resolve | 1 |
|
Google Hotels destination search One page is about 20 properties with prices. A page with no properties is free. | 3 per page |
|
Google Hotels calendar One call returns up to 330 nights per call (90 by default). /v1/calendar adds 3 per night with basis: mainstream and 3 per verify_sources spot-check. POST /v1/jobs bills each succeeded item exactly like POST /v1/calendar, surcharges included (5 for a default item). | 5 |
|
Google property / offers / rooms / stay | 3 |
|
Single OTA source Booking.com, Hotels.com, Expedia, Vrbo, Agoda, Airbnb, Tripadvisor or Hostelworld. An Expedia or Vrbo answer saying the stay can't be sold as asked (a minimum stay, dates taken) is billed: the reason is availability data. Only a reply with nothing in it is free. | 8 |
|
Airbnb priced calendar Availability for 1-12 months is 8; each night priced with a real Airbnb quote adds 1 (at most 92, so at most 100 a call). Refused, failed and unsampled nights are free. The SearchAPI route prices nothing, and costs 8, unless price_nights is set. | 8 + 1 per priced night |
|
Official hotel site 31 official booking engines, detected automatically. | 4 |
|
Guest reviews (any source) Tripadvisor, Booking.com, Expedia, Hotels.com and Google Hotels. A page with no reviews is free. | 2 per page |
|
Google Hotels property lookup Property details carry the mailing address and phone. Resolve runs one search page plus up to three address lookups (12). | 3 details; 12 resolve |
|
News, Bing, Trends, Amazon search, Walmart search, Indeed Vertical engines over plain HTTP: Google News, Bing search, Trends interest and related queries, Amazon and Walmart search, Indeed jobs. | 1 |
|
Maps, Google Jobs, Shopping pages Google Maps places search and place detail, Google Jobs cards, Google Shopping cards. | 3 |
|
Google web search (organic + PAA + AI Overview) Rendered in a real browser. resolve: true follows each result redirect (billed as part of the same page). | 5 |
|
Amazon reviews, Walmart reviews Amazon answers with the product page's ratings histogram and featured reviews; Walmart returns one page (10) of reviews with the summary. | 2 per page |
|
OTA compare | 20 |
|
Google Flights search, return leg and booking options A search, return-leg or booking-options call with no results is free. | 3 |
|
Google Flights location search | 1 |
|
Google Flights calendar | 5 |
|
Failed, blocked or empty results; metadata, billing and stored reads Empty results include an OTA compare where no source priced, a calendar with no priced nights, a destination-search page with no properties and a flight search with no itineraries. MCP tool calls are priced exactly like the REST call each tool wraps; other MCP messages (initialize, tools/list, ping) cost nothing. | 0 |
|
Calendar surcharges
Two optional POST/v1/calendar settings sample Google's heavier offers pages and cost extra:
basis: "mainstream"adds 3 credits per night requested (a 90-night call costs 5 + 270).verify_sources: N(0–5 spot-checks) adds 3 credits per spot-check.
Per-page and per-night costs
- Destination search (POST/v1/hotels/search, POST/v1/serp/google_hotels) costs 3 credits per page of about 20 properties. Each
page_tokenfollow-up is a new page and a new charge; a page with no properties is free. - Airbnb priced calendar (POST/v1/airbnb/calendar) costs 8 credits for the availability calendar plus 1 per night actually priced, at most 92 (so at most 100 a call). The request reserves 8 plus the most nights it could price (
max_price_quotes, or 12 forsampleand 92 forall) and is charged for the nights priced. Refused, failed and unsampled nights are free. The SearchAPI route, POST/v1/serp/airbnb_property_availability_calendar, prices nothing by default and costs 8.
MCP tool calls are priced exactly like the REST call each tool wraps (tool table); other MCP messages cost nothing.
The authoritative table is served by GET/v1/billing/plans, so you can read it programmatically.
Credit headers
Every metered response tells you what it cost:
| Header | Meaning |
|---|---|
x-credits-charged | Credits charged for this request: the operation cost on success, 0 for failed or empty results. |
x-credits-remaining | Credits available on your account after the request. Sent on charged requests. |
HTTP/2 200
content-type: application/json
x-request-id: req_0123456789abcdef0123456789abcdef
x-credits-charged: 5
x-credits-remaining: 807The headers are sent for keys linked to a customer account. Free operations (usage, billing, metadata) do not send them.
Plans
Paid plans are not on sale yet. These are the allowances we intend to launch with:
| Plan | Price / month | Credits / month | Concurrent requests |
|---|---|---|---|
Free | $0 | 1,000 | 2 |
Starter | $49 | 50,000 | 10 |
Growth | $149 | 250,000 | 40 |
Scale | $399 | 1,000,000 | 100 |
Enterprise | Custom | Custom | Custom |
Concurrency caps apply only once enforcement is switched on. See pricing for details, or contact sales for early access or enterprise terms.
Billing endpoints
All three are free and authenticate with your API key.
| Endpoint | Returns |
|---|---|
Mode, plan, balance, reserved and available credits, usage this period, period dates. | |
Every credit movement, newest first. Page with before and next_before. | |
The plan catalogue and the cost of every operation. |
curl "https://api.scrapercompany.com/v1/billing" \
-H "x-api-key: $SCRAPERCOMPANY_API_KEY"{
"mode": "shadow",
"plan": {
"code": "free",
"name": "Free",
"monthly_credits": 1000,
"price_usd": 0,
"concurrency": 2
},
"credits": {
"balance": 812,
"reserved": 5,
"available": 807,
"credits_used": 188,
"credits_refunded": 0,
"billable_requests": 31
},
"period": {
"start": "2026-10-01T00:00:00+00:00",
"end": "2026-11-01T00:00:00+00:00"
}
}{
"entries": [
{
"id": 912,
"kind": "usage",
"amount": -5,
"balance_after": 812,
"route": "/v1/calendar",
"request_id": "req_0123456789abcdef0123456789abcdef",
"detail": {},
"created_at": "2026-10-14T09:12:44.120000+00:00"
},
{
"id": 3,
"kind": "grant",
"amount": 1000,
"balance_after": 1000,
"detail": {
"plan": "free"
},
"created_at": "2026-10-01T00:00:03+00:00"
}
],
"next_before": null
}