Instagram Scraper - Profiles, Posts, Hashtags & Comments
Pricing
from $1.99 / 1,000 results
Go to Apify Store
Instagram Scraper - Profiles, Posts, Hashtags & Comments
Pricing
from $1.99 / 1,000 results
One profile per line. "nasa", "@nasa" and "https://www.instagram.com/nasa/" are all accepted. Each one returns a profile row (name, bio, follower, following and post counts, verified badge) plus its newest posts, up to Max posts per profile. Private accounts return the profile row only and are marked partial with partialReason "private_account".
One post per line: https://www.instagram.com/p// or https://www.instagram.com/reel// (a username in front and query strings are fine). Each one returns that post and up to Max comments per post URL of its comments, read page after page.
Upper bound on the post rows one profile may produce, newest first. Never exceeded. Up to 12 come in one request; more are read page by page.
Upper bound on the post rows one hashtag may produce. Never exceeded. When the public search results run out first, the hashtag is marked partial with partialReason "search_results_exhausted" instead of being reported as complete.
Comments to collect for each post in Post or Reel URLs. Instagram shows about 14 per page; the Actor pages on until this number is reached or Instagram has no more. 0 turns comments off. When Instagram stops before its own comment count, the post is marked with commentsPartialReason "comments_not_public": its count includes replies and comments it does not show to logged-out visitors.
Comments to collect for each post found through usernames or hashtags. Off (0) by default, because every post then needs its own requests.
Leave empty for no date filter. A date (2026-10-01), a full time (2026-10-01T08:00:00Z) or a relative period ("7 days", "2 weeks", "3 months"). Applies to profile and hashtag posts. A profile stops reading at its first post older than this, below its pinned posts, so an old pinned post never ends the list early. Post URLs you name yourself are always collected.
Leave pinned posts out of profile results. Either way a pinned post is written at most once per run and carries isPinned: true, so it is never counted twice.
Hard ceiling on the HTTP requests this run sends. At the ceiling collection stops: what was read is kept, unfinished inputs are written with partialReason "upstream_request_cap" and the run ends normally. Leave it empty and the Actor works a ceiling out from your own inputs and limits, so a run is never unbounded.