# Endpoint pricing

Endpoint pricing

# What a call costs, and when it costs nothing

Read current credit prices from the catalogue, inspect the charge on each response, and trace it in your ledger. Synthetic sandbox samples cost zero credits.

## One credit, spent per call

Choose a monthly or annual subscription. Active paid subscribers can also buy extra credits in Billing with a one-time payment; purchased credits never expire. Unused plan credits expire at each monthly allowance reset, including on annual plans. Free and plan credits are used before purchased credits. Requests pause at the limit by default. Paid subscribers can enable optional overage for eligible API requests and scheduled endpoint checks, with a monthly extra-spend cap starting at $0. Extra usage is billed monthly, including on annual plans. Plan allowances do not roll over. A call debits its price from one account-wide wallet, and the balance after the debit comes back on the response itself as `credits_remaining` — no second request needed to track spend.

Your monthly credit balance determines how much you can use. There is no additional supplier-specific monthly allowance. Request and concurrency limits still apply.

In Billing, Monthly usage shows recorded activity for the current UTC calendar month. Credits remaining shows your available balance and its allowance reset date. Use Billing to buy a pack, choose a plan or upgrade. The plan chooser shows included features and rates, with a separate custom volume pricing option for larger workloads. Extra usage → Manage shows your overage rate and monthly spending cap; nothing is enabled until you authorize and save it. Low-balance email → Manage controls notifications only.

150 credits, one time

Free to start

$0.0020 / credit

From

monthly

Allowance reset

0 credits

Confirmed refund

