Instagram Profile Posts Scraper
Pricing
from $0.50 / 1,000 results
Instagram Profile Posts Scraper
Scrape public Instagram profile posts back to a date. Returns likes, comments, captions, hashtags, media URLs, owner info, follower counts, and optional play counts.
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
Mark Pandit
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Scrape public Instagram profile posts from newest to a cutoff date. Each dataset row is one post, with engagement, media, and profile context.
Input
| Field | Description |
|---|---|
| Profiles | One profile per line — URL, @handle, or username |
| Scrape till date | Inclusive lower bound (calendar / YYYY-MM-DD). Scraping stops once posts older than this date appear. |
| Include video play counts | On by default. Fills videoPlayCount via an extra clips API pass. Turn off for faster scrapes. |
| Max posts per profile | Cap per profile |
| Max posts for the entire run | Cap across all profiles |
| Session proxy (warm + scrape) | Sticky Residential for the full guest session. Required to avoid Instagram 401. |
| Fallback scrape proxy | Only used if Session proxy is off. |
Example:
https://www.instagram.com/bjp4india/@natgeo
Optional auth
Runs as a guest session by default. For higher rate limits and more reliable follower counts, set IG_SESSIONID in the Actor environment variables to a logged-in Instagram sessionid cookie.
Output
One dataset item per post. Field names follow the data (camelCase), similar to common Instagram post scrapers.
| Field | Description |
|---|---|
id | Media id (pk) |
type | Image, Video, or Sidecar |
shortCode | Short code used in the post URL |
url | Public post / reel URL |
caption | Caption text |
hashtags | Hashtags from the caption |
mentions | @mentions from the caption |
commentsCount | Comment count |
likesCount | Like count |
videoPlayCount | Play count for reels/videos when Include video play counts is on and Instagram returns it |
timestamp | Publish time (UTC, ISO 8601) |
displayUrl | Thumbnail / primary image URL |
videoUrl | Direct video URL when present |
images | Carousel image URLs (when present) |
ownerUsername | Post owner username |
ownerFullName | Owner display name |
ownerId | Owner user id |
productType | Instagram product type (clips, feed, …) |
isPaidPartnership | Paid partnership flag |
isCommentsDisabled | Comments disabled flag |
hasAudio | Audio flag when Instagram reports it |
dimensionsHeight / dimensionsWidth | Original media size |
locationName | Location name when set |
musicInfo | Reel audio metadata when exposed |
followersCount | Exact profile follower count when available |
inputUrl | Profile URL requested for the run |
Pinned posts are skipped (they break chronological order).
What this Actor does not scrape
To keep runs fast and results readable, these are intentionally omitted:
- Full comment threads (
latestComments/firstComment) - Nested profile extras (related accounts, highlights, IGTV catalogs)
- Fields Instagram does not return on the guest timeline/clips APIs
How it works
- Resolves the public profile (followers, owner metadata).
- Walks the profile timeline newest → oldest until the date cutoff or max limits.
- Optionally fills
videoPlayCountfrom the clips/reels connection when Include video play counts is enabled. - Pushes posts to the dataset in chunks as each profile completes.
Limits
- Private / restricted profiles are not supported.
- Both max-post limits apply; remaining profiles are skipped when the run cap is hit.
- Media URLs can expire — download promptly if you need long-term storage.
- Counts can change after collection as engagement continues.
- Heavy rate limits (HTTP 429) are eased by setting
IG_SESSIONID.
Responsible use
Collects publicly visible Instagram data only. Use results in line with applicable law, privacy rules, and Instagram’s terms.