Instagram Video Downloader(Reels and Stories) avatar

Instagram Video Downloader(Reels and Stories)

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Instagram Video Downloader(Reels and Stories)

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

The Netaji

Maintained by Community

Actor stats

13

Bookmarked

368

Total users

35

Monthly active users

0.65 hours

Issues response

14 days ago

Last modified

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

FieldTypeDefaultWhat it does
codesarrayRequired. Shortcodes, numeric media IDs, or full post/reel URLs.
saveMediabooleantrueDownloads 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.
qualityenumbest480, 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

FieldWhat it holds
pkInstagram media ID
codeShortcode
media_type1 = photo, 2 = video/reel, 8 = carousel
taken_atWhen it was posted
like_countLikes
comment_countComments
width / heightResolution of the video version actually served
savedFileStored file: url, bytes, sizeMb, billedMb, contentType — present when saveMedia is on. billedMb is the whole megabytes the transfer was charged as.
directUrl / directUrlExpiresAtInstagram'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

ActorUse when
Instagram Story & Highlight SaverYou want an account's active stories and highlights, not a specific post
Instagram Post ScraperYou want engagement details without downloading the file
Instagram Profile Content ScraperYou need codes — an account's posts and reels, to feed in here