Instagram Scraper & Reels Downloader avatar

Instagram Scraper & Reels Downloader

Pricing

from $0.72 / 1,000 results

Go to Apify Store
Instagram Scraper & Reels Downloader

Instagram Scraper & Reels Downloader

Scrape Instagram posts, Reels, profiles, hashtags, places and comments without login. Get captions, likes, plays, transcripts and video, audio and photo links, or download Reels in 1080p. Track accounts and pay only for new posts. Export to JSON, CSV, Excel or the API. From $0.72 per 1,000 results.

Pricing

from $0.72 / 1,000 results

Rating

0.0

(0)

Developer

Social Beast

Social Beast

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

What can Instagram Scraper & Reels Downloader do?

Instagram Scraper & Reels Downloader gets public Instagram data without an Instagram login: posts and Reels from a profile or hashtag, comments on a post, profile, hashtag and place details, and Reel downloads with transcripts. Add a link, an @username or a #hashtag, pick what to scrape, and you can get:

📦 What you can extract⚙️ Features & integrations

📷 Posts and carousels from profiles and hashtags
🎞️ Reels with plays, video and audio links
💬 Comments from posts or Reels, up to 10,000 each
👤 Profiles: bio, followers, related accounts
#️⃣ Hashtags: Instagram's summary, related searches, top posts
📍 Places: coordinates, address, category
💾 Downloads: Reels in up to 1080p, and photos, saved to your storage
📝 Transcripts of what's said in Reels

🔓 No Instagram login, so no account to get banned
🔎 Keyword search on Google for profiles and hashtags
🔁 Only new posts since the last run, for monitoring
📅 Date filters and scheduling for recent content
⬇️ Export data to JSON, CSV, Excel or HTML
🦾 API access, webhooks, Node.js & Python clients
📈 Spot viral content and creators by plays, likes and comments

Use it for influencer vetting, competitor monitoring, trend tracking, brand monitoring, local business discovery, content analysis or downloading Reels, all from one tool.

What data can I scrape from Instagram?

You get the content, engagement and context of any public post, Reel, profile, hashtag or place:

  • Instagram posts and Reels: what was posted and how it did. Captions, hashtags, mentions, video, audio and image links, every carousel slide, likes, comments, plays, views, length, music, tagged people, co-authors and location.

  • Instagram comments: what people are saying. Text, author, likes, time, and links to the comment and its post.

  • Instagram profiles: who's behind the account. Bio, name, links, follower and following counts, verified and business status, highlights, latest posts, and about 50 related accounts.

  • Instagram hashtags: what's around a topic. Instagram's own summary of the hashtag, related searches and its top posts.

  • Instagram places: where it happened. Name, category, address, coordinates, phone, website and post count.

  • Downloads and transcripts: keep the files and the words. Each post's video or photos saved to your Apify storage, and each Reel's words with timestamps.

Start from a list of links (posts, Reels, profiles, hashtags or places), or from @usernames and #hashtags.

How much will scraping Instagram cost?

You pay per result: one post, Reel or comment is one result. On the Free plan it costs $1.08 per 1,000 results. Paid plans are cheaper: $0.96 on Starter, $0.84 on Scale and $0.72 on Business. A Basic post or a comment costs less than half of what the most used Instagram scraper charges; a post with its newest comments, or a details row, about a sixth less. Failed links and duplicates are free.

A few things count as more than one result:

You getResultsStarter price
A post with its newest comments (Detail level Full)2$1.92 per 1,000
A profile, hashtag or place details row2$1.92 per 1,000
A check that found nothing new (Only new posts)2$1.92 per 1,000
A post downloaded with its files, per started 50 MB (up to 300 MB)6$0.0058 each
A video saved in 1080p, on top6$0.0058 each
A transcript minute4$0.0038 a minute
A Google results page read for a keyword search5$0.0048 a page

Each run start costs $0.003 per GB of memory the run gets: $0.003 for most runs (256 MB to 1 GB), and $0.006 to $0.012 for big runs that get 2 to 4 GB to go faster. The Free plan gets up to 3,000 results, 120 transcript minutes and 300 MB of downloads a month; any paid Apify plan removes these limits. Check the Pricing tab for every plan.

