Instagram Scraper| Posts & Comments & Reels & Details avatar

Instagram Scraper| Posts & Comments & Reels & Details

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Instagram Scraper| Posts & Comments & Reels & Details

Instagram Scraper| Posts & Comments & Reels & Details

Scrape Instagram posts, reels, comments, profiles, hashtags and places โ€” no login, no cookies, no account at risk. Get every post with its comments in one run, reel play counts included. Drop-in compatible with the official Instagram Scraper. Errors are never charged.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Amr Abdo

Amr Abdo

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Instagram Scraper

Instagram Scraper gets public Instagram data without an account: posts, reels, every public comment, and profile, hashtag and place details. Paste Instagram URLs, usernames or search terms. You get captions, likes, comment counts, video play counts, video URLs, carousel images, tagged users, co-authors, sponsors, music and locations, exported as JSON, CSV or Excel, or through the Apify API.

  • ๐Ÿ”“ No login, no cookies, no account at risk. It reads Instagram the way a logged-out visitor sees it, so no account can be banned.
  • ๐Ÿ’ฌ Posts and their comments in one run. Set Comments per post and each post arrives with its comments inside it. You don't need a second scraper or a dataset join.
  • ๐ŸŽฌ Real reel play counts. Video posts carry videoPlayCount and videoDuration, even when you scrape a profile's regular feed.
  • ๐Ÿงฉ Drop-in replacement for the official Instagram Scraper. The input and output fields are the same (directUrls, resultsType, shortCode, likesCount, latestComments, childPosts, โ€ฆ), so existing spreadsheets, Zaps and code keep working.
  • ๐ŸŽฏ You pay only for what you asked for. Errors, retries and blocked inputs are free, and Only posts newer than stops the scrape at the first older post instead of charging you for posts you filtered out.
  • ๐Ÿ› ๏ธ Self-repairing. When Instagram changes its internal queries, the scraper re-learns them during the run instead of failing.
  • โšก Fast and light. It uses plain HTTP with no browser, so runs finish quickly on 512 MB of memory.
  • โ™ป๏ธ Safe under migrations. If Apify moves your run to another server, the run continues where it stopped and nothing is delivered or charged twice.

What data can you extract from Instagram?

Posts & reelsCommentsProfilesHashtags & places
Caption, hashtags, mentionsComment textUsername, full name, bioHashtag size (e.g. 385M posts)
Likes, comments countAuthor username & pictureFollowers, following, posts countRelated hashtags / searches
Video play count & durationComment likesVerified, private accountPlace name, category, address
Image, video and carousel URLsTimestampWebsite linkCoordinates, post count
Date, location, tagged usersDirect comment URLProfile picture (HD)Top and recent posts
Co-authors, sponsors, music, pinnedPost URLLatest posts

Which Instagram URLs can I scrape?

Paste thisContent to scrapeYou get
Profile: instagram.com/natgeo or just natgeoPostsThe profile's posts, newest first, with play counts joined in for videos
ReelsThe profile's reels with play counts, captions, dates and video URLs
DetailsBio, followers, following, posts count, links, verified/private, latest posts
Post or reel: /p/โ€ฆ, /reel/โ€ฆPosts / Reels / DetailsThe full post with its first comments
CommentsEvery public top-level comment
Hashtag: /explore/tags/crossfit/Posts / ReelsInstagram's top reels for the hashtag, each completed with date, likes and comment count
DetailsSize, description, 50 related searches, top posts
Place: /explore/locations/7538318/Posts / ReelsThe place's recent and top posts
DetailsName, category, coordinates, address, post count, top posts

Search instead of URLs: enter terms like travel, crossfit and choose one of two search types:

  • Hashtags returns the term plus the related searches Instagram suggests.
  • Profiles returns the exact account plus the creators of the top reels for the term.

Each match is then scraped with the Content to scrape you chose.

How to scrape Instagram posts and comments

  1. Click Try for free and sign in to Apify. The free plan includes monthly credit.
  2. Paste one or more Instagram profile, post, hashtag or place URLs into Instagram URLs.
  3. Choose Content to scrape: Posts, Reels, Comments or Details.
  4. Optionally set Comments per post to get comments together with each post, and Only posts newer than to get recent posts only.
  5. Click Start, then download the results as JSON, CSV, Excel or HTML, or send them to Google Sheets.

How much does it cost to scrape Instagram?

You pay per result, and higher Apify plans get lower prices. One result is one post, reel, comment, profile, hashtag or place, and that includes each comment nested inside a post through Comments per post. There is no start fee and no separate charge for proxies or compute.

Apify planFreeStarterScaleBusiness
Price per 1,000 results$2.70$2.30$1.90$1.50
Example (Starter plan)ResultsPrice
1,000 posts from a few profiles1,000$2.30
100 posts with 20 comments each100 + 2,000$4.83
Details of 500 profiles500$1.15

Apify's free monthly credit covers about 1,800 results. Rows for inputs that could not be scraped are free. If you set a spending limit, the run stops cleanly and keeps everything it collected up to that point.

The first ~15 comments that Instagram includes with a single post URL are part of that post. They are not charged separately unless you ask for comments with Comments per post.

Input example

{
"directUrls": ["https://www.instagram.com/natgeo/"],
"resultsType": "posts",
"resultsLimit": 50,
"commentsPerPost": 20,
"onlyPostsNewerThan": "30 days",
"skipPinnedPosts": true
}
  • Results limit per URL sets how many posts, reels or comments to return for each URL.
  • Comments per post attaches up to this many comments to each post (0 turns it off).
  • Only posts newer than takes a date (2026-09-01) or a period (3 days, 2 weeks, 6 months), in UTC. On profiles the scrape stops at the first older post, so you never pay for posts you filtered out.
  • Skip pinned posts leaves out pinned posts, which otherwise appear first even when they are old.

