Instagram Video Downloader
Pricing
Pay per usage
Instagram Video Downloader
The Instagram Video Downloader is a powerful Apify actor designed to download videos from Instagram with comprehensive metadata extraction. Whether you need to download single videos, multiple posts, reels, or entire profiles, this actor provides reliable extraction with direct download.
Pricing
Pay per usage
Rating
5.0
(2)
Developer
Shahid Irfan
Maintained by CommunityActor stats
1
Bookmarked
260
Total users
18
Monthly active users
7 days ago
Last modified
Categories
Share
What does Instagram Video Downloader do?
Instagram Video Downloader collects metadata and downloadable media from direct Instagram post, Reel, IGTV, and story URLs. Add one or more URLs, choose a quality limit, and receive structured records in the Apify Dataset. Downloaded media is also saved in the run's Key-Value Store with a direct download URL.
Why use Instagram Video Downloader?
- Batch processing - Submit several Instagram URLs in one run.
- Direct URL processing - Process only the exact Instagram media URLs supplied in the input.
- Download or inspect - Download media files or use
metadata_onlywhen you only need structured information. - Quality selection - Request the best available file, or cap selection at 720p or 1080p.
- Resilient downloads - Use the automatic downloader with a browser fallback, or select a specific download method.
- Structured output - Get stable fields for content analysis, archiving, reporting, or downstream automation.
- Apify workflow support - Export JSON, CSV, or Excel files, schedule runs, use webhooks, and read results through the Apify API.
What data can you extract from Instagram?
| Field | Description |
|---|---|
video_id | Instagram media identifier or shortcode |
title | Caption-derived title or page title |
author | Public Instagram username when available |
publish_date | Published timestamp when available |
duration | Video duration in seconds when available |
view_count | Public play or view count when available |
like_count | Public like count when available |
comment_count | Public comment count when available |
description | Post caption or page description |
thumbnail | Thumbnail image URL when available |
url | Original Instagram URL |
file_size | Downloaded file size in bytes |
file_extension | Stored media extension |
file_path | Key-Value Store record key |
download_url | Direct API URL for the stored file |
collected_at | ISO timestamp for the collection event |
error | Error message when a URL cannot be processed |
How to use Instagram Video Downloader
- Open the Actor on Apify.
- Add one or more public Instagram post, reel, IGTV, or story URLs.
- Select download mode, quality, and the optional URL limit.
- Start the run and review the Dataset.
- Download media files from the
download_urlvalues or export the dataset.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
urls | Array of strings | Yes | Tested Reel URL | Direct Instagram post, Reel, IGTV, or story URLs |
downloadMode | String | No | videos | Use videos to save media or metadata_only to skip file downloads |
downloadMethod | String | No | auto | auto, browser, or yt-dlp |
maxItems | Integer | No | 10 | Maximum number of supplied URLs to process; 0 processes every supplied URL |
quality | String | No | best | best, 720p, 1080p, or audio_only |
proxyConfiguration | Object | No | {} | Optional Apify or custom proxy settings for page access and yt-dlp downloads |
Only direct media URLs are supported. Profile and hashtag discovery are intentionally not included because Instagram does not expose those pages reliably from Apify Cloud.
Usage Examples
Download one Instagram video
{"urls": ["https://www.instagram.com/p/C3v8HnK8JdL/"]}
Download several reels with a quality limit
{"urls": ["https://www.instagram.com/reel/C4d9IpL9KeM/","https://www.instagram.com/reel/C5e0JqM0LfN/"],"downloadMode": "videos","quality": "720p","maxItems": 10}
Collect metadata without downloading files
{"urls": ["https://www.instagram.com/p/C3v8HnK8JdL/"],"downloadMode": "metadata_only"}
Sample Output
{"video_id": "C3v8HnK8JdL","title": "Sunset over the mountains","author": "naturephotography","publish_date": "2026-08-21T10:30:00.000Z","duration": 45,"view_count": 1250,"like_count": 318,"comment_count": 24,"description": "A short sunset video from the mountain trail.","thumbnail": "https://example.com/thumbnail.jpg","url": "https://www.instagram.com/p/C3v8HnK8JdL/","file_size": 15728640,"file_extension": "mp4","file_path": "C3v8HnK8JdL.mp4","downloaded_format": "direct-1080p","download_url": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/C3v8HnK8JdL.mp4?raw=1","collected_at": "2026-08-21T10:31:00.000Z","quality_requested": "best"}
Tips for best results
- Use complete URLs copied from public Instagram posts or reels.
- Start with one URL and
metadata_onlyto confirm access before downloading a large batch. - Use a lower quality limit when file size or run time matters.
- Direct post/Reel URLs are the supported input. A proxy is optional and is passed to both Patchright and yt-dlp.
- If you are authorized to use an Instagram session, set the Apify environment secret
INSTAGRAM_COOKIESto a JSON, Netscape, or cookie-header value. The actor loads it into Patchright and yt-dlp without exposing it in the input or output. - Some fields are unavailable when Instagram does not publish them publicly.
- Private, deleted, age-restricted, or login-gated content may return an error record.
- Respect Instagram's terms, copyright rules, privacy requirements, and applicable law.
Integrations and exports
- Dataset exports - Download results as JSON, CSV, Excel, XML, or other supported formats.
- Webhooks - Trigger downstream workflows after a run or dataset update.
- Google Sheets - Send structured records to spreadsheet workflows.
- Make or Zapier - Connect completed runs to no-code automations.
- Apify API - Start runs and read dataset items from your own application.
Frequently Asked Questions
Can I process multiple URLs?
Yes. Add direct Instagram media links to urls.
Can I use an authorized Instagram session?
Yes, for content you are authorized to access. Set INSTAGRAM_COOKIES as an encrypted Apify environment secret. The value may be browser-exported JSON, Netscape format, or a name=value; name2=value2 header. Do not place credentials in README files, datasets, or public Actor inputs.
Can I download private Instagram content?
Only when you are authorized and Instagram permits that session to access it. The Actor does not bypass account permissions, and unsupported or login-gated content may still fail.
What happens when a URL fails?
The Actor pushes an error record containing the original URL, a short error message, the requested quality, and the collection timestamp. Other URLs in the same run can continue.
Which download method should I choose?
Use auto for normal runs. It tries the dedicated media downloader and falls back to the browser when Instagram changes or blocks a direct request. Use browser for browser-only access, or yt-dlp when you want the dedicated downloader to be required.
Can I run it on a schedule?
Yes. Create an Apify schedule and connect the resulting dataset to exports, webhooks, or an external API workflow.
Why did a video URL return metadata but no download?
Some Instagram /p/ URLs are image or carousel posts, and yt-dlp correctly reports that no video is available. In auto mode the actor then tries the browser-extracted media URL. If Instagram serves a login or restricted page, video formats are not exposed and the dataset receives an error record. Use a direct Reel/video URL or an authorized INSTAGRAM_COOKIES secret.
Is collecting public Instagram data legal?
Legal requirements depend on your location, purpose, and the data involved. You are responsible for following Instagram's terms, applicable copyright and privacy laws, and any required permissions.
Related Actors
No other Instagram Actors on the shahidirfan Apify profile were verified during this update. See the developer profile for current related Actors as they become available.
Support
For a failed run, include the input URL, run ID, error record, and approximate time of the run when opening an issue. Do not share private credentials or session data.
Legal Notice
This Actor is intended for legitimate collection of publicly available media and metadata. Users are responsible for using downloaded content lawfully and respecting Instagram's terms, copyright, privacy, and access controls.
