Skip to content

Credits & billing

How requests are metered in credits, what each operation costs, the planned plans, and the billing endpoints.

Metering during the beta

Free while in beta

Credit metering is in beta and paid plans are not on sale yet. Metering runs in shadow mode: every request is metered and recorded in your ledger, and nothing is blocked. Balances can go below zero; the overdraft is forgiven at renewal.

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

  1. 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.
  2. The request runs.
  3. On success (2xx) the reservation is captured. On any error (4xx or 5xx) it is released, so failed and blocked requests are free.
  4. 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

OperationCreditsEndpoints

Property search / resolve

1
  • POST /v1/search
  • POST /v1/ota/booking/search
  • POST /v1/ota/hotels/search
  • POST /v1/ota/agoda/search
  • POST /v1/ota/expedia/search
  • POST /v1/ota/vrbo/search

Google Hotels destination search

One page is about 20 properties with prices. A page with no properties is free.

3 per page
  • POST /v1/hotels/search
  • POST /v1/serp/google_hotels

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
  • POST /v1/calendar
  • POST /v1/serp/google_hotels_calendar

Google property / offers / rooms / stay

3
  • POST /v1/offers
  • POST /v1/rooms
  • POST /v1/stay
  • POST /v1/serp/google_hotels_property

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
  • POST /v1/ota/booking
  • POST /v1/ota/booking/rooms
  • POST /v1/ota/hotels
  • POST /v1/ota/hotels/rooms
  • POST /v1/ota/agoda
  • POST /v1/ota/tripadvisor
  • POST /v1/ota/hostelworld
  • POST /v1/ota/expedia
  • POST /v1/ota/vrbo
  • POST /v1/serp/airbnb
  • GET /api/v1/search?engine=airbnb

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
  • POST /v1/airbnb/calendar
  • POST /v1/serp/airbnb_property_availability_calendar

Official hotel site

31 official booking engines, detected automatically.

4
  • POST /v1/official

Guest reviews (any source)

Tripadvisor, Booking.com, Expedia, Hotels.com and Google Hotels. A page with no reviews is free.

2 per page
  • POST /v1/ota/tripadvisor/reviews
  • POST /v1/ota/booking/reviews
  • POST /v1/ota/expedia/reviews
  • POST /v1/ota/hotels/reviews
  • POST /v1/hotels/reviews

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
  • POST /v1/hotels/property
  • POST /v1/hotels/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
  • POST /v1/news
  • POST /v1/bing/search
  • POST /v1/trends/interest
  • POST /v1/trends/related
  • POST /v1/amazon/search
  • POST /v1/walmart/search
  • POST /v1/indeed/jobs

Maps, Google Jobs, Shopping pages

Google Maps places search and place detail, Google Jobs cards, Google Shopping cards.

3
  • POST /v1/maps/search
  • POST /v1/maps/detail
  • POST /v1/jobs/search
  • POST /v1/shopping/search

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
  • POST /v1/google/search

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
  • POST /v1/amazon/reviews
  • POST /v1/walmart/reviews

OTA compare

20
  • POST /v1/ota/compare

Google Flights search, return leg and booking options

A search, return-leg or booking-options call with no results is free.

3
  • POST /v1/serp/google_flights
  • POST /v1/serp/google_flights_return
  • POST /v1/serp/google_flights_booking

Google Flights location search

1
  • POST /v1/serp/google_flights_location_search

Google Flights calendar

5
  • POST /v1/serp/google_flights_calendar

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
  • Any non-2xx response
  • POST /v1/jobs (items are charged as they succeed)
  • GET /v1/billing, /v1/billing/ledger, /v1/billing/plans
  • GET /v1/usage
  • GET /v1/requests
  • GET /v1/ota/sources
  • GET /v1/markets
  • GET /v1/official/engines
  • GET /v1/storage/status
  • GET /v1/rates/stored
  • GET /v1/jobs/{job_id}

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_token follow-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 for sample and 92 for all) 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:

HeaderMeaning
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.
Response headers
HTTP/2 200
content-type: application/json
x-request-id: req_0123456789abcdef0123456789abcdef
x-credits-charged: 5
x-credits-remaining: 807

The 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:

PlanPrice / monthCredits / monthConcurrent 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.

EndpointReturns
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"
GET /v1/billing
{
  "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"
  }
}
GET /v1/billing/ledger
{
  "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
}

404 from /v1/billing

{"detail": "this API key is not linked to a customer account"} means your key isn't attached to a billing account yet. Email support and we will link it.