Instagram Profile Posts Scraper
Pricing
from $1.50 / 1,000 results
Instagram Profile Posts Scraper
Get posts, reels, and carousels from any public Instagram profile. Includes download links, likes, comments, captions, and more. Works with up to 10 profiles at once. No login required.
Pricing
from $1.50 / 1,000 results
Rating
5.0
(1)
Developer
Rush
Maintained by CommunityActor stats
5
Bookmarked
338
Total users
58
Monthly active users
75 days
Issues response
2 days ago
Last modified
Categories
Share
Collect public Instagram posts, reels, and carousel media from profile pages or individual post URLs. The dataset includes captions, hashtags, mentions, engagement counts, publish time, media links, and useful post metadata.
Use it for social listening, content research, competitor monitoring, creator discovery, and building Instagram datasets for your analytics workflow.
What You Can Get
- Public profile posts, reels, and carousel posts
- Image, video, and carousel media links
- Captions, hashtags, and mentioned usernames
- Likes, comments, and video duration
- Publish time, post URL, shortcode, location, tagged users, music name, and coauthors when the post has them
- Reel view counts
- Optional date filtering and pinned-post exclusion
Input
Add Instagram usernames, profile URLs, post URLs, or reel URLs.
{"usernames": ["natgeo","https://www.instagram.com/nasa/","https://www.instagram.com/reel/ABC123xyz/"],"maxPosts": 25,"postsNewerThan": "1 month","excludePinnedPosts": false}
Input Settings
| Setting | Required | Default | Description |
|---|---|---|---|
usernames | Yes | - | Instagram usernames, profile URLs, post URLs, or reel URLs. Up to 10 entries per run. |
maxPosts | No | 50 | Maximum posts to collect per profile. This does not apply to individual post or reel URLs. |
postsNewerThan | No | - | Collect posts newer than a date such as 2026-01-15, or a relative period such as 7 days, 2 weeks, or 1 month. |
excludePinnedPosts | No | false | Skip posts pinned to the top of a profile. |
Output
Each dataset item represents one Instagram post or reel. The example below highlights the most-used fields; the Full Details view lists every available field, including author, dimensions, tagged users, location, music, and co-authors.
{"username": "natgeo","postUrl": "https://www.instagram.com/reel/ABC123xyz/","mediaDownloadUrl": "https://scontent.cdninstagram.com/.../video.mp4","mediaType": "video","caption": "Example caption with #travel and @natgeo","hashtags": ["travel"],"mentions": ["natgeo"],"likes": 5230,"comments": 187,"timestamp": "2026-02-18T14:30:00.000Z","shortcode": "ABC123xyz","videoViewCount": 84500,"videoDuration": 143.1,"isPinned": false}
For carousel posts with slide data, mediaDownloadUrl is an array of media items so you can access each slide.
Every Field
| Field | What it is |
|---|---|
username / author | The account the post belongs to |
postUrl | Link to the post or reel |
mediaDownloadUrl | Direct media link; an array of items for a carousel |
displayUrl | Thumbnail / preview image link |
videoUrl | Direct video file link |
mediaType | image, video or carousel |
isVideo / hasAudio | Whether the post is a video, and whether it has sound |
caption | The full caption, including hashtags and mentions |
hashtags / mentions | Hashtags and mentioned accounts taken from the caption |
title | The opening of the caption, up to 200 characters |
description | Instagram's written description of the image, or the opening of the caption |
likes / comments | Engagement counts |
commentsDisabled | Whether comments are turned off |
videoViewCount / videoDuration | Views and length, for video posts |
timestamp | When the post was published (ISO 8601) |
scrapedAt | When this row was collected (ISO 8601) |
index | Position of the post within this account's results (1, 2, 3…) |
shortcode | Instagram's identifier for the post |
ownerId | Instagram's numeric id for the account |
isPinned | Whether the post is pinned to the top of the profile |
dimensions | Media width and height in pixels |
locationName | Tagged location, when the post has one |
taggedUsers | Accounts tagged in the media (different from caption mentions) |
musicName | Track and artist for reels |
coauthors | Co-authors of a collaboration post |
What Instagram Publishes
Instagram does not publish every detail for every post to a signed-out reader, so a few columns are filled in only where it does. They are left empty rather than filled with a stand-in value, so an empty cell always means "Instagram did not publish this", never "zero".
| Column | When it is filled in |
|---|---|
videoViewCount | Reels. Empty for images, and for any video where Instagram does not publish a count. |
isPinned | Posts collected from a profile. Empty for a post requested by its own link, where Instagram does not say. |
commentsDisabled | Only when Instagram states it. Usually empty for public reads. |
likes / comments | Always, unless the account hides its counts — then empty rather than 0. |
locationName, musicName, taggedUsers, coauthors | Only when the post actually has them. |
Dataset Views
- Overview: username, post type, engagement, publish time, and post URL
- Media Downloads: media links and thumbnails
- Full Details: all available fields
Tips
- Start with one or two profiles to confirm the output format before running a larger batch.
- Use
postsNewerThanwhen you only need recent content. - Media links can expire, so download or process media soon after the run finishes.
- An entry that cannot be read — a misspelled name, or a link that is not an account or a post — is reported and skipped, and the rest of the run continues.
- This Actor reads Instagram through Apify Proxy (residential). Your plan needs that access enabled, and the proxy traffic is billed to your Apify account as usual.
FAQ
Can it scrape private profiles?
No. It only collects data that is publicly available.
Can I mix profile URLs and post URLs in one run?
Yes. You can combine usernames, profile URLs, post URLs, and reel URLs in the same input list.
Why did I get fewer posts than requested?
The profile may have fewer public posts available, your date filter may exclude older posts, or Instagram may not return more public results during that run. When a run stops short of what was available, it says so in the run summary rather than presenting a short collection as a complete one.
Why is a column empty for some rows?
Instagram publishes different details for different posts. See What Instagram Publishes above for exactly which columns are filled in when. An empty cell always means Instagram did not publish that value — it never means zero.
What happens if one entry in my list is wrong?
That entry is reported in the run summary and skipped. Every other entry in the same run is still collected.
Does it scrape comments or followers?
No. This Actor focuses on profile posts, reels, and carousel media.
Responsible Use
Use this Actor only for lawful purposes and respect Instagram's terms, privacy rights, and applicable data protection laws. Results depend on publicly available data at the time of the run.
Disclaimer
This tool collects publicly available data for research and analysis. You are responsible for ensuring your use complies with Instagram's Terms of Service and all applicable laws.
- Instagram controls what it publishes publicly and can change it at any time, so the number of posts available for a profile varies and can differ between runs
- The developers are not responsible for consequences arising from use of this tool, including data loss or legal liability
- Extracted data should be handled in line with applicable data protection regulations
More Actors
Looking for other Instagram data? Explore more scrapers by futurizerush — comments, followers, hashtags, and user posts.
Related Search Keywords
Instagram scraper, Instagram posts scraper, Instagram reels scraper, Instagram carousel scraper, Instagram media downloader, Instagram analytics, social media monitoring, influencer research, competitor analysis, lead generation, Apify, Claude Code, OpenClaw, Gemini, Antigravity, Codex, ChatGPT