Download and Convert Videos and Audios from many Websites on the Internet using our API. Create your own Downloader Website.
Choose the integration method that best fits your needs
Direct REST API for advanced integrations. Build custom download interfaces with full control over the user experience and download process. Perfect for mobile apps and custom applications.
We're excited to announce that our API is now also available on RapidAPI platform with additional payment options! The pricing remains the same, but you now have more flexibility in how you want to subscribe and pay.
/ajax/download.php
format
Required
The file format to download (mp3, 1080, 720, etc.)
url
Required
The URL-encoded video URL
apikey
Required
Your API key for authentication
add_info
Optional
Include additional metadata (set to 1)
audio_quality
Optional
Audio quality in kbps (128, 320)
allow_extended_duration
Premium
Enable downloads for videos exceeding base duration limits
no_merge
Optional
Control stream merging behavior. If set to 1, audio and video streams will not be merged together and users will get a zip file containing all files. Default is 0.
audio_language
Optional
Specify the language code for the audio track (YouTube only). If the requested language is not available, the default audio track will be used. Supported codes: af, az, id, ms, bs, ca, cs, da, de, et, en-IN, en-GB, en, es, es-419, es-US, eu, fil, fr, fr-CA, gl, hr, zu, is, it, sw, lv, lt, hu, nl, no, uz, pl, pt-PT, pt, ro, sq, sk, sl, sr-Latn, fi, sv, vi, tr, be, bg, ky, kk, mk, mn, ru, sr, uk, el, hy, iw, ur, ar, fa, ne, mr, hi, as, bn, pa, gu, or, ta, te, kn, ml, si, th, lo, my, ka, am, km, zh-CN, zh-TW, zh-HK, ja, ko
start_time
Optional
Start time in seconds for video segment download.
end_time
Optional
End time in seconds for video segment download.
curl --location 'https://p.savenow.to/ajax/download.php?format=1080&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DK1Pu75yJUOE&apikey=YOUR_API_KEY&add_info=1&audio_quality=128&allow_extended_duration=1'
{
"success": true,
"id": "abc123xyz789",
"content": "PGRpdiBjbGFzcz0iZG93bmxvYWQtY29udGVudCI+Li4uPC9kaXY+",
"info": {
"image": "https://i.ytimg.com/vi/K1Pu75yJUOE/maxresdefault.jpg",
"title": "Amazing Video Title - 4K Quality"
},
"extended_duration": {
"multiplier": 3,
"original_price": 0.00025,
"final_price": 0.00075
}
}
Each format has a base duration limit included in the standard price. Videos exceeding these limits require the Extended Duration feature with tiered pricing.
The audio_language
parameter allows you to download YouTube videos with audio tracks in specific languages (if
available).
curl --location 'https://p.savenow.to/ajax/download.php?format=1&url=https%3A%2F%2Fyoutube.com%2Fwatch%3Fv%3Dxxx&audio_language=es&apikey=YOUR_API_KEY'
curl --location 'https://p.savenow.to/ajax/download.php?format=7&url=https%3A%2F%2Fyoutube.com%2Fwatch%3Fv%3Dxxx&audio_language=fr&apikey=YOUR_API_KEY'
curl --location 'https://p.savenow.to/ajax/download.php?format=1&url=https%3A%2F%2Fyoutube.com%2Fwatch%3Fv%3Dxxx&audio_language=de&apikey=YOUR_API_KEY'
Calculate your costs with Extended Duration Downloads support
Premium feature for videos longer than base duration
Minimum charge: $1.00
Premium pricing for longer videos
Transparent duration-based costs
Better rates at higher volumes
What you see is what you pay
Note: Extended Duration Downloads is a premium feature available only for YouTube videos. Enable the feature above to see pricing for videos longer than the base duration limits.
Parameters | Description |
---|---|
success
|
A boolean value indicating the success of the download operation. If true ,
the download was successful; if false ,
there was an error.
|
id
|
A unique identifier for the download request. This ID can be used to query the progress of the download using the progress endpoint. |
content
|
The Base64 encoded HTML content for the UI representation of the download. This content can be rendered to display the progress and download options to the user. |
info
|
An object containing additional information about the downloaded content. |
extended_duration
|
An object containing extended duration pricing details. Only present when allow_extended_duration=1
and the video exceeds base duration limits.
|
Parameters | Description |
---|---|
image
|
The URL of an image associated with the downloaded content. This image could be used as a thumbnail or preview for the downloaded content. |
title
|
A title or description of the downloaded content. This could provide more context about what the content is, helping users identify their downloads. |
Parameters | Description |
---|---|
multiplier
|
The price multiplier applied based on video duration (e.g., 3 for 3x pricing). |
original_price
|
The base price for the selected format before multiplier is applied. |
final_price
|
The final price after applying the duration multiplier. |
Parameters | Description |
---|---|
200
OK
|
Successful response. |
400
Bad Request
|
Missing or invalid parameters. |
500
Internal Service Error
|
Server error. |
{
"success": true,
"id": "abc123xyz789",
"content": "PGRpdiBjbGFzcz0iZG93bmxvYWQtY29udGVudCI+Li4uPC9kaXY+",
"info": {
"image": "https://i.ytimg.com/vi/K1Pu75yJUOE/maxresdefault.jpg",
"title": "Amazing Video Title - 4K Quality"
},
"extended_duration": {
"multiplier": 3,
"original_price": 0.00050,
"final_price": 0.00150
}
}
success
property
before processing other fields
id
to track download progress
via the progress endpoint
content
field contains Base64
encoded HTML - decode before displaying
extended_duration
object only appears
when premium pricing applies
/ajax/progress
id
Required
The unique download ID from the initial request
progress
: 0-1000 (1000 = 100%)success
: 1 for success, 0 for failuredownload_url
: Final download link (when ready)text
: Human-readable statuscurl --location 'https://p.savenow.to/ajax/progress?id=YOUR_JOB_ID'
{
"success": 1,
"progress": 1000,
"download_url": "https://cdn.example.com/file.mp4",
"text": "Finished"
}
Download YouTube videos longer than standard base limits with transparent tiered pricing based on video length.
Base duration for 4K/8K formats: 15 minutes
allow_extended_duration=1
Download videos with specific audio languages when available. Perfect for educational content and international media.
audio_language=es
Spanish audio example
Download specific segments using start_time and end_time parameters.
start_time=60&end_time=180
Download from 1 minute to 3 minutes
Control how audio and video streams are merged using the no_merge parameter.
no_merge=1
Separate files in ZIP format
Poll Progress Wisely
Check progress every 2-3 seconds, not more frequently
Handle Timeouts
Implement proper timeout handling for long downloads
Validate URLs
Ensure URLs are properly encoded before sending
Complete download interface with progress tracking, format selection, and thumbnail preview. Perfect for embedding a full-featured downloader into your website with monetization capabilities.
Visual progress bar with percentage completion and status updates
Audio (MP3, M4A, FLAC) and video formats (360p to 8K)
25% of downloads redirect to your ad URL for monetization
Automatically adjusts height and works on all devices
Websites wanting a complete download solution with built-in monetization. Perfect for content creators, educational platforms, and media websites.
Parameter | Description | Required |
---|---|---|
url
|
The YouTube URL you want to download | Yes |
adUrl
|
Your AD URL - 25% of downloads redirect here for monetization | Optional |
css
|
Link to your custom CSS file to style the download interface | Optional |
<!-- Basic Card API Integration -->
<iframe
id="cardApiIframe"
scrolling="no"
width="100%"
height="100%"
allowtransparency="true"
style="border: none; border-radius: 12px;"
src="https://p.savenow.to/api/card2/?url=https://www.youtube.com/watch?v=dQw4w9WgXcQ&adUrl=https://youradurl.com">
</iframe>
<!-- Put the Library in your <head> tag -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.3.9/iframeResizer.min.js"></script>
<!-- Put the resizer code after the <iframe> tag -->
<script>
iFrameResize({
log: false
}, "#cardApiIframe")
</script>
<!-- Custom CSS Styling (Optional) -->
<iframe
id="styledCardApi"
scrolling="no"
width="100%"
height="100%"
allowtransparency="true"
style="border: none; border-radius: 12px; box-shadow: 0 4px 6px rgba(0,0,0,0.1);"
src="https://p.savenow.to/api/card2/?url=https://www.youtube.com/watch?v=dQw4w9WgXcQ&adUrl=https://youradurl.com&css=https://yoursite.com/custom-style.css">
</iframe>
This shows how the Card API interface appears to users
Complete widget with URL input field that allows users to paste any YouTube URL. Perfect for creating standalone downloader tools with built-in monetization capabilities.
Built-in input field where users can paste YouTube URLs
Automatically detects video information and available formats
Automatically adjusts to content and responsive design
25% of downloads redirect to your ad URL for monetization
Websites wanting a complete downloader tool where users input their own URLs. Perfect for standalone downloader sites, tool websites, and apps.
Parameter | Description | Required |
---|---|---|
url
|
The YouTube URL you want to download | Yes |
adUrl
|
Your AD URL - 25% of downloads redirect here for monetization | Optional |
css
|
Link to your custom CSS file to style the widget interface | Optional |
<!-- Basic Widget API Integration -->
<iframe
id="widgetApiIframe"
width="100%"
height="100%"
allowtransparency="true"
scrolling="no"
style="border: none; border-radius: 12px;"
src="https://p.savenow.to/api/widget?adUrl=https://youradurl.com">
</iframe>
<!-- Put the Library in your <head> tag -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.3.9/iframeResizer.min.js"></script>
<!-- Put the resizer code after the <iframe> tag -->
<script>
iFrameResize({
log: false
}, "#widgetApiIframe")
</script>
<!-- Custom Styled Widget -->
<div class="widget-container" style="max-width: 600px; margin: 0 auto;">
<iframe
id="customWidgetApi"
width="100%"
height="100%"
allowtransparency="true"
scrolling="no"
style="border: none; border-radius: 15px; box-shadow: 0 8px 25px rgba(0,0,0,0.15);"
src="https://p.savenow.to/api/widget?adUrl=https://youradurl.com&css=https://yoursite.com/widget-style.css">
</iframe>
</div>
<script>
iFrameResize({
log: false,
heightCalculationMethod: 'taggedElement'
}, "#customWidgetApi")
</script>
This shows how the Widget API interface appears to users
Explore our free templates designed specifically for YouTube downloader websites! Get started easily with different frameworks like React, Laravel, Vue, and JavaScript. These templates make it simple to build a fully functional downloader, providing a sleek and efficient way for users to save YouTube content in various formats. Our templates have got you covered—completely free and ready to customize!
Try the unique tool for quick online-free downloads from YouTube. Transform your offline video repository with this fast and efficient downloader.