Video Frame Extractor for Scene Changes and Thumbnails avatar

Video Frame Extractor for Scene Changes and Thumbnails

Pricing

from $1.60 / 1,000 frames

Go to Apify Store
Video Frame Extractor for Scene Changes and Thumbnails

Video Frame Extractor for Scene Changes and Thumbnails

Turn video links into still images: one per scene change, every N seconds, a set number of frames or exact timestamps. JPG, PNG or WebP with a contact sheet per video. MP4, MOV, WebM, MKV and more, from S3, Dropbox or Drive links. $2 per 1,000 frames.

Pricing

from $1.60 / 1,000 frames

Rating

0.0

(0)

Developer

CleanScrape

CleanScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Share

Turn video files into still images. Paste links to your videos and get back JPG, PNG or WebP frames with their exact times, plus a contact sheet per video. Choose how frames are picked:

  • Overview: one frame per scene change, with quiet stretches filled in evenly. Fast at any length.
  • Precise scene changes: every cut, including quick ones, found by looking at every frame.
  • Every N seconds, for example one frame every 5 seconds for an AI vision model.
  • A set number of frames, evenly spaced, for example one thumbnail per video.
  • Exact timestamps, such as 0:42 and 1:15.5.

Near-identical frames are left out and not charged, so a slide that stays on screen for two minutes gives you one image, not twelve. Phone videos come out upright, and variable frame rate screen recordings get exact times.

It works with MP4, MOV, WebM, MKV, AVI, MPEG-TS, OGV and animated GIF, in H.264, HEVC (also 10-bit), VP9, AV1 and other codecs FFmpeg reads, from any direct file link: your own server, a CDN, S3 or Google Cloud Storage signed links, Dropbox and Google Drive share links. This is an independent tool, maintained by CleanScrape.

Start with a small run

The form opens with two sample videos, a 5-second clip and the 10-minute open film Big Buck Bunny (© Blender Foundation, CC BY 3.0), and saves up to 12 frames from each. Start it as it is, then paste your own links.

  1. In Video links, add one link per line.
  2. Pick Which frames and, if you like, Frames per video, image format and size.
  3. Start the run. The Frames table shows each image with its time; the Videos table has one row per video with its contact sheet.
You haveWorks?
A link that downloads the file (…/clip.mp4, a CDN or storage link)Yes
An S3, Google Cloud Storage or Azure signed linkYes. Its query string is hidden in the output, since signed links keep their key there
A Dropbox or Google Drive share link (file shared with "anyone with the link")Yes, the Actor uses the file's download link
A YouTube, TikTok, Instagram, Vimeo or other video site pageNo. These pages play videos but do not hand out the file. The run says so and charges nothing
A link that needs a loginNo. Use a signed or shared link

How frames are picked

ModeBest forHow it works
Overview (default)Thumbnails, previews, a quick look at what a video containsReads only the video's keyframes, which encoders place at cuts, and keeps the ones that look different from the last. Fills the longest gaps with evenly placed frames until "Frames per video" is reached
Precise scene changesEditing, shot lists, ad and trailer analysis, lecture slidesCompares every frame with the one before it and takes the first frame after each cut. Camera moves, fast action and film grain are not counted as cuts; slide changes count once the slide is still. Takes longer on long videos, so it is charged per minute of video scanned
Every N secondsAI vision models, dataset building, time-lapseA frame every N seconds from the start, up to "Frames per video"
A set number of framesOne thumbnail per video, storyboardsEvenly spaced; 1 frame gives the middle of the video
Exact timestampsMoments you already knowEvery timestamp you list, in each video. Timestamps past the end of a video are skipped and listed in the note

Scene change sensitivity sets how different two moments must look: low for clear cuts only, medium (the default) for normal cuts, high to also catch slide changes and screen recordings, where only part of the picture changes. With high, a gradual change counts once the picture has settled, so camera motion and animation do not. Start at and End at limit every mode to part of the video, for example to skip an intro.

What you get

Frames (one row per image):

ColumnMeaning
ImageLink to the image file. When your Apify storage is private, the link is signed so it still opens
Time, SecondsWhere the frame is in the video (00:01:23.400 and 83.4). This is the real time of the frame that was saved
Picked becausescene-change, fill, interval, evenly-spaced or timestamp
Video, FramePosition of the video in your list and of the frame in the video
Width, Height, Format, BytesThe image

Videos (one row per link): outcome, length, upright width and height, rotation, codec, frame rate, whether the frame rate varies, whether it has sound, file size, frames saved, near-duplicates left out, scan minutes, the contact sheet link and a note. When a link can't be used, the note says why: a page instead of a file, an audio file, a damaged or incomplete file, a refused or missing link, or a file over your size limit.

