Instagram User Post Scraper API
Pricing
from $1.00 / 1,000 results
Instagram User Post Scraper API
Collect available posts and profile details from Instagram accounts using your signed-in session. Export captions, media links, engagement counts, tagged accounts and collection status for one or more usernames.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(1)
Developer
Rush
Maintained by CommunityActor stats
2
Bookmarked
57
Total users
7
Monthly active users
a day ago
Last modified
Categories
Features
Share
Collect available posts and profile details from Instagram accounts using your signed-in session. Export captions, media links, engagement counts, tagged accounts and collection status for one or more usernames.
Features
- Collect several requested accounts in one run.
- Save profile summaries and individual posts as they arrive.
- Preserve source text and unknown values.
- Check per-account collection status and resume verified work.
How to Use
- Enter 1–10 Instagram usernames,
@handles, or profile URLs. - Paste your Instagram Session ID from a signed-in browser.
- Set Max Posts Per User, such as
20, and start the Actor. - Open the Dataset for results and Collection Summary for the status of each account.
To find the Session ID in Chrome, open Instagram while signed in, then Developer Tools → Application → Cookies → instagram.com. Copy the sessionid value. Treat it like a password and keep it private. The Actor checks the signed-in connection before collecting posts. Instagram may require you to review an account security check in its own app or website.
We recommend copying a fresh Session ID before each run. Use a dedicated account instead of your main account, and avoid frequent or repeated runs. Automated access may lead to account restrictions; replacing the Session ID does not remove a restriction or guarantee access.
Input
Input example
{"usernames": ["nasa", "natgeo"],"sessionId": "YOUR_SESSION_ID","maxPosts": 20}
| Input | Meaning |
|---|---|
usernames | 1–10 accounts; repeated usernames are collected once. Every entry must be a valid username or profile link. If Instagram shows that an account is not available, it is skipped and marked unavailable, and the run continues with the other accounts. If an account cannot be identified, the run stops at that account and keeps saved results. |
sessionId | Required Instagram login credential, stored as a secret input. |
maxPosts | Maximum posts per account. Default 0 continues while posts are available, within the run allowance. |
A run can save at most 100,000 rows, including profile rows. Collection may stop earlier because of Instagram restrictions, unavailable data, or the run's spending allowance. 0 does not guarantee that an account's complete history can be retrieved.
Output
Each account can produce one profile row and multiple post rows. The item_type field distinguishes them; sourceUsername identifies the requested account. Each saved profile or post is a Dataset row. Replies and comments themselves are not collected by this Actor.
Profile rows include available identity, biography, profile and website links, follower/following/post counts, and account flags. Post rows include the requested profile's context, post identity, caption, hashtags, mentions, media type and links, engagement counts, timestamps, location, tagged accounts, collaborators, the publishing account and available music information. Collaboration posts may also appear on the requested profile: username and sourceUsername name the requested profile, and ownerUsername names the account that published the post.
Fields not supplied or not verifiable from Instagram are null; unknown counts are not converted into zero. When Instagram marks a post's counts as hidden (isLikeCountHidden is true), likeCount and videoViewCount are null. Tag, mention and collaborator lists are empty when no valid entries are available; mediaUrls is null when no valid carousel links are supplied. Media links can expire. Pin status refers to the requested profile and is null when that information is unavailable. Posts from accounts identified as private are not collected.
Output example
Simplified illustrative post excerpt (not a live result):
{"item_type": "post","sourceUsername": "example_account","username": "example_account","userId": "123456","postId": "987654321","shortcode": "ExampleCode1","postUrl": "https://www.instagram.com/p/ExampleCode1/","caption": "A sample caption #travel","hashtags": ["#travel"],"mediaType": "image","likeCount": null,"isPinned": null,"timestamp": null,"index": 1}
The Dataset's All Fields view includes every returned field. Collection Summary links to OUTPUT, with saved profiles, saved posts, total rows and per-account status. A run's complete means every account reached its requested limit or available end, or is private; it is not a guarantee that Instagram disclosed every historical post. partial, budget_reached and failed describe incomplete work. A successful platform run can still have a partial collection.
Per-account status: limit_reached (Max Posts reached), complete (no further posts were available), private (the account is private, so only its profile is saved), unavailable (Instagram did not show the account, which can also be temporary, so it was skipped and nothing was saved for it), partial (collection stopped before the account was finished, or some of its posts could not be verified and were left out; incompleteRecords is then true) and pending (not started).
FAQ
Why did I receive fewer posts than requested?
The account may have fewer accessible posts, or Instagram may stop supplying data. Check Collection Summary. An access refusal alone does not establish that the Session ID expired.
What if one of my usernames is wrong?
It depends on Instagram's answer for that account. If Instagram shows that the account is not available, it is skipped and marked unavailable in Collection Summary, and the run continues with the other accounts. If the account cannot be identified from Instagram's answer, the run stops at that account and keeps the results already saved; correct or remove that entry and start a new run for the accounts not collected. Each skipped account uses part of the run allowance, so a list with skipped accounts can stop before every account is reached; the log then says so, and those accounts are marked partial or pending. If a run skips an account and saves nothing, it ends as failed. An entry that is not a valid username or profile link stops the run before it starts; fix that entry and start again.
Can I collect several languages?
Returned captions and names preserve their source text, including non-Latin characters. Instagram account handles still follow Instagram's username format.
What happens after a restart?
The Actor checks previously saved data before continuing. Completed accounts are skipped, and previously saved rows are not appended again. If the Apify platform moves or restarts a run, it keeps its saved results and continues only while its remaining allowance covers the work; otherwise it stops. Accounts marked unavailable are not tried again when the run is restarted or resurrected; start a new run for them. Further collection needs an available run allowance; a restart does not automatically reset it. Continuing a partially collected account may reread earlier pages to reach new posts. If saved progress or the remaining allowance cannot be verified, it stops and keeps existing results. Runs started on an earlier build may not support continuation on this build.
Does this include every carousel slide or video field?
It returns media links and the video metadata Instagram supplies. Instagram's profile post list does not currently include view counts or video durations, so those fields are empty. Missing or unavailable values remain empty; the Actor does not invent them.
Can I use the results with automation tools?
Dataset exports and the Actor API can be used in workflows that accept structured data. No particular third-party integration is implied.
Disclaimer
This Actor is not affiliated with Instagram or Meta. Availability and returned fields depend on Instagram and the signed-in account. Use only credentials and data you are authorized to access, and respect applicable rules and privacy requirements. Automated access may lead Instagram to restrict the account. No availability, completeness or performance guarantee is made.
Keywords: Instagram posts, Instagram profile, captions, hashtags, social media data, Claude Code, OpenClaw, Gemini, Antigravity, Codex, ChatGPT