Spot viral TikToks before they peak.

Rank any TikTok feed by views/day velocity, read the hook that made each one blow up, and see whether a trend is still heating or already saturated, from a single scrape, no polling.

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 14.5B views across 1114 breakouts with 99 heating signals and 548 sounds captured across 3 platforms.

Snapshot captured 37m 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.

v/day
velocity
the breakout metric, age-normalized
before
the peak
rank by speed, not lifetime views
1
scrape
trajectory + curve, no polling
webhook
breakout alerts
fire when velocity crosses your line
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/day velocityBreakout rankHook transcriptSoundHeating/saturatingStoryboardStats

Sources

2
TikTok keyword discoveryTikTok video URL
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/viraltiktok_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

How to find viral TikToks before everyone else

By the time a TikTok shows up on a 'trending' list, the window has closed. Catching a breakout early means watching speed, not totals — and reading what made it work fast enough to ride it. That's exactly what viral TikTok data from viralcli is built for.

Velocity finds breakouts; totals find history

A lifetime view count rewards old videos. Age-normalized views/day rewards the ones accelerating right now. viralcli ranks a TikTok feed by velocity so a 3-day-old rocket sorts above a 6-month-old hit — the difference between catching a trend and documenting one.

Read the hook that made it blow up

Every breakout in the list comes with its hook transcript — the opening words — and a storyboard of the visual beats. Instead of guessing why a viral TikTok worked, you read it, and you can reuse the structure on your own video the same day.

Is the trend still worth chasing?

A single discovery scrape reconstructs the format's adoption curve and flags it heating, steady, or saturating. Heating means runway; saturating means you're late. Each breakout also names the sound carrying it, so you can ride the audio as well as the format. Add a breakout webhook and viralcli pings you the instant a TikTok's velocity crosses your threshold — no dashboards to watch.

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.

It ranks videos by age-normalized velocity — views divided by the video's age in days — instead of lifetime views, so fast-accelerating clips surface while they're still climbing. A single discovery scrape also reconstructs the format's adoption curve to tell you whether the trend is heating or already saturated, and breakout webhooks fire the moment a video crosses your velocity threshold.

Put TikTok data in your pipeline.

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