How do I use Instagram Scraper & Reels Downloader?

It's easy to start, even if you've never scraped a website before:

  1. Create a free Apify account.
  2. Open Instagram Scraper & Reels Downloader in Apify Console.
  3. Pick What to scrape: posts, Reels, comments, details or downloads.
  4. Paste one or more Instagram links, @usernames or #hashtags.
  5. Set how many results you want per input under Results per input.
  6. Optional: open More options for the Detail level (Full adds newest comments) or 1080p downloads.
  7. Click Save & Start and wait for the data.
  8. Download your dataset in JSON, CSV, Excel or HTML, or get it through the Apify API.

⬇️ Input

The form has four main fields. Everything else is folded under More options, Only new posts and Paid add-on.

  • What to scrape — posts, Reels, comments, details or downloads
  • Instagram URLs, @usernames or #hashtags — one per line; share links and links without https:// work too
  • Results per input — how many posts or comments per input
  • Only posts newer than (optional) — a date or a period like 7 days (UTC)

Instagram Scraper input: Instagram links, @usernames or #hashtags, what to scrape and results per input

The input type drives what's returned:

Paste thisAnd you can get
Post or Reel linkThat post, its comments, or its download
Profile link or @usernameIts posts, Reels, details, or Reel downloads
Hashtag link or #hashtagIts top posts or Reels, or hashtag details
Place linkPlace details
A keyword (Search by keyword)Profiles or hashtags Google finds for it, then their posts or details

⬆️ Output

Instagram Scraper output table: posts and Reels with captions, likes, comments, plays and video links

Results land in a dataset in the Storage tab. View them as a table, download them in JSON, CSV, Excel or HTML, or get them through the API. Each kind of data has its own fields; samples below are from real runs.

📸 Instagram post scraper: posts and carousels

Posts and carousels from a profile, hashtag or post link.

Supported inputs:

  • https://www.instagram.com/natgeo/ or @natgeo (profile)
  • https://www.instagram.com/p/DeSx5enlwm_/ (post)
  • https://www.instagram.com/explore/tags/travel/ or #travel (hashtag)

Posts data sample

{
"inputUrl": "@natgeo",
"id": "4004482472851474879",
"type": "Sidecar",
"shortCode": "DeSx5enlwm_",
"caption": "Presented by @Rolex. Vultures are part of nature’s cleanup crew, devouring dead animals and preventing the spread of diseases. But now these flying janitors ...",
"hashtags": ["Rolex", "AfricaEarthsWildHome", "PerpetualPlanet"],
"mentions": ["Rolex", "hammond_robin"],
"url": "https://www.instagram.com/p/DeSx5enlwm_/",
"commentsCount": 84,
"likesCount": 42162,
"displayUrl": "https://scontent-iad6-1.cdninstagram.com/.../6567256986_n.jpg",
"images": [
"https://scontent-iad6-1.cdninstagram.com/.../6567256986_n.jpg",
"https://scontent-iad6-1.cdninstagram.com/.../4739047956_n.jpg"
],
"childPosts": [
{
"id": "4004482402856268460",
"type": "Image",
"displayUrl": "https://scontent-iad6-1.cdninstagram.com/.../6567256986_n.jpg",
"dimensionsWidth": 1440,
"dimensionsHeight": 1920
}
],
"timestamp": "2026-10-10T19:00:00.000Z",
"ownerFullName": "National Geographic",
"ownerUsername": "natgeo",
"ownerId": "787132",
"isPinned": false
}

🎞️ Instagram Reels scraper

Reels from a profile, its Reels tab, a hashtag or a Reel link.

Supported inputs:

  • https://www.instagram.com/natgeo/ (profile)
  • https://www.instagram.com/natgeo/reels/ (Reels tab)
  • https://www.instagram.com/reel/DeUKkHjgMNR/ (single Reel)
  • https://www.instagram.com/explore/tags/travel/ (hashtag)

