
Instagram Downloader
hipersoft/instagram-downloader
Download Instagram photos, videos, reels, IGTV and carousels by URL. Paste post or reel links and get ready-to-use download links plus the direct media URLs, a poster thumbnail, media type and media count — one row per URL as JSON, CSV or Excel. Cheap, bulk and built for creators, marketers and n8n.
Total users
5Monthly users
0Total runs
65Per media downloaded
$0.004Last rebuilt
Oct 26, 2026Overview
Download Instagram photos, videos, reels, IGTV and carousel posts in bulk. Paste one or more Instagram links and get a ready-to-use download link for every piece of media, plus the direct CDN media URL, a poster thumbnail, the media type and how many items the post contains — one tidy row per URL, ready to export as JSON, CSV or Excel.
This is the cheap, no-nonsense way to save Instagram media at scale for content creators, editors, marketers, researchers, social-media managers and anyone building an automated media pipeline.
Why use this Instagram downloader
- 🖼️ Photos, videos, reels, IGTV & carousels — one tool for every kind of public Instagram post.
- 🔗 Ready download links + direct media URLs — each result gives you a reliable download link and the direct media URL, so you can grab the file however you like.
- 🎠 Full carousels — multi-image and multi-video carousel posts come back with every slide, not just the first.
- 🖼️ Poster thumbnail — every post includes a thumbnail image URL for quick previews and galleries.
- 🏷️ Clean structure — media type (image / video / carousel), media count, shortcode and a canonical post URL on every row.
- 📦 Bulk in one run — drop in a whole list of URLs and get one clean record per post.
- 💸 Cheapest per-item pricing — pay only for the posts you actually process, with volume discounts as you scale.
- 🧩 Built for automation — feed URLs from a spreadsheet, Make or n8n and get structured records with direct download links back.
- 📤 Export anywhere — JSON, CSV or Excel, or pull straight from the dataset into your own tools.
What you get
Each Instagram URL is one dataset record like this:
{
"source": "instagram",
"inputUrl": "https://www.instagram.com/p/BsOGulcndj-/",
"shortcode": "BsOGulcndj-",
"url": "https://www.instagram.com/p/BsOGulcndj-/",
"mediaType": "image",
"downloadUrls": [
"https://.../download-link-for-the-media"
],
"directUrls": [
"https://.../direct-media-file.jpg"
],
"thumbnailUrl": "https://.../thumbnail.jpg",
"mediaCount": 1,
"status": "ready"
}
For a reel or video post, mediaType is video and the links point to an MP4. For a carousel, mediaType is carousel and downloadUrls / directUrls contain one entry per slide, with mediaCount telling you how many.
Input
Give the downloader a list of Instagram URLs. That's it.
{
"postUrls": [
"https://www.instagram.com/p/BsOGulcndj-/",
"https://www.instagram.com/reel/DPFAEX3jLzJ/"
],
"maxItems": 0
}
Input options
| Field | Type | Description |
|---|---|---|
postUrls |
array | One or more Instagram post, reel, IGTV or photo URLs. Plain strings or { "url": "..." } objects both work. |
maxItems |
integer | Maximum number of URLs to process. 0 means no limit — process everything you provide. |
proxyConfiguration |
object | Optional. Not required — leave it off to run on a direct connection. |
Supported link formats
All of these work, with or without www and with or without a query string:
https://www.instagram.com/p/{shortcode}/— photo and carousel postshttps://www.instagram.com/reel/{shortcode}/and/reels/{shortcode}/— reelshttps://www.instagram.com/tv/{shortcode}/— IGTVhttps://instagr.am/p/{shortcode}/— short domain
Output
Every run writes a dataset with one row per URL. Use the Overview table in the app, or export to JSON, CSV or Excel from the Storage tab. Key fields:
| Field | Description |
|---|---|
shortcode |
The post's Instagram shortcode. |
url |
The canonical https://www.instagram.com/p/{shortcode}/ link. |
mediaType |
image, video or carousel. |
downloadUrls |
Ready-to-use download links (one per media item). |
directUrls |
The direct media file URLs (one per media item). |
thumbnailUrl |
Poster thumbnail for the post. |
mediaCount |
How many media items the post contains. |
status |
ready when media was found, failed when it could not be resolved. |
Every URL always produces exactly one record — even when a post can't be resolved — so your output stays aligned with your input list.
Common use cases
- 📥 Back up your own content — archive your photos, reels and carousels in full resolution.
- 🎬 Content repurposing — pull reels and videos to re-edit or reshare across platforms.
- 📊 Research & analysis — collect media at scale for datasets, moderation or trend studies.
- 🗂️ Media libraries — build a searchable library of posts with thumbnails and direct links.
- 🤖 Automated pipelines — wire it into Make, n8n or your own scripts and download in bulk.
Tips
- Provide clean public post URLs. Private, deleted or story-only URLs may return
status: "failed". - Download links are time-limited — fetch the files soon after the run.
- For very large lists, set
maxItemsto cap a run, or split your URLs across runs.
FAQ
Which posts can I download? Public photos, videos, reels, IGTV and carousels. Private or removed posts can't be retrieved and come back as status: "failed".
Do carousels return every image? Yes — downloadUrls and directUrls contain one entry per slide, and mediaCount tells you how many.
Do I need a proxy? No. The downloader runs fine on a direct connection. A proxy option is available if you specifically want one.
What formats can I export? JSON, CSV or Excel — or read the dataset directly through the API.
How much does it cost? You pay a small, flat price per URL processed, with automatic volume discounts as you scale — one of the cheapest ways to download Instagram media in bulk.
Input
| Field | Type | Description |
|---|---|---|
postUrls requiredInstagram URLs | array | One or more Instagram post, reel, IGTV or photo URLs to download. Accepts every link form: instagram.com/p/{shortcode}/, /reel/{shortcode}/, /reels/{shortcode}/, /tv/{shortcode}/ and instagr.am/p/... — with or without www and with or without a query string. Yo |
maxItemsMax items | integer | Maximum number of URLs to process (0 = no limit; process every URL you provide). Default: 0 |
proxyConfigurationProxy (optional) | object | Optional proxy. Not required — leave off to run on a direct connection. Enable only if you specifically want requests routed through a proxy. |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~instagram-downloader/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"postUrls": [
"https://www.instagram.com/p/BsOGulcndj-/",
"https://www.instagram.com/reel/DPFAEX3jLzJ/"
]
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/instagram-downloader").call(run_input={
"postUrls": [
"https://www.instagram.com/p/BsOGulcndj-/",
"https://www.instagram.com/reel/DPFAEX3jLzJ/"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/instagram-downloader').call({
"postUrls": [
"https://www.instagram.com/p/BsOGulcndj-/",
"https://www.instagram.com/reel/DPFAEX3jLzJ/"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Media downloaded Charged once per Instagram URL processed — you get the ready download links, direct media URLs, thumbnail and metadata for that post. | $0.004 | $0.002 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Carousell Scraper
Scrape Carousell search listings: title, price, condition, location, seller, photo and URL. Requires your own Carousell app token.
242 runs · 2 users · $0.003 / listing scrapedGoogle Flights Scraper
Scrape flight options from Google Flights by route and date: airline, flight number, departure and arrival times, duration, stops, layovers and price. One-way or round-trip, any cabin and currency. For travel and price monitoring.
216 runs · 4 users · $0.004 / flight scrapedPinterest Scraper
Search Pinterest and scrape pins (title, description, destination link, image, pinner, board, saves), boards and users. Fast. For visual research, e-commerce, trend and marketing analysis.
151 runs · 2 users · $0.0034 / item scrapedGoogle Trends Scraper
Scrape Google Trends for any keyword: interest over time, related and rising queries, and interest by region. Per country and timeframe. For SEO, market and trend research. No setup.
139 runs · 6 users · $0.001 / keyword scrapedAliExpress Product Search Scraper
Search AliExpress by keyword and export one clean row per product — title, sale price, original price, image and product URL. Export to JSON, CSV or Excel.
135 runs · 3 users · $0.003 / product scrapedGoogle Maps Scraper
Search Google Maps and scrape places: name, category, full address, city, coordinates, rating, phone, website, Place ID and map link. Fast browser-free via Google's internal endpoint, no setup. For local lead generation and market research.
130 runs · 2 users · $0.005 / place scrapedSend the site and the fields. We build it and you get it first.