Video Frames & Keyframes for AI Vision

Turn a video file into a small set of meaningful still images that an AI vision model can look at: one frame per scene, every N seconds, N evenly spaced, or at exact timestamps. Each frame comes with its timestamp, an image URL, optional base64 and optional OCR text.

Run it on ApifyUse it from an agent

What it does

ModeWhat you get
scenesOne frame per scene change, found from keyframes without decoding the whole video. A 1-hour video is scanned in seconds
intervalA frame every N seconds
countN evenly spaced frames
timestampsFrames at exact times, in seconds or hh:mm:ss.mmm

Example

Twelve evenly spaced frames with on-screen text, good for slide decks and screen recordings:

{"videoUrls": ["https://example.com/webinar.mp4"],
 "mode": "count",
 "frameCount": 12,
 "ocr": true}

One frame item (shortened):

{"type": "frame", "video_name": "webinar.mp4", "frame_index": 3,
 "timestamp_s": 42.0, "timecode": "00:00:42.000", "width": 1024, "height": 576,
 "image_url": "https://api.apify.com/v2/key-value-stores/.../records/v001-f0003-42s.jpg",
 "ocr_text": "Q3 roadmap"}

Links must point to video files. Pages on YouTube, TikTok, Instagram or Vimeo fail with PLATFORM_URL_NOT_SUPPORTED.

Use it

In the Apify Console

Open the Actor page on Apify, fill in the input form and click Start. Results land in the run's dataset (JSON, CSV or Excel download).

From an AI agent (MCP)

Apify's hosted MCP server exposes the Actor as a tool to Claude, Cursor, VS Code and other MCP clients. Server URL:

https://mcp.apify.com/?tools=errandkit/video-frames-for-ai

For example, in Claude Code (sign in to Apify when asked, or add --header "Authorization: Bearer YOUR_APIFY_TOKEN"):

claude mcp add --transport http errandkit "https://mcp.apify.com/?tools=errandkit/video-frames-for-ai"

Copy-paste config for Claude Desktop, Cursor, VS Code, Windsurf and ChatGPT →

From code (Apify API)

curl -X POST "https://api.apify.com/v2/acts/errandkit~video-frames-for-ai/run-sync-get-dataset-items" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" -H "Content-Type: application/json" \
  -d '{"videoUrls":["https://example.com/demo.mp4"],"mode":"scenes","maxFrames":20}'

Errandkit doesn't run its own hosted API yet. Every way of using this tool goes through your Apify account.

Pricing

EventPricePer 1,000
Frame extracted$0.001$1.00
Frame OCR (only with ocr, only frames where text was found)$0.001$1.00
Video data read (per started 10 MB actually downloaded)$0.001$1.00
Actor start (Apify standard)$0.00005$0.05

Examples: 12 frames from a 100 MB, 10-minute video in count mode (reads about 25 MB) cost about $0.015. 20 scenes from the same video cost about $0.03. Uploaded and base64 files have no data charge. Videos that fail aren't charged.

Launch prices. The price shown on the Apify Store page is the one you are charged, and Apify shows it before every run.

Limits

Your data

Videos are processed inside your own Apify run. Nothing is sent to any third-party service or AI model, and nothing is kept by us. Frames live in your run storage under your account's retention settings. Details: privacy.