Video Frame Extractor: Keyframes + On-Screen Text for AI
Pricing
$2.00 / 1,000 frames
Video Frame Extractor: Keyframes + On-Screen Text for AI
Extract keyframes from Instagram, TikTok, Facebook or any video link: scene changes, every N seconds or N evenly spaced, each with timestamp and the text on it, plus a free contact sheet. Image links ready for vision AI. $2 per 1,000 frames.
Pricing
$2.00 / 1,000 frames
Rating
0.0
(0)
Developer
FraserLabs
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Paste video links, get back the key frames as image links, each with its timestamp and the text visible on it, plus a contact sheet of the whole video. Ready for GPT-4o, Claude, Gemini or any vision pipeline.
$2 per 1,000 frames ($0.002 per frame). The contact sheet is free. Works with Instagram Reels, TikTok and Facebook links as well as direct video files. No login, no cookies.
What you can use it for
- Feed video to vision models. Send 10-20 keyframes instead of a whole video: cheaper, faster and within context limits.
- Ad and content research. See every scene of a competitor's Reel or TikTok at a glance, with the on-screen text already extracted.
- Thumbnails and storyboards. Pick cover images, build storyboards, or check how a video is cut.
- Dataset building. Collect labelled frames (timestamp + visible text) from many videos.
Why this Actor
| This Actor | Typical frame extractor | |
|---|---|---|
| Instagram, TikTok and Facebook links | Yes, paste the post link | Direct file links only |
| Scene-change keyframes | Yes (adaptive: few frames for a talking head, more for fast edits) | Yes |
| Every N seconds / N evenly spaced | Yes | Yes |
| Text visible on each frame | Yes (on_screen_text) | No |
| Contact sheet with timestamps | Yes, free | Sometimes |
| Price | $2 / 1,000 frames | $2-6 / 1,000 frames, some add a per-run fee |
Sample output
From a public National Geographic TikTok (scene mode, 32 s, shortened):
{"url": "https://www.tiktok.com/@natgeo/video/7695025994326969614","platform": "tiktok","duration_s": 32.28,"mode": "scenes","frame_count": 15,"frames": [{ "index": 1, "time_s": 2.5, "width": 576, "height": 1024,"on_screen_text": "QUEENS Grandmother orcas use decades of experience to feed their families.","url": "https://api.apify.com/v2/key-value-stores/<run-store>/records/frame-7695025994326969614-001.jpg" },{ "index": 3, "time_s": 5.0, "width": 576, "height": 1024,"on_screen_text": "QUEEN Orcas are among the very few animals known to experience menopaus","url": "https://api.apify.com/v2/key-value-stores/<run-store>/records/frame-7695025994326969614-003.jpg" }],"contact_sheet_url": "https://api.apify.com/v2/key-value-stores/<run-store>/records/sheet-7695025994326969614.jpg","status": "ok"}
Image links open without an Apify token, so you can pass them straight to a vision model. They stay available as long as the run's storage is kept (see your Apify data retention).
Output fields
| Field | Meaning |
|---|---|
frames[].url | JPEG link of the frame. |
frames[].time_s | Position in the video, seconds. |
frames[].on_screen_text | Text visible on the frame (titles, captions, slides). Empty when there is none or the option is off. |
frames[].width, height | Frame size in pixels. |
frame_count | Number of frames extracted (and charged). |
contact_sheet_url | One grid image with every frame and its timestamp (free). |
platform, id, creator, title, duration_s | Source metadata when available. |
status | ok, or error with an error message. Failed videos are not charged. |
How to use it
- Paste one or more public video links into Video URLs: Instagram Reels, TikTok videos, Facebook Reels/videos, direct files (
.mp4,.mov,.webm...) or pages with an embedded video. - Choose Which frames: scene changes (default), every N seconds, or N evenly spaced frames. Set Max frames per video (default 20).
- Click Start, then use the image links from the results, or download everything as JSON, CSV or Excel.
Input example:
{"urls": ["https://www.tiktok.com/@natgeo/video/7695025994326969614"],"mode": "scenes","maxFrames": 20,"includeOnScreenText": true}
A typical short video takes 3 to 15 seconds. Videos are processed one after another within a run.
Pricing
- $0.002 per extracted frame ($2 per 1,000). A 30-second Reel in scene mode typically gives 6 to 18 frames ($0.012-0.036).
- Max frames per video caps the cost of every video. The contact sheet is free.
- Videos that fail (private, deleted, login-only, unavailable) are not charged. Videos longer than 60 minutes are skipped and not charged.
- Set Maximum cost per run in the run options to cap your spend.
Settings
| Setting | Default | What it does |
|---|---|---|
| Video URLs | (required) | Public video links, one per line. |
| Which frames | scenes | scenes, interval or count. |
| Max frames per video | 20 | Upper limit per video, all modes. |
| Seconds between frames | 5 | For interval mode. |
| Number of frames | 10 | For count mode. |
| Frame size | 720 | Short side in pixels (never upscaled). |
| Read text on each frame | on | Adds on_screen_text per frame. |
| Contact sheet | on | One grid image per video (free). |
Limitations
- Public videos only. Private accounts, deleted posts and anything that needs a login return
status: "error"and are not charged. - TikTok frames come from TikTok's public embed copy, which carries TikTok's moving watermark (the watermark text is removed from
on_screen_text). - Facebook frames are often 360 px wide: for most Reels, Facebook only offers higher resolutions in a codec this Actor does not decode yet.
- YouTube is not supported. Videos are limited to 60 minutes.
- Need transcripts too? Use the sister Actors: Instagram, TikTok, Facebook or any audio/video link.
FAQ
Do I need an account or cookies on Instagram, TikTok or Facebook? No. The Actor reads only what any logged-out visitor can see.
Is this legal? The Actor processes publicly available videos and collects no personal data beyond the public post's creator name. You are responsible for how you use the output under the platform's terms and the laws that apply to you (e.g. copyright, GDPR).
Something wrong with a result? Open an issue on the Actor's Issues tab with the video URL. Reliability fixes ship within 24 hours.