Instagram Profile Posts Scraper
Pricing
$5.00 / 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
$5.00 / 1,000 results
Rating
5.0
(2)
Developer

Futurize Rush
Actor stats
2
Bookmarked
31
Total users
4
Monthly active users
7 hours ago
Last modified
Categories
Share
Scrape posts, reels, and carousels from any public Instagram profile or individual post URL. Get download links, engagement metrics, captions, hashtags, mentions, pinned post detection, and more. Supports up to 10 profiles per run. No login required.
What does Instagram Profile Posts Scraper do?
Instagram Profile Posts Scraper extracts structured data from public Instagram profiles and individual post URLs. It collects images, videos, reels, and full carousel posts (all slides, not just the cover image) along with engagement metrics, captions, and metadata.
Unlike browser-based scrapers, this Actor uses Instagram's lightweight API endpoints, making it fast, cost-efficient, and reliable. It automatically detects pinned posts, parses hashtags and mentions from captions, and supports date filtering with early pagination termination to save compute resources.
What data can you scrape from Instagram?
- Posts, Reels & Carousels - All content types with direct download links for images and videos
- Full Captions - Complete caption text with no truncation, plus auto-extracted hashtags and @mentions
- Engagement Metrics - Likes, comments, video views, and video duration
- Pinned Post Detection - Automatically identifies posts pinned to the top of a profile
- Tagged Users & Coauthors - People tagged in media and collab post co-authors
- Reel Music Info - Track name and artist for reels with music
- Date Filtering - Only collect posts published after a specific date, with automatic early termination
- Flexible Input - Accepts usernames, profile URLs, or individual post/reel URLs in the same run
How to scrape Instagram posts
- Click Try for free to open the Actor in Apify Console.
- Add Instagram usernames, profile URLs, or individual post URLs to the input.
- Set how many posts you want per profile (default: 50, minimum: 10).
- Optionally set a date filter or choose to exclude pinned posts.
- Click Start and wait for the data to appear in the Dataset tab.
Input settings
| Setting | Required | Default | Description |
|---|---|---|---|
usernames | Yes | - | Instagram usernames, profile URLs, or post/reel URLs. Up to 10 items per run. |
maxPosts | No | 50 | How many posts to get per profile (minimum 10). Does not apply to individual post URLs. |
postsNewerThan | No | - | Only get recent posts. Use a date (2026-01-15) or a relative period (7 days, 2 weeks, 1 month). |
excludePinnedPosts | No | false | Skip pinned posts at the top of profiles and only get regular timeline posts. |
Supported input formats
You can mix and match any of these formats in the input list:
- Username:
natgeo - Profile URL:
https://www.instagram.com/natgeo/ - Post URL:
https://www.instagram.com/p/ABC123/ - Reel URL:
https://www.instagram.com/reel/ABC123/
Input example
{"usernames": ["natgeo","https://www.instagram.com/nasa/","https://www.instagram.com/p/XYZ789abc/"],"maxPosts": 25,"postsNewerThan": "1 month","excludePinnedPosts": true}
Output
Each post in the dataset includes the following fields:
Content & media
| Field | Description |
|---|---|
postUrl | Link to the original post or reel on Instagram |
mediaDownloadUrl | Direct download link for image/video, or list of items for carousels |
mediaType | image, video, or carousel |
caption | Full post caption text including hashtags and mentions |
hashtags | Hashtags extracted from the caption (e.g. ["sunset", "travel"]) |
mentions | Mentioned usernames extracted from the caption (e.g. ["natgeo"]) |
Engagement
| Field | Description |
|---|---|
likes | Number of likes |
comments | Number of comments |
commentsDisabled | Whether comments are turned off on this post |
videoViewCount | Video view count (for reels and videos only) |
videoDuration | Video length in seconds (for reels and videos only) |
Metadata
| Field | Description |
|---|---|
username | Instagram username |
author | Post author username |
shortcode | Instagram post identifier (the unique code in the post URL) |
ownerId | Instagram user ID of the post owner |
timestamp | When the post was published (ISO 8601) |
scrapedAt | When the data was collected (ISO 8601) |
index | Post position number (1, 2, 3...) |
isPinned | Whether this post is pinned to the top of the profile |
locationName | Tagged location name, if any |
dimensions | Width and height in pixels |
isVideo | Whether the post is a video |
displayUrl | Thumbnail image URL |
videoUrl | Direct video file URL (for videos and reels) |
hasAudio | Whether the video has audio |
taggedUsers | Users tagged in the media, e.g. ["willsmith"] (different from @mentions in captions) |
musicName | Music track and artist for reels, e.g. "Original audio - natgeo" |
coauthors | Co-author usernames for collab posts |
title | Post caption preview (up to 200 characters) |
description | Short description of the content |
Sample output
{"username": "natgeo","postUrl": "https://www.instagram.com/reel/ABC123xyz/","mediaDownloadUrl": "https://scontent.cdninstagram.com/.../video.mp4","mediaType": "video","caption": "Check out this amazing sunset timelapse from our trip last weekend! The colors were unreal. Shot on location in Bali. #sunset #timelapse #travel #bali #nature #photography @natgeo","hashtags": ["sunset", "timelapse", "travel", "bali", "nature", "photography"],"mentions": ["natgeo"],"title": "Check out this amazing sunset timelapse from our trip last weekend...","description": "Check out this amazing sunset timelapse from our trip last weekend...","author": "natgeo","shortcode": "ABC123xyz","likes": 5230,"comments": 187,"commentsDisabled": false,"timestamp": "2026-02-18T14:30:00.000Z","scrapedAt": "2026-02-20T10:15:42.000Z","index": 1,"isPinned": false,"dimensions": {"width": 640,"height": 1137},"isVideo": true,"displayUrl": "https://scontent.cdninstagram.com/.../thumbnail.jpg","videoUrl": "https://scontent.cdninstagram.com/.../video.mp4","videoViewCount": 84500,"videoDuration": 143.1,"hasAudio": true,"ownerId": "12345678901","locationName": "Bali, Indonesia","taggedUsers": [],"musicName": "Original audio - natgeo","coauthors": []}
Carousel posts
For carousel posts, mediaDownloadUrl contains all slides:
{"mediaType": "carousel","mediaDownloadUrl": [{"type": "image","url": "https://scontent.cdninstagram.com/.../image1.jpg","width": 1080,"height": 1350},{"type": "video","url": "https://scontent.cdninstagram.com/.../video.mp4","width": 1080,"height": 1920}]}
Performance
This Actor uses lightweight API requests instead of a full browser, keeping runs fast and resource-efficient. Typical run times on the Apify platform (256 MB memory):
| Scenario | Posts | Typical time |
|---|---|---|
| Single profile | 10 | ~12 seconds |
| Single profile | 50 | ~35 seconds |
| Multiple profiles (3 x 50) | 150 | ~2 minutes |
Run times include container startup (~5-7 seconds) and depend on Instagram's response speed. Using date filters can significantly reduce run times by stopping pagination early.
Pinned post detection
Instagram allows users to pin up to 3 posts to the top of their profile. These posts appear before the regular timeline, even though they may be much older.
This scraper automatically detects pinned posts and marks them with isPinned: true in the output. You can also choose to exclude them entirely with the excludePinnedPosts setting, which is useful for accurate timeline analysis where chronological order matters.
Date filtering
Use postsNewerThan to only collect recent posts. You can specify either:
- A specific date:
2026-01-15 - A relative period:
7 days,2 weeks,1 month,1 year
The scraper automatically stops loading older pages once it reaches posts before your date, saving time and compute resources. This is especially useful when monitoring recent content from high-volume accounts.
Tips for best results
- Start small - Test with one profile and 10 posts to verify the output matches your needs before scaling up.
- Use date filters - For high-volume accounts, set
postsNewerThanto avoid loading thousands of old posts unnecessarily. - Mix input types - You can combine usernames, profile URLs, and individual post URLs in a single run.
- Carousel coverage - This scraper extracts all slides from carousel posts, not just the cover image. Check the
mediaDownloadUrlarray for the full set. - Download links expire - Media download URLs are temporary. Download or process them within a few hours of extraction.
Integrations
You can connect Instagram Profile Posts Scraper with almost any cloud service or web app through integrations on the Apify platform. Connect with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and more.
You can also programmatically access the dataset using the Apify API. Available export formats include JSON, CSV, Excel, XML, HTML, and RSS.
Use cases
- Social media managers - Track content performance and publishing cadence across brand accounts
- Researchers - Collect public social media data for academic studies or market analysis
- Content creators - Monitor engagement trends, identify top-performing content, and study competitor strategies
- Developers - Feed Instagram data into dashboards, analytics tools, or custom applications
- Analysts - Filter by date range and exclude pinned posts for accurate timeline analysis
FAQ
Does this scraper work with private profiles? No. Only public profiles are accessible. Private profiles will return an error that is logged and skipped gracefully.
Why are some fields null?
Fields like videoViewCount, videoDuration, videoUrl, musicName, and locationName depend on the content type and whether the data was tagged by the post author. Image posts will naturally have null for video-related fields.
Why did a profile return fewer posts than expected? Instagram may temporarily limit available data. If pagination is interrupted, the scraper keeps all posts already collected rather than failing the entire profile.
Can I scrape comments or followers? This Actor focuses on post data. For other Instagram data, check related Actors on the Apify Store.
Good to know
- Works with public profiles only (private profiles are not accessible)
- Download links are temporary and may expire after a few hours
- Instagram may limit available data for some profiles during high-traffic periods
- Pinned post detection uses Instagram's native API data
- The scraper respects rate limits with built-in delays between requests