Reels data sample (Detail level Full, view counts on)

{
"inputUrl": "@natgeo",
"id": "4004872431117321041",
"type": "Video",
"productType": "clips",
"shortCode": "DeUKkHjgMNR",
"caption": "Presented by @Rolex. Pangolins are notoriously difficult to rehabilitate and rewild because they need to learn where to forage for food. During their daily w...",
"url": "https://www.instagram.com/p/DeUKkHjgMNR/",
"commentsCount": 353,
"latestComments": [
{
"id": "17887833801622715",
"text": "Pangolin",
"ownerUsername": "example_user",
"timestamp": "2026-10-10T22:03:18.000Z",
"likesCount": 0
}
],
"likesCount": 126199,
"videoPlayCount": 2439975,
"videoViewCount": 917201,
"videoDuration": 14.933333,
"videoUrl": "https://scontent-iad3-1.cdninstagram.com/.../Zux6SPv1T_20.mp4",
"audioUrl": "https://scontent-iad3-1.cdninstagram.com/.../LZ8EMhj18eu0.mp4",
"displayUrl": "https://scontent-iad3-1.cdninstagram.com/.../1460288787_n.jpg",
"musicInfo": {
"artist_name": "natgeo",
"song_name": "Original audio",
"uses_original_audio": true
},
"topics": ["wildlife encounter", "nature photography", "forest floor"],
"timestamp": "2026-10-10T13:14:44.000Z",
"ownerUsername": "natgeo",
"linksExpireAt": "2026-10-12T08:23:29.000Z"
}

💬 Instagram comments scraper

Comments from a post or Reel, or from the latest posts of a profile or hashtag.

Supported inputs:

  • https://www.instagram.com/p/DeSNiSGgoI-/ (post)
  • https://www.instagram.com/reel/DeUKkHjgMNR/ (Reel)
  • @natgeo (the comments on its latest posts)

Comments data sample

{
"postUrl": "https://www.instagram.com/p/DeSNiSGgoI-/",
"commentUrl": "https://www.instagram.com/p/DeSNiSGgoI-/c/18096108170555915/",
"id": "18096108170555915",
"text": "😍🌳",
"ownerUsername": "example_user",
"timestamp": "2026-10-10T22:09:20.000Z",
"likesCount": 0,
"repliesCount": null
}

👤 Instagram profile scraper

Profile metadata: bio, followers, post count, verified status and related accounts.

Supported inputs:

  • https://www.instagram.com/natgeo/ or @natgeo (profile)

Profile data sample (Detail level Full)

{
"inputUrl": "@natgeo",
"id": "787132",
"username": "natgeo",
"url": "https://www.instagram.com/natgeo/",
"fullName": "National Geographic",
"biography": "Step into wonder and find your inner explorer with National Geographic 🌎",
"externalUrl": "http://visitstore.bio/natgeo",
"followersCount": 268415564,
"followsCount": 194,
"postsCount": 32063,
"isBusinessAccount": true,
"private": false,
"verified": true,
"profilePicUrlHD": "https://scontent-iad3-1.cdninstagram.com/.../0972105113_n.jpg",
"relatedProfiles": [
{ "username": "animalplanet", "full_name": "Animal Planet", "is_verified": true },
{ "username": "pbsnature", "full_name": "Nature", "is_verified": true }
],
"latestPosts": [
{
"shortCode": "DdG4RIxIPyf",
"type": "Video",
"timestamp": "2026-09-10T13:00:14.000Z",
"likesCount": 79371,
"commentsCount": 570
}
]
}

#️⃣ Instagram hashtag scraper

Hashtag metadata: Instagram's summary, related searches and top posts.

Supported inputs:

  • https://www.instagram.com/explore/tags/travel/ or #travel (hashtag)

Hashtag details sample

