Video Frame Extractor
Pricing
from $0.70 / 1,000 frames
Video Frame Extractor
Take still frames and thumbnails out of videos: evenly spread, one every few seconds, or at the times you name. Give MP4, WebM, MOV or other video links; get JPEG, PNG or WebP frames with links, times and sizes, plus each video's length and resolution.
Pricing
from $0.70 / 1,000 frames
Rating
0.0
(0)
Developer
Sanira Botheju
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
What does Video Frame Extractor do?
It takes still frames out of videos. Give it the addresses of video files (MP4, WebM, MOV, MKV, AVI and most other formats) and choose how to pick the frames:
- Evenly spread: a set number of frames across the whole video, for thumbnails, previews and contact sheets.
- Every few seconds: one frame each interval from the start, for reviewing or labelling footage.
- At these times: the exact moments you list, such as
1:23or83.5.
Each frame is stored as a JPEG, PNG or WebP file with a link you can open or share, together with its time in the video, its size, and the video's length, resolution, codec and frame rate. The frames are ready to feed to an AI model that reads pictures, to a search index or to a web page.
What data do you get?
| Field | What it holds |
|---|---|
fileUrl | Link to the frame's picture file; it opens without logging in to Apify |
timestamp, timestampSec | Time of the frame in the video, as 00:01:23.500 and in seconds |
width, height, bytes, format | Size of the frame in pixels, its file size and format |
frameIndex, videoPosition | Number of the frame within its video, and of the video in your list |
video | The video's length in seconds, width, height, codec, frames per second, container and file size |
error | Empty for a frame that was taken; otherwise a code such as NOT_A_VIDEO, FILE_TOO_LARGE, HTTP_404 or NO_FRAME |
How to take frames from a video
- Paste the video links under Video addresses, or link a text file that lists them.
- Choose How to pick frames and the number of frames, the interval or the times.
- Optionally set the Picture format and a Frame width (the height follows the video's shape).
- Press Start. The Frames tab shows every frame with its picture.
How much does it cost to extract frames?
You pay per frame taken:
| Plan | Price |
|---|---|
| Free and Starter | $1.00 per 1,000 frames ($0.001 each) |
| Scale | $0.85 per 1,000 frames |
| Business | $0.70 per 1,000 frames |
| What you do | Cost |
|---|---|
| 10 thumbnails from each of 100 videos | $1.00 |
| One frame every 10 seconds of a one-hour video (360 frames) | $0.36 |
| One cover picture for each of 50 videos | $0.05 |
Downloading and reading a video costs nothing extra. A video that cannot be read (a broken link, not a video, larger than your limit) counts as one result and costs the price of one frame. Apify's free plan gives $5 of credit each month, enough for about 5,000 frames. Set a maximum cost for the run, and the tool stops before it would go over it.
Input
{"videoUrls": [{ "url": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4" }],"mode": "count","frameCount": 10,"format": "jpg","width": 640,"quality": 85}
For one frame every 30 seconds use "mode": "interval", "intervalSecs": 30; for given times use "mode": "timestamps", "timestamps": ["0:05", "1:30", "125.5"]. More options: frames per video at most, the largest video to download (500 MB by default), the time limit per download, and the User-Agent.
Output example
{"videoUrl": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4","videoPosition": 1,"frameIndex": 5,"timestampSec": 2.275,"timestamp": "00:00:02.275","fileKey": "v0001-f0005-2275ms.jpg","fileUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/v0001-f0005-2275ms.jpg","format": "jpg","width": 960,"height": 540,"bytes": 26073,"video": { "durationSec": 5.055, "width": 960, "height": 540, "codec": "h264", "fps": 29.97, "container": "mov,mp4,m4a,3gp,3g2,mj2", "bytes": 1128375 },"extractedAt": "2026-10-16T15:16:11.541Z","error": null}
What can you use it for?
- Make thumbnails and preview strips for a video library or a shop's product videos.
- Give an AI model that reads pictures a few frames per video to describe, tag or check them, instead of the whole video.
- Pull the frames at chosen moments for a report, a training set or a quality check.
- Find each video's length, resolution, codec and frame rate in bulk, from the
videofield.
Use it from the API
curl -X POST "https://api.apify.com/v2/acts/cyber1nj3ct0r~video-frame-extractor/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"videoUrls": [{"url": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4"}], "frameCount": 5}'
The same works from Python, JavaScript, Make, Zapier and n8n through Apify's integrations. Each result row holds fileUrl; the files are also in the run's key-value store under fileKey.
FAQ
Which videos work?
Video files that sit at their own address and that ffmpeg can read: MP4 (H.264, H.265), WebM (VP8, VP9, AV1), MOV, MKV, AVI, MPEG and more. Links to pages of video sites such as YouTube, Instagram, TikTok or Vimeo are web pages, not video files, and do not work; the tool does not take videos out of those sites. Streams that are cut into many small pieces (HLS .m3u8, DASH) are not read either.
How exact are the times?
The frame is the one shown at that moment in the video, decoded from the nearest keyframe before it, so it is exact to the frame. With Evenly spread, frames sit in the middle of equal parts of the video, never on the black first or last picture.
What about large or long videos?
Each video is downloaded to the run's disk first, up to Largest video (500 MB by default). The disk is twice the run's memory and two videos are read at the same time, so for videos larger than about 1,000 MB give the run more memory. Taking a frame from a long video is usually about as fast as from a short one, because the tool jumps to the time instead of reading the whole video.
Does it detect scene changes?
Not yet: frames are picked by time. Write an issue if you need scene detection.
A site blocks the download. What can I do?
The tool says who it is in its User-Agent and does not get round blocks, logins or paywalls, and it uses no proxies. If a site refuses it, the result says so with the HTTP status. Only use videos you have the right to use.
Something does not work
Open an issue on the tool's Issues tab with the run's link. Issues are answered.