Frameskim Apify Store

Instagram & TikTok Transcripts, Frames & Posts

Give your agent the words and frames of an Instagram or TikTok video

This TikTok transcript API returns the timestamped transcript and 3 frames of any public Instagram Reel or TikTok video for $0.02 per started minute. Send up to 100 public Instagram or TikTok video URLs per run, or the dataset your scraper already produced. Get each transcript with timestamps, the full text and 3 frames of what is on screen.

$0.02 per started minute. Failed and silent videos are not charged.

A vertical video above a timeline with three markers at 10%, 50% and 90%, each linked to the frame cut there, with transcript lines below.
Each video: a timestamped transcript and 3 frames, at 10%, 50% and 90%.
Example output (illustrative, values made up): one 48-second cooking video, lang "en" detected automatically

Frames, frames[].t

  • Frame 1, illustrative: The cook introduces the dishframe 1 4.8 s 10%
  • Frame 2, illustrative: Orange zest falls over the bowlframe 2 24.0 s 50%
  • Frame 3, illustrative: The finished saladframe 3 43.2 s 90%

Transcript, segments

  1. Hi! Today we're making a citrus kale salad.frame 1
  2. Massage the kale with a pinch of salt first.
  3. Now the orange zest, right over the bowl.frame 2
  4. Toss it once more and it's ready.frame 3

How it works

Send links or a dataset

Paste up to 100 public video URLs, or pick the dataset of an Instagram or TikTok scraper you already ran. Instagram and TikTok links can go in the same run.

Listen and look

Each video's speech is transcribed with timestamps and 3 frames are cut from it. The video file is deleted as soon as its item is done.

Get one item per video

Transcript, full text and frames together, ready for an LLM. A video that fails becomes an item that says why.

Input and output

Output, one item per video
{
  "url": "https://www.instagram.com/reel/C9...",
  "platform": "instagram",
  "durationSecs": 48,
  "lang": "en",
  "segments": [
    { "start": 0.0, "end": 3.6, "text": "..." }
  ],
  "text": "...",
  "frames": [
    { "t": 4.8,  "url": "https://api.apify.com/v2/key-value-stores/..." },
    { "t": 24.0, "url": "..." },
    { "t": 43.2, "url": "..." }
  ]
}

Values shortened. segments carry start and end in seconds; text is the whole transcript as one string; frames are cut at 10%, 50% and 90% of the video and stored in your run.

Input: video URLs
{
  "urls": [
    "https://www.instagram.com/reel/C9...",
    "https://www.tiktok.com/@creator/video/74..."
  ]
}

Single public videos only. Profiles, hashtags, searches and private accounts are refused before anything runs.

Input: your scraper's dataset
{
  "datasetId": "aBcD1234eFgH"
}

Reads the video URLs from a run of apify/instagram-reel-scraper, apify/instagram-scraper or clockworks/tiktok-scraper. You pick the dataset in the input form, and the actor can read only that one. You can also paste the items in datasetItems.

Where the 3 frames are cut

Near the start, the middle and the end, so your agent sees what the video shows, not only what it says. Each frame has its time t in seconds.

A video without speech
{
  "url": "https://www.instagram.com/reel/C9...",
  "segments": [],
  "text": "",
  "frames": [ ... ],
  "noSpeech": true
}

Values shortened: frames holds 3 frames, as in any other item. You still get them, and nothing is charged for it. A video that fails comes back as {"url", "error"} with the reason, also not charged.

Pricing

$0.02 per started minute

Each video rounds up on its own: 100 videos of 30 seconds cost $2.00.

Pay per event on Apify. No subscription. Each video is charged by its own length, rounded up to the next minute, and a run never costs more than the spending limit you set.

A 30-second Instagram video
$0.02
A 61-second TikTok video
$0.04
A 10-minute video
$0.20

Before you run

  • Single public videos, up to 100 per run, also when they come from a dataset. More than that is refused before anything runs, with nothing charged.
  • What fails is not charged: private, removed or blocked videos, and videos that take too long to process.
  • Videos without speech are not charged.
  • Frames live in your run's storage on Apify. The video itself is never delivered.

Use it by API or from Claude

API
curl -X POST \
  "https://api.apify.com/v2/acts/emttn~instagram-tiktok-transcript/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"urls": ["https://www.instagram.com/reel/C9..."]}'
MCP
{ "mcpServers": { "apify": {
  "url": "https://mcp.apify.com/?actors=emttn/instagram-tiktok-transcript"
} } }

Then ask: "Use Instagram & TikTok Transcripts, Frames & Posts on these videos. Summarize the spoken steps and say what each frame shows."

SRT and VTT subtitles from your scraper's dataset

Already ran an Instagram or TikTok scraper and want each video's words as subtitles? A separate actor, Instagram & TikTok Transcript (SRT, VTT), reads that dataset and returns every transcript as SRT and VTT. The actor on this page returns frames, not subtitle files. Pick by what you have and what you need.

This page

Instagram & TikTok Transcripts, Frames & Posts

Input
Up to 100 public video URLs per run, or your scraper's dataset.
Output
A timestamped transcript and 3 frames per video.
Use it when
You start from links, or your agent needs to see what the video shows.
Run it on Apify
Separate actor

Instagram & TikTok Transcript (SRT, VTT)

Input
Your scraper's dataset only, in datasetId or datasetItems, from the same TikTok and Instagram scrapers. No pasted links.
Output
A timestamped transcript with srt and vtt subtitles per video, no frames.
Use it when
You already scraped the videos and want subtitles to save, load into a player or edit.
srt
1
00:00:00,000 --> 00:00:03,600
Hi! Today we're making...

vtt
WEBVTT

00:00:00.000 --> 00:00:03.600
Hi! Today we're making...
Open it on Apify

Both charge per started minute of each delivered video. Failed and silent videos are not charged.

FAQ

Which links does it accept?

Public Instagram videos (instagram.com/reel/... or /p/...) and TikTok videos (tiktok.com/@user/video/...). Profiles, hashtags, searches and private accounts are not accepted.

Can I use the output of my Instagram or TikTok scraper?

Yes. Pass its datasetId, or paste the items in datasetItems. It copies only the video URL and ID into its output. Items that are not videos come back as an item that says so, and are not charged.

What about videos with only music?

You get the 3 frames, an empty transcript and noSpeech: true. Nothing is charged for that video.

Which languages does it support?

The language is detected automatically from the audio and returned in lang. Tested on English so far.

What if a run fails?

Each video that fails is an item with the reason and is not charged. If every video fails, the run ends with the reason and "Nothing was charged."

Can I get SRT or VTT subtitles?

Not from this actor. For subtitles from a scraper's dataset, use Instagram & TikTok Transcript (SRT, VTT): it returns each transcript with srt and vtt, without frames.

Try it on your first video.

Open the actor on Apify, paste public video URLs and run it on your account. $0.02 per started minute; failed and silent videos are not charged.