{
"inputUrl": "#travel",
"name": "travel",
"url": "https://www.instagram.com/explore/tags/travel/",
"description": "The UK Foreign Office currently advises against all but essential travel to parts of Saudi Arabia including Riyadh, while the UAE and Qatar have no...",
"relatedSearches": ["transfer travel", "time travel real", "november travel destinations"],
"topPosts": [
{
"shortCode": "DTfS7SMEk8B",
"type": "Video",
"videoPlayCount": 30210139,
"timestamp": "2026-01-14T11:13:01.000Z"
}
]
}

📍 Instagram location scraper: place details

Place metadata: name, category, coordinates and post count.

Supported inputs:

  • https://www.instagram.com/explore/locations/213385402/london-united-kingdom/ (place)

Place details sample

{
"inputUrl": "https://www.instagram.com/explore/locations/213385402/london-united-kingdom/",
"id": "213385402",
"name": "London, United Kingdom",
"category": "City",
"lat": 51.5141,
"lng": -0.1094,
"postsCount": 106858921
}

💾 Instagram Reels downloader

Each post's video or photos saved to your Apify storage, with links that keep working. One download covers up to 50 MB of a post's files (almost every Reel); each further started 50 MB is one more, up to 300 MB a post. Videos come in 720p (one MP4 with sound that plays everywhere), or in 1080p with Download quality: 1080p (Instagram's best: the full-quality VP9 video joined with its sound) for one download more, or Audio only (just the sound, an .m4a file). Each video keeps its cover picture too, free. You pay only for what is saved: a 1080p file that can't be made comes in 720p, without the 1080p charge.

Supported inputs:

  • https://www.instagram.com/reel/DdG4RIxIPyf/ (Reel or post, with or without ?igsh=...)
  • https://www.instagram.com/share/reel/_69O6RoGd (a link from the app's Share button)
  • https://www.instagram.com/natgeo/reels/ (a profile's Reels)

Downloads data sample

{
"addOn": "savedFiles",
"addOnFor": "https://www.instagram.com/p/Dd7b11dxi5Z/",
"shortCode": "Dd7b11dxi5Z",
"downloadedVideo": "https://api.apify.com/v2/key-value-stores/.../records/media-kOEAhsXb1rkmAXm-0-video.mp4?signature=...",
"downloadedCover": "https://api.apify.com/v2/key-value-stores/.../records/media-kOEAhsXb1rkmAXm-0-cover.jpg?signature=...",
"downloadCharges": 1,
"savedFiles": [
{
"index": 0,
"role": "video",
"bytes": 6475431,
"contentType": "video/mp4",
"url": "https://api.apify.com/v2/key-value-stores/.../records/media-kOEAhsXb1rkmAXm-0-video.mp4?signature=..."
},
{
"index": 0,
"role": "cover",
"bytes": 128228,
"contentType": "image/jpeg",
"url": "https://api.apify.com/v2/key-value-stores/.../records/media-kOEAhsXb1rkmAXm-0-cover.jpg?signature=..."
}
]
}

🔌 Use it as a Reel downloader API

One HTTP call downloads a list of Reels and answers with every link's result: run-sync waits for the run (up to 5 minutes) and returns its OUTPUT, whose downloads has one entry per link (match them by inputUrl): the saved file, its cover, size, quality and charges, or why it failed. Failed links are free.

curl -X POST "https://api.apify.com/v2/acts/socialbeast~instagram-scraper-reels-downloader/run-sync?token=<YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://www.instagram.com/reel/Dd7b11dxi5Z/?igsh=abc123", "https://www.instagram.com/reel/DzzzzzzzzzZ/"], "resultsType": "downloads"}'
{
"downloads": [
{
"inputUrl": "https://www.instagram.com/reel/Dd7b11dxi5Z/?igsh=abc123",
"shortCode": "Dd7b11dxi5Z",
"url": "https://api.apify.com/v2/key-value-stores/.../records/media-kOEAhsXb1rkmAXm-0-video.mp4?signature=...",
"quality": "720p",
"megabytes": 6.18,
"files": [{ "role": "video", "url": "https://api.apify.com/v2/key-value-stores/.../records/media-kOEAhsXb1rkmAXm-0-video.mp4?signature=..." }],
"cover": "https://api.apify.com/v2/key-value-stores/.../records/media-kOEAhsXb1rkmAXm-0-cover.jpg?signature=...",
"charges": 1,
"error": null
},
{
"inputUrl": "https://www.instagram.com/reel/DzzzzzzzzzZ/",
"error": "NOT_FOUND",
"message": "The post does not exist, was deleted, or is hidden from logged-out visitors."
}
]
}
  • Many links in one call cost one start fee: send your queue in batches rather than one link per call.
  • Bigger batches (more than fit in 5 minutes): start the run and get a webhook when it ends.
  • The links keep working as long as Apify keeps the run's storage (your plan's data retention); copy the files if you need them longer.
  • Serve files from your own storage: Apify bills your account for every GB sent out of its storage, so sending your visitors to these links costs you per download. Copy each file once to your own storage or CDN. If a link that expires in about a day is enough, Posts mode gives Instagram's own video link (videoUrl) at a normal result's price.
  • Speed: a Reel is saved a few seconds after the run starts (a 92 MB Reel in ~7 s, a 141 MB 1080p one in ~6 s on Apify). 159 Reels from 3 accounts took 46 s in one run (1.8 GB saved, no slowdown from Instagram). Stories and highlights need a login and aren't supported.

