Instagram Profile Scraper
Pricing
from $0.70 / 1,000 profiles
Instagram Profile Scraper
Instagram profile scraper: export followers, bio, email in bio, links, category, latest 12 posts with likes and comments, engagement rate and related profiles. No login or cookies.
Pricing
from $0.70 / 1,000 profiles
Rating
0.0
(0)
Developer
Keklik Technologies
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
Instagram Profile Scraper lets you scrape public Instagram profiles and export the data to JSON, CSV or Excel: followers, following, bio, email in bio, bio links, category, verified and business flags, the 12 latest posts with likes and comments, engagement rate and related profiles. Paste a few usernames or profile URLs, press Start, and get one row per profile. No Instagram account, no login and no cookies are needed.
What data can you extract from Instagram?
Each profile becomes one row with 63 fields:
| Group | Fields |
|---|---|
| Identity | Profile URL, username, full name, bio, profile picture, Instagram ID |
| Counters | Followers, following, posts, story highlights, long videos |
| Flags | Private, verified, business account, professional account, joined recently, has reels, has guides, has a channel |
| Business details | Category (for example "Government Agencies"), preferred contact method (for example "CALL"), business address |
| An email address the account wrote in its bio | |
| Bio links | Every link in the bio, with its title |
| Latest 12 posts | URL, type, caption, likes, comments, video views, date, image URL, location, tagged users, audio |
| Latest 12 long videos | URL, title, caption, duration, views, likes, comments, date, thumbnail |
| Related profiles | Up to about 50 profiles Instagram suggests as similar |
| Derived | Average engagement rate, hashtags used in the bio and in the latest posts |
Use cases
- Influencer marketing: vet creators by followers, engagement rate, category and recent posts before you reach out.
- Lead generation: build lists of business accounts with their category, bio email, address and website links.
- Competitor tracking: run the same list on a schedule and watch follower growth and posting activity over time.
- Market research: use Discovery mode to map the accounts around a brand or niche through Instagram's related profiles.
- Academic and social research: collect public profile metrics for a set of accounts in a clean table.
How to scrape Instagram profiles
- Open Instagram Profile Scraper on Apify and click Try for free.
- In Profiles, paste Instagram usernames or profile URLs, one per line.
- Turn on Discovery mode if you also want the related profiles Instagram suggests, and set Max results to cap the run.
- Click Start and wait for the run to finish. A list of 100 profiles usually takes a couple of minutes.
- Open the Output tab and download the results as JSON, CSV, Excel, XML or HTML, or fetch them with the Apify API.
Input
| Field | What it does |
|---|---|
| Profiles | Profile URLs or usernames, one per line. https://www.instagram.com/nasa/, @nasa and nasa all work. Post, reel and hashtag links are skipped. |
| Discovery mode | Also scrapes the related profiles Instagram suggests for each profile in your list, one level deep. Each discovered row names the profile it came from. Off by default. |
| Max results | Stops the run after this many profiles. Leave it empty for no limit. Use it to cap Discovery mode. |
{"usernames": ["https://www.instagram.com/nasa/", "@natgeo", "starbucks"],"discoveryMode": false,"maxResults": 10}
Output
A shortened row from a real run (the full row has 63 fields):
{"profile_url": "https://www.instagram.com/nasa/","username": "nasa","full_name": "NASA","biography": "Making the seemingly impossible, possible. ✨","followers_count": 104346308,"follows_count": 90,"posts_count": 4963,"highlight_reel_count": 6,"is_verified": true,"is_business_account": true,"category": "Government Agencies","business_contact_method": "CALL","email_address": null,"external_url_1": {"title": "NASA.gov Homepage","url": "https://www.nasa.gov","link_type": "external"},"avg_engagement": 0.003153,"post_hashtags": ["NASA", "Space", "Stars", "Hubble", "Galaxy"],"latest_post_1": {"url": "https://www.instagram.com/p/DeJ28eTxo4s/","type": "GraphImage","caption": "Brewing up new stars 🪄 @NASAWebb’s unique view of the stellar nursery …","likes": 235535,"comments": 719,"posted_at": 1791292211},"related_profiles": [{"username": "sciencechannel","full_name": "Science Channel","is_verified": true}],"discovered_from": null,"hop_depth": 0,"source": "api","scraping_time": "2026-10-13T12:33:42+00:00"}
A few fields worth knowing:
avg_engagementis the average of likes plus comments on the latest posts, divided by followers.0.003153means 0.32%.posted_atis a Unix timestamp in seconds.latest_post_N.typeisGraphImagefor a photo,GraphVideofor a video andGraphSidecarfor a carousel.discovered_fromandhop_depthtell your own profiles (hop 0) apart from the ones Discovery mode found (hop 1).
The Output tab has two ready-made views: Overview and Contacts and links. You can export the dataset to JSON, CSV, Excel, XML and HTML.
Full rows and partial rows
Every row has a source field:
api: a full row with every field above.fallback: a partial row. For some accounts, most of them businesses, Instagram shows logged-out visitors only part of the profile. In our tests about 4 profiles in 10 came back this way. These rows still have the identity, exact follower and following counts, bio, links, highlights and the 12 latest posts. They do not have the category, contact method, business address, long videos or related profiles, andposts_countis rounded (32000 for "32K"). The joined recently, has a channel and has guides flags are empty, meaning unknown, and so are the business and professional flags when the account has no visible posts.
Discovery mode cannot expand from a partial row, because it has no related profiles.
How much does it cost to scrape Instagram?
Instagram Profile Scraper uses pay-per-event pricing: you pay only for the profiles you get.
- $1.00 per 1,000 profiles on the Apify Free plan.
- Bronze, Silver and Gold Apify plans pay less: $0.90, $0.80 and $0.70 per 1,000 profiles.
- Each profile found by Discovery mode is a result like any other, so set Max results to keep costs predictable.
- Profiles that fail are not results, so you are not charged for them.
The Apify Free plan's monthly credits let you try the scraper before you pay.
Integrations and API
You can run Instagram Profile Scraper from your own code with the Apify API. Here is how to scrape a few profiles with the apify-client package.
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("keklik/instagram-profile-scraper").call(run_input={"usernames": ["nasa", "natgeo"], "maxResults": 10})for profile in client.dataset(run["defaultDatasetId"]).iterate_items():print(profile["username"], profile["followers_count"])
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('keklik/instagram-profile-scraper').call({usernames: ['nasa', 'natgeo'],maxResults: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.map((p) => [p.username, p.followers_count]));
You can also:
- Schedule runs to track follower counts and posting activity daily or weekly.
- Use webhooks to get notified, or trigger your own pipeline, when a run finishes.
- Connect the results to Make, Zapier, Google Sheets, Airbyte and other tools through Apify integrations.
- Give AI agents access through the Apify MCP server, so Claude, ChatGPT or Cursor can look up Instagram profiles for you.
FAQ
Is it legal to scrape Instagram profiles?
This scraper collects only data that Instagram shows publicly to visitors who are not logged in. Profiles can still contain personal data, which laws such as the GDPR and CCPA protect. Make sure you have a lawful reason to collect and use it, and don't scrape private information. If you are unsure, ask a lawyer.
Do I need an Instagram account?
No. You don't need an Instagram account, a login or cookies, and the scraper never uses yours.
Can I scrape private Instagram profiles?
Private profiles are returned with their counters, bio and flags, but without posts, because Instagram does not show their posts to visitors.
Can I get a business account's email and phone number?
Instagram does not show a business account's contact email or phone number to logged-out visitors, even when the account has set a public contact method such as Call. The business_email and business_phone_number fields exist but come back empty. What you can get instead:
email_address: an email the account typed into its bio. In our tests fewer than 1 profile in 10 had one.- Bio links (
external_url_1andall_external_urls): most business profiles link to a website, where contact details usually are. Feed those links to a contact details scraper to collect emails and phone numbers. business_addressandcategory: on full rows, when the account has set them.
Why did some profiles fail?
Profiles that fail are not in the dataset. They are listed, with the reason, in the FAILED record of the run's key-value store (open the run, then Storage, then Key-value store):
invalid_input: not a profile URL or username, for example a post link.not_found: the profile does not exist, was removed, or can only be seen when logged in (age-restricted and some country-restricted profiles).blocked: Instagram refused the profile every time. Run it again later. A few profiles are refused every time, which means Instagram does not show them to logged-out visitors.
Why are some fields empty?
Partial rows (source is fallback) don't have the category, contact method, business address, long videos or related profiles. See Full rows and partial rows. Small accounts often have no related profiles even on full rows.
Do the image and video links last?
No. Instagram image and video links expire after a while. Download the media soon after the run if you need it.
Do I need to set up proxies?
No. There is nothing to configure.
Related scrapers
- Instagram Post Scraper: go past the 12 latest posts and get as many posts per profile as you need, with carousel slides, co-authors and music.
- Instagram Reels Scraper: export a profile's reels with plays, likes, comments and music.
- Instagram Comments Scraper: collect the comments on the posts and reels you found here.
Support
Found a bug or missing a field? Open an issue in the Issues tab and we'll look at it. Need a custom Instagram scraper or data in a different format? Contact us through Apify and we'll build it for you.