One command per API skill, generated from the same registry as the docs, so it never lags the API. JSON on stdout, credit metering on stderr, and --wait for jobs that take a while. Built for terminals, CI, and shell-native agents such as Claude Code.
npm install -g viral-outliers # Node 20 or newer, no other dependencies
# or run it without installing:
npx viral-outliers commandsSource and issues: github.com/Viral-Outliers/cli.
viral-outliers login --key so_live_YOUR_KEY # validates the key and stores it (0600) in your config dir
viral-outliers whoami # credit balanceThe key is resolved in this order: --key, the VIRAL_OUTLIERS_API_KEY environment variable, then the stored config. No key yet? Run any billable command anyway: the API answers 402 with a payment link that gives you a key without an account (how that works), or create one at Settings, API Keys.
viral-outliers search-outliers --query "home workout" --platforms tiktok --min-outlier-score 5
viral-outliers get-post <postId> --include-transcript=false
viral-outliers request-transcript --url https://www.tiktok.com/@creator/video/123 --wait
viral-outliers compare-profiles --handles tiktok:creator_a --handles instagram:creator_b
viral-outliers create-topup-link --pack-id pack_s # free: a Stripe link for the account owner
viral-outliers search-outliers --body '{"query":"stoic quotes","pageSize":50}' --compact --quiet--platforms tiktok,youtube.--body takes raw JSON and is merged over the flags, so any parameter the API accepts can be sent.--wait polls the free job endpoint until the job finishes, then fetches the result (a transcript fetch costs 1 credit).credits: charged=N balance=M to stderr (silence it with --quiet). 1 credit = $0.01.0 | Success |
1 | API or network error (server error, not found, invalid params, --wait timeout); the error body is printed to stderr as JSON |
2 | Payment required (HTTP 402): out of credits, or no API key was sent and the payment link that issues one is printed |
3 | Rate limited (HTTP 429); back off and retry |
4 | Invalid or revoked API key (HTTP 401); run viral-outliers login |
5 | Usage error (unknown command or flag, missing required parameter, invalid --body JSON) |
Flags marked * are required. Run viral-outliers help <command> for every flag with its description.
| Command | Cost | What it does |
|---|---|---|
search-outliers | 1 credit | Find statistically overperforming ("outlier") social media posts across TikTok, Instagram and YouTube with rich filters. details--query--platforms--handle--watchlist-id--content-types--min-outlier-score--max-outlier-score--min-views--max-views--min-followers--max-followers--min-engagement-rate--max-engagement-rate--time-frame--sort-by--page--page-size |
search-profiles | 1 credit | Find tracked creator profiles by name/handle across platforms, with follower and performance stats. details--query--platforms--page--page-size |
get-post <postId> | 1 credit | Full data for one post: stats, outlier scores across seven time windows, plus cached transcript and visual analysis when available. details--include-transcript--include-visual-analysis |
get-profile <profileId> | 1 credit | Follower counts, average performance baselines and recent posts for one tracked profile. details |
request-transcriptasync | 10 credits | Queue AI speech transcription for any tracked video post; poll the job, then fetch via get_post. details--url--post-id |
request-visual-analysisasync | 10 credits | Queue AI scene-by-scene visual analysis (on-screen text, shot breakdown, editing style) for any tracked post; poll the job, then fetch via get_post. details--url--post-id |
crawl-profileasync | 40 credits | Add any public TikTok, Instagram or YouTube profile to the tracked database on demand. details--platform*--handle* |
compare-profiles | 2 credits | Benchmark 2–5 tracked creators side by side: followers, average views/likes/engagement, and who wins each metric. details--profile-ids--handles |
niche-trends | 2 credits | The posts spiking in a niche right now, plus which formats and creators are driving it. details--query--platforms--time-frame--limit |
resolve-post-url | 1 credit | Turn a public TikTok/Instagram/YouTube post URL into the internal post id every other skill uses. details--url* |
download-post-mediaasync | 3 credits | Get direct media URLs (video or slideshow images) for a tracked post; fetched on demand when not stored. details--url--post-id |
remix-postasync | 20 credits | Turn any public viral post into a niche-adapted content idea: rewritten hook, script segments, a why-it-went-viral analysis and an execution checklist. details--url--post-id--target-niche*--tone |
get-job-status <jobRef> | free | Free polling endpoint for asynchronous jobs (crawls, transcriptions). details |
get-credit-balance | free | Free endpoint returning your current credit balance. details |
get-pricing | free | Free, unauthenticated, machine-readable price list: per-skill credit costs, credit packs and the USD-per-credit rate. details |
get-remix-result <jobRef> | free | Free: fetch the finished output of a remix_post job. details |
create-topup-link | free | Out of credits? Get a ready-to-pay Stripe link for a credit pack to hand to the account owner. Free. details--pack-id* |
report-issue | free | Hit a bug, wrong data, or a missing capability? Tell us. It is free, and you can ask to be notified when it is fixed. details--message*--skill--wants-update |
get-trending-outliers | free | Free, no-auth teaser: the current top trending outlier posts across platforms. details |
track-profile | free | Keep a TikTok, Instagram or YouTube profile fresh on a schedule (daily, every 3 days or weekly) and pull its new posts. details--profile-id--platform--handle--url--frequency |
untrack-profile | free | Stop the scheduled refresh crawls for a monitored profile. Free. details--profile-id* |
list-tracked-profiles | free | See every profile you are monitoring, its cadence, next refresh time and whether it is paused. Free. details |
create-watchlist | free | Create a named set of creators you can then search with a single watchlistId filter. Free. details--name*--notes |
list-watchlists | free | All your watchlists with their ids and profile counts, so an agent can pick one to search. Free. details |
get-watchlist <watchlistId> | free | One watchlist with its member creators (ids, handles, platforms, follower counts). Free. details |
add-watchlist-profiles | free | Add up to 25 tracked creators to a watchlist per call, by profile id or by platform+handle. Free; counts against your followed-profiles allowance. details--watchlist-id*--profile-ids--handles |
remove-watchlist-profiles | free | Remove creators from a watchlist by profile id. Free. details--watchlist-id*--profile-ids* |
delete-watchlist | free | Delete one of your watchlists and its memberships, freeing the allowance it used. Free. details--watchlist-id* |
get-tracked-updates | free | Pull the posts first seen since your last check across all monitored profiles, then advance the cursor. Free. details--limit |
Prefer MCP? The same skills are available as tools at https://viraloutliers.com/api/mcp; see the getting-started guide.