Instagram User Post Scraper API avatar

Instagram User Post Scraper API

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Instagram User Post Scraper API

Instagram User Post Scraper API

Collect posts from any public Instagram account — including captions, likes, comments, media type, location, tagged users, and more. Requires an Instagram Session ID. (Beta)

Pricing

from $1.00 / 1,000 results

Rating

5.0

(1)

Developer

Rush

Rush

Maintained by Community

Actor stats

2

Bookmarked

48

Total users

9

Monthly active users

6 days ago

Last modified

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

  1. Enter 1–10 Instagram usernames, @handles, or profile URLs.
  2. Paste your Instagram Session ID from a signed-in browser.
  3. Set Max Posts Per User, such as 20, and start the Actor.
  4. 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.

Input

Input example

{
"usernames": ["nasa", "natgeo"],
"sessionId": "YOUR_SESSION_ID",
"maxPosts": 20
}
InputMeaning
usernames1–10 accounts; repeated usernames are collected once. Every entry must be valid.
sessionIdRequired Instagram login credential, stored as a secret input.
maxPostsMaximum 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 and available music information. Collaboration posts may also appear on the requested profile.

Fields not supplied or not verifiable from Instagram are null; unknown counts are not converted into zero. Optional lists are empty when no valid entries are available. 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. complete means the requested limit or available end was reached; 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.

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.

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 and saved rows are not intentionally collected again. If saved progress cannot be verified, it stops instead of silently restarting collection.

Does this include every carousel slide or video field?

It returns media links and video metadata supplied by Instagram. 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