Video Frame Extractor & Scene Detector for AI
Pricing
from $1.20 / 1,000 frames
Video Frame Extractor & Scene Detector for AI
Extract frames from direct video links by count, interval, exact timestamps or scene changes. Get image links, timecodes and a contact sheet, with near-duplicate frames removed and not charged. Runs ffmpeg for you.
Pricing
from $1.20 / 1,000 frames
Rating
0.0
(0)
Developer
earlytern
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share
Extract frames from any direct link to a video file: a set number of frames, one every few seconds, exact timestamps, or every scene change. You get a public link to each image with its timecode, plus one contact sheet per video. Near-duplicate frames are removed and not charged, so an AI model or a person has fewer images to read. No ffmpeg to install, no server to run.
What does Video Frame Extractor do?
- Reads video files from direct links: MP4, WebM, MOV, MKV, AVI, MPEG, MPEG-TS, FLV, WMV and Ogg.
- Four ways to pick frames: evenly spread by count, a fixed interval, exact timestamps, or scene changes with a score for each cut.
- Skips similar frames: a frame that looks almost the same as the one before is left out and free.
- Contact sheet: one free image showing the frames in a grid, handy for a quick look or a single AI request.
- Returns video length, size and codec, with each frame's time, timecode, size and image link.
- Reads a large file piece by piece, jumping to the frames it needs, when the video server allows it. Ogg files and files from servers that cannot send part of a file are downloaded once instead, up to the run's memory size.
- Tells you why a link failed, in plain words. Failed videos cost nothing.
Who uses it?
- AI workflows on n8n, Make or Zapier: turn a video into a few images a vision model can read.
- AI agents running in the cloud, where ffmpeg cannot be installed.
- Ad and video analysts: review creative shot by shot from a contact sheet.
- Dataset builders: sample images from your own video collections.
How to use it
- Click Try for free.
- In Video links, add one direct link per line, up to 100. The link must open the file itself, for example
https://example.com/ad.mp4. - Choose a Frame selection and set its field: Number of frames, Seconds between frames, Exact times or Scene sensitivity.
- Click Start. A short video takes seconds. Download the results as JSON, CSV or Excel, or use the API.
YouTube, TikTok, Instagram, Facebook, X, Vimeo, Twitch and other video platforms are refused, because their terms do not allow automated downloads. Streaming playlists (HLS, DASH) are refused too.
Use with AI agents (MCP)
AI assistants and AI agents can call this Actor through Apify's MCP server at mcp.apify.com or through the Apify API. The image links open without signing in, so an agent can pass them straight to a vision model. Questions it answers well:
- "What happens in this video?" Use
mode: "count"withframeCount: 10, then readcontactSheetUrl. - "Where are the cuts in this ad?" Use
mode: "scenes"and read each frame'stimeSecondsandsceneScore. - "What is on screen at 1:30?" Use
mode: "timestamps"withtimestamps: [90].
Only videoUrls is required. Keep frameCount low and leave Skip similar frames on, so answers stay short and cheap.
When status is failed, errorReason says what to change.
Input example
{"videoUrls": ["https://upload.wikimedia.org/wikipedia/commons/f/f3/Chen-Gackstatter_surface.webm"],"mode": "count","frameCount": 3,"skipSimilarFrames": true,"contactSheet": true,"imageFormat": "jpg","maxWidth": 1280}
Use Start at and End at to read only part of a video. Maximum file size (500 MB unless you change it) refuses larger files free of charge.
The example video is "Chen-Gackstatter surface" by Rectas, from Wikimedia Commons, released under CC0 1.0.
Output example
{"videoUrl": "https://upload.wikimedia.org/wikipedia/commons/f/f3/Chen-Gackstatter_surface.webm","status": "ok","durationSeconds": 15.042,"width": 1080,"height": 1080,"codec": "vp9","framesKept": 3,"framesSkippedSimilar": 0,"contactSheetUrl": "https://api.apify.com/v2/key-value-stores/aBcDeFgHiJkLmNoPq/records/sheet-0.jpg","frames": [{"timeSeconds": 2.507,"timecode": "00:00:02.507","imageUrl": "https://api.apify.com/v2/key-value-stores/aBcDeFgHiJkLmNoPq/records/f-0-2507.jpg","sceneScore": null,"bytes": 22192},{"timeSeconds": 7.521,"timecode": "00:00:07.521","imageUrl": "https://api.apify.com/v2/key-value-stores/aBcDeFgHiJkLmNoPq/records/f-0-7521.jpg","sceneScore": null,"bytes": 21661},{"timeSeconds": 12.535,"timecode": "00:00:12.535","imageUrl": "https://api.apify.com/v2/key-value-stores/aBcDeFgHiJkLmNoPq/records/f-0-12535.jpg","sceneScore": null,"bytes": 22181}],"note": null,"errorReason": null}
Each video gives one row, also when it fails: status is then failed and errorReason says why, or skipped when your
maximum cost per run was reached first. note says if anything was left out of a good result.
Images stay available for as long as Apify keeps the run's storage, which depends on your plan. Download the ones you want to keep.
How much does it cost?
You pay only for frames you get. No start fee and no fee per video. Prices per 1,000 events, by Apify plan:
| Event | Free | Bronze | Silver | Gold and up |
|---|---|---|---|---|
| Frame delivered | $1.50 | $1.50 | $1.30 | $1.20 |
| Minute of video scanned (Scene changes mode only) | $5.00 | $5.00 | $4.50 | $4.00 |
- Free of charge: contact sheets, frames skipped as similar, and videos that could not be read.
- Scene changes mode reads the whole video, so each started minute is charged, plus each frame delivered.
- Set a maximum cost per run and the Actor stops before going over it. Videos it did not reach are listed as
skipped.
Example on the Free plan: 1,000 frames cost $1.50. Finding scenes in a 10-minute video with 20 scenes costs 10 × $0.005 + 20 × $0.0015 = $0.08.
FAQ
Why is my link refused? The link must return the video file itself. A page with a player on it is not a video file: open the link in a browser, and if you see a website rather than the bare video, find the direct link to the file.
Why does a video server refuse the Actor? Some servers block automated requests, or only allow links for a short time. The Actor tries three times, then reports the answer it got, free of charge. Check that the link opens without signing in.
Why did a large video fail on my own server? Files over 100 MB are read piece by piece, which needs a server that can send part of a file (byte ranges); most storage services and web servers can. When yours cannot, the Actor downloads the whole file first, which works for files up to the run's memory size: give the run more memory for larger files.
Can I use signed links from my cloud storage? Yes, as long as they are still valid during the run. They appear in the results as you entered them.
Which frames count as similar? The Actor compares each frame with the last one it kept, by pattern and brightness. Exact times mode keeps every frame you ask for.
Does scene detection find every cut? It finds hard cuts well. Lower Scene sensitivity to catch slow fades, and raise it if you get too many frames. The first frame of the part you read is always included.
Does it identify people? No. It takes images from your video and does not recognize faces or add names.
Limits
- Up to 100 videos per run, processed one after another, and 500 frames per video.
- Files up to 2,000 MB, or 4,000 MB in Scene changes mode.
- Scene changes mode stops reading a single video after 30 minutes. Give the run more memory for long or high-resolution videos, since that also gives it more processor power.
- Links to private or internal addresses are refused.
Is it legal?
The Actor processes the video files you link to and collects nothing else. You are responsible for having the right to process those videos, and for how you use the images, including any people shown in them. Video platforms are refused because their terms do not allow automated downloads.
Questions and feedback
Open an issue on the Issues tab.