The images are in the run's key-value store as frame-001-0001.jpg (video 1, frame 1) and so on, and the contact sheets as contact-sheet-001.jpg.

Pricing

You pay for the frames you get and for each video read:

What is chargedPrice
Frame saved$2.00 per 1,000 frames ($0.002 each)
Video read$0.005 per video, plus $0.005 for each further started GB of file size
Scan minute (Precise scene changes only)$0.01 per minute of 1080p video at 30 fps

Free: near-identical frames that are left out, contact sheets, the Videos table, and links that can't be read (pages, audio files, damaged files, refused links, files over your size limit).

Precise scene changes decode every frame, so their cost follows the size of the picture: a minute of 1080p at 30 fps is one scan minute, smaller videos count less (720p at 30 fps is about half a minute, never less than a quarter), and larger ones more (4K at 30 fps is four). The total is rounded up per video and shown in the Videos table.

Examples:

RunCost
One thumbnail from each of 100 short videos$0.70
20-frame overview of one 10-minute video$0.045
A frame every 5 seconds from a 10-minute video (120 frames)$0.245
Every slide change in a 1-hour 1080p lecture under 1 GB (precise, about 40 frames)$0.685
The same lecture with Overview and high sensitivity (slide changes from keyframes, about 40 frames; a moving pointer can add a few extra frames)$0.085
1,000 frames from 50 videos$2.25

Apify plan discounts apply to all three prices: 10% on Bronze, 15% on Silver and 20% on Gold and higher. Set a spending limit under Run options for large runs; the run stops cleanly before it reaches the limit and keeps everything saved so far.

Ready-to-run examples

Each example opens with its input filled in. Paste your own video links and run it.

ExampleWhat it does
One frame per scene of a short film30 frames at the scene changes of Big Buck Bunny, with a contact sheet.
One thumbnail per videoA single JPG from the middle of each of four videos.
A frame every 10 seconds for AI visionSmall WebP frames every 10 seconds, with their times, ready for a vision model.
Frames at exact timestamps, as PNGFull-size PNG frames at five chosen moments.
Every cut in a film trailer-length clipPrecise scene detection over the first 2 minutes of Sintel, a frame at every cut.

Use it from the API, n8n, Make or an AI agent

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("cleanscrape/video-frame-extractor").call(run_input={
"videos": ["https://example.com/videos/demo.mp4"],
"mode": "interval",
"intervalSeconds": 5,
"maxFrames": 60,
"imageFormat": "webp",
"maxWidth": 768,
})
for frame in client.dataset(run["defaultDatasetId"]).iterate_items():
print(frame["timecode"], frame["imageUrl"])

In n8n or Make, use the Apify node: run the Actor with your video link, then read the Frames dataset; each row's imageUrl can go straight to an image or vision step. For one thumbnail per video, use "mode": "count", "maxFrames": 1.

It also works as a tool in Claude, Cursor and other AI assistants that support MCP, through Apify's MCP server:

https://mcp.apify.com?tools=cleanscrape/video-frame-extractor

Then ask, for example: "Take a frame every 10 seconds from this video and describe what happens."

Common questions

How large can a video be?

Up to 4 GB per file; the default limit is 2 GB, set under Largest video file. The run needs 1 GB of memory for each 2 GB of file (the default 4 GB of memory takes any file up to the limit). Length matters little outside Precise scene changes: in tests, a 50-frame overview of a 30-minute, 1 GB video took 49 seconds including the download. Precise scene changes read every frame: on the default memory, an hour of 1080p video takes roughly 5 to 35 minutes depending on how it was encoded. If a scan would not finish within the run's timeout, it stops early, the video is not charged, and the note says how long it needs; raise the timeout or the memory (more memory means more CPU) for long videos.

Why did I get fewer frames than I asked for?

"Frames per video" is a maximum. Short videos, videos with few scene changes, and near-identical frames that were left out give fewer. The video's note says what was left out. You are only charged for frames saved.

Are the frames full quality?

Frames are scaled down to 1280 pixels wide by default, which suits previews and AI models. Set Largest image width to 0 for the video's full size, and PNG for lossless images.

How long are the images kept?

They are stored in your Apify account like any run's results, for as long as your plan keeps run storage. Download them or copy them to your own storage if you need them longer.

Use it on videos you own or have the right to use. This is not legal advice.

Good to know

  • Times are seconds from the start of the video.
  • Rotation stored in phone videos is applied, so frames are upright; the Videos table shows the rotation it found.
  • Contact sheets show up to 60 frames per video and are free.

More tools from CleanScrape

Support

Questions, a video that is read wrongly or a format you need: open an issue on the Actor's Issues tab or write to contact.cleanscrape@gmail.com with the run ID.

If the Actor was useful, an honest review on its Store page helps other people find it.