Instagram Profile Posts Scraper avatar

Instagram Profile Posts Scraper

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Instagram Profile Posts Scraper

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

Mark Pandit

Maintained by Community

Actor 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

FieldDescription
ProfilesOne profile per line — URL, @handle, or username
Scrape till dateInclusive lower bound (calendar / YYYY-MM-DD). Scraping stops once posts older than this date appear.
Include video play countsOn by default. Fills videoPlayCount via an extra clips API pass. Turn off for faster scrapes.
Max posts per profileCap per profile
Max posts for the entire runCap across all profiles
Session proxy (warm + scrape)Sticky Residential for the full guest session. Required to avoid Instagram 401.
Fallback scrape proxyOnly 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.

FieldDescription
idMedia id (pk)
typeImage, Video, or Sidecar
shortCodeShort code used in the post URL
urlPublic post / reel URL
captionCaption text
hashtagsHashtags from the caption
mentions@mentions from the caption
commentsCountComment count
likesCountLike count
videoPlayCountPlay count for reels/videos when Include video play counts is on and Instagram returns it
timestampPublish time (UTC, ISO 8601)
displayUrlThumbnail / primary image URL
videoUrlDirect video URL when present
imagesCarousel image URLs (when present)
ownerUsernamePost owner username
ownerFullNameOwner display name
ownerIdOwner user id
productTypeInstagram product type (clips, feed, …)
isPaidPartnershipPaid partnership flag
isCommentsDisabledComments disabled flag
hasAudioAudio flag when Instagram reports it
dimensionsHeight / dimensionsWidthOriginal media size
locationNameLocation name when set
musicInfoReel audio metadata when exposed
followersCountExact profile follower count when available
inputUrlProfile 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

  1. Resolves the public profile (followers, owner metadata).
  2. Walks the profile timeline newest → oldest until the date cutoff or max limits.
  3. Optionally fills videoPlayCount from the clips/reels connection when Include video play counts is enabled.
  4. 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.