Instagram Profile Scraper
Pricing
from $0.60 / 1,000 profiles
Instagram Profile Scraper
Scrape Instagram profiles by username, handle, link or ID. Get bio, followers, following, website and bio links, business category, verified status, profile pictures, highlights, related accounts and latest posts. Built for lead generation, influencer research and competitor tracking.
Pricing
from $0.60 / 1,000 profiles
Rating
0.0
(0)
Developer
Coder
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Share
Collect public Instagram profile data by username, handle, profile link or ID: bio, follower and following counts, website and bio links, verified and business status, category, profile pictures, highlights, related accounts and the latest posts, in a clean, structured format.
Add a list of profiles, run it, and export the results as JSON, CSV or Excel, or pull them through the Apify API.
What This Actor Does
- Collects Instagram profiles by username, @handle, profile link or numeric profile ID
- Supports many profiles in one run and returns each one as soon as it is ready
- Returns name, bio, follower and following counts, verified status and profile pictures in HD
- Includes the website and every bio link, including link-in-bio services
- Identifies business and creator accounts and their category
- Counts story highlights
- Optionally adds related profiles: the accounts Instagram suggests as similar
- Optionally adds the latest posts of each profile, with captions, media, likes, comments and hashtags
- Includes private profiles, with the details Instagram shows publicly
Best For
- Lead generation: find business accounts, their category and website
- Influencer discovery and vetting by audience size and account type
- Competitor and brand research
- Finding look-alike accounts in a niche through related profiles
- Enriching CRM or spreadsheet lists of Instagram handles
- Building datasets for dashboards, BI or AI workflows
Input
Add one or more Instagram profiles and choose the extras you need.
Main input fields
usernamesOne profile per row. Accepts usernames (natgeo), handles (@natgeo), profile links (https://www.instagram.com/natgeo/) and numeric profile IDs (787132). Duplicates are returned once.includeRelatedProfilesAdds the accounts Instagram suggests as similar to each profile, inrelatedProfiles.includeLatestPostsAdds up to 12 of each profile's most recent posts, inlatestPosts. Private profiles have no public posts.
Example input
{"usernames": ["natgeo", "@nike", "https://www.instagram.com/starbucks/"],"includeRelatedProfiles": true,"includeLatestPosts": false}
Output
Each dataset item is one Instagram profile.
Fields
| Field | Description |
|---|---|
username, id, url, fbid | Profile handle, identifiers and link |
fullName, biography, pronouns | Display name, bio text and pronouns |
followersCount, followsCount | Followers and following |
verified, private | Verified badge and private account flag |
isBusinessAccount, accountType | Whether it is a professional account: personal, business or creator |
businessCategoryName | Category shown on the profile, such as Brand or Artist |
externalUrl, externalUrlShimmed | Main website link, direct and as Instagram's redirect link |
externalUrls | Every bio link with its title |
highlightReelCount | Number of story highlights |
profilePicUrl, profilePicUrlHD | Profile picture, standard and high resolution |
relatedProfiles | Similar accounts with username, name, ID, verified and private flags (when enabled) |
latestPosts | Up to 12 recent posts with caption, media, likes, comments, hashtags and more (when enabled) |
inputUrl | The entry from your input that produced this profile |
Example output
{"inputUrl": "https://www.instagram.com/starbucks/","id": "1034466","username": "starbucks","url": "https://www.instagram.com/starbucks/","fullName": "Starbucks","biography": "you (pe)can do anything ๐","externalUrl": "http://starbucks.app.link/featuredmenu","externalUrlShimmed": "https://l.instagram.com/?u=http%3A%2F%2Fstarbucks.app.link%2Ffeaturedmenu&e=...","externalUrls": [{"title": "Featured Menu","url": "http://starbucks.app.link/featuredmenu","lynx_url": "https://l.instagram.com/?u=...","link_type": "external"}],"followersCount": 17559115,"followsCount": 5308,"highlightReelCount": 0,"isBusinessAccount": true,"accountType": "business","businessCategoryName": "Brand","private": false,"verified": true,"pronouns": [],"profilePicUrl": "https://scontent.cdninstagram.com/v/t51.82787-19/...","profilePicUrlHD": "https://scontent.cdninstagram.com/v/t51.82787-19/...","fbid": "17841400313980016","relatedProfiles": [{"id": "13936153","username": "buildabear","full_name": "Build-A-Bear Workshop","is_private": false,"is_verified": true,"profile_pic_url": "https://scontent.cdninstagram.com/v/t51.82787-19/..."}],"latestPosts": []}
Each item in latestPosts has the same fields as a post from Instagram Post Scraper, including shortCode, url, type, caption, hashtags, mentions, likesCount, commentsCount, videoPlayCount, timestamp, displayUrl, images, videoUrl and childPosts.
Picture and media links are provided by Instagram and expire after a while, so download any files you need soon after the run.
How To Use
- Add Instagram usernames, handles, profile links or IDs to
usernames, one per row. - Leave
includeRelatedProfileson if you want similar accounts for each profile. - Turn on
includeLatestPostsif you also need each profile's recent posts. - Run the actor and open the dataset, export it as JSON, CSV or Excel, or read it through the Apify API.
Pricing
This actor uses pay-per-event pricing, so you only pay for results you receive. Profiles that cannot be collected are never charged, and related profiles are included at no extra cost.
Current prices for each Apify plan are shown on the actor's Pricing tab.
Free plan
On the Apify free plan, each run collects a limited number of profiles. Upgrade to a paid Apify plan to remove this limit.
Best Practices
- Start with a few profiles to check the output quickly.
- Turn on latest posts only when you need them; profile-only runs are faster.
- Use related profiles to grow a list: run the accounts you find through the actor again.
- Use JSON export when you need nested data such as bio links, related profiles and posts.
- For more than 12 posts per profile, use Instagram Post Scraper.
FAQ
Why is a profile missing from my results?
It was not found or is not publicly available: it may have been renamed, deleted, deactivated or restricted. The run log names every profile that could not be collected.
Can I scrape private profiles?
Yes, with the details Instagram shows publicly: name, bio, follower and following counts, profile picture, verified status and more. Their posts are not public, so latestPosts is empty for private profiles.
Why are related profiles empty for some accounts?
Instagram does not suggest similar accounts for every profile. Some large brands have none.
Does the actor return email addresses or phone numbers?
No. Instagram does not show contact details publicly on the web. Use externalUrl and externalUrls to reach the profile's website and link-in-bio pages.
Can I use a numeric profile ID?
Yes. Numeric IDs work like usernames. If the same profile is entered both ways, it is returned once.
How long does a run take?
Most profiles take a few seconds each, and many are collected in parallel. A few hundred profiles typically finish within a few minutes.
Responsible Use
Use this actor only for publicly available data, and make sure your use complies with applicable laws (including data protection rules such as GDPR) and Instagram's terms. Avoid collecting personal data you don't need.
Troubleshooting
- Open the profile in a logged-out browser window to confirm it exists and is public.
- Check the run log: it names any profile that was skipped and why.
- If a profile could not be collected right now, run it again a little later.
- Test with a few profiles before large runs.