TikTok data, one call away.

Stats, captions, hook transcript, storyboard, and views/day velocity for any TikTok video, over a clean REST API. No official API, no logins, just public data enriched.

FollowingFor You
284K
1,902
40.1K

@livia.rae

is this my most-viewed video yet? 👀

original sound · livia.rae
TikTokInstagramYouTubeTikTokInstagramYouTubeTikTokInstagramYouTube

The fastest TikTok videos our engine is watching right now.

Not a mockup. These rows come from the same discovery engine the API serves, ranked by age-normalized views/day. The feed currently represents 16.6B views across 1199 breakouts with 104 heating signals and 590 sounds captured across 3 platforms.

Snapshot captured 12m ago.

A view count tells you what already won. It can’t tell you the hook that made people stay, how fast a video is accelerating right now, or whether its format still has runway. viralcli returns all of it: per video, tracked over time, as a dataset you can build on.

1
call → full record
stats · caption · transcript · velocity
hook
transcript
the opening seconds, as text
v/day
velocity
age-normalized, comparable
JSON
+ webhooks
REST API and breakout alerts
The record

The signal, not just the view count.

One call, the whole record

Paste a TikTok URL and get back the stats, caption, hook transcript, storyboard, and views/day velocity as a single structured object. Not five scrapes to stitch.

analyze → record.json
{
"platform":"tiktok",
"views":2_840_000,
"views_per_day":916_129,
"transcript":"you've been doing this wrong…",
"storyboard":"cdn/sb/7361.jpg",
"creator":"@livia.rae"
}
v/day

Age-normalized velocity

Views divided by age, so a 2-day breakout and a 2-month evergreen are finally comparable. The number that means “going viral now.”

Hook + storyboard

The opening line as text and the visual beats as one image, so you read why a video worked instead of guessing from a thumbnail.

Discovery with a heating verdict

Give a keyword, get the breakout TikTokvideos ranked by velocity, plus the format’s adoption curve and a one-word read: heating, steady, or saturating. Each breakout carries the sound riding it. From a single scrape, no polling.

Adoption curve · posts × median velocity HEATING
100
82
52
36
24
0–3d3–7d1–2w2–4w1–2mo

Freshest posts are outrunning older ones. The format still has runway.

Trajectory

Not a snapshot. The whole trajectory.

One scrape tells you where a video stands. Keep watching and you get the truth: how fast it’s accelerating, whether it’s peaking, and a history no one else has. viralcli tracks any video or keyword and pushes events over the same API your agents already call.

True velocity & acceleration
Tracked trajectory · views/day peaking

Breakout & peaking webhooks

Track a video or keyword and the watcher polls it on an adaptive cadence, fast while it accelerates, slow once cold, then pushes a signed webhook the moment velocity crosses your threshold or the video peaks. No dashboard to babysit.

A dataset that compounds

Every snapshot lands in a longitudinal store: hot for live reads, Parquet for history, and exportable. The view counts you capture today become time-series trend history no official API can backfill tomorrow.

Coverage

TikTok coverage, one schema.

The same call shape works on every platform we cover, so an agent written for one is already written for all of them.

Each call returns

7 fields
Views / likes / commentsCaptionHook transcriptSound + sound IDStoryboardViews/day velocityCreator

Sources

2
TikTok video URLTikTok keyword discovery
GET /v1/analyze?url=… same JSON on every source
The API

Analyze, discover, track.

One command, or one HTTP request, returns the whole record as JSON, then keeps watching it over time. Same shape on TikTok, Reels, and Shorts, so the code you write once runs everywhere.

  • Deterministic JSON schema
  • REST + CLI, Bearer key
  • Trajectory + breakout webhooks
viralcli.sh
# 1 · Analyze any short-form video — CLI or REST, same JSON
$ viralcli analyze "https://www.tiktok.com/@user/video/7361234567890123456"

{
  "platform": "tiktok",
  "views": 2840000,
  "age_days": 3.1,
  "views_per_day": 916129,                # age-normalized velocity
  "transcript": "you've been doing this wrong your whole life",
  "transcript_kind": "hook",              # the opening seconds, as text
  "storyboard": "https://cdn.viralcli.com/sb/tiktok_7361234.jpg",
  "creator": "@user"
}

# 2 · Discover breakouts for a keyword — heating or saturating?
$ curl -s -X POST https://api.viralcli.com/v1/discovery \
    -H "Authorization: Bearer $VIRALCLI_KEY" \
    -H "content-type: application/json" \
    -d '{"seed":"tiktok made me buy it"}'
# {"verdict":"HEATING","breakouts":[{…,"sound":"…"}],"adoption_histogram":[…]}

# 3 · Track it over time — true velocity, acceleration, peaking
$ viralcli track <url> --webhook https://you.dev/hooks
# POST on breakout:
# {"event":"breakout","true_vpd":124000,"accel":18000}
Field guide

What TikTok data API access actually gives you

TikTok has no public data API for this — the official endpoints are gated to advertisers and academic researchers. viralcli reads the same public data you'd see in a browser and returns it as clean JSON: every stat, the caption, the spoken hook, and a velocity number the raw page never shows.

Stats, caption, and the spoken hook

One request to the TikTok data API returns views, likes, comments, the creator, and the full caption — plus the hook transcript, the actual words from the opening of the video. That last part is the difference between scraping numbers and understanding why a TikTok worked.

Velocity the raw page hides

TikTok shows a lifetime view count and nothing about speed. viralcli stamps each video's age and computes views per day, so you can rank a feed of TikToks by how fast they're actually growing — the metric that separates a current breakout from an old hit coasting on its total.

Trending discovery, sounds, and format curves

Beyond single videos, the TikTok trending data endpoint takes a keyword and returns the breakouts plus an adoption histogram — how saturated the format is and whether it's still heating. Every breakout carries its sound (title, artist, and sound ID), so you can see which audio is doing the carrying. Wire breakout webhooks to get pinged the moment a TikTok's velocity crosses your line.

Pricing

Simple plans. Start without a card.

Free

$0no card

Paste a link, get the signal.

  • 25 video analyses / month
  • Hook transcript + storyboard + stats
  • Views/day velocity on every video
  • YouTube · track 3 videos
Start free

Starter

$29per month

For solo builders and side projects.

  • 800 analyses / month
  • YouTube + TikTok
  • Keyword discovery + format curves
  • Track 15 videos · 90-day history
  • Breakout webhooks
Choose Starter

Pro

$79per month

For tools and agents in production.

  • 2,500 analyses / month
  • All platforms — TikTok, Reels, Shorts
  • Track 50 videos · 1-year history
  • Trajectory: true velocity + acceleration
  • Breakout & peaking webhooks
Choose Pro

Scale

$199per month

Pipeline-grade volume + the dataset.

  • 6,000 analyses / month
  • Track 200 videos · unlimited history
  • Longitudinal Parquet exports
  • 600 req/min · bulk endpoints
  • Priority queue + dedicated workers
Choose Scale
FAQ

Questions, answered.

For any TikTok video URL: views, likes, comments, share count where available, creator handle, the full caption, a transcript of the spoken hook, a storyboard image of the visual beats, the video's age, and views/day velocity. For a keyword: a ranked list of breakout TikToks — each with the sound riding it (title, artist, sound ID) — plus an adoption histogram and a heating/saturating verdict on the format.

Put TikTok data in your pipeline.

Free to start, no card. Analyze, track, and export short-form video data: one key, clean JSON.