Youtube Video Downloader avatar

Youtube Video Downloader

Pricing

Pay per usage

Go to Apify Store
Youtube Video Downloader

Youtube Video Downloader

Verified 99.4% Success. BULK download and scrape MP4 video files from YouTube videos using the Transcript Downloader API. Supports optional storage to Apify, webhook delivery, and progress tracking with automatic polling.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Transcript Downloader

Transcript Downloader

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

12 hours ago

Last modified

Share

๐ŸŽฌ Transcript Downloader - Youtube Video Scraper & Downloader

Convert YouTube videos into downloadable MP4 files using the Transcript Downloader API. Ideal for offline viewing, content archiving, and video repurposing. Works in bulk, with optional storage to Apify key-value store.


โœจ Features

  • ๐Ÿ“ Bulk processing of multiple YouTube video IDs
  • ๐Ÿ•’ Polling logic with automatic retries
  • ๐Ÿง  Progress tracking and run logs
  • ๐Ÿ—‚๏ธ Optional Apify file storage to key-value store
  • ๐Ÿ”” Webhook support: Receive results via webhook instead of polling
  • ๐Ÿ” Secure API token-based authentication

๐Ÿ”ง Input Parameters

ParameterTypeRequiredDefaultDescription
videoIdsarrayโœ… Yesโ€“List of YouTube video IDs to process
apiTokenstringโœ… Yesโ€“Bearer token for Transcript Downloader API
downloadToApifybooleanNotrueWhether to download MP4 files to Apify key-value store
maxWaitTimenumberNo15Max time to wait for video processing (in minutes, range: 1โ€“30)
pollingIntervalnumberNo60Interval between polling status (in seconds, range: 30โ€“300)
includeWebhookstringNoโ€“Webhook URL to receive results when video processing completes. Must be publicly reachable and accept POST requests

๐Ÿ“ฅ Example Input

{
"videoIds": ["Fqdz6A-5d04"],
"apiToken": "your-api-token",
"downloadToApify": true,
"maxWaitTime": 15,
"pollingInterval": 60
}

๐Ÿ“ค Output Format

Each video generates an output record with metadata and processing info:

{
"youtube_id": "Fqdz6A-5d04",
"id": "01JW72M0AGW3M6R3QDCS30RD2P",
"media_id": "abc123",
"type": "youtube_video",
"duration": "01:47:55",
"cost": "1.079",
"status": "success",
"file_urls": ["https://drive.transcriptdownloader.com/videos/youtube-Fqdz6A-5d04.mp4?Expires=..."],
"created_at": "2025-01-23T00:30:50.000Z",
"storage_key": "video-Fqdz6A-5d04.mp4"
}

๐Ÿš€ How to Use

  1. Get your API token from Transcript Downloader
  2. Add one or more YouTube video IDs (11-character alphanumeric IDs, e.g. Fqdz6A-5d04)
  3. Set downloadToApify to true if you want MP4 files saved to Apify key-value store
  4. Run the actor and access results in the dataset or key-value store

Supported Video ID Format

YouTube video IDs are exactly 11 characters long and contain only letters, numbers, hyphens, and underscores (e.g. Fqdz6A-5d04). You can find the ID in any YouTube URL after ?v= or /shorts/.


โŒ Error Handling

This actor includes robust handling for common issues:

Status CodeDescription
401Invalid API key โ€“ check or regenerate your token
422Video unavailable or cannot be processed
429Too many requests โ€“ reduce polling frequency
503Transcript Downloader API under maintenance
Custom"You already have a pending download for this video"

If a video is already being processed, its ID will be extracted from the error response and polling will continue automatically.


โš ๏ธ Rate Limiting & Performance

API Rate Limits

ScopeLimitWindow
Per User (API Token)90 requests1 minute
Per IP (unauthenticated)90 requests1 minute

When rate limits are exceeded, the API returns 429 Too Many Requests. The actor handles this automatically with built-in retry logic.

Video Download Cooldown

EndpointLimitCooldown PeriodScope
Single Video Download1 request5 minutesPer video

If you request video for the same video within the 5-minute cooldown, the API returns a pending download response. The actor handles duplicate requests gracefully by extracting the existing download ID and continuing to poll.

Processing Times

ScenarioTypical DurationMaximum Wait
Short videos (< 10 min)< 1 minute30 minutes
Medium videos (10-60 min)1-5 minutes30 minutes
Long videos (60+ min)5-20 minutes30 minutes

Retry Behavior

The actor automatically retries on transient errors (429, 500, 503) with exponential backoff (base delay 2s, up to 3 attempts). It does not retry on client errors (401, 403, 422) since those require user action.

Response Headers

The API returns rate limit headers you can monitor in logs:

HeaderDescription
X-RateLimit-LimitMax requests allowed in window
X-RateLimit-RemainingRequests remaining in current window
Retry-AfterSeconds to wait before retrying (on 429)

๐Ÿ”” Webhook Support

Instead of polling, you can receive results automatically via webhook. Pass a publicly reachable URL in the includeWebhook field, and the API will POST the results directly to your server when video processing completes.

How It Works

  1. The webhook URL is sent with the initial API request only (not during polling)
  2. One webhook is fired per video when processing completes or fails
  3. The webhook payload is the exact same JSON the API endpoint would return
  4. Failed deliveries are retried up to 3 times (at 10s, 30s, and 60s intervals)

Webhook Headers

Each delivery includes these custom headers to identify the event:

HeaderDescription
X-Webhook-Endpointdownloads/video
X-Webhook-Original-StatusHTTP status code of the result (e.g. 200)
X-Webhook-Download-IdThe download record ID

Example with Webhook

{
"videoIds": ["Fqdz6A-5d04"],
"apiToken": "your-token",
"includeWebhook": "https://your-domain.com/webhook"
}

Important Notes

  • The URL must be publicly reachable (no localhost or private IPs)
  • Your endpoint must accept POST requests and return a 2xx status
  • Test your webhook URL first using the API test endpoint
  • The webhook is registered once at request time โ€” it cannot be added after a job has started

๐Ÿ’ก Best Practices

  • โœ… Respect rate limits to avoid 429 errors
  • โณ Use polling wisely โ€” longer intervals for large queues
  • โณ Avoid re-requesting the same video within the 5-minute cooldown
  • ๐Ÿ” Keep your apiToken secret (never log it)
  • ๐Ÿง  Monitor output for incomplete or failed downloads
  • ๐Ÿ—‚๏ธ Store large video files in Apify only when needed โ€” allocate at least 2GB memory for long videos

๐Ÿ“ˆ Monitoring

Track performance and usage with Apify tools:

  • Run history
  • Success/failure rates
  • Storage and resource usage
  • Output file availability

๐Ÿ’ณ Pricing & Billing

The Transcript Downloader API used by this actor requires a valid API token. API usage is billed separately and is based on processing time and file size.

๐Ÿ“Š We charge per minute of video. Visit our site to checkout pricing. View full details and subscription plans on our pricing page


๐Ÿ™‹ Support

Need help? Visit Transcript Downloader Support. We respond within 24 business hours.


๐Ÿ“„ License

This actor is provided under the ISC License.