Instagram Profile & Posts Scraper — No Login Required avatar

Instagram Profile & Posts Scraper — No Login Required

Pricing

from $4.38 / 1,000 results

Go to Apify Store
Instagram Profile & Posts Scraper — No Login Required

Instagram Profile & Posts Scraper — No Login Required

Scrape public Instagram profiles - follower count, post count, verification - plus recent posts with like and comment counts. No login, no API key.

Pricing

from $4.38 / 1,000 results

Rating

0.0

(0)

Developer

Axery

Axery

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

Instagram Profile & Recent Posts Scraper

Scrapes public Instagram profiles — follower count, post count, verification — plus recent posts with like and comment counts. No login, no session cookie, no API key.

Useful for influencer vetting, competitor tracking, audience-size research, and building a creator database.

Two modes

  • Profile stats — one row per account: followers, total posts, verification, profile picture.
  • Recent posts — one row per recent post: caption, likes, comments, media type, dimensions, timestamp.

What makes this different

Works logged out, because it reads the surface Instagram built for logged-out viewers. Instagram's ordinary profile page returns a login-gated shell with no data embedded, and the old ?__a=1 JSON endpoint now answers with a zero-byte body — both re-verified directly rather than assumed. This Actor reads Instagram's own profile embed widget instead, the one any website uses to display a profile to visitors who aren't signed in.

like_and_view_counts_disabled is reported, not silently flattened. When a creator hides their like counts, Instagram returns no number. Emitting 0 there would read as "this post got no likes" — a claim the data doesn't support. This Actor keeps the flag so a hidden count is distinguishable from a genuine zero.

commenter_count alongside comment_count. These differ when people comment more than once, which is exactly the gap between "how much conversation" and "how many people" — useful for spotting a thread driven by a handful of repeat commenters.

Sponsored posts are flagged. is_paid_partnership travels with every post row, so filtering organic from paid content is a column, not a manual review pass.

Profile mode tells you the posts-mode window in advance. recent_posts_returned reports how many posts the embed actually served, so you know what a posts-mode run will yield before spending on it.

What's honestly out of scope

No comment text. comment_count and commenter_count are real numbers, but the comment bodies are not part of this surface — Instagram's embed returns the counts only.

Recent posts, not full history. The embed serves a fixed window of the newest posts (typically 6) with no pagination parameter. maxItems can narrow that window; nothing can extend it from this surface. To build history, run on a schedule and let the dataset accumulate.

Public accounts only. A private or nonexistent account returns no embeddable data and is reported as a clear failure rather than an empty row.

Input

FieldTypeNotes
modeenumprofile or posts.
accountsarrayUsernames, @handles, or full profile URLs.
maxItemsintegerPosts per account. 0 returns the full window.
proxyConfigurationobjectDefaults to Residential.

Output

{
"username": "nasa",
"full_name": "NASA",
"is_verified": true,
"follower_count": 104427137,
"post_count": 4889,
"recent_posts_returned": 6
}
{
"shortcode": "Dcbo8HCGWep",
"caption": "Watch us work 🧑‍🚀 ...",
"like_count": 64712,
"comment_count": 272,
"commenter_count": 229,
"posted_at": "2026-08-22T20:31:06Z",
"is_paid_partnership": false
}

Each run also writes a RUN_COVERAGE record to the key-value store with what was requested, what came back, and any per-account failures.

Local development

pip install -r requirements.txt
python test_local.py --mode profile nasa natgeo instagram
python test_local.py --mode posts nasa --out sample_output.json

sample_output.json is real output from a live posts-mode run.