Video Frame Extractor avatar

Video Frame Extractor

Pricing

from $0.70 / 1,000 frames

Go to Apify Store
Video Frame Extractor

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

Sanira Botheju

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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:23 or 83.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?

FieldWhat it holds
fileUrlLink to the frame's picture file; it opens without logging in to Apify
timestamp, timestampSecTime of the frame in the video, as 00:01:23.500 and in seconds
width, height, bytes, formatSize of the frame in pixels, its file size and format
frameIndex, videoPositionNumber of the frame within its video, and of the video in your list
videoThe video's length in seconds, width, height, codec, frames per second, container and file size
errorEmpty 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

  1. Paste the video links under Video addresses, or link a text file that lists them.
  2. Choose How to pick frames and the number of frames, the interval or the times.
  3. Optionally set the Picture format and a Frame width (the height follows the video's shape).
  4. Press Start. The Frames tab shows every frame with its picture.

How much does it cost to extract frames?

You pay per frame taken:

PlanPrice
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 doCost
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 video field.

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.