Proxy is required to get the list of download links.
By default the video will have no sound. This method is only for those who want to download videos from Instagram/Facebook with audio available.
The mergeAV field currently only works on: Facebook, Instagram
In the future, if social networks or other platforms separate audio and video, updates will be supported by a field called mergeAV , which is used to combine audio and video.
Because the video is downloaded, it will consume more proxy usage capacity
Copy {
"Content-Type": "application/json"
}
Copy {
"url": "https://www.facebook.com/reel/1231817508603093",
"proxySettings": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "CA"
},
"mergeAV": true
}
If you are integrating Actor as download API, you can always set mergeAV value. When the url supports mergeAV it will automatically merge Audio and video, when url not support it will not be affected
This will help the API get all the urls and when the url is supported it will be automatically merged
Copy curl -X POST "https://api.apify.com/v2/acts/wilcode~all-social-media-video-downloader/runs?token=<YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.facebook.com/reel/1231817508603093",
"proxySettings": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "CA"
},
"mergeAV": true
}'
Copy {
"title": "Video title",
"uploader": "Channel Name",
"channel": "Channel Name",
"upload_date": "20240706",
"duration": 100,
"description": "",
"like_count": 478,
"comment_count": 19,
"thumbnail": "image thumbnail url",
"formats": [
{
"resolution": "720x1080",
"url": "url download"
},
{
"resolution": "1080x1920",
"url": "url download"
},
{
"resolution": "audio only",
"url": "url download"
},
],
"download": [
{
"resolution": 720,
"url": "https://api.apify.com/v2/key-value-stores/amhvXQKACHs124/records/downloaded_video_1732199392399.mp4"
}
]
}
When the body has the mergeAV field, the result will have an additional download field
In the download field there will be the url and resolution
This link will automatically expire and the file will be deleted from your Storage in 7 days.
Why does the video sometimes crash while downloading?
Due to unstable proxy, the video download fails while downloading
You need to change proxy or change proxy country (if using Apify Proxy)
Copy const fetch = require('node-fetch');
const endpoint = 'https://api.apify.com/v2/acts/wilcode~all-social-media-video-downloader/runs?token=<YOUR_API_TOKEN>';
const requestBody = {
url: 'https://www.facebook.com/reel/1231817508603093',
proxySettings: {
useApifyProxy: true,
apifyProxyGroups: ['RESIDENTIAL'],
apifyProxyCountry: 'CA'
},
"mergeAV": true
};
fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(requestBody)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
Copy import requests
endpoint = 'https://api.apify.com/v2/acts/wilcode~all-social-media-video-downloader/runs?token=<YOUR_API_TOKEN>'
headers = {
'Content-Type': 'application/json'
}
body = {
'url': 'https://www.facebook.com/reel/1231817508603093',
'proxySettings': {
'useApifyProxy': True,
'apifyProxyGroups': ['RESIDENTIAL'],
'apifyProxyCountry': 'CA'
},
'mergeAV': true
}
response = requests.post(endpoint, headers=headers, json=body)
print(response.json())
Copy using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
string endpoint = "https://api.apify.com/v2/acts/wilcode~all-social-media-video-downloader/runs?token=<YOUR_API_TOKEN>";
// Define request body
var requestBody = new
{
url = "https://www.facebook.com/reel/1231817508603093",
proxySettings = new
{
useApifyProxy = true,
apifyProxyGroups = new[] { "RESIDENTIAL" },
apifyProxyCountry = "CA"
},
mergeAV = true
};
// Convert request body to JSON
string jsonBody = System.Text.Json.JsonSerializer.Serialize(requestBody);
using (HttpClient client = new HttpClient())
{
// Set headers
client.DefaultRequestHeaders.Add("Content-Type", "application/json");
// Send POST request
HttpResponseMessage response = await client.PostAsync(
endpoint,
new StringContent(jsonBody, Encoding.UTF8, "application/json")
);
// Get response content
string responseContent = await response.Content.ReadAsStringAsync();
// Print response
Console.WriteLine("Response:");
Console.WriteLine(responseContent);
}
}
}