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
8 hours 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
- Use cases
- 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
nike,@nike,https://instagram.com/nike/, 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.
Use cases
Influencer discovery and vetting — Follower/following counts, post count, verified and business flags, category, and external link in one record — enough to filter a candidate list before anyone opens Instagram. A best-effort list of recent posts comes along, so engagement can be sanity-checked against follower count in the same pass.
Lead generation from business profiles — Business accounts expose category and an external link, which is frequently the company website and the start of a contact trail. Pass usernames, @handles, profile URLs, or even a post URL — all resolve to the profile.
Competitor and brand tracking — Run the same handle set on a schedule to watch follower growth and bio/link changes, which usually shift right before a campaign or launch.
Social analytics enrichment — Attach profile-level context to data you already hold: which of your mentioners are verified, how large their audience is, what category they operate in.
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. - Leave Proxy provider on Default — a residential proxy is included.
- Click Start, then export as JSON, CSV, or Excel.
Scrape profiles with recent posts:
{"targets": ["nike", "@zara", "https://instagram.com/p/Dbdo4gTupuE/"],"max_posts": 12,"output_mode": "post","proxyProvider": "default"}
Metadata only (cheapest — no posts):
{"targets": ["nike"],"max_posts": 0,"proxyProvider": "default"}
Instagram profile scraper input
| Field | Description |
|---|---|
targets | Usernames, @handles, profile URLs, or post URLs (nike, @nike, https://instagram.com/nike/, 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. |
proxyProvider | default (residential proxy included), dataimpulse, apify, custom (uses proxyUrls), or disabled. |
proxyUrls | Your own gateway URLs, one per entry. Only read when proxyProvider is custom. |
proxy | Apify Proxy group + country, read when proxyProvider is apify. Its country also sets the exit country for the built-in providers. |
Instagram profile data output
Each row is one post with the profile denormalized onto it (output_mode: post). Sample:
{"username": "nike","full_name": "Nike","biography": "Just Do It.","followers": 291626051,"following": 264,"posts_count": 1668,"is_verified": true,"is_private": false,"is_business": true,"category": null,"external_url": "http://empli.fi/nike","profile_pic_url": "https://instagram.fbaq6-1.fna.fbcdn.net/v/...","user_id": "13460080","posts_collected": 12,"partial": false,"post_shortcode": "Dbdo4gTupuE","post_url": "https://www.instagram.com/p/Dbdo4gTupuE/","post_caption": "The game looks different from here.","post_likes": 175374,"post_comments": 1148,"post_taken_at": "2026-07-31T16:00:05+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 included — leave Proxy provider on Default. Pick Custom and paste your own gateway URLs.
👉 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 — included by default. For your own scrapers we use DataImpulse (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.
- 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.
