Find Viral TikTok, Instagram & YouTube Posts: MCP Tool for AI Agents

Search a continuously-crawled database of social media posts ranked by outlier score: how strongly a post overperforms the account's own baseline. Filter by platform, keyword, exact creator handle, content type, an outlier-score band (min/max), a view band (min/max), a follower band (min/max), an engagement-rate band (min/max) and time window; sort by outlier score, views, likes, engagement or recency. Returns post metadata, stats and thumbnails. Use this to find proven viral formats in any niche before creating content. Results may include deleted posts (deleted_at set) and posts from deactivated profiles (profile is_active=false), these are kept for their thumbnails and format ideas, with stats frozen at deletion; filter on deleted_at / is_active if you only want live content.

Search a continuously-crawled database of TikTok, Instagram and YouTube posts ranked by outlier score, a measure of how far a post overperforms the account's own baseline, not just how big its raw view count is. Filter by niche keyword, platform, content type, views, follower band, engagement rate and time window, then sort the winners to the top. Built for AI agents and content-research automations that need proven viral formats in any niche, not a random firehose of trending links.

1 credit ($0.01) per callRead-only

How agents use it

Connect the Viral Outliers MCP server once and the search_outliers tool becomes available to your agent alongside all other skills:

claude mcp add --transport http viral-outliers https://viraloutliers.com/api/mcp \
  --header "Authorization: Bearer so_live_YOUR_KEY"

In Claude.ai or ChatGPT, add a custom connector pointing at https://viraloutliers.com/api/mcp. Your agent then calls search_outliers on its own whenever the task needs it.

Parameters

NameTypeDescription
querystringKeyword search over captions/titles/handles.
platformsstring[]"tiktok" | "instagram" | "youtube".
handlestringExact creator handle (without @). Pins results to one account; takes precedence over the free-text query.
watchlistIdstringScope the search to the creators in one of your watchlists (id from list_watchlists / create_watchlist). Combine with any other filter.
contentTypesstring[]Platform content types (e.g. reel, short, slideshow).
minOutlierScorenumberOnly posts overperforming their account baseline by at least this factor.
maxOutlierScorenumberUpper bound on outlier score, e.g. exclude extreme one-off spikes.
minViewsnumberMinimum view count.
maxViewsnumberMaximum view count.
minFollowersnumberFloor on account size, e.g. exclude tiny/brand-new accounts.
maxFollowersnumberCap account size, find small accounts with huge posts.
minEngagementRatenumberMinimum engagement rate, as a fraction of views: (likes+comments)/views. So 0.04 means 4%.
maxEngagementRatenumberMaximum engagement rate, same fraction scale (0.04 = 4%).
timeFramestring"one_week" | "one_month" | … | "all_time".
sortBystringSort key: outlier/views/likes/date/engagement, each _desc or _asc (default outlier_desc).
pagenumberPage number, 1-based.
pageSizenumberResults per page, clamped to 1–100.

What it returns

Each result is a post record with its full stats: view, like and comment counts, engagement rate (returned as a fraction of views, so 0.04 means 4%), content type (reel, short, slideshow, video), a thumbnail, the owning profile, and the outlier score that ranked it. Because the ranking is relative to each account's own average, a 500k-view post from a creator who normally gets 5k floats to the top while a 500k-view post from a mega-account that always does millions does not. You see repeatable formats, not just big accounts.

Results are paginated (up to 100 per page) and can include deleted posts (deleted_at set) and posts from deactivated profiles (is_active=false), which are retained for their thumbnails and format ideas with stats frozen at the moment they vanished. Filter on deleted_at / is_active when you only want live content. Each call costs 1 credit (1 credit = $0.01).

How it works

The database is populated by continuously re-crawling tracked profiles and by on-demand crawls (crawl_profile), so the corpus is real creator content, already parsed into structured stats, not a live scrape you have to wait on. The outlier score for every post is computed against that account's rolling average across seven time windows, which is what lets minOutlierScore surface format-driven wins.

You compose a query from the filter parameters: a niche term over captions, titles and handles, or an exact handle to pin one creator; one or more platforms; a content-type list; a view band (minViews / maxViews); a follower band (minFollowers floors out tiny accounts, maxFollowers caps account size to find small-account wins); an outlier-score band (minOutlierScore / maxOutlierScore); an engagement-rate band (minEngagementRate / maxEngagementRate); and a time window from one week to all time. Then choose a sortBy (outlier score, views, likes, engagement or recency). The response is immediate; there is no job to poll. From a result you can go deeper with get_post, pull the media with download_post_media, transcribe it with request_transcript, or adapt it with remix_post.

