Instagram Profile Scraper
Pricing
from $2.00 / 1,000 post scrapeds
Instagram Profile Scraper
Scrape public Instagram profiles anonymously — full name, bio, followers/following, posts count, verified/business flags, category, external link, profile picture, plus a best-effort list of recent posts (caption, likes, comments, media URLs). No login required. HTTP-only.
Pricing
from $2.00 / 1,000 post scrapeds
Rating
0.0
(0)
Developer
bootforge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
The Instagram Profile Scraper is an Apify actor that extracts public Instagram profile data — no login, no account, no cookies. Pass any username, @handle, profile URL, or post URL and get one structured record per profile: full name, biography, follower/following counts, post count, verified/business flags, category, external link, and profile picture — plus a best-effort list of recent posts (caption, likes, comments, media URLs).
Use it for influencer research, lead generation, competitor tracking, or social-media analytics — exported to JSON, CSV, or Excel, or pulled from the Apify API.
Table of contents
- What the Instagram profile scraper does
- How to scrape Instagram profiles
- Instagram profile scraper input
- Instagram profile data output
- How much it costs
- Recommended proxies for Instagram
- Why this Instagram profile scraper
- FAQ
- Rate this actor
- Related actors
What the Instagram profile scraper does
- 🔓 No login required — anonymous HTTP extraction; no Instagram account, password, or session cookie.
- 🧾 Username, handle, URL, or post URL — accepts
nasa,@nasa,https://instagram.com/nasa/, or ahttps://instagram.com/p/ABC123/post URL (returns the profile that owns the post). - 👥 Full profile metadata — full name, bio, follower/following counts, post count, verified/business flags, category, external link, and profile picture.
- 🖼️ Recent posts — best-effort list of recent posts (caption, likes, comments, media URLs), controlled by
max_posts(0= metadata only). - 📄 Two output shapes —
post(one flat row per post, profile fields denormalized — CSV-friendly) orprofile(posts nested as JSON). - 💳 Pay only for what you get — private accounts return metadata and are charged; not-found, blocked, or errored profiles are never charged.
How to scrape Instagram profiles
- Click Try for free and open the actor.
- Add one or more
targets— usernames, @handles, profile URLs, or post URLs. - Set
max_posts(default 12; use0for metadata only). - Choose
output_mode—postfor spreadsheets,profilefor JSON pipelines. - Select a residential proxy (Apify Proxy residential is prefilled).
- Click Start, then export as JSON, CSV, or Excel.
Scrape profiles with recent posts:
{"targets": ["nasa", "@natgeo", "https://instagram.com/bbcearth/"],"max_posts": 12,"output_mode": "post","proxy": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}}
Metadata only (cheapest — no posts):
{"targets": ["nasa"],"max_posts": 0,"proxy": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}}
Instagram profile scraper input
| Field | Description |
|---|---|
targets | Usernames, @handles, profile URLs, or post URLs (nasa, @nasa, https://instagram.com/nasa/, https://instagram.com/p/ABC123/). A post URL returns the profile that owns it. Required. |
max_posts | Best-effort cap on recent posts per profile (default 12, max 500). 0 = metadata only. Anonymous pagination may stop early and return a partial result — that is normal, not an error. |
output_mode | post (default) — one row per post, profile fields denormalized (clean CSV). profile — one row per profile with posts nested as JSON. |
proxy | Required. Instagram blocks datacenter IPs — use a residential proxy (Apify Proxy residential, prefilled) or your own via a provider object. |
Instagram profile data output
Each row is one post with the profile denormalized onto it (output_mode: post). Sample:
{"username": "nasa","full_name": "NASA","biography": "Explore the universe and discover our home planet with NASA.","followers": 97800000,"following": 78,"posts_count": 4120,"is_verified": true,"is_private": false,"is_business": true,"category": "Science, Technology & Engineering","external_url": "https://www.nasa.gov/","profile_pic_url": "https://instagram.fxyz1-1.fna.fbcdn.net/v/...","user_id": "528817151","posts_collected": 12,"partial": false,"post_shortcode": "C8xAbC1DefG","post_url": "https://www.instagram.com/p/C8xAbC1DefG/","post_caption": "A new view of the Pillars of Creation from the James Webb Space Telescope.","post_likes": 1240533,"post_comments": 8821,"post_taken_at": "2026-06-10T14:02:11+00:00","post_display_url": "https://instagram.fxyz1-1.fna.fbcdn.net/v/...","scraped_at": "2026-06-19T08:30:00+00:00","error": null}
| Field group | Fields |
|---|---|
| Profile (every row) | username, full_name, biography, followers, following, posts_count, is_verified, is_private, is_business, category, external_url, profile_pic_url, user_id, posts_collected, partial, scraped_at, error |
Per post (post mode) | post_shortcode, post_url, post_caption, post_likes, post_comments, post_taken_at, post_display_url |
Profiles with no posts (private / not-found / max_posts=0) emit a single metadata row. In profile mode, posts are nested in a posts array instead of being flattened.
How much it costs
This actor uses pay-per-event pricing — you pay for what you scrape, not for time.
| Event | USD |
|---|---|
| Actor start (per GB memory) | $0.005 |
| Profile scraped | $0.008 |
| Post scraped | $0.002 |
Default memory is 1 GB, so the start event is $0.005 per run.
| Typical run | Profiles | Posts each | Cost |
|---|---|---|---|
| Single profile, metadata only | 1 | 0 | ~$0.01 |
| 100 influencers, 12 posts each | 100 | 12 | ~$3.21 |
| 1,000 profiles, metadata only | 1,000 | 0 | ~$8.01 |
| 1,000 profiles + 5 posts each | 1,000 | 5 | ~$18.01 |
You only pay for profiles actually delivered. Not-found, blocked, or errored profiles are not charged. Private accounts return metadata and are charged.
Recommended proxies for Instagram
A residential proxy is required — Instagram blocks datacenter IPs (including Apify's servers). The easiest option is Apify's managed residential proxy, which this actor prefills:
{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}
You can also plug in your own residential provider (Bright Data, Oxylabs, SmartProxy, or any raw_urls proxy). If you run your own scrapers — on or off Apify — and need reliable residential IPs for Instagram or other social sites, we use and recommend DataImpulse: pay-as-you-go, per-country targeting, no monthly minimum.
👉 Get DataImpulse residential proxies (referral link)
Why this Instagram profile scraper
- No login, no cookies — pure anonymous HTTP extraction; nothing to get your account flagged or banned.
- Flexible targets — mix usernames, handles, profile URLs, and post URLs in one run.
- CSV-ready or JSON-ready —
postmode flattens for spreadsheets;profilemode nests for pipelines. - Honest billing — only delivered profiles and posts are charged; failures cost nothing.
- Open source — the underlying
instagram-scraperPython package ships a Typer CLI and a FastAPI server; the Apify wrapper is a thin layer.
FAQ
Do I need an Instagram account or login? No. The actor extracts only publicly visible profile data anonymously over HTTP — no account, password, or session cookie. It cannot access private content, so private posts are never returned.
Which proxies work best for Instagram? Residential proxies. Instagram blocks datacenter IPs, so Apify's residential group (prefilled) is the easiest choice. For your own scrapers we recommend DataImpulse residential IPs (referral link).
Can I scrape private profiles? Only their public metadata — name, follower count, bio, category, and picture. Posts of private accounts are not accessible anonymously, so the profile row is returned without posts, still charged as one profile.
How many recent posts can I get? Set max_posts up to 500. Pagination is best-effort under anonymous access; for large back-catalogs the partial flag marks profiles where collection stopped early. That is expected behavior, not an error.
Am I charged for profiles that don't exist or are blocked? No. Not-found, blocked, and errored profiles are never charged. Private accounts are charged because metadata is still delivered.
Is scraping Instagram legal? This actor collects only publicly available profile data. You are responsible for complying with Instagram's terms and applicable laws, and for not collecting personal data without a lawful basis.
Rate this actor ⭐
If the Instagram Profile Scraper saved you time, please leave a review on its Apify Store page — ratings help other people find it and tell us what to build next. Hit a bug or missing field? Open an issue through the actor's Issues tab and we'll fix it fast — recency and reliability are what keep this actor ranking.
Related actors
Building a broader social or lead pipeline? These actors use the same proxy config format and Pydantic-validated output.
- Instagram Post Scraper — scrape posts by username or direct post/reel URL: caption, likes, comments, media URLs, owner. No login.
- Instagram Comment Scraper — pull comments from any public post or reel: author, text, likes, timestamp. No login.
- Google Maps Scraper — extract business leads with emails, phone numbers, reviews, and social links.
- LinkedIn Profile Scraper — scrape LinkedIn profiles via your
li_atcookie: structured fields, full experience history, optional contact enrichment.
