Instagram Post Scraper
Pricing
from $1.50 / 1,000 results
Instagram Post Scraper
Caption, likes, comment count, date, images, video URL, hashtags, mentions and top comments from public Instagram profiles and post URLs. No login needed. Date filter and per-profile limit included.
Pricing
from $1.50 / 1,000 results
Rating
5.0
(1)
Developer
Muhammad Noman Riaz
Maintained by CommunityActor stats
3
Bookmarked
144
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Scrape posts from public Instagram profiles, or single posts and reels by URL. No Instagram login is needed: the actor reads the same data Instagram shows to logged-out visitors, through residential proxies.
What does Instagram Post Scraper do?
Instagram Post Scraper collects posts from public Instagram profiles, and single posts or reels from their URLs, without an Instagram login. For each post it returns the caption, hashtags, mentions, like and comment counts, publish date, post type, image and video URLs, video duration, music info for reels, carousel items, the owner's username and name, and the first comments Instagram shows on the post. You can limit how many posts each profile returns and keep only posts newer than a date such as 2025-01-01 or 30 days. It reads the same data Instagram shows to logged-out visitors through rotating residential proxies, retries on a new IP when a request is blocked, and pushes only complete posts, so you never pay for empty rows. Results export to JSON, CSV or Excel, or come back through the Apify API and MCP server. It suits brand monitoring, competitor research, influencer vetting and content analysis.
What you get without cookies
For each post:
id,shortCode,url,type(Image, Video or Sidecar),productTypecaption,hashtags,mentions,altlikesCount,commentsCount,timestampdisplayUrl,images,dimensionsHeight,dimensionsWidthvideoUrlandvideoDurationfor videos,musicInfofor reelschildPostsfor carouselsownerUsername,ownerFullName,ownerIdlatestCommentsandfirstComment: the first comments Instagram shows on the post, with text, author, likes and date
Profiles are paginated 12 posts at a time, so resultsLimit works beyond the first page. In local tests a profile returned posts from the second page without cookies.
Limits without cookies:
videoViewCountandvideoPlayCountarenull. Instagram does not show view counts on single posts to logged-out visitors. The Instagram Reels Scraper does return play counts.- Comments come from the first batch Instagram shows, about 15 per post, so
maxCommentsabove 15 has no extra effect. - Pinned posts cannot be detected, so
skipPinnedPostsonly works with cookies. Pinned posts show up first and can be older than the rest. isSponsoredis alwaysfalsebecause the paid partnership flag is not shown to logged-out visitors.- Private profiles and posts hidden from logged-out visitors (for example age-restricted posts) are skipped and listed in
FAILED_ITEMS. - Every post costs one request to load its details, so large limits take longer.
With your cookies (optional)
If you paste cookies from your own Instagram account, the actor uses Instagram's logged-in feed instead. It marks pinned posts, so skipPinnedPosts works. This path was not tested in the current version, so prefer running without cookies unless the logged-out mode is blocked for you.
Input
| Field | Required | Description |
|---|---|---|
username | Yes | Usernames, profile URLs, or post and reel URLs |
resultsLimit | No | Max posts per profile, default 200 |
onlyPostsNewerThan | No | A date like 2025-01-01 or a relative value like 7 days |
skipPinnedPosts | No | Only with cookies |
maxComments | No | Max comments per post, default 10 |
cookies | No | Your own Instagram cookies, see below |
proxy | No | Defaults to Apify residential proxy |
maxConcurrency | No | Inputs scraped in parallel, default 5 |
maxRequestRetries | No | Retries per request on a new IP, default 6 |
{"username": ["natgeo", "https://www.instagram.com/p/Defago5DWAD/"],"resultsLimit": 50,"onlyPostsNewerThan": "30 days","maxComments": 10}
Output example
{"id": "4008038785522425859","type": "Image","shortCode": "Defago5DWAD","caption": "Photographer Michael Seeley (@mseeley20) used a single 426-second exposure...","hashtags": [],"mentions": ["mseeley20"],"url": "https://www.instagram.com/p/Defago5DWAD/","commentsCount": 612,"likesCount": 154385,"timestamp": "2026-10-14T12:44:46.000Z","ownerFullName": "National Geographic","ownerUsername": "natgeo","ownerId": "787132","inputUrl": "https://www.instagram.com/p/Defago5DWAD/"}
Reliability
Every request goes through a fresh residential IP if the previous one is blocked or rate-limited, up to maxRequestRetries times. Only complete posts are pushed to the dataset. Inputs that fail or stop early are listed with the reason in the FAILED_ITEMS record of the key-value store, and the run's status message shows the totals.
How to get your Instagram cookies
Cookies are optional. Only add them if you need what the "With your cookies" section above lists.
Use a secondary Instagram account, not your main one. Instagram can rate-limit or temporarily lock accounts that make many requests.
Option 1: Chrome or Edge developer tools
- Log in to instagram.com with your secondary account.
- Press F12 to open developer tools.
- Open the Application tab, then Cookies, then
https://www.instagram.com. - Copy the values of
sessionid,ds_user_idandcsrftoken. - Paste them into the cookies field in this format:
sessionid=YOUR_SESSIONID; ds_user_id=YOUR_DS_USER_ID; csrftoken=YOUR_CSRFTOKEN
Option 2: Cookie-Editor extension
- Install the Cookie-Editor extension for your browser.
- Log in to instagram.com, open Cookie-Editor and click Export, then Export as JSON.
- Paste the whole JSON into the cookies field.
The actor checks the format before it starts and stops with a clear message if sessionid, ds_user_id or csrftoken is missing. Cookie values are never written to the log.
Keep them safe and fresh
- Cookies work like a password. Anyone who has them can act as that account. Do not share them or put them in public tasks or shared inputs. The field is stored as a secret on Apify.
- Cookies expire, and logging out of Instagram ends them immediately. If runs start failing with "your cookies may have expired", log in again in your browser and copy fresh cookies.
- Heavy use can get the account rate-limited. If that happens, wait a few hours or use a different secondary account.
FAQ
Do I need an Instagram account or cookies?
No. It works without a login. Cookies from your own secondary account are optional and only add pinned post detection.
How many posts can I get from one profile?
Set resultsLimit. The actor pages through the profile 12 posts at a time until it reaches the limit, the date filter or the end of the profile.
Why is videoViewCount empty?
Instagram does not show view counts on single posts to logged-out visitors. Use the Instagram Reels Scraper, which returns play counts from the reels tab.
Can it scrape private profiles?
No. Private profiles and posts hidden from logged-out visitors are skipped and listed in FAILED_ITEMS, and they are not charged.
What am I charged for?
Each post pushed to the dataset is one result. Failed inputs and skipped posts are not charged. See the Pricing tab for the current price.
Legal
Only public data is collected. You are responsible for using it in line with Instagram's terms and data protection laws such as GDPR.