Filtering by watchlist

A watchlist is a named set of creators you curate (competitors, clients, a niche shortlist). Pass its id as watchlistId and the search runs only over those accounts, with every other filter still available: "my 30 competitors, last month, outlier score above 3, sorted by views" is one call. Watchlists you build in the web app and watchlists an agent builds through the API are the same objects, so either side can use them.

The workflow is: create_watchlist (free) to get an id, add_watchlist_profiles (free, up to 25 profiles per call by id or by platform+handle) to fill it, then search_outliers with watchlistId whenever you want that set. Use list_watchlists to recall ids, get_watchlist to see the members, and remove_watchlist_profiles to prune. Because the filter is applied server-side, a watchlist search costs the same 1 credit as any other search, regardless of how many creators are in it.

Watchlists and followed profiles count against a workspace allowance rather than credits. It comes from a subscription (5 watchlists / 50 followed profiles on Basic, 15 / 150 on Pro, unlimited on Agency) or is earned from API usage: spend the equivalent of a plan's monthly price in credits within any 30-day window and you get that plan's watchlist limits, whichever is higher. Every API key holder starts with 1 watchlist and 10 followed profiles, so you can try the workflow before spending. Over-limit calls tell you exactly what unlocks more.

Common use cases

Content-research agents run a niche search on a schedule, take the top outliers, transcribe them and turn them into briefs or scripts. Competitor-watch automations filter to a specific set of handles and alert when a tracked account lands a fresh outlier. Format-mining workflows set maxFollowers low (e.g. under 10k) with a minimum outlier score to find small-account formats that travel before they saturate.

Because every result is already tied to a rich analytics record, the same search that finds a viral post also gives you everything needed to act on it, with no second system to join views to formats to transcripts.

vs. building your own viral-post scraper

Rolling your own version means running proxies against three platforms, parsing their ever-changing HTML and private APIs, storing history long enough to compute a per-account baseline, and defining "viral" in a way that is not just raw views. That is months of infrastructure that breaks every time a platform ships a change.

This endpoint hands you the finished signal: a normalized, cross-platform post record with an outlier score already computed, filterable in one authenticated call at a flat, predictable credit price. Compared with generic scraper marketplaces that return raw post dumps, the difference is the ranking: you get the posts that actually overperformed, not a page you still have to analyze yourself.

Pricing

1 credit ($0.01) per call in prepaid credits (1 credit = $0.01). For example, 100 calls per dollar. Subscriptions include monthly credits; top-up packs start at $15. Failed asynchronous jobs are refunded automatically, and calls stop at a zero balance, never a surprise bill. See the full pricing table.

Agent workflows

  • Content research agent: search outliers in a niche weekly → transcribe the top 10 → generate content briefs.
  • Competitor watch: create_watchlist → add_watchlist_profiles (your competitor set) → search_outliers with watchlistId on a schedule → alert when one of them lands a new outlier.
  • Format mining: maxFollowers=10000 + minOutlierScore → find small-account formats that travel.

Frequently asked questions

What is a viral outlier post?

An outlier is a post that massively overperforms the account's own average, e.g. a channel that normally gets 5k views suddenly getting 500k. Outlier score measures that multiple, which surfaces repeatable formats instead of posts that are big only because the account is big.

How can an AI agent find viral TikTok or Instagram content ideas?

Call the search_outliers skill with a niche keyword and a minimum outlier score. The response contains proven overperforming posts with stats and thumbnails, which the agent can analyze, transcribe, and turn into content briefs automatically.

Can I filter viral posts by follower count?

Yes, maxFollowers is the classic trick: posts with millions of views from accounts under 10k followers are format-driven wins, not audience-driven ones, and are the most reproducible.

How fresh is the data?

Tracked profiles are re-crawled continuously and new profiles can be added on demand with the crawl_profile skill; time-window filters (one week to all time) let you target current trends or evergreen formats.

Why rank by outlier score instead of raw views?

Raw views mostly measure how big an account already is: a mega-creator's worst post still out-views a small creator's best. Outlier score normalizes each post against its own account's baseline, so what rises to the top is the format that overperformed, which is the part you can actually reproduce for a different audience.