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

391

Total users

38

Monthly active users

0.65 hours

Issues response

3 days ago

Last modified

Share

Instagram Video & Reel Saver

The Actor downloads a public Instagram post or Reel's video and stores it as a permanent MP4 file. A post URL, shortcode, or numeric media ID resolves to a stored download link that does not expire, together with the post's like count, comment count, and publication date. Only public media is fetched, and no Instagram session is used.

Instagram's signed CDN links expire after roughly 34 hours. Storing the file once produces a link that remains valid indefinitely.

Accepted input

FieldTypeDefaultDescription
codesarray of strings—Required. Shortcodes, numeric media IDs, or full post/reel URLs.
saveMediabooleantrueDownloads the video and stores it permanently. When disabled, only Instagram's direct CDN URL is returned; that link stops working after approximately 34 hours.
qualityenumbest480, 720, 1080, or best. The closest available resolution is used when the exact one is not offered, and the response reports what was actually served.
{
"codes": ["DDPp2UWzWEm", "https://www.instagram.com/reel/DDPp2UWzWEm/"],
"saveMedia": true,
"quality": "best"
}

Shortcodes, media IDs, and full URLs are accepted interchangeably in the same field. The shortcode is the segment following /p/ or /reel/ in a post URL.

Response fields

FieldContents
pkInstagram media ID
codeShortcode
media_type1 = photo, 2 = video/reel, 8 = carousel
taken_atPublication timestamp
like_countLikes
comment_countComments
width / heightResolution of the video version actually served
savedFileStored file: url, bytes, sizeMb, billedMb, contentType. Present when saveMedia is enabled. billedMb is the whole number of megabytes the transfer was billed as.
directUrl / directUrlExpiresAtInstagram's own CDN link and its approximate expiry. Present only when saveMedia is disabled.
{
"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"
}
}

Behaviour on partial results

Instagram does not offer every resolution for every post; most posts expose only one or two. When the requested quality is not among them, the closest available resolution is served instead of failing the item, and the run log states what was actually returned, for example Closest available quality served: 720p (requested 1080p). The width and height fields on the output row always describe the resolution actually served, never the one requested.

A code produces no record for one of four reasons, each identified in the run log: the post is private, deleted, or the identifier never existed; the post is a photo with no video attached; Instagram's CDN refused the download outright; or the CDN URL had already expired by the time the download ran. A code that fails in any of these ways is skipped rather than charged, and never becomes a dataset row.

If every input supplied to a run fails, the run itself fails rather than completing with an empty dataset.

Frequently asked questions

Why save the file instead of using the CDN link directly? Instagram's signed video URLs stop working roughly 34 hours after they are issued. A workflow that runs later than that, such as a scheduled job or a review queue, finds the link already dead. saveMedia, enabled by default, downloads the video once and produces a link that continues to work; disabling it is appropriate only when the file is consumed immediately.

What happens if the requested resolution is not available? The closest available resolution is used instead, and the run log states exactly what was served. width and height on the output row are always the resolution actually returned.

How fast does a single URL resolve? Within seconds. There is no batching delay or warm-up period; a single input downloads as soon as its media information and video transfer complete.

What determines the cost of a run? Each saved video incurs one charge, plus a small per-megabyte charge for the file itself, rounded up to the next whole megabyte. The per-megabyte charge covers bandwidth: Instagram's CDN is reached directly where possible, and through a paid proxy where direct access is not available, so a 2 MB Reel costs meaningfully less than a 22 MB one. Failed or skipped inputs are never charged, and disabling saveMedia skips the per-megabyte charge entirely.

Can a private account's video be downloaded? No. Only public media can be fetched. No login or cookie input exists, and none is planned; a signed-in session would risk the account being banned or rate-limited.

ActorPurpose
Instagram Story & Highlight SaverAn account's active stories and highlights, rather than a specific post
Instagram Post ScraperEngagement details without downloading the file
Instagram Profile Content ScraperCodes for an account's posts and reels, to supply here