Instagram Profile Scraper – Followers, Bio, Links & Posts avatar

Instagram Profile Scraper – Followers, Bio, Links & Posts

Pricing

from $1.60 / 1,000 profiles

Go to Apify Store
Instagram Profile Scraper – Followers, Bio, Links & Posts

Instagram Profile Scraper – Followers, Bio, Links & Posts

Scrape public Instagram profiles from usernames, profile URLs or IDs: followers, following, posts count, bio, website links, verified and business status, profile picture, highlights and the latest posts. No login. Pay per profile.

Pricing

from $1.60 / 1,000 profiles

Rating

0.0

(0)

Developer

Badr Bouargan

Badr Bouargan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Share

Scrape public Instagram profiles from a list of usernames or profile URLs: followers, following, posts count, bio, website links, verified and private status, live story, highlights, linked Threads account, profile picture and the 12 latest posts. No Instagram account, no login, no API key. You pay per profile, only for profiles found.

What can it do?

  • 👤 Profile identity: ID, username, display name, URL, profile picture
  • 📝 Bio and all bio links (title and URL), plus the first link on its own
  • 👥 Followers, following and posts counts
  • ✅ Verified badge, private account, memorialized account, pronouns
  • 🎞️ Has reels, story live right now (and when it was posted), highlights with title and cover
  • 🧵 Linked Threads username and URL
  • 📮 The 12 latest posts: type, shortcode, URL, caption, hashtags, mentions, image, alt text
  • ⬇️ Export to JSON, CSV, Excel, XML or HTML, or read through the API

Use it to vet influencers, qualify leads from their bio links, track competitors' audience over time (schedule it daily), or enrich a CRM with Instagram data.

How to use it in 3 steps

  1. Add usernames or profile URLs in Instagram usernames (Bulk edit accepts a pasted list).
  2. Click Start.
  3. Download the dataset (JSON, CSV, Excel) or read it through the API.

The prefilled run (humansofny) returns one profile in about 20 seconds, for less than a cent.

Paste names the way you have them: nasa, @NASA, https://www.instagram.com/nasa/?igsh=…, mobile or instagr.am links, or a comma-separated list on one line. Duplicates are read (and billed) once. A post URL, a numeric ID or a typo is listed in FAILED_INPUTS with the reason, never billed, and the run carries on.

Input

{
"usernames": ["humansofny", "nasa", "https://www.instagram.com/nike/"]
}

Output example

{
"inputUrl": "nasa",
"id": "528817151",
"username": "nasa",
"url": "https://www.instagram.com/nasa",
"fullName": "NASA",
"biography": "🚀 🌎 Exploring the universe and our home planet.",
"externalUrl": "https://www.nasa.gov/",
"externalUrls": [{ "title": "NASA+", "url": "https://plus.nasa.gov", "link_type": "external" }],
"followersCount": 104267078,
"followsCount": 90,
"postsCount": 4954,
"highlightReelCount": 12,
"highlights": [{ "id": "18195781759377100", "title": "Roman", "coverUrl": "https://…" }],
"hasReels": true,
"hasPublicStory": true,
"verified": true,
"private": false,
"threadsUsername": "nasa",
"threadsUrl": "https://www.threads.net/@nasa",
"profilePicUrl": "https://…",
"latestPosts": [
{ "id": "3983118388705688735", "type": "Video", "productType": "clips", "shortCode": "DdG4RIxIPyf",
"url": "https://www.instagram.com/reel/DdG4RIxIPyf/", "caption": "…", "hashtags": ["nasa"] }
]
}

Each run also writes RUN_SUMMARY (profiles saved, failures, amount charged) and FAILED_INPUTS (each username that gave nothing, with a code: not_found, invalid_input, blocked). Failed inputs are never billed.

How much does it cost?

Pay per profile. Platform usage is included.

Apify planPrice per 1,000 profiles
Free$2.60
Starter$2.30
Scale$1.90
Business and above$1.60

With the free $5 monthly credit you can read about 1,900 profiles. Set Maximum profiles or a maximum cost per run and the run stops cleanly there.

What it cannot do

This Actor reads profiles as a logged-out visitor sees them. Instagram keeps some details for signed-in users only, so they are not included:

  • the "About this account" panel (join date, country, former usernames) — the includeAboutSection option is accepted for compatibility but adds nothing and costs nothing;
  • business category and contact buttons, related ("suggested") profiles, IGTV counts;
  • likes and comments counts of the latest posts (use the Instagram Scraper with post URLs for those);
  • numeric profile IDs as input — use the username.

Private profiles return their public details (name, bio, counts) but no posts.

Use it via API

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("badr_xba/instagram-profile-scraper").call(run_input={
"usernames": ["humansofny", "nasa", "https://www.instagram.com/nike/"],
})
for profile in client.dataset(run["defaultDatasetId"]).iterate_items():
print(profile["username"], profile["followersCount"], profile["externalUrl"])

JavaScript (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('badr_xba/instagram-profile-scraper').call({
usernames: ['humansofny', 'nasa'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

cURL (runs the Actor and returns the rows in one call):

curl -X POST "https://api.apify.com/v2/acts/badr_xba~instagram-profile-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"usernames": ["humansofny", "nasa"]}'

Integrations

  • Make, Zapier and n8n: use the Apify app or node with badr_xba/instagram-profile-scraper and push each profile to Google Sheets, Airtable, HubSpot or any CRM.
  • AI agents (MCP): add https://mcp.apify.com/?actors=badr_xba/instagram-profile-scraper to Claude, Cursor or any MCP client.
  • Schedules and webhooks: run it daily on the same accounts to chart follower growth, and get notified when a run ends.

Troubleshooting

What you seeWhat to do
invalid_input in FAILED_INPUTSThe line is not a username or profile URL (often a post URL or a typo). The reason tells you which.
id_not_supportedNumeric IDs need a signed-in session: use the username.
not_foundThe account does not exist, was renamed, or is not shown to visitors. Check it in a private browser window.
blockedInstagram refused every address tried. Keep the RESIDENTIAL proxy group and run again; never billed.
latestPosts is emptyThe profile is private or has no posts.

FAQ

Do I need an Instagram account? No. Nothing is asked from you but usernames.

Why is postsCount rounded for big accounts? For logged-out visitors Instagram shows "32K posts" rather than the exact number.

Is it legal? The Actor only reads what profiles show publicly. That can include personal data protected by laws like the GDPR: collect it only for a legitimate purpose.

Something does not work? Open an issue on the Issues tab with the run ID and the username.