Instagram Profile Posts Scraper avatar

Instagram Profile Posts Scraper

Pricing

$5.00 / 1,000 results

Go to Apify Store
Instagram Profile Posts Scraper

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

Futurize Rush

Maintained by Community

Actor stats

2

Bookmarked

31

Total users

4

Monthly active users

7 hours ago

Last modified

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

  1. Click Try for free to open the Actor in Apify Console.
  2. Add Instagram usernames, profile URLs, or individual post URLs to the input.
  3. Set how many posts you want per profile (default: 50, minimum: 10).
  4. Optionally set a date filter or choose to exclude pinned posts.
  5. Click Start and wait for the data to appear in the Dataset tab.

Input settings

SettingRequiredDefaultDescription
usernamesYes-Instagram usernames, profile URLs, or post/reel URLs. Up to 10 items per run.
maxPostsNo50How many posts to get per profile (minimum 10). Does not apply to individual post URLs.
postsNewerThanNo-Only get recent posts. Use a date (2026-01-15) or a relative period (7 days, 2 weeks, 1 month).
excludePinnedPostsNofalseSkip 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

FieldDescription
postUrlLink to the original post or reel on Instagram
mediaDownloadUrlDirect download link for image/video, or list of items for carousels
mediaTypeimage, video, or carousel
captionFull post caption text including hashtags and mentions
hashtagsHashtags extracted from the caption (e.g. ["sunset", "travel"])
mentionsMentioned usernames extracted from the caption (e.g. ["natgeo"])

Engagement

FieldDescription
likesNumber of likes
commentsNumber of comments
commentsDisabledWhether comments are turned off on this post
videoViewCountVideo view count (for reels and videos only)
videoDurationVideo length in seconds (for reels and videos only)

Metadata

FieldDescription
usernameInstagram username
authorPost author username
shortcodeInstagram post identifier (the unique code in the post URL)
ownerIdInstagram user ID of the post owner
timestampWhen the post was published (ISO 8601)
scrapedAtWhen the data was collected (ISO 8601)
indexPost position number (1, 2, 3...)
isPinnedWhether this post is pinned to the top of the profile
locationNameTagged location name, if any
dimensionsWidth and height in pixels
isVideoWhether the post is a video
displayUrlThumbnail image URL
videoUrlDirect video file URL (for videos and reels)
hasAudioWhether the video has audio
taggedUsersUsers tagged in the media, e.g. ["willsmith"] (different from @mentions in captions)
musicNameMusic track and artist for reels, e.g. "Original audio - natgeo"
coauthorsCo-author usernames for collab posts
titlePost caption preview (up to 200 characters)
descriptionShort 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": []
}

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):

ScenarioPostsTypical time
Single profile10~12 seconds
Single profile50~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 postsNewerThan to 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 mediaDownloadUrl array 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