Plan allowances and per-credit rates are on the [pricing page](https://www.monocrawl.com/pricing). This page is about what each individual call draws down.

## Price follows the work

An endpoint's price reflects how many upstream requests it makes and how much assembly it does on top. The table below reads current prices and examples directly from the billing registry.

| Credits | Tier | Examples |
| --- | --- | --- |
| 0 | Free · 51 | `app_store/categories · app_store/languages · app_store/locations` |
| 1 | 1-credit routes · 180 | `aliexpress/categories · aliexpress/description · aliexpress/promos` |
| 2 | 2-credit routes · 114 | `app_store/app-list · app_store/app-reviews · booking/attraction-locations` |
| 3 | 3-credit routes · 102 | `airbnb/stay-reviews · aliexpress/product · aliexpress/reviews` |
| 4 | 4-credit routes · 58 | `etsy/categories · etsy/category-products · etsy/product` |
| 5 | 5-credit routes · 75 | `amazon/best-sellers · amazon/categories · amazon/deals` |
| 6 | 6-credit routes · 6 | `airbnb/locations · airbnb/stay · airbnb/stay-availability` |
| 7 | 7-credit routes · 3 | `threads/post-comments · tiktok/playlist-videos · trustpilot/company` |
| 8 | 8-credit routes · 8 | `g2/product · g2/reviews · instagram/profile/full` |
| 10 | 10-credit routes · 18 | `cohorts/queries · instagram/about · instagram/engagement` |
| 11 | 11-credit routes · 1 | `airbnb/search-stays` |
| 12 | 12-credit routes · 4 | `facebook/search-pages · facebook/search-people · facebook/search-posts` |
| 14 | 14-credit routes · 1 | `amazon/shop` |
| 15 | 15-credit routes · 2 | `linkedin/profile/full · web/social-profiles` |
| 16 | 16-credit routes · 13 | `linkedin/profile-certifications · linkedin/profile-educations · linkedin/profile-experiences` |
| 25 | 25-credit routes · 5 | `facebook/reels/full · instagram/comment · instagram/posts/full` |
| 30 | 30-credit routes · 9 | `See endpoint reference` |
| 31 | 31-credit routes · 1 | `linkedin/comment-replies` |
| 47 | 47-credit routes · 1 | `facebook/profile/full` |

These tiers describe the catalogue; they are not a formula. The authoritative price of any single endpoint starts with the `credit_cost` field on its catalogue row — call `GET /v1/utility/endpoints` for all of them, or `GET /v1/utility/endpoint?id=github/search` for one. Both are free. Some operations quote or settle a variable charge (for example multi-source search, research and scheduled monitor runs); read their estimate and returned credits_used, not only the list price.

## What you do not pay for

Empty normalized pages

Empty normalized pages cost 0 credits; their reservations are refunded automatically.

Failed calls

A paid live call reserves credits before collection. Confirmed failed collection is uncharged or refunded: the ledger may show a debit and matching refund. If accounting cannot confirm the outcome, credits_used can be null with billing_status pending_reconciliation. Keep request_id and the original idempotency key; do not assume an unknown charge is zero.

Sandbox examples

Explicit /sandbox calls can return representative output marked synthetic: true and cost 0. Production /v1 never falls through to that output after provider failure.

The batch wrapper

POST /v1/batch costs nothing itself. You pay for the calls inside it, at their own prices.

Discovery and account endpoints

utility/*, credits/* and status are 0 credits, and they bypass the balance check — a customer at zero can always read their own balance and the catalogue.

## A cached hit costs 0 credits

Public upstream data is cached briefly and shared across callers. When your call is answered from that cache, the net charge is 0 credits. A concurrent request that waited for another fetch may show a temporary reservation and matching refund. Request a new retrieval with `fresh=1`; when honoured, the uncached call follows that endpoint’s billing rules. Fresh bypasses have their own allowance; see [caching](https://www.monocrawl.com/docs/pagination-caching). The envelope tells you: `cached: true`.

A temporary outage can also produce a marked older reference answer on `amazon/categories`, `target/categories` or `sephora/brands`. It costs **0 credits** net, with `stale: true` and `x-cache: STALE`; the response includes the original retrieval time and age. The extra retention is at most one hour beyond the normal cache lifetime, with a total cap of 24 hours. Fresh requests rule this fallback out even when their fresh allowance is used, and `max_age` still applies. See the [caching contract](https://www.monocrawl.com/docs/pagination-caching) for its limits.

Cross-platform search, cached for 0

A cached cross-platform search costs 0 credits instead of its current catalogue price.

Nothing to reason about

A hit is 0 whatever the endpoint costs; only a live fetch is ever billed.

Only public data is shared

Anything whose answer depends on who is asking — your balance, your monitors, your jobs — is never cached, so no response can cross accounts.

Paginated endpoints bill per page fetched, at the endpoint's price. Page-size defaults, maximums and any result-based or composite pricing depend on the endpoint. Check its parameters and pricing notes; there is no universal limit of 100.

## Request limits grow with your plan

Every request must fit both its key and shared account limits. Starter key limits are shown below; Pro, Growth and Business increase request rate and concurrency. Buying extra credits does not change these limits. Individual endpoints may have lower source limits.

| Limit | Starter per key | On breach |
| --- | --- | --- |
| Requests | `600 / minute` | 429 `RATE_LIMITED` with a `retry-after` header counting the seconds until the oldest request leaves the sliding window. |
| Concurrency | `50 in flight` | 429 `RATE_LIMITED` with `retry_after_seconds: 1` — the slot frees as soon as an in-flight request finishes. |

The limiter runs before any billing work, so a throttled request costs 0 credits. Batch items are admitted individually, including price previews, and consume request headroom. [Compare every plan’s key and account limits](https://www.monocrawl.com/docs/rate-limits). The failure mode is documented in [errors](https://www.monocrawl.com/docs/errors#rate-limited).

## Check every credit

Each charge writes a ledger row referencing the `request_id` of the call that caused it, so any figure on your bill can be traced back to a single request.

**terminal**

```
$ curl "https://www.monocrawl.com/v1/credits/transactions?limit=5" \
    -H "x-api-key: mn_your_key_here"

"data": {
  "items": [
    { "id": "48211", "delta": -3, "balance_after": 94, "reason": "usage",
      "ref_type": "usage_event", "ref_id": "req_4f2b8c1d09ae37b562",
      "created_at": "2026-08-30T09:14:02.113Z" }
  ],
  "count": 1,
  "cursor": null
}
```

`credits_remaining`

Read it when present. Success includes the balance; errors can omit it when unknown. A replay returns the original, historical balance.

`credits/balance`

Remaining and lifetime credits, plus when the balance last moved. Free, and never blocked by a low balance.

`credits/transactions`

The full ledger, newest first, with cursor pagination. Filter to one call with request_id.
