Instagram Profile Scraper avatar

Instagram Profile Scraper

Pricing

from $2.00 / 1,000 post scrapeds

Go to Apify Store
Instagram Profile Scraper

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

bootforge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

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

  • 🔓 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 a https://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 shapespost (one flat row per post, profile fields denormalized — CSV-friendly) or profile (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

  1. Click Try for free and open the actor.
  2. Add one or more targets — usernames, @handles, profile URLs, or post URLs.
  3. Set max_posts (default 12; use 0 for metadata only).
  4. Choose output_modepost for spreadsheets, profile for JSON pipelines.
  5. Leave Proxy provider on Default — a residential proxy is included.
  6. 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

FieldDescription
targetsUsernames, @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_postsBest-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_modepost (default) — one row per post, profile fields denormalized (clean CSV). profile — one row per profile with posts nested as JSON.
proxyProviderdefault (residential proxy included), dataimpulse, apify, custom (uses proxyUrls), or disabled.
proxyUrlsYour own gateway URLs, one per entry. Only read when proxyProvider is custom.
proxyApify 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 groupFields
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.

EventUSD
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 runProfilesPosts eachCost
Single profile, metadata only10~$0.01
100 influencers, 12 posts each10012~$3.21
1,000 profiles, metadata only1,0000~$8.01
1,000 profiles + 5 posts each1,0005~$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.

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-readypost mode flattens for spreadsheets; profile mode nests for pipelines.
  • Honest billing — only delivered profiles and posts are charged; failures cost nothing.
  • Open source — the underlying instagram-scraper Python 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.

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_at cookie: structured fields, full experience history, optional contact enrichment.