Instagram Profile Scraper - Follower Count, Posts and Reels avatar

Instagram Profile Scraper - Follower Count, Posts and Reels

Pricing

from $1.20 / 1,000 profile returneds

Go to Apify Store
Instagram Profile Scraper - Follower Count, Posts and Reels

Instagram Profile Scraper - Follower Count, Posts and Reels

Scrape public Instagram profiles by username or profile URL. Get follower count, following, post count, bio and link-in-bio URLs, verified badge, profile picture and user id, plus optional posts and Reels with likes, comments and views. No login, cookies or API key.

Pricing

from $1.20 / 1,000 profile returneds

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

15

Total users

6

Monthly active users

22 days ago

Last modified

Share

This Instagram profile scraper turns a list of usernames or profile URLs into a clean table of public profile data: follower count, following, post count, biography, link-in-bio URLs, verified badge, profile picture and the stable numeric user id. Use it to vet influencers, benchmark competitors or build a creator database without logging in, without cookies and without an Instagram API key.

By default you get exactly one row per profile. Ask for timeline posts or Reels and those arrive as extra rows under the profile they belong to, with likes, comments, views, captions, hashtags and mentions.

What the Instagram profile scraper returns

  • followers, following and posts_count - the headline counts, as numbers
  • full_name, username and pronouns - how the account presents itself
  • biography, bio_links, bio_emails and related_profiles - biography, link-in-bio URLs, email addresses written in the bio and related accounts, when available
  • is_verified, is_business_account and is_private - badge state and account type
  • profile_pic_url and user_id - image URL and the stable numeric id for joins
  • recent_post_shortcodes and recent_post_count - the newest posts shown on the profile
  • Posts per profile back through the account's full history (up to 1000), with exact likes, comments and views, or profile data only when set to zero
  • The profile's Reels tab with play counts and audio, when maxReelsPerProfile is set

Why use this Instagram profile scraper

Follower counts are the most requested and least accessible number on Instagram. The Graph API returns them only for accounts you own or manage, which rules out every competitor, prospect and creator you might actually want to measure. The public profile page carries the figure, but reading it by hand for hundreds of accounts is slow and error-prone.

This actor reads the logged-out public profile and returns it as a row. It accepts bare usernames, @handles or full profile URLs interchangeably, so a list assembled by hand from different sources works without normalising it first.

Input

FieldTypeRequiredDefaultDescription
searcharrayyesnone (prefilled with natgeo in the console)Instagram usernames or profile URLs, one per line.
maxPostsPerProfileintegerno0Posts to also return per profile, newest first, back through the full history (up to 1000). Left at 0 you get one row and one charge per profile. Each post returned is billed as its own, cheaper post event.
maxReelsPerProfileintegerno0Reels to return from the profile's Reels tab (up to 1000), billed as post events. Reels already returned as posts are returned once.

Example input, two profiles with the three newest posts each:

{
"search": ["nasa", "https://www.instagram.com/nike/"],
"maxPostsPerProfile": 3
}

Output

One row per profile, followed by its post and Reel rows when you asked for them. record_type tells them apart.

Profile row

FieldDescription
record_typeprofile
usernameInstagram handle
urlPublic Instagram URL of the profile
full_nameDisplay name
user_idInstagram numeric user id
followersFollower count
followingAccounts this profile follows; null when the public profile does not show it
posts_countTotal posts on the profile
reels_count, highlight_reel_countReels and story highlights on the profile, when available
is_verifiedWhether the account carries the verified badge
has_public_storyWhether a public story is live; null when unknown
is_private, is_business_account, is_professional_accountAccount type flags
external_url, business_addressExternal link and business address, when the account shows them
pronounsPronouns set on the profile
profile_pic_urlProfile picture URL
recent_post_shortcodes, recent_post_countNewest posts shown on the profile
biographyFull biography text when available; string or null
bio_linksLink-in-bio URLs as objects with title (string or null) and url (string)
bio_emailsArray of email addresses extracted from the biography
related_profilesArray of usernames Instagram lists as related accounts
bio_snippetBiography snippet when the public profile response includes one
categoryBusiness or creator category when available
websiteExternal website URL when available
phoneLegacy public contact field; currently unavailable
profile_url, handle, name, bio, emailsThe same profile in the cross-platform social field names, for joining with other social scrapers
platform, source, fetched_atWhere and when the row was collected

Profile details depend on the public response Instagram returns for that account. biography can be null; bio_links, bio_emails and related_profiles can be empty or absent when unavailable. The historical fields bio_snippet, category, website and phone remain supported, but do not assume every optional detail will be filled.

Selected fields from a real profile row of a run on @natgeo (the full row also carries profile_pic_url and 39 related_profiles):

