YouTube Subtitle Search Scraper avatar

YouTube Subtitle Search Scraper

Pricing

$1.80 / 1,000 caption matches

Go to Apify Store
YouTube Subtitle Search Scraper

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é

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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.

📺 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

  1. Add one or more words or phrases in Search phrases.
  2. Choose a caption language preference and either readable text or SRT subtitles.
  3. Add view, date, order, or result-count settings when needed.
  4. Leave Maximum results empty to return all available results until the source is exhausted, or set a limit for a smaller run.
  5. 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

FieldTypeWhat it does
searchPhrasesstring array (required)Words or phrases to find in YouTube captions. Add one or more unique values.
preferredLanguagesstring arrayTries 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.
subtitleFormatstringChoose text for readable caption text or srt for subtitles with timestamps.
minimumViewsintegerKeeps videos with at least this many public views. Leave it empty to allow any view count.
publishedAfterstringKeeps videos published on or after a calendar date or a relative value such as 30 days ago. Leave it empty for any publication date.
resultOrderstringChoose relevance for caption-match relevance or views for most public views.
maxResultsintegerStops 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

FieldTypeWhat it does
videoUrlURLURL of the matching YouTube video.
titlestringTitle of the matching video.
channelobjectPublic channel that published the video.
channel.namestringName of the channel that published the video.
channel.urlURLPublic channel URL, when available.
viewCountintegerPublic view count, when available.
durationSecondsintegerVideo duration in seconds, when available.
publishedAtdate-timeDate and time when the video was published, when available.
thumbnailUrlURLVideo thumbnail URL, when available.
searchPhrasestringFirst submitted phrase that found this video.
captionLanguagestringLanguage code of the caption track used for this result.
captionTextstringAll available captions in the format chosen for the run. This is readable text or SRT subtitles.
captionSegmentsobject arrayCaption segments with source timing for finding matching text in the video.
captionSegments.startSecondsnumberStart time of the caption segment in seconds.
captionSegments.durationSecondsnumberDuration of the caption segment in seconds.
captionSegments.textstringText 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 🫡

Made with ❤️ by Maxime Dupré