YouTube Subtitle Search Scraper
Pricing
$1.80 / 1,000 caption matches
YouTube Subtitle Search Scraper
Search public YouTube captions for words or phrases and find matching videos. Get each video's URL, title, channel, view count, duration, publication time, thumbnail, full captions, timed segments, language, and first matching phrase.
Pricing
$1.80 / 1,000 caption matches
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
🔎 Search YouTube captions by phrase
Search publicly reachable YouTube captions for words or phrases and find the videos where they appear. Researchers, educators, content teams, and developers can review caption text with video and channel details, timing, language, and the first submitted phrase that found each saved video. The result is a structured dataset that helps you locate spoken topics without checking videos one by one.
- Discover videos whose subtitles contain your phrase with Search YouTube Videos by Subtitles.
- Look up a term in video transcripts with YouTube Transcript Search.
- Find matching spoken words with Search YouTube Captions.
- Scan subtitles for a phrase with Search YouTube Subtitles.
- Check where a phrase appears in captions with YouTube Caption Search.
- Build a list of videos that mention a term with YouTube Subtitle Search.
📺 Find videos through caption text
Each saved row represents one matching public YouTube video. It can include the video URL, title, channel, public view count, duration, publication time, thumbnail, caption language, full caption text, and timed caption segments. The selected search phrase is also saved.
If the same source video appears again for another submitted phrase, the Actor keeps the first saved match and ignores later copies. The searchPhrase value shows the first submitted phrase that found that row.
▶️ Search captions in a few steps
- Add one or more words or phrases in Search phrases.
- Choose a caption language preference and either readable text or SRT subtitles.
- Add view, date, order, or result-count settings when needed.
- Leave Maximum results empty to return all available results until the source is exhausted, or set a limit for a smaller run.
- Start the run and open Matching videos in the default dataset.
The Actor searches public caption tracks. You do not need a YouTube API key or account login for this public data. It does not download YouTube video or audio files.
⚙️ Input
Add at least one search phrase. The optional settings help you choose caption language, format, filters, and order.
Input fields
| Field | Type | What it does |
|---|---|---|
searchPhrases | string array (required) | Words or phrases to find in YouTube captions. Add one or more unique values. |
preferredLanguages | string array | Tries caption language codes in the order you list them, such as en or es. If a preferred track is not available, another available track is used. Leave it empty to use any available caption language. |
subtitleFormat | string | Choose text for readable caption text or srt for subtitles with timestamps. |
minimumViews | integer | Keeps videos with at least this many public views. Leave it empty to allow any view count. |
publishedAfter | string | Keeps videos published on or after a calendar date or a relative value such as 30 days ago. Leave it empty for any publication date. |
resultOrder | string | Choose relevance for caption-match relevance or views for most public views. |
maxResults | integer | Stops after this many matching videos. Leave it empty to return all available results until the source is exhausted. |
Example input
This is the public input from the successful default-input run:
{"searchPhrases": ["machine learning"],"subtitleFormat": "text","resultOrder": "relevance","maxResults": 20}
🧾 Output
The output panel provides a Matching videos link to the default dataset. Each saved dataset row has the same shape.
Matching video fields
| Field | Type | What it does |
|---|---|---|
videoUrl | URL | URL of the matching YouTube video. |
title | string | Title of the matching video. |
channel | object | Public channel that published the video. |
channel.name | string | Name of the channel that published the video. |
channel.url | URL | Public channel URL, when available. |
viewCount | integer | Public view count, when available. |
durationSeconds | integer | Video duration in seconds, when available. |
publishedAt | date-time | Date and time when the video was published, when available. |
thumbnailUrl | URL | Video thumbnail URL, when available. |
searchPhrase | string | First submitted phrase that found this video. |
captionLanguage | string | Language code of the caption track used for this result. |
captionText | string | All available captions in the format chosen for the run. This is readable text or SRT subtitles. |
captionSegments | object array | Caption segments with source timing for finding matching text in the video. |
captionSegments.startSeconds | number | Start time of the caption segment in seconds. |
captionSegments.durationSeconds | number | Duration of the caption segment in seconds. |
captionSegments.text | string | Text shown in the caption segment. |
Example matching video
This is a shortened real row from the successful beta run for the default input. The full caption text and later caption segments are replaced with the string "..." so the example stays small.
{"videoUrl": "https://www.youtube.com/watch?v=PeMlggyqz0Y","title": "Machine Learning Explained in 100 Seconds","channel": {"name": "Fireship","url": "http://www.youtube.com/@Fireship"},"viewCount": 1107634,"durationSeconds": 154,"publishedAt": "2021-09-09T17:31:56.000Z","thumbnailUrl": "https://i.ytimg.com/vi/PeMlggyqz0Y/sddefault.jpg","searchPhrase": "machine learning","captionLanguage": "en","captionText": "...","captionSegments": [{"startSeconds": 0.12,"durationSeconds": 4.32,"text": "machine learning teach a computer how to"},{"startSeconds": 2.48,"durationSeconds": 4.2,"text": "perform a task without explicitly"},{"startSeconds": 4.44,"durationSeconds": 4.76,"text": "programming it to perform said task"},{"startSeconds": 6.68,"durationSeconds": 4.12,"text": "instead feed data into an algorithm to"},{"startSeconds": 9.2,"durationSeconds": 3.88,"text": "gradually improve outcomes with"},{"startSeconds": 10.8,"durationSeconds": 4.879,"text": "experience similar to how organic life"},{"startSeconds": 13.08,"durationSeconds": 5.119,"text": "learns the term was coined in 1959 by"},{"startSeconds": 15.679,"durationSeconds": 4.241,"text": "Arthur Samuel at IBM who is developing"},"..."]}
💳 Pricing
This Actor uses pay-per-event pricing. You pay $0.0018 for each saved video whose available captions match a submitted phrase. A run that saves no matching video does not create a caption-match charge. If the same video matches another phrase later, that copy is ignored and the saved row is charged once.
🔌 Integrations
Read saved rows from the default dataset through the Apify API or export them from Apify in common data formats.
Video guide
❓ FAQ
What happens when a video has no readable captions?
The Actor can use only publicly reachable caption tracks that it can read. Private, login-required, unavailable, or unreadable captions cannot be searched, so they may not produce a matching row.
Does it search the title or video description?
No. It checks caption text for the submitted words or phrases. The title, channel, and other video details are returned as context for a match.
Can I choose a caption language?
Yes. Add language codes such as en or es in your preferred order. If a preferred track is not available, the Actor uses another available track. The captionLanguage field shows the track used.
Should I choose text or SRT subtitles?
Choose readable text when you want a simple caption body. Choose SRT when you want a standard subtitle format that keeps timestamps.
How are duplicate videos handled across phrases?
The Actor saves the first eligible match for a source video. If that video appears again from another phrase, the later match is ignored, and searchPhrase stays set to the first submitted phrase that found it.
Can I filter and order the matching videos?
Yes. Set a minimum view count or publication date, then choose caption-match relevance or most public views. You can also set a maximum result count. Leave that limit empty to collect all available results until the source is exhausted.
Can I get only a short clip around the match?
No. Each row includes full available caption text and timed segments. Use the segment times to find the words in the video. The Actor does not download a video or audio clip.
Do I need a YouTube API key or account login?
No. The Actor uses publicly reachable YouTube caption data and does not ask you for a customer API key or account login.
📝 Changelog
v0.0 (02-09-2026)
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- YouTube Transcript to PDF - Turn known public YouTube videos with captions into readable PDF transcripts and timed transcript rows.
- YouTube Transcript Scraper - Get a full timestamped transcript from a known public YouTube video.
- YouTube Scraper - Videos, Search, Subtitles & Comments - Collect broader YouTube video or search data when you need more than caption matches.
- YouTube Transcript Search - Search transcript or caption text by keyword and review timestamped matches.
- YouTube Video Transcript - Get full transcripts, timestamps, and metadata from known public YouTube videos.
Made with ❤️ by Maxime Dupré