Instagram Posts Scraper avatar

Instagram Posts Scraper

Pricing

from $1.50 / 1,000 post addeds

Go to Apify Store
Instagram Posts Scraper

Instagram Posts Scraper

Scrapes public Instagram profile posts into structured datasets with rich metadata including captions, engagement, media. Supports multiple profiles, pagination, post-type filtering, date-based extraction. clean, analysis-ready output for automation, analytics, and lead generation.

Pricing

from $1.50 / 1,000 post addeds

Rating

0.0

(0)

Developer

easy scraper

easy scraper

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Apify Actor that collects public profile timeline posts from Instagram . Each accepted post becomes one dataset row with URLs, caption, owner, engagement metrics, and carousel-friendly fields.


1. Features

  • Multiple profiles per run (username, @handle, or full profile URL).
  • maxPosts cap per profile (paginates until the limit or the feed ends).
  • dateFilter — optional “newer than” using absolute date (YYYY-MM-DD) or relative text (7 days, 2 weeks, …) via the Apify datepicker.
  • skipPinnedPosts — omit pinned items from results (default: true).
  • postTypeFilter — restrict to Instagram product_type: all, feed, clips, carousel_container.
  • Structured output — Instagram URL, ISO timestamp, caption fields, owner block, image URLs, optional video URL, hashtags and mentions from caption, tagged users, coauthors, carousel child summary.
  • Pagination stops early when the feed reaches posts older than the date filter (non-pinned, chronological path).

6. Output fields (dataset)

FieldTypeDescription
scraped_fromstringUsername queued for this profile
instagram_urlstringPost URL https://www.instagram.com/p/{shortcode}/
shortcodestringMedia code from Instagram
timestampstring (ISO 8601)From taken_at / taken_at_timestamp
product_typestringe.g. feed, clips, carousel_container
is_videobooleanFrom media_type / video_versions
caption_textstring | nullCaption body
like_countnumber | nullLikes
comment_countnumber | nullComments
view_countnumber | nullViews when present
play_countnumber | nullPlays; may use ig_play_count when present
owner_usernamestring | nulluser.username
display_urlstring | nullPrimary image URL
video_urlstring | nullFirst video_versions URL
video_durationnumber | nullSeconds; may be parsed from DASH manifest
idstring | nullCompound media id
pkstring | nullMedia pk
caption_created_atstring | nullCaption created_at as ISO
is_caption_editedbooleanCaption edited flag
accessibility_captionstring | nullAlt text
is_comments_disabledbooleancomments_disabled === true
like_and_view_counts_disabledbooleanLikes/views hidden
owner_idstring | nullowner.id or user.id / user.pk
owner_full_namestring | nullFull name
owner_is_verifiedbooleanVerified
owner_profile_pic_urlstring | nullAvatar URL
media_namestring | nullTitle or Reels audio title when present
image_widthnumber | nulloriginal_width
image_heightnumber | nulloriginal_height
image_urlsstring[]image_versions2 candidate URLs
is_pinned_postbooleanPinned (only appears when not skipped upstream)
is_sponsoredbooleanad_id present
is_paid_partnershipbooleanPaid partnership
tagged_usersstring[]From usertags
hashtagsstring[]Parsed from caption
caption_mentionsstring[]@mentions in caption
coauthorsarray{ pk, username, full_name } objects
child_post_countnumber | nullCarousel length
child_postsarrayPer-slide { pk, media_type, shortcode, image_url }
first_comment_textstring | nullNot filled by current query
latest_comment_textstring | nullNot filled by current query

3. How to run (Apify Console)

Use this Actor in the Apify Console

  1. Open the Input tab.
  2. Under Target Profiles, add every Instagram account you want (username, @name, or full profile URL). This field is required.
  3. Set Maximum Posts if you want a limit other than 50 (count is per profile).
  4. Set Post Type Filter if you only want one kind of post: all, normal photos/posts, Reels, or carousels.
  5. Leave Skip pinned posts on to drop pinned items, or turn it off to include them.
  6. Under Extract posts that are newer than, either leave it blank (no date limit) or pick Absolute (calendar date) / Relative (e.g. last 7 days).
  7. Click Start (or Save & Start). Watch Log for progress.
  8. When the run finishes, open Output or Storage → Dataset to view, filter, or download your post rows.

Advanced: switch the Input view to JSON if you want to paste an object by hand; use the same field names as in §4. Input.


4. Input

{
"profiles": ["therock", "https://www.instagram.com/nasa/"],
"maxPosts": 50,
"postTypeFilter": "all",
"skipPinnedPosts": true,
"dateFilter": "2026-01-15"
}

Relative date example:

{
"profiles": ["nasa"],
"maxPosts": 100,
"postTypeFilter": "clips",
"skipPinnedPosts": true,
"dateFilter": "30 days"
}
postTypeFilterMeaning
allAll types that pass other filters
feedStandard feed / image posts
clipsReels
carousel_containerCarousels

5. Output (example record)

One dataset object per stored post (shape matches .actor/dataset_schema.json):

{
"scraped_from": "therock",
"id": "3844133065635875205_232192182",
"pk": "3844133065635875205",
"shortcode": "DVZGqf2j0mF",
"instagram_url": "https://www.instagram.com/p/DVZGqf2j0mF/",
"product_type": "clips",
"timestamp": "2026-02-19T12:37:02.000Z",
"is_video": true,
"video_duration": 261.942871,
"view_count": null,
"play_count": null,
"caption_text": "Example caption…",
"caption_created_at": "2026-02-19T12:37:04.000Z",
"is_caption_edited": false,
"display_url": "https://instagram.fcai19-11.fna.fbcdn.net/…",
"accessibility_caption": null,
"like_count": 322961,
"comment_count": 6675,
"is_comments_disabled": false,
"like_and_view_counts_disabled": false,
"owner_id": "232192182",
"owner_username": "therock",
"owner_full_name": "Dwayne Johnson",
"owner_is_verified": true,
"owner_profile_pic_url": "https://instagram.fcai19-11.fna.fbcdn.net/…",
"media_name": "Original audio",
"image_width": 720,
"image_height": 1280,
"image_urls": ["https://…"],
"video_url": "https://instagram.fcai19-11.fna.fbcdn.net/…",
"is_pinned_post": false,
"is_sponsored": false,
"is_paid_partnership": false,
"coauthors": [],
"tagged_users": ["americanblackfilmfestival"],
"hashtags": ["RememberYourWhyCollection"],
"caption_mentions": ["projectrock"],
"child_post_count": null,
"child_posts": [],
"first_comment_text": null,
"latest_comment_text": null
}