Skip to content

Pricing

You pay for data, not for asking

One credit is one successful, non-empty, uncached request unless an endpoint says otherwise — and every endpoint says so, in machine-readable form, in the OpenAPI spec.

Free

Evaluating whether the data is good enough.

$0forever

1,000 credits, once

 

  • A one-time grant on signup — not a monthly renewal
  • Every endpoint, no feature gating
  • No card required
  • Cache hits still cost nothing
Start free

Credit packs

most common

A product in production with real volume.

From $25one-time, no subscription

25,000 credits and up

$1.00 per 1,000

  • Credits never expire and there is nothing to cancel
  • Async jobs, batching, and webhook subscriptions
  • Buy again whenever you run low
  • A daily spend cap, with remaining headroom on every account read
Start free, top up later

Enterprise

Buying through a security review.

Custom

Committed volume

 

  • DPA, documented retention windows, zero-retention mode
  • SSO and SAML
  • Published uptime history and an SLA
  • Dedicated proxy pools
Talk to us

Every plan unlocks every endpoint. Only volume is priced — there is no feature behind a tier.

What a credit buys

Three of the six rows below cost nothing. That is not a promotion — it is the settlement stage of the execution pipeline, and it runs on every request.

One channel or profile lookup1 credit
One video transcript1 credit
One page of a channel’s uploads1 credit
The same call with render=true3× the endpoint price
A cache hit on any of the above0 credits
A request that fails upstream0 credits
A request that returns nothing0 credits

Prepaid packs

Buy credits when you need them. Packs never expire, there is nothing to cancel, and there is no subscription to hold alongside them.

CreditsPriceEffective rate
25,000$25$1.00 / 1k
100,000$100$1.00 / 1k
500,000$500$1.00 / 1k

Running out mid-job is the failure mode nobody plans for, so GET /v1/account/usage-forecast reports your burn rate and the date the balance runs dry.

Not negotiable

The parts of this page that are not a draft

Pricing can change. These cannot — each one is a clause in the specification with a test behind it.

P1

You are never charged for a failed request.

Upstream blocks, timeouts, rate limits, not-founds, schema drift, and our own internal errors all refund in full before the error reaches you.

P2

You are never charged for an empty result.

A profile with no posts, a video with no captions, a search with no hits — you still get a 200, and creditsCharged reads 0.

P3

Cache hits cost 0 credits.

Pass cache_max_age=7d to say how stale you will tolerate. A hit never invokes a scraper and never bills.

P4

An invalid API key is an auth error, not a billing error.

A wrong key returns 401. A 402 always means the key is valid and the balance is not. The two are never confused.

P5

Every endpoint's price is machine-readable.

x-credit-cost sits on every operation in openapi.json, so an agent can compute spend from the spec alone.

P6

A balance can never go negative.

Charges are a conditional database update. Run a thousand concurrent requests against a balance of one and exactly one succeeds.

P7

Per-tenant cache isolation is standard.

Not an enterprise upsell. Turn it on and your team reads and writes only its own scope, permanently.

P8

Hard daily spend caps.

Set a ceiling in credits per UTC day. Requests past it fail with 429 before any charge is taken, not after.

Questions about the bill

What happens when a request fails halfway through a batch?
That target is refunded and the batch keeps going. The job reports the credits it actually charged, which is the count of targets that returned usable data.
Do I get charged for a request that returns an empty list?
No. An empty result is refunded in full and you still receive a 200 with creditsCharged reading 0. That includes profiles with no posts, videos with no captions, and searches with no hits.
How do cache hits work?
Pass cache_max_age to say how stale a copy you will accept — anything older is treated as a miss and fetched live. A hit never invokes a scraper and never bills. Adding cache_max_age cannot fragment the cache, because presentation-only parameters are excluded from the cache key.
Can I stop a runaway integration from draining my balance?
Set a daily credit cap. Requests past it fail with 429 before any charge is taken. The cap counts gross spend for the UTC day, so refunds do not quietly restore headroom.
Why did I get a 402 when my key is fine?
You would not. A 402 means the key is valid and the balance is not. An unrecognised, missing, or revoked key is always a 401 — authentication, authorization and billing are three separate outcomes here.