Instagram Posts Scraper
Pricing
from $1.50 / 1,000 post addeds
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
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
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). maxPostscap 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 Instagramproduct_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)
| Field | Type | Description |
|---|---|---|
scraped_from | string | Username queued for this profile |
instagram_url | string | Post URL https://www.instagram.com/p/{shortcode}/ |
shortcode | string | Media code from Instagram |
timestamp | string (ISO 8601) | From taken_at / taken_at_timestamp |
product_type | string | e.g. feed, clips, carousel_container |
is_video | boolean | From media_type / video_versions |
caption_text | string | null | Caption body |
like_count | number | null | Likes |
comment_count | number | null | Comments |
view_count | number | null | Views when present |
play_count | number | null | Plays; may use ig_play_count when present |
owner_username | string | null | user.username |
display_url | string | null | Primary image URL |
video_url | string | null | First video_versions URL |
video_duration | number | null | Seconds; may be parsed from DASH manifest |
id | string | null | Compound media id |
pk | string | null | Media pk |
caption_created_at | string | null | Caption created_at as ISO |
is_caption_edited | boolean | Caption edited flag |
accessibility_caption | string | null | Alt text |
is_comments_disabled | boolean | comments_disabled === true |
like_and_view_counts_disabled | boolean | Likes/views hidden |
owner_id | string | null | owner.id or user.id / user.pk |
owner_full_name | string | null | Full name |
owner_is_verified | boolean | Verified |
owner_profile_pic_url | string | null | Avatar URL |
media_name | string | null | Title or Reels audio title when present |
image_width | number | null | original_width |
image_height | number | null | original_height |
image_urls | string[] | image_versions2 candidate URLs |
is_pinned_post | boolean | Pinned (only appears when not skipped upstream) |
is_sponsored | boolean | ad_id present |
is_paid_partnership | boolean | Paid partnership |
tagged_users | string[] | From usertags |
hashtags | string[] | Parsed from caption |
caption_mentions | string[] | @mentions in caption |
coauthors | array | { pk, username, full_name } objects |
child_post_count | number | null | Carousel length |
child_posts | array | Per-slide { pk, media_type, shortcode, image_url } |
first_comment_text | string | null | Not filled by current query |
latest_comment_text | string | null | Not filled by current query |
3. How to run (Apify Console)
Use this Actor in the Apify Console
- Open the Input tab.
- Under Target Profiles, add every Instagram account you want (username,
@name, or full profile URL). This field is required. - Set Maximum Posts if you want a limit other than 50 (count is per profile).
- Set Post Type Filter if you only want one kind of post: all, normal photos/posts, Reels, or carousels.
- Leave Skip pinned posts on to drop pinned items, or turn it off to include them.
- 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).
- Click Start (or Save & Start). Watch Log for progress.
- 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"}
postTypeFilter | Meaning |
|---|---|
all | All types that pass other filters |
feed | Standard feed / image posts |
clips | Reels |
carousel_container | Carousels |
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}