Instagram Profile Content Scraper — Posts, Reels & Story Status
Pricing
from $0.75 / 1,000 results
Instagram Profile Content Scraper — Posts, Reels & Story Status
Scrape posts, reels, or check story/live status for one or more public Instagram accounts, with optional full media detail enrichment.
Pricing
from $0.75 / 1,000 results
Rating
0.0
(0)
Developer
The Netaji
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
The Actor collects the public content published by one or more Instagram accounts. One field selects what to collect — posts, reels, or highlights and story status — and pagination is handled internally.
Selecting content
scraperType is required and determines what a run returns.
| Value | Label | Returns |
|---|---|---|
userPosts | Posts | Feed posts, paginated |
userReels | Reels | Reels, paginated |
userHighlights | Highlights/Story Status | Highlight reels, plus whether a public story is live now |
Accepted input
| Field | Type | Default | Description |
|---|---|---|---|
username | array of strings | — | Required. Usernames, profile URLs, or numeric user IDs. |
scraperType | enum | userPosts | Required. userPosts, userReels, userHighlights. |
maxItem | integer | 100 | Maximum items saved per account. 0 removes the limit. |
enrichMedia | boolean | false | Fetches the full media object for every item. |
{"username": ["nasa"],"scraperType": "userPosts","maxItem": 100,"enrichMedia": false}
A value made entirely of digits is treated as a numeric user ID rather than a username; anything else is treated as a username or profile URL. This matters for accounts whose username is all digits — pass the profile URL in that case so it is not misread as an ID.
maxItem applies to each account independently rather than as a shared total.
Response fields
One record per item.
| Field | Contents |
|---|---|
pk | Instagram media ID |
code | Shortcode, the identifier in a post URL |
like_count | Likes |
comment_count | Comments |
taken_at | Publication timestamp |
media_type | Image, video, or carousel |
caption | Caption text |
has_public_story | Whether a public story is live, in Highlights mode |
is_live | Whether the account is broadcasting live, in Highlights mode |
enriched | Whether the full media object was fetched |
source_username | The account this item came from |
{"pk": "3412987456123456789","code": "C9xY2zAqBcD","like_count": 184220,"comment_count": 1204,"taken_at": 1785312000,"media_type": 1,"source_username": "nasa","enriched": false}
code is the useful identifier to carry forward — it is what appears in a post URL and what Instagram Post Scraper accepts.
Behaviour on partial results
Content is collected through a cursor and ends when Instagram reports no further pages, returns an empty page, or maxItem is reached.
Enrichment is applied per item and issues one additional request each. Items that fail to enrich are skipped rather than aborting the run.
Frequently asked questions
Are stories themselves returned?
No. Highlights mode returns highlight reels — the collections an account has pinned to its profile — along with has_public_story and is_live, which report whether a story or broadcast is live at the moment of the run. The story content itself is not collected. Those two fields are point-in-time observations: a run an hour later can legitimately report differently.
Why do reels also appear among posts?
Instagram surfaces reels in the main feed as well as the reels tab, so the two modes overlap for accounts that post both. userReels is the reliable way to isolate them; filtering userPosts on media_type is an approximation.
Why did an account return fewer items than it has posted?
Either maxItem capped the run, or Instagram stopped serving pages. The feed paginates through a bounded window rather than a complete archive, so very old content on a long-running account can be unreachable. The run log distinguishes the two.
What does enrichMedia add, and what does it cost?
The complete media object — full caption, all carousel children, tagged users, and location where present. Each item costs one additional request and one additional billed event, so a 500-item run performs 500 extra requests. Collecting first and enriching a subset afterwards is usually cheaper.
Can a numeric user ID be used instead of a username? Yes. A value made only of digits is sent as a user ID. Because that rule is purely syntactic, an account whose username happens to be all digits would be misread — pass the profile URL for those.
How is a private account handled? It returns nothing. Only public content is readable, and no logged-in session is used.
Related Actors
| Actor | Purpose |
|---|---|
| Instagram Post Scraper | Full detail or comments for individual posts |
| Instagram User Info Scraper | Profile details for the accounts themselves |
| Instagram Popular Search Scraper | Content by hashtag or keyword rather than by account |
| Instagram Followers & Followings Scraper | Follower and following lists |