Instagram Video Downloader(Reels and Stories)
Pricing
from $1.00 / 1,000 results
Instagram Video Downloader(Reels and Stories)
Download Instagram videos, reels, and stories easily with our Apify Instagram Downloader. Save high-quality IG content in seconds. No login required. Fast, reliable, and easy to use!
Pricing
from $1.00 / 1,000 results
Rating
3.4
(8)
Developer
The Netaji
Maintained by CommunityActor stats
13
Bookmarked
368
Total users
35
Monthly active users
0.65 hours
Issues response
14 days ago
Last modified
Categories
Share
Instagram Video & Reel Saver
Download a public Instagram video or Reel as a permanent MP4 file. Give it a post URL, shortcode, or numeric media ID and get back a stored download link that doesn't expire — plus the post's like count, comment count, and post date. No login, no cookie, no session.
Instagram's own CDN links go dead in about 34 hours. Save the file once and the link stays good.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
codes | array | — | Required. Shortcodes, numeric media IDs, or full post/reel URLs. |
saveMedia | boolean | true | Downloads the video and stores it permanently. Turn off to get only Instagram's direct CDN URL instead — free, but it stops working in about 34 hours. |
quality | enum | best | 480, 720, 1080, or best. The closest available resolution is used when the exact one isn't offered, and the row reports what was actually served. |
{"codes": ["DDPp2UWzWEm", "https://www.instagram.com/reel/DDPp2UWzWEm/"],"saveMedia": true,"quality": "best"}
Shortcodes, media IDs, and full URLs all work in the same field, mixed freely. The shortcode is the segment after /p/ or /reel/.
Output
| Field | What it holds |
|---|---|
pk | Instagram media ID |
code | Shortcode |
media_type | 1 = photo, 2 = video/reel, 8 = carousel |
taken_at | When it was posted |
like_count | Likes |
comment_count | Comments |
width / height | Resolution of the video version actually served |
savedFile | Stored file: url, bytes, sizeMb, billedMb, contentType — present when saveMedia is on. billedMb is the whole megabytes the transfer was charged as. |
directUrl / directUrlExpiresAt | Instagram's own CDN link and its rough expiry — present only when saveMedia is off |
{"pk": "3412987456123456789","code": "DDPp2UWzWEm","media_type": 2,"taken_at": 1785312000,"like_count": 1842203,"comment_count": 12043,"width": 720,"height": 1280,"savedFile": {"url": "https://api.apify.com/v2/key-value-stores/.../records/DDPp2UWzWEm-1280p.mp4","bytes": 8421904,"sizeMb": 8.032,"billedMb": 9,"contentType": "video/mp4"}}
Questions
Why save the file instead of just using the CDN link?
Instagram's signed video URLs stop working roughly 34 hours after they're issued. If your workflow runs later than that — a scheduled job, a review queue, anything that isn't "download it right now" — the link is already dead. saveMedia on (the default) downloads the video once and gives you a link that keeps working. Turn it off only when you're consuming the file immediately.
What if the resolution I asked for isn't available?
Instagram doesn't offer every resolution for every post — most give you one or two. When your quality isn't one of them, the closest available is used instead of failing the item, and the run log states exactly what was served ("Closest available quality served: 720p (requested 1080p)"). width/height on the output row are always the resolution you actually got, never the one you asked for.
Why did a code return nothing? Four different reasons, and the log line says which:
- The post is private, deleted, or the code never existed — only public media can be fetched at all.
- It's a photo post with no video to download.
- Instagram's CDN refused the download outright.
- The CDN URL had already expired by the time the download ran.
A code that fails is skipped and not charged — it never becomes a dataset row.
Can I get a private account's video? No. Public media only. There's no login or cookie input, and there won't be one — a signed-in session is a banned or rate-limited account waiting to happen, and this Actor doesn't take that risk with your data.
How fast is a single URL? Seconds, not minutes. There's no batching delay or warm-up — one input downloads as soon as its media info and video transfer complete.
What does it cost? One charge per saved video, plus a small per-megabyte charge for the file itself, rounded up to the next whole MB. The per-MB part is what pays for the bandwidth: Instagram's CDN is reached directly where it can be, and through a paid proxy where it can't. A 2 MB Reel therefore costs meaningfully less than a 22 MB one. Failed or skipped inputs are never charged — no file, no megabytes.
Turning saveMedia off skips the transfer entirely, so you pay for the row and nothing else.
Does a run ever finish "successful" with nothing in it? No. If every input in a run fails, the run itself fails rather than completing with an empty dataset — you'll see it as a failed run, not a quiet zero.
Other Instagram Actors
| Actor | Use when |
|---|---|
| Instagram Story & Highlight Saver | You want an account's active stories and highlights, not a specific post |
| Instagram Post Scraper | You want engagement details without downloading the file |
| Instagram Profile Content Scraper | You need codes — an account's posts and reels, to feed in here |