📝 Instagram Reels transcripts

What's said in each Reel or video, with its language and timed parts. Turn on $ Include transcript.

Transcripts data sample

{
"addOn": "transcript",
"addOnFor": "https://www.instagram.com/reel/Dd7b11dxi5Z/",
"transcript": "When asked why taxpayers …",
"transcriptLanguage": "en",
"transcriptSegments": [{ "start": 0, "end": 3.4, "text": "When asked why taxpayers …" }],
"transcriptMinutes": 1
}

Notes and exceptions

  • No login, no private data. Stories, comment replies, tagged posts, share counts and a business's address only show to logged-in users, so they're not included.
  • Private accounts return their details, but not their posts.
  • Places: Instagram mostly shows a place's posts only to logged-in users right now; its details row still works.
  • Failed links, duplicates and filtered posts are free, and each gets a row saying why.
  • inputUrl is exactly what you entered, so you can match every row to your input.
  • The date filter skips old pinned posts too, and in Comments mode it skips older comments.
  • File links from Instagram expire after a day or two (linksExpireAt); pick Downloads to keep the files.
  • A download over 300 MB (a 1080p one tries 720p first) is charged as a normal post and keeps its direct links.
  • Play counts cover a profile's latest ~190 Reels.
  • Dates use UTC.

What can you do with data after scraping Instagram?

Here are a few of the most common ways people use public Instagram data:

🎯 Influencer vetting and partnership research

Recipe:

  1. Find creators in your niche. Run posts on a hashtag like #fitness to get recent posts with creator usernames and engagement.
  2. Profile each candidate. Run details on their profiles for followers, bio, post count and related accounts.
  3. Score real engagement. Run posts on their profiles and compare likes, comments and plays with their follower counts.

🔥 Spot viral content and creators

Recipe:

  1. See what's posted under a tag. Run posts or reels on a hashtag like #cleanbeauty.
  2. Find related tags. Run details on the hashtag for Instagram's summary and related searches.
  3. Keep only recent posts with Only posts newer than, e.g. 14 days.

💯 Track competitors and online conversations

Recipe:

  1. Track their accounts. Run posts on competitor profiles with Only new posts since the last run on.
  2. Schedule it every hour or every morning; you pay only for new posts.
  3. Read reactions. Run comments on their best posts.

🎬 Download and transcribe Reels

Recipe:

  1. Paste a profile's Reels tab like instagram.com/natgeo/reels/.
  2. Pick Downloads and turn on Include transcript.
  3. Open the Add-ons view for each Reel's saved file and transcript.

🏙️ Local business discovery

Recipe:

  1. Collect place links from posts' locationId (instagram.com/explore/locations/<locationId>/).
  2. Run details on the places for their name, category, address and coordinates.