Output example (a post)

This is a real record from natgeo with Comments per post set to 5, trimmed to one comment and with shortened URLs:

{
"inputUrl": "https://www.instagram.com/natgeo/",
"id": "3993285920611830169",
"type": "Video",
"shortCode": "DdrAGMwowmZ",
"url": "https://www.instagram.com/p/DdrAGMwowmZ/",
"caption": "Crossing the Okavango Delta by mekoro (traditional canoes usโ€ฆ",
"hashtags": [],
"mentions": [
"debeersgroup"
],
"commentsCount": 87,
"likesCount": 27428,
"videoPlayCount": 859965,
"videoDuration": 81.292,
"videoUrl": "https://scontent-hbe1-2.cdninstagram.com/โ€ฆJy0LTKySwq5ofw.mp4",
"displayUrl": "https://scontent-hbe1-2.cdninstagram.com/โ€ฆ216932702022_n.jpg",
"timestamp": "2026-09-24T13:35:32.000Z",
"ownerUsername": "natgeo",
"ownerFullName": "National Geographic",
"ownerId": "787132",
"productType": "clips",
"isPinned": false,
"isSponsored": true,
"taggedUsers": [],
"coauthorProducers": [],
"childPosts": [],
"musicInfo": null,
"locationName": null,
"firstComment": "De beers?๐Ÿ˜‚๐Ÿ˜‚๐Ÿ˜‚๐Ÿ˜‚",
"latestComments": [
{
"id": "18123574573924680",
"text": "De beers?๐Ÿ˜‚๐Ÿ˜‚๐Ÿ˜‚๐Ÿ˜‚",
"ownerUsername": "commenter_username",
"timestamp": "2026-09-24T23:42:05.000Z",
"likesCount": 0,
"commentUrl": "https://www.instagram.com/p/DdrAGMwowmZ/c/18123574573924680/"
}
],
"scrapedCommentsCount": 5
}

Comments, profiles, hashtags and places each have their own record shape. The dataset has a ready-made view for each: Posts & reels, Comments, Profiles and Inputs that could not be scraped.

Use the Instagram scraper through the API and integrations

  • API: start runs and download results from any language. The API tab has ready-made code for Node.js, Python and cURL.
  • Scheduling: run it daily or hourly to monitor profiles, hashtags or competitors. Set Only posts newer than to your schedule interval (e.g. 1 day) so every run returns only new posts.
  • Integrations: send results to Google Sheets, Make, Zapier, n8n, Slack, Airbyte or a webhook.
  • AI agents: the Actor can be called as a tool through the Apify MCP server.

What Instagram does not show logged-out visitors

This scraper never logs in, so it gets exactly what an incognito browser sees. A few things are out of reach, and each one returns a clear error row instead of failing silently:

  • Mentions / tagged posts: the Tagged tab requires login. To find posts about a brand, scrape its hashtag instead.
  • Place search: Instagram's search box refuses logged-out visitors. Paste place URLs instead.
  • Replies to comments: only top-level comments are public, and reply counts are hidden too.
  • A few broad or sensitive keywords such as #fitness or #food: Instagram shows logged-out visitors no posts for them. You get an error row saying so; more specific hashtags (#crossfit, #gym) work.
  • Private profiles: details are returned, but posts are not.
  • Numeric profile IDs: only the 17-digit 1784โ€ฆ account ID can be resolved. For other numeric IDs, use the username.
  • Depth limits set by Instagram: hashtag pages show about 50 top reels, and a place shows about 18 recent posts and 50 top posts. Profiles and comments have no such limit.

Counts are a snapshot taken at the moment of the run, as seen by logged-out visitors. They can be lower than what a logged-in account sees, because engagement from private accounts is hidden.

Tips

  • Leave the proxy on Residential (the default). Instagram is far less willing to answer datacenter IPs.
  • Use the Comments view of the dataset to export comments on their own, or Comments per post to keep each post and its comments together.
  • To scrape many posts' comments, paste all the post URLs into one run rather than starting one run per post.

FAQ

Do I need an Instagram account or cookies?

No. The scraper never logs in and never asks for cookies or a session ID, so no Instagram account can be banned or checkpointed because of it.

This scraper collects only data that Instagram shows publicly to anyone without an account. Public data can still be personal data under laws such as the GDPR, so scrape only what you have a legitimate reason to process. If you are unsure, ask a lawyer.

Can I scrape all comments from an Instagram post?

Yes. Choose Comments, paste the post or reel URL, and set Results limit per URL as high as you need. All public top-level comments are returned; replies to comments are visible only to logged-in users.

How is this different from the official Instagram Scraper?

It uses the same input and output fields and the same per-result prices, so you can switch without changing your integrations or your budget. It also gets each post with up to as many comments as you want in one run, stops early on date filters so you never pay for filtered-out posts, and repairs itself when Instagram changes its internal queries. What it cannot do is anything that needs a login: tagged posts, place search and comment replies.

What happens when Instagram changes its website?

The scraper detects when Instagram changes its internal queries and re-learns them automatically during the run. If something still breaks, open an issue on the Issues tab and it will be fixed quickly.

Why do I see fewer likes or comments than in the Instagram app?

Logged-out visitors don't see engagement from private accounts, and some creators hide like counts (returned as -1). The numbers are what Instagram shows publicly at the moment of the run.

I found a bug or need a feature

Open an issue on the Issues tab with the input you used and the run link. Feature requests are welcome.