Instagram Profile & Posts Scraper — No Login Required
Pricing
from $4.38 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
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
| Field | Type | Notes |
|---|---|---|
mode | enum | profile or posts. |
accounts | array | Usernames, @handles, or full profile URLs. |
maxItems | integer | Posts per account. 0 returns the full window. |
proxyConfiguration | object | Defaults 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.txtpython test_local.py --mode profile nasa natgeo instagrampython test_local.py --mode posts nasa --out sample_output.json
sample_output.json is real output from a live posts-mode run.