On-screen text · Apify actor
Extract the text shown on screen in any video file
Burned-in subtitles, captions, ad hook text, titles, lower-thirds, slide and screen-recording text: give this tool a video link and get every distinct piece of on-screen text once, with the time it appears and disappears, where it sits on the screen and a frame image, plus a timed transcript and an SRT/VTT track. A caption shown for 4 seconds is one row, not four. You pay only for frames that contain text, so a video without any on-screen text costs nothing.
What it does
Video OCR, in short
- Reads a frame every second (your choice, 0.25-60 s), skips frames that did not change and merges the same text in the same place into one timed segment
- One row per text segment: text, start and end time, position on screen, OCR confidence and a frame image link
- Per video:
fullText(one line per segment with its time),hookText(text shown in the first 3 seconds) and SRT and VTT files - Text area option:
bottomreads only subtitles, captions and lower-thirds and ignores signs and logos elsewhere - Reads English, Chinese, Japanese, Korean, Cyrillic, Arabic, Devanagari, Greek, Thai and accented Latin; open-source PP-OCR models run inside the actor, no API key
- Chains with Video Frame Extractor: read the frames of one of its runs instead of a video
Who it's for
Built for
Example
Input and output
One dataset row per result, downloadable as JSON, CSV or Excel, or read through the Apify API.
{
"videoUrls": ["https://example.com/ads/summer-sale.mp4"],
"sampleIntervalSeconds": 1,
"ocrLanguage": "en",
"textRegion": "full"
}One text-segment row from a run on the actor's built-in 30-second captioned sample, shortened. Each video also gets a summary row with fullText, hookText, srtUrl and vttUrl.
{
"type": "text",
"fileName": "sample-ocr-captions.mp4",
"segmentIndex": 5,
"text": "There are 3 types of\nspectra that we can use",
"startSeconds": 10,
"endSeconds": 13,
"durationSeconds": 3,
"timecode": "00:00:10.000",
"endTimecode": "00:00:13.000",
"frameUrl": "https://api.apify.com/v2/key-value-stores/.../records/...-0007-000010000ms.jpg",
"confidence": 0.9906,
"box": { "x": 0.1444, "y": 0.6695, "width": 0.7097, "height": 0.0812 },
"position": "bottom",
"lineCount": 2,
"framesSeen": 2,
"isPersistent": false
}Pricing
Pay per result. Failures are free.
No subscription, no monthly minimum. Apify platform compute is included in the price; Apify also adds a tiny start fee per run ($0.00005 per GB of run memory).
| You run | You pay |
|---|---|
| A 37-second promo with burned-in subtitles (32 frames with text) | $0.064 |
| A 71-second promo: title text and name lower-thirds (44 frames with text) | $0.088 |
| A 60-second interview with no on-screen text | $0.00 |
| An 18.7-minute subtitled documentary (382 frames with text) | $0.764 |
5 clips without text = $0.00
2 failed downloads = $0.00
Not charged:
- Frames in which no text was found, blank frames and frames identical to the previous one
- The transcript, the SRT and VTT files and the summary row
- Refused links, failed downloads and unreadable files
Each frame with text is charged once. Max frames per video (default 600) caps the cost of one video: longer videos are sampled evenly instead. You can set Maximum cost per run in the run options and the actor stops cleanly when it is reached.
FAQ
Questions
Is this the same as transcribing a video?
No. Transcription turns speech into text. Video OCR reads the text shown on screen, such as burned-in subtitles, captions and titles.
Which languages can it read?
English, Chinese and Japanese with the default setting; also accented Latin languages (French, German, Spanish, Portuguese, Czech, Polish and more), Cyrillic, Korean, Arabic, Devanagari, Greek and Thai. Pick the script in the input.
Can I use YouTube or TikTok links?
No. Those platforms forbid downloading in their terms, so the actor refuses them (free row). Use the original files.
What happens when a video has no text?
It gets a no-text summary row and is not charged.
What are the limits?
It is a fast CPU OCR model: clean captions, titles and lower-thirds read very well; tiny UI text, handwriting and heavily stylised or moving text can be misread or missed. Timing is accurate to the sampling interval. Videos up to 120 minutes and 2 GB by default (up to 600 minutes and 4 GB).
Try Video OCR on Apify
Apify's free plan includes monthly platform credit you can use to try it. Also callable from AI assistants through the Kanto Labs MCP server.
Other Kanto Labs tools
Video Frame Extractor
Scene-change keyframes, thumbnails or one frame every N seconds, plus a contact sheet.
Video to LLM Context
Scenes, one keyframe per scene and the transcript per scene, as a ready-to-paste prompt block.
Video to Slides
Every unique slide from a lecture or webinar video, as images, text and one PDF.