Pricing
| Apify plan | Per video | Per 1,000 |
|---|---|---|
| Free plan | $0.004 | $4 |
| Starter | $0.0032 | $3.20 |
| Scale | $0.0028 | $2.80 |
| Business | $0.0024 | $2.40 |
| Enterprise | $0.0024 | $2.40 |
| Enterprise+ | $0.0024 | $2.40 |
Primary event rates from a catalog snapshot; this is not the total price of a run. Additional charge events and Actor Start fees may apply; start fees can scale with memory. Check the Actor's Pricing tab on Apify for all events, conditions and current plan-specific rates, and set a maximum run budget before starting.
Sample output
{
"videoId": "dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"channelName": "Rick Astley",
"channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"durationSeconds": 213,
"publishDate": "2009-10-25T06:57:33.000Z",
"viewCount": 1825545748,
"language": "en",
"languageName": "English",
"isAutoGenerated": false,
"availableLanguages": [
"en",
"en",
"de-DE"
],
"text": "[♪♪♪] ♪ We're no strangers to love ♪ ♪ You know the rules and so do I ♪ ♪ A full commitment's what I'm thinking of ♪ ♪ You wouldn't get this from any other guy ♪ ♪ I just wanna tell you how I'm feeling ♪ ♪ Gotta make you understand ♪ ♪ Never gonna give you up ♪ ♪ Never gonna l…",
"segments": [
{
"start": 1.36,
"dur": 1.68,
"text": "[♪♪♪]"
},
{
"start": 18.64,
"dur": 3.24,
"text": "♪ We're no strangers to love ♪"
},
{
"start": 22.64,
"dur": 4.32,
"text": "♪ You know the rules and so do I ♪"
}
],
"segmentCount": 61,
"transcriptComplete": true,
"transcriptCoverage": 0.992,
"scrapedAt": "2026-10-11T15:34:54.606Z"
}Call from code
Use the existing catalog input below as a starting point. Review the tool's input form on Apify before running it.
import json
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("webdatatools/youtube-transcript-scraper").call(run_input=json.loads("{\n \"videoUrls\": [\n \"https://www.youtube.com/watch?v=dQw4w9WgXcQ\"\n ],\n \"maxVideos\": 10,\n \"language\": \"en\"\n}"))
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('webdatatools/youtube-transcript-scraper').call({
"videoUrls": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ"
],
"maxVideos": 10,
"language": "en"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);curl -X POST "https://api.apify.com/v2/acts/webdatatools~youtube-transcript-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"videoUrls":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],"maxVideos":10,"language":"en"}'