Reference
Pricing
Every operation with its price, what a cached result costs, what is free, and worked examples of a real month.
Everything is prepaid and priced per operation. There is no plan, no seat and no minimum spend: you fund a balance, each operation takes its price out of it, and the balance never goes below zero. An operation whose quoted price the balance cannot cover is refused before any work starts rather than billed afterwards.
How a charge happens
- Every operation creates a Run, and a Run is charged once — when the work happens. Reading it back later is free forever.
- A failed Run costs nothing. A partial Run charges for the items that arrived and nothing else. If the balance runs short while a multi-item Run is working, the completed items are charged in order up to the balance, the rest fail with
insufficient_balance, and the Run endspartial. - Almost every paid operation takes
estimate, which answers with what the call would cost and creates no Run. The exceptions arePOST /v1/trackersandPOST /v1/trackers/{id}/refresh: they take noestimateand charge when called, so read the price on their reference entry first. See pricing and estimates.
Cached results
A result is cached when we already hold a snapshot of the subject younger than 24 hours, so the answer can be served without paying a vendor for it. Those calls cost 25% of the fresh price. Nothing about the response changes; the Run tells you whether it was cached and what you were charged.
The discount applies per piece of work rather than per call. A comments page with analyze=true is discounted on the page and on the analysis separately, each on its own cache clock, because those are separate pieces of work. Searches, scores and Tracker cycles are always a fresh fetch, so the discount never applies to them.
Starting out
A new account gets $5 of credit automatically, which expires after 90 days. After that you top up by card from $10 at a time. The balance never expires and is never charged for work that did not happen.
The price list
Grouped the way the API reference is grouped. Prices are per call unless the row says per page.
Research
| Operation | Fresh | Cached |
|---|---|---|
POST /v1/researchResearch a niche
| $0.50 | Always fresh |
POST /v1/research/{id}/refreshRefresh a research's videos
| $0.002 per video | Always fresh |
Videos
| Operation | Fresh | Cached |
|---|---|---|
POST /v1/videos/searchSearch videos
| $0.01 per page | Always fresh |
POST /v1/videos/lookupLook up a video by URL | $0.005 | $0.00125 |
GET /v1/videos/{platform}/{id}Get a video
| $0.005 | $0.00125 |
POST /v1/videos/{platform}/{id}/intelligenceAnalyse a video
| $0.02 | $0.005 |
POST /v1/videos/{platform}/{id}/scoreScore a video | $0.05 | Always fresh |
GET /v1/videos/{platform}/{id}/commentsGet video comments
| $0.01 per page | $0.0025 |
Creators
| Operation | Fresh | Cached |
|---|---|---|
GET /v1/creators/{platform}/{handle}Get a creator | $0.02 | $0.005 |
Hashtags
| Operation | Fresh | Cached |
|---|---|---|
GET /v1/hashtags/{platform}/{tag}Get a hashtag | $0.02 | $0.005 |
GET /v1/hashtags/{platform}/{tag}/videosList a hashtag's videos | $0.02 per page | Always fresh |
Sounds
| Operation | Fresh | Cached |
|---|---|---|
GET /v1/sounds/{platform}/{id}Get a sound | $0.02 | $0.005 |
GET /v1/sounds/{platform}/{id}/videosList a sound's videos | $0.02 per page | Always fresh |
Ads
| Operation | Fresh | Cached |
|---|---|---|
POST /v1/ads/searchSearch ad libraries | $0.02 per page | Always fresh |
Trackers
| Operation | Fresh | Cached |
|---|---|---|
POST /v1/trackersStart tracking a target
| $0.05 for the first cycle, run on create | Always fresh |
POST /v1/trackers/{id}/refreshRun a tracker cycle now
| $0.05 per creator cycle | Always fresh |
The same prices over MCP
The hosted MCP server bills identically — the tools are the same operations under different names. Free tools are omitted here; see the MCP guide for the full list.
| Tool | Price |
|---|---|
research | $0.50 for up to 50 enriched videos, then $0.01 each, at most $2.00 |
search_videos | $0.01 per page; +$0.02 per enriched video with intelligence=true (top 20) |
get_video | $0.005 plain ($0.00125 cached); with include=intelligence $0.02 ($0.005 cached) instead; transcript only $0.005 instead |
score_video | $0.05 |
get_creator | $0.02 |
get_hashtag_or_sound | $0.02 |
search_ads | $0.02 per page |
track | $0.05 per cycle, including the first one run on create; +$0.02 per new video with intelligence |
What costs nothing
Reading is free. Once you have paid for a piece of work you can read it as often as you like — polling a running operation, fetching a finished result, walking the snapshots a Tracker has accumulated, listing change reports, checking your balance and reading your spend log all cost nothing and create no Run.
GET /v1/research/{id}— Get a researchGET /v1/research/{id}/videos— List a research's videosGET /v1/research/{id}/creators— List a research's creatorsGET /v1/research/{id}/hashtags— List a research's hashtagsGET /v1/research/{id}/sounds— List a research's soundsGET /v1/research/{id}/digest— Read a research's digestGET /v1/creators/{platform}/{handle}/videos— List a creator's videosGET /v1/creators/{platform}/{handle}/snapshots— List a creator's snapshotsGET /v1/trackers— List trackersGET /v1/trackers/{id}— Get a trackerPATCH /v1/trackers/{id}— Pause or resume a trackerDELETE /v1/trackers/{id}— Stop trackingGET /v1/trackers/{id}/snapshots— List a tracker's snapshotsGET /v1/trackers/{id}/changes— List change reportsGET /v1/runs— List runsGET /v1/runs/{id}— Get a runGET /v1/runs/{id}/items— List run itemsGET /v1/account/balance— Get balanceGET /v1/account/usage— Get usagePOST /v1/webhooks— Register a webhook endpointGET /v1/webhooks— List webhook endpointsGET /v1/webhooks/{id}— Get a webhook endpointDELETE /v1/webhooks/{id}— Delete a webhook endpointPOST /v1/webhooks/{id}/rotate— Rotate a signing secretGET /v1/webhooks/{id}/deliveries— List deliveriesPOST /v1/webhooks/{id}/deliveries/{deliveryId}/replay— Replay a delivery
Free operations still count against the per-key request limit, so a polling loop should still be a sensible one.
Worked examples
Three shapes of spend, with the arithmetic shown. Every unit price below is the same constant the API charges from.
One Research run
You ask for a Research and it enriches 80 videos. 20 of them were analysed for someone else already, so only 60 need a fresh pass.
| What is charged | How many | Unit price | Subtotal |
|---|---|---|---|
| Research, flat fee, covering up to 50 freshly enriched videos | 1 | $0.50 | $0.50 |
| Freshly enriched videos past the allowance | 10 | $0.01 | $0.10 |
| Videos whose analysis was already stored | 20 | Free | Free |
| Total | $0.60 | ||
One creator Tracker for a month
You track one creator with analysis switched on. It runs a cycle a day for 30 days and the creator posts 12 videos in that time.
| What is charged | How many | Unit price | Subtotal |
|---|---|---|---|
| Daily cycle on a creator Tracker | 30 | $0.05 | $1.50 |
| New videos analysed | 12 | $0.02 | $0.24 |
| Total | $1.74 | ||
100 video lookups
You look up 100 videos. 40 of them already have a snapshot younger than 24 hours, so they cost 25% of the fresh price.
| What is charged | How many | Unit price | Subtotal |
|---|---|---|---|
| Lookups that needed a fetch | 60 | $0.005 | $0.30 |
| Lookups answered from a recent snapshot | 40 | $0.00125 | $0.05 |
| Total | $0.35 | ||
Apart from the Tracker, none of these needs a commitment to find out: send estimate=true with the same parameters and you get the price back without a Run and without a charge. A Tracker takes no estimate over REST; the arithmetic above is its quote.