Every metered call debits credits from your organization. One credit is one page fetch, which is the cheapest thing the API does. Everything else is priced as a multiple of it. Most endpoints return one record and cost a fixed number of credits per call. The endpoints that return a set are priced per block of records, written 5 per 10 below: each block of ten records costs five credits, a partial block costs a whole one, and every call costs at least one block. Two things follow, and both are deliberate:
  • You are billed on the limit you request, not the count returned. A limit of 100 that comes back with 4 records costs the same as one that comes back full. The price of a call is knowable before you make it.
  • Paging costs the same as asking once. Five calls of limit: 20 and one call of limit: 100 are five blocks either way, so there is no cheaper way to ask for the same data.
A job that fails, is blocked, or returns nothing is refunded in full, blocks included.

Cost per endpoint

† Restricted. These endpoints are enabled per organization rather than by plan; a request from an organization without the entitlement returns endpoint_not_enabled. Both prices are floors rather than settled rates — each is dominated by model tokens, which are recorded per job but not yet costed, so the published numbers are known to be low and will move once that measurement exists. /scrape/brand-design used to sit here too. It is now open to every plan at 20 credits — a price set with margin against an estimate of what its two model calls cost, rather than the floor it carried while it was gated. That is not a measured break-even either, and it may come down once the token measurement exists. ‡ What these two actually return, because the endpoint names are broader than the data. /scrape/linkedin/profile accepts company pages only — a personal /in/ URL is rejected rather than scraped. /scrape/linkedin/employees returns discovery records found through public search: name, title, headline, avatar and profile URL. It returns no email addresses and no phone numbers, and it is priced against the discovery tier of the market rather than the enriched one. /scrape/brand-design/basic is the deterministic tier of the same pipeline: palette, typography, favicon, logo, social links, and footer, with no model call. It omits business_type, business_subtype, visual_tone and confidence — those are interpretation — and returns a logo_confidence so a favicon standing in for a wordmark is distinguishable from a declared logo. It is open to every plan. /scrape/batch charges each URL separately at the scrape.url rate. The account endpoints — /balance, /usage, /requests, and job polling — are free.

What a credit costs

Billed yearly, every paid plan is two months free: $150, $290, $990, $2,490 and $5,750, each granting the whole year’s credits at once. Top-up packs are available when you overrun mid-month: 10,000 for $19, 50,000 for $79, 250,000 for $279, 1,000,000 for $749. They need no subscription and are valid for 12 months from purchase, where a plan’s monthly allowance resets each billing period. At every plan’s own included volume the plan costs less than buying that volume in packs — if you need them regularly, the next plan up is cheaper. Worked example on Growth: a page fetch is 1 credit, so $0.000792 — under a tenth of a cent, whether the page resolves immediately or needs the anti-bot escalation. A thousand of them costs $0.79.

What you are not charged for

Jobs that return no content are refunded automatically:
  • challenge, login_required, forbidden — the target refused us
  • timeout, upstream_error, transport, and the other infrastructure codes
  • extraction_error, provider_error, not_configured
  • Anything rejected with 429
A cache hit is charged at the same rate as a fresh call. It skips the scrape, not the charge: the request is still metered, still recorded as a job, and still appears in your request log. Serving repeats free left a caller able to read indefinitely with nothing in their usage to point at. What is free is a cached failure. Slow-moving kinds cache server-side by default, so a repeated infra or seo lookup inside the cache window returns immediately — but if the cached outcome was a block, a login wall, or an upstream error, replaying it costs nothing, because the live call would have refunded it too. Send fresh: true to bypass the cache. See Auth & Credits for the windows. See Error codes for the full refund matrix.

Checking your position

usage reports creditsSpent and creditsRefunded separately per action, so you can see what you were actually billed rather than inferring it.