For Claude Code and Cursor
Claude can read the web. It can’t see what’s working on short-form video.
Give your assistant TikTok, Reels and Shorts: the hooks that work, the outlier videos, and what changed since yesterday.
Run in a terminal
claude mcp add --transport http shortsintel \
https://www.shortsintel.com/api/mcp \
--header "Authorization: Bearer YOUR_KEY"YOUR_KEY. Claude.ai connects as a custom connector over OAuth, no key. VS Code is in the MCP guide.Public data from the platforms short-form lives on
- TikTok
- Instagram Reels
- YouTube Shorts
- Meta Ad Library
Ask in plain words. Get the Digest back.
What's working in home workouts on TikTok and Reels this month?
Home-workout content this month is dominated by 30-day follow-along challenges. Talking-head intros under 3 s with a countdown overlay outperform b-roll intros 3:1 on median views.
Hooks that worked, verbatim
- “POV: it's day 3 and you almost skipped.”
- “The only 3 stretches you need after a desk day”
Themes, by share of videos
- 30-day challenge42%
- desk-worker mobility21%
- wall pilates17%
Sentiment
- Positive
- 78%
- Neutral
- 19%
- Negative
- 3%
Recommended angles
- 1Day-N framing with a visible counter
- 2Name the pain (desk, back) in the first line
- 3Under 30 s, single location
What you can ask
Your assistant picks from 19 tools. You ask the question.
A niche
“What is working in my niche right now?”
researchget_researchsearch_videos
A video or a creator
“Is this creator's last video an outlier?”
get_videoget_commentsscore_videoget_creatorget_hashtag_or_sound
Change over time
“Watch my competitors and tell me when something moves.”
tracklist_trackersmanage_trackerget_changeslist_collectionsmanage_collection
Ads
“What ads is this brand running?”
search_adsget_ad
Your account
“What have I spent this week?”
get_runget_usageget_balance
Every question is a Run.
A Run is one piece of work: a search, a video analysed, a Research, a day of tracking. It is the only thing charged, once, when it finishes.
Ask the price first
Pass estimate: true and a paid tool returns its cost, and whether the answer is stored, without charging anything.
Pay for delivered work
A failed Run charges nothing. A partial Run charges only for what completed. A stored answer costs the same as a fresh one.
Read it again for free
A finished Run stays readable forever at no cost, so a follow-up about yesterday's research does not pay twice.
It says what it does not know
Instagram search is best-effort, so results say coverage: "partial" rather than quietly returning less.
Pricing
Prepaid, per Run. No subscription.
Top up a Balance in Credits and each Run draws from it. New accounts get 1,000 credits, valid for 90 days. Top-ups buy 1,000 credits per US dollar and start at $10.
- Research a niche
1,036 credits
once
One intent in, a Digest out: themes, hooks, sentiment and angles from the top videos on three platforms.
- Track 10 creators daily
~1,800 credits
a month
A cycle a day per creator, and a Change Report only on the days something moved. Analysis of new videos is off by default; turn it on and each new video a cycle finds adds 20 credits.
- Analyse 20 videos
460 credits
once
Hook, call to action, format, on-screen text and brand safety for each, read from the video itself.
Every tool, every price
Open a tool to read the description your assistant reads, word for word.
A niche
Research a niche
research1,036 credits for up to 50 enriched videos, then 20 credits each, at most 4,036 creditsRun a Research: searches TikTok, Instagram Reels and YouTube Shorts (plus Facebook when platforms names it) for an intent, de-duplicates, analyses the top videos, ranks them and returns a Digest (themes, hooks that work, sentiment, recommended angles) plus the ranked videos, outlier creators, hashtags and sounds. Costs 1,036 credits for up to 50 enriched videos, then 20 credits each (at most 4,036 credits). Takes 2 to 10 minutes: this tool waits up to 60 s, then returns a run id to poll with get_run.
Read a research
get_researchFreeRead a research you have already run, for free, as many times as you like. Give it the run id a previous research returned and an aspect: digest for the synthesis, videos for the shortlist, creators, hashtags or sounds for the evidence behind it. Filters depend on the aspect: every list takes platforms, order_by, sort, limit and offset; videos also take view bounds, dates, creator, hashtag and sound, for example TikTok only, over 100k views, best outlier first; creators also take follower bounds; digest takes only as_of. A filter the aspect does not take is refused, not ignored. This does NOT run a research and costs nothing: use research (which charges 1,036 credits and takes minutes) to collect a new one, and this to ask a narrower question of one you already have. Numbers are frozen as the research saw them; pass as_of=latest for the newest this API holds.
Search videos
search_videos3 credits per platform searched, per page; +20 credits per enriched video with intelligence=true (top 20)Keyword search across platforms. Returns up to 30 normalised videos per page with stats. Cheap (3 credits per platform searched, per page; 9 credits for all three). Add intelligence=true to analyse the top 20 (+20 credits each, async); a search that finds no videos still completes and is charged the page fee. A video over 10 minutes is not analysed or charged: its item fails with video_too_long. Instagram results are best-effort (coverage: partial). Facebook is opt-in: name it in platforms (best-effort, coverage: partial, views only where Facebook shows them, no other counts), and intelligence=true analyses its videos like the others.
A video or a creator
Get a video
get_video3 credits plain; with include=intelligence 23 credits instead; transcript only 10 credits instead; include=download 3 credits alone, else +3 creditsLook up one video by URL or by platform + id, on TikTok, Instagram (a post, Reel or carousel, by shortcode or /p/, /reel/ URL), YouTube (a Short or long-form video by 11-character id or watch, shorts or youtu.be URL) or Facebook (a video or reel, by numeric id or a /reel/, /watch?v= or /{page}/videos/ URL). Returns metadata, stats, the latest Snapshot and Scores when history exists (3 credits, any platform). include: ['intelligence'] adds the full analysis object (hook, CTA, tone, visual, safety) and is charged 23 credits instead of the lookup price, not on top of it. include: ['transcript'] alone adds the transcript for a flat 10 credits, also instead of the lookup price. include works on every platform (YouTube long-form too); a post that is gone, private or restricted fails with media_unavailable, uncharged. include: ['download'] adds download_url, a link to the video file that works until download_expires_at (7 days after our copy was made, at least a day away), for 3 credits: alone it is the whole price, with intelligence or transcript it is added to theirs; ask again for a fresh link, same price. A video over 10 minutes is refused for analysis and download with video_too_long, before any charge when its length is known, else uncharged. Each call is charged one price, the same whether the answer is stored or fresh. A video's comments are not read here: use get_comments.
Get a video's comments
get_comments3 credits per page; +10 credits with analyzeRead a page of a video's comments (by URL or platform + id) on TikTok, Instagram, YouTube or Facebook: text, likes, replies, parent id and posted and fetched times, never the author. limit sets the page size (1-100, default 25); next_cursor comes back: pass it as cursor for the next page. 3 credits per page. analyze=true adds a sentiment distribution and themes over the video's comments (+10 credits). Each call is charged the same whether the answer is stored or fresh.
Score a video
score_video9 creditsJudge a video (by URL or platform + id) against its creator's baseline: outlier multiple (views vs the creator's median), velocity (views per hour since posting) and percentile. Fetches the creator's recent videos if no baseline exists (9 credits).
Get a creator
get_creator6 credits; videos pages 3 credits; with intelligence=true the page is free, +20 credits per analysed video (top 20)Creator profile with follower stats, baseline metrics (median views, engagement rate, posting cadence) and Scores, on TikTok, Instagram, YouTube or Facebook (a Page, linked to its Meta Advertiser when known); pass include: ['videos'] to add recent videos (6 credits). On Instagram and Facebook, videos_from picks the Reels (default) or all posts including carousels, and next_cursor comes back: pass it as cursor for the next page (3 credits). On YouTube the handle may be a channel id (UC…), the videos are the channel's Shorts, paged the same way. intelligence: true analyses the creator's stored videos instead, on every Platform, like search_videos with intelligence: up to 20 per page at +20 credits each, async, the page itself free; a video that cannot be analysed (including video_too_long past 10 minutes) comes back with intelligence: null and why, uncharged.
Get a hashtag or sound
get_hashtag_or_soundhashtag 3 credits, sound 6 creditsLook up a hashtag or a sound (TikTok music / Instagram audio): totals, trend direction, top videos and the latest Snapshot (hashtag 3 credits, sound 6 credits). videos: true pages its Videos instead, in the platform's order and always fresh, at the same price per page with no lookup on top; pass next_cursor back as cursor for the next page.
Change over time
Track a target
track6 credits per creator cycle, 30 credits per advertiser cycle, including the first one run on create; +20 credits per new video or Ad with intelligence; tracking a target you already track is freeCreate a daily Tracker on a creator or a Meta Advertiser (video, hashtag and sound return unsupported_kind, and nothing is charged). Creator: only TikTok creators today (other platforms return unsupported_platform); target is the handle; 6 credits a cycle; a Change Report only when something notable happens (new videos, outliers, followers +/-10%, velocity spikes). Advertiser (kind=advertiser, no platform): target is the Facebook Page id or Page URL (a name works when only one Advertiser carries it, else advertiser_ambiguous with candidates, free); 30 credits a cycle, which reads all the Advertiser's Ads (running and stopped) and reports new Ads, stopped Ads, Ads whose variant count grew, and new countries or placements. Creating runs the first cycle immediately and charges it; with too little balance nothing is created and you get insufficient_balance. You only ever have one Tracker per target: tracking something you already track returns that Tracker with created=false and charges nothing. Pass refresh=true with an existing tracker_id to run a cycle now, at the same price. Pass collection (an id or a name like 'Competitors') to also put the Tracker in that Collection; a name you have not used yet creates it. estimate=true quotes the base cycle price only: the +20 credits per new video or Ad with intelligence depends on what the cycle finds. idempotency_key applies to refresh only; create is already idempotent by target.
List trackers
list_trackersFreeList this Customer's Trackers with state, kind and next cycle time. Free.
Manage a tracker
manage_trackerFreeLook up, pause, resume, switch analysis on or off for, or delete one Tracker, without going through a Collection. Refer to it by tracker_id, or by platform and target (the handle as you would pass it to track, e.g. tiktok and '@nike'; pass kind when the same target is tracked as more than one kind, and platform meta with a Page id for an Advertiser). action is get, pause, resume, intelligence (with intelligence true or false, analysis of new videos or Ads from the next cycle) or delete. A paused Tracker runs no cycles and is charged nothing; delete is final and keeps its Change Reports readable with get_changes. A target you do not track is not_found: this tool never starts a Tracker (use track for that). Free.
Get change reports
get_changesFreeChange Reports for a Tracker, or for a whole Collection (by id or name, e.g. 'Competitors'), merged newest first: new videos, outliers, follower moves and velocity spikes with before/after numbers. Pass since to see only what changed after a time. Free.
List collections
list_collectionsFreeList this Customer's Collections: named sets of Trackers such as 'Competitors', 'Our accounts' or 'Influencers', each holding one kind (creator, video, hashtag or sound), with how many Trackers are in each. Free.
Manage a collection
manage_collectionFree, except add on a target not tracked yet (its first cycle) and refresh (one cycle per member): 6 credits per creator, 30 credits per advertiser, +20 credits per new video with analysisCreate, rename or delete a Collection, add or remove a member, or pause, resume, refresh or switch analysis for every member at once. Refer to a Collection by id or by name. A Collection is only a named set of Trackers: pausing, analysis and cycles belong to each Tracker, and one Tracker can sit in several Collections while being charged once per cycle. add takes a tracker_id, or a platform and target: a target you already track is attached as it is (a paused Tracker stays paused), and one you do not track yet starts a Tracker whose first cycle runs now (6 credits for a TikTok creator, 30 credits for a Meta Advertiser by Page id, Page URL or name; only those can be tracked today). add to a name you have not used yet creates that Collection, with the Tracker's kind (pass kind when adding by target), once the Tracker exists. A Tracker of a different kind than the Collection is refused. remove never touches the Tracker. delete leaves the Trackers running unless delete_trackers=true, which deletes those in no other Collection; the answer always lists the Trackers still being charged. pause, resume and intelligence (with intelligence true or false, switching analysis of new videos) write through to every member Tracker and are free. refresh runs every member's cycle now as one Run, charged per member refreshed; pass estimate to get the price first. A Tracker in several Collections is changed for all of them, so pausing one Collection pauses shared members in the others: every bulk answer lists those in trackers_in_other_collections. Everything except adding an untracked target and refresh is free.
Ads
Search ad libraries
search_adsMeta 1 credit per Ad delivered, +20 credits per Ad analysed (computed or stored); TikTok 3 credits per pageSearch the Meta or TikTok ad library by keyword or advertiser (exactly one). Meta: 1 credit per Ad delivered; filters country (omit for all countries), status (active default, inactive, all), kind (commercial default, political, issue, all), media_type, placements, started_after, started_before; limit up to 500 (default 50), next_cursor for more; order_by relevance (default), winner, days_running or start_date sorts the page. Each Meta Ad comes back trimmed (copy, CTA, landing URL, media URLs, dates, placements, countries, variant count, days running, a 0-100 winner Score from days running and variants added relative to the Advertiser's other Ads, disclosed spend and reach) and is stored with a Snapshot. A library outage is source_unavailable and costs nothing; one part-way through is a partial run charged only for the Ads delivered. Meta analyze=true adds analysis to the first 50 Ads (video Ads: transcript, hook, CTA, format, safety; image and carousel Ads: copy angle, offer, CTA, visual format, topics, sentiment) at +20 credits per Ad, whether computed or already stored; an Ad whose analysis fails is not charged and the run is partial. TikTok: 3 credits per page of up to 30, global, no country or Meta filters, no analyze.
Get a Meta Ad
get_adAd 3 credits, +20 credits with analyze; Advertiser 15 creditsLook up one Meta Ad by its Ad Library id (library_id), or one Advertiser by its Facebook Page id (page_id); pass exactly one. Ad mode: copy, CTA, landing URL, media URLs, dates, running state, placements, countries, variant count, days running, disclosed spend and reach (3 credits, the same when served from our copy observed in the last 6 hours). An Ad Meta has removed is still returned from our stored copy with removed_from_library: true at 3 credits; an id never seen is not_found and costs nothing. analyze=true adds Ad analysis (+20 credits, computed or already stored). Snapshot history and stored analysis are free over REST at /v1/ads/meta/{library_id}/snapshots and /intelligence. Advertiser mode: the Advertiser's profile (name, Page URL, linked Instagram account and Creator when Meta shows one, running and total Ad counts) after reading all its Ads, at 15 credits (the same when served within 6 hours of the last complete read); its Ads are search_ads with advertiser=page_id.
Your account
Get a run
get_runFreePoll a Run by id. Returns status and, once completed or partial, the full result. Free, and never re-runs the work. Poll every 5 to 15 s for research, 2 to 5 s for enrichment.
Get usage
get_usageFreeRecent charges, one per charged Run, with the Run behind each one: kind, status, charge and list price in Credits, and when, plus the total charged. Use it to see what has already been paid for before repeating work. Free.
Get balance
get_balanceFreePrepaid balance in Credits, plus each Grant (such as the Starter Grant) with the Credits it has left and when they expire. Grants are spent first. Free.
The same prices apply over REST. Every parameter that changes a price is in the API reference; balance and top-ups are on Pricing.
What we hold, and what you may do with it
ShortsIntel processes public short-form video data (posts, captions, public metrics, public profiles) under legitimate interest. Media files are deleted after analysis, and a copy made for a download after 7 days. Raw comments are purged after 90 days; the sentiment drawn from them is kept and never carries usernames. Snapshots of public numbers are kept and shared across customers, which is why history is there from your first call.
Derived works are yours to sell: the analyses, reports, scores and dashboards you build on the output. Republishing bulk raw records, mirroring the data, or using it to target or profile individuals is prohibited. Read the terms and the privacy policy.
Give your assistant something to call.
1,000 credits to start, charged per Run after that.