{
"record_type": "profile",
"username": "natgeo",
"url": "https://www.instagram.com/natgeo/",
"full_name": "National Geographic",
"user_id": 787132,
"followers": 268456498,
"following": 108,
"posts_count": 32036,
"reels_count": 90,
"biography": "Step into wonder and find your inner explorer with National Geographic 🌎",
"bio_links": [
{
"title": null,
"url": "http://visitstore.bio/natgeo"
},
{
"title": "Subscribe Here!",
"url": "https://ngmdomsubs.nationalgeographic.com/servlet/OrdersGateway?cds_mag_code=NGM&cds_page_id=283562&cds_response_key=I5FX10002"
}
],
"bio_emails": [],
"is_verified": true,
"is_business_account": true,
"is_private": false,
"highlight_reel_count": 1,
"pronouns": [],
"recent_post_shortcodes": ["Dd_irlvg4ar", "Dd8u0tIFz1F", "Dd97mt9AeqL", "Dd9nPU7Azb6", "Dd9IsqgFYoS", "Dd8_vklopMD"],
"recent_post_count": 6,
"platform": "instagram",
"fetched_at": "2026-10-02T15:31:58.765Z",
"profile_url": "https://www.instagram.com/natgeo/",
"handle": "natgeo",
"name": "National Geographic",
"bio": "Step into wonder and find your inner explorer with National Geographic 🌎",
"emails": []
}

Post and Reel rows

Each post row carries shortcode, url, caption, likes, comments_count, views, posted_at, product_type, is_video, hashtags, mentions, tagged_users, coauthors, is_paid_partnership, media URLs, music details, comments, the owner fields (owner_username, owner_followers, owner_is_verified, ...) and derived figures such as engagement_rate and went_viral.

By default, the actor returns up to 30 comments on each profile's 12 newest timeline posts; comments_count is always filled. Older timeline posts and posts returned only from the Reels tab have an empty comments list. Selected fields from a real post row of a run on @nasa:

{
"record_type": "reel",
"shortcode": "DdHyaYAifb6",
"url": "https://www.instagram.com/p/DdHyaYAifb6/",
"owner_username": "nasa",
"owner_followers": 104305884,
"engagement_rate": 0.114,
"likes": 118947,
"comments_count": 873,
"views": null,
"posted_at": "2026-09-10T21:20:24Z",
"product_type": "carousel_container",
"is_video": false,
"mentions": ["nasakennedy", "europeanspaceagency", "astro_luca", "astro_frankrubio", "astrokomrade", "astroandred", "astro_farmerbob"],
"is_paid_partnership": false,
"source_profile": "nasa",
"went_viral": false
}

Use cases

Influencer vetting at list scale. Before outreach, pull the whole candidate list in one run and filter on follower count, verification and recent engagement. Turning on a few posts per profile shows whether the audience actually reacts, which a follower count alone never tells you.

Competitive benchmarking on a schedule. Track a competitor set weekly and the follower deltas become a growth-rate table. Growth rate is far more informative than absolute size, and it is the number that reveals which competitor's content strategy is actually working.

Instagram follower count checks in bulk. Free follower count checkers look up one account at a time in a browser. This actor takes hundreds of handles at once and returns the counts as data you can export to CSV, Excel or JSON, or feed into a spreadsheet or dashboard through the Apify API.

Building a creator database. user_id is stable even when a handle changes, so it is the right join key for a database that has to survive rebrands. Combined with follower count and post activity it supports a creator index that stays correct over time.

How this Instagram profile scraper compares

OptionFollower counts for any public accountBulk listsLogin neededPrice
Instagram Graph APINo, only accounts you manageYesYes, app reviewFree
Free follower count checker websitesYesNo, one at a timeNoFree, manual
apify/instagram-profile-scraperYes, with a broader profile field setYesNo$0.0026 per profile on the free plan
This actorYesYesNo$0.0012 per profile

The platform-official actor is the bigger tool, with the trust and default ranking that implies. The honest comparison is price and simplicity: three inputs here against a broader configuration surface there. If you need follower counts, verification and posts for a list of handles at under half the rate, this one is narrower on purpose. Competitor price as listed in the Apify Store on 2 October 2026.

Pricing

$0.0012 per profile returned, which is $1.20 per 1,000 profiles. Posts and Reels are opt-in and bill separately at $0.0010 each, so leaving both at 0 means exactly one charge per profile. All pricing is pay-per-event: you only pay for results you receive. A handle that does not exist returns no row and costs nothing. No actor-start fee, no per-compute-unit charges.

Limits and gotchas

  • Public accounts only. Private accounts return counts without content.
  • Follower count, not the follower list. The list needs authentication and is out of scope.
  • Biography, links, category and website depend on the available public profile data. bio_emails contains addresses written in the biography when available; phone is currently unavailable.
  • Posts go back through the full history, up to 1000 per profile; deep runs take a few minutes.
  • Free Apify plans are capped at 10 rows per run. Paid plans have no cap.
  • Handles that have been renamed or deleted return no row; the run still succeeds and nothing is charged for them.

FAQ

Can I get Instagram follower counts without the API?

Yes. The Graph API only returns follower counts for accounts you own or manage. The public profile page publishes the figure for any public account, and this actor reads it there.

Is this an Instagram follower count checker for many accounts at once?

Yes. Put every handle in search and each one comes back as its own row with followers and posts_count. Schedule the run daily or weekly to track growth.

Does this work on private accounts?

No. Private accounts publish only their name, picture and counts. There is no logged-out route to their content, and this actor does not attempt one.

Can I get the list of followers?

No. This returns the follower count, not the follower list. Exporting a follower list requires an authenticated session, which this actor deliberately does not use.

Do I need cookies or a session?

No. Everything comes from the logged-out public profile, which is why there is no account to get rate limited or banned.

Can I pass profile URLs instead of usernames?

Yes, and you can mix them. Bare usernames, @handles and full profile URLs all work in the same run.

How much does a run of 1,000 profiles cost?

$1.20 with posts and Reels left at 0. Each post or Reel you ask for adds $0.0010.