Send results to Google Sheets, Slack, a CRM or a webhook from the Integrations tab.

❓ Frequently Asked Questions

Do I need an Instagram account?

No. You never connect an account or paste cookies, so none of your accounts can be banned.

Is this an Instagram API?

It works like one for public data: call it through the Apify API from any language and get JSON back, with no Instagram account, Business account or Meta app approval.

Can I scrape multiple content types in a single run?

No. Each run returns one kind, set by What to scrape. To get posts with their newest comments, use Detail level Full.

How many results can I scrape?

Up to 10,000 posts per profile, hashtag or place, 10,000 comments per post and 50,000 inputs per run. The Free plan gets 50 comments a post.

Why don't I get all of a post's comments?

commentsCount includes replies and comments Instagram hides from logged-out visitors, so it can be higher than what you get. Comments mode itself has no 15-comment cap.

Can I scrape private Instagram profiles?

No. A private account returns its details, but not its posts.

Why don't the numbers match what I see on Instagram?

Counts change all the time, the app rounds them, and a logged-in view can include private metrics. Open the post in a private window to see what the Actor sees.

How do I exclude pinned posts?

Turn on Skip pinned posts. In Reels mode pinned Reels are left out already, unless you set it to off. Every post from a profile has isPinned either way.

How do I scrape only recent posts?

Set Only posts newer than to a date like 2026-09-01 or a period like 7 days. Older posts, pinned ones too, are skipped and cost nothing. In Comments mode, older comments are skipped too.

Can I get comment replies, stories or followers lists?

No. Instagram shows those only to logged-in users.

Why is likesCount sometimes -1?

The owner hid the like count. -1 keeps it apart from a post with no likes.

How do I download Instagram Reels in bulk?

Paste the Reel links (up to 50,000) or a profile's Reels tab and pick Downloads. Each Reel is saved to your storage: one download per started 50 MB, and almost every Reel is one.

Can I search Instagram by keyword?

Yes. Open Search by keyword (Google), enter keywords (e.g. nike, adidas) and pick Profiles or Hashtags. Instagram's own search needs a login, so the keywords are searched on Google, and the profiles or hashtags it finds are scraped as What to scrape says: their posts, Reels or details. Each row has the keyword in searchTerm.

Each Google results page read is 5 results ($0.0048 on Starter); a page Google couldn't give is free. Names and brands work best (nike finds @nike, @nikerunning, @nikewomen, @nikefootball). Generic phrases find fewer, less related accounts, because Google matches any Instagram page with the words. A search starts with the keyword itself, at no extra cost: as a hashtag, or for a one-word profile search, the account of that name. Places can't be searched by name: Google no longer shows Instagram place links, so use place links instead.

Can I keep monitoring accounts without paying twice?

Yes. Turn on Only new posts since the last run and schedule the run. Each run returns only new posts; an account with nothing new costs 2 results.

It gets a free row with errorCode and errorDescription. Rows with retryable: true usually work when run again later.

Can I switch from another Instagram scraper without changing my code?

Yes. It accepts the same input fields (directUrls, username, hashtags, search, resultsType, resultsLimit, onlyPostsNewerThan) and returns the same field names.

Can I download Reels in 1080p?

Yes. Set Download quality to 1080p: each Reel's full-quality video is joined with its sound into one MP4, at the same price. It's VP9 video, so pick 720p if you edit in QuickTime or iMovie.

Why aren't the rows in date order?

Each post is written as soon as it's ready, so rows come roughly newest first. Sort by timestamp for exact order.

The Actor only reads public data anyone can see without an account. Respect creators' copyright, Instagram's terms and the privacy laws that apply to you.

Can I use it with the Apify API?

Yes. The API tab has ready-to-copy examples for Node.js, Python, the CLI and HTTP.

Can I track online conversations about a brand or topic?

Yes. Run comments on the posts or Reels you care about, or on a hashtag's latest posts, and schedule it to keep up with new comments.

Instagram Scraper not working?

Open an issue on the Issues tab with your run's link, and we'll fix it.