Instagram Profile Scraper
Pricing
from $2.50 / 1,000 results
Instagram Profile Scraper
Turn Instagram usernames or profile links into clean profile rows: full name, bio, followers, following, post count, verified badge, business category, website links, profile picture and the 12 latest posts. No Instagram account needed. Failed profiles are reported and not charged.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
Philip Kirkbride
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Turn a list of Instagram usernames or profile links into clean profile rows. Every profile becomes one row with its full name, bio, follower count, following count, number of posts, verified badge, website and bio links, profile picture and the 12 latest posts with their links, captions and, where Instagram shows them, publish time, likes, comments and views.
Use it to vet influencers before a campaign, track follower growth for your own brand and your competitors, enrich a lead list with bios and website links, or build a list of accounts in a niche. Only public profile information is collected and no Instagram account is needed.
Quick Start
{"usernames": ["natgeo","nike","https://www.instagram.com/nasa/"],"maxItems": 100,"includeLatestPosts": true,"completeProfiles": true}
Usernames can be written as natgeo, @natgeo or as a profile link such as https://www.instagram.com/natgeo/. Links copied from the app with extra parameters (?hl=en, ?igsh=...) work too.
Input
| Input | Type | Default | Meaning |
|---|---|---|---|
usernames | array | required | Instagram usernames or profile links. Duplicates are removed. |
maxItems | integer | 100 | Total cap on profile rows for the run (up to 5,000). |
includeLatestPosts | boolean | true | Add the profile's latest posts (up to 12) to each row. Turn it off for smaller rows when you only need the profile figures. |
completeProfiles | boolean | true | When a profile's details are slow to load, make one extra attempt to fill in the bio, following count and links before returning a partial row. |
What it returns
The dataset contains one row per profile:
| Field | Meaning |
|---|---|
username, url, userId | The username (lower case), the profile link and Instagram's numeric account id. |
inputUrl | What you supplied. |
fullName, biography | The display name and the bio text. |
followersCount, followsCount, postsCount | Followers, accounts followed and the total number of posts. |
isVerified, isPrivate | Verified badge and private-account flag. Private accounts return their profile figures but no posts. |
isBusinessAccount, businessCategory | Whether it is a business or creator account and the category shown on the profile (for example Government Agencies or Sportswear Store). Currently null on most rows, see Limits and caveats. |
businessEmail, businessPhone | Public contact details, when the account shows them. Currently null on most rows, see Limits and caveats. |
externalUrl, externalUrls | The main website link and every bio link with its title. |
profilePicUrl | Profile picture link. |
latestPosts | Up to 12 latest posts: shortCode, url, type (image, video or carousel), caption, takenAt, likesCount, commentsCount, videoViewCount, displayUrl and ownerUsername (differs from the profile for collaboration posts). |
missingFields | Profile fields Instagram did not show for this profile during the run. Empty for a complete row. |
scrapedAt | Collection time (UTC, ISO 8601). |
error | Always null in the dataset. Failures are reported in the run summary instead. |
Fields the profile leaves empty (no bio, no website) are null or an empty list, never guessed. A field that is null because Instagram did not show it is also named in missingFields, so you can tell the two apart.
The run summary (OUTPUT) reports profilesRequested, profiles (rows delivered), partialProfiles (rows with a non-empty missingFields), errors and the list at profileErrors.
Example queries
- Influencer vetting: paste the creators you are considering and compare
followersCount,postsCountand the likes and comments on their latest posts. - Competitor watch: schedule a daily run over your brand and your competitors and chart
followersCountover time. - Lead enrichment: add bios, follower counts and website links to a list of business accounts, then export to CSV or Excel.
- Quick profile figures: set
includeLatestPoststofalsewhen you only need follower and post counts for a long list.
Output example
{"username": "nasa","url": "https://www.instagram.com/nasa/","inputUrl": "https://www.instagram.com/nasa/","userId": "528817151","fullName": "NASA","biography": "Making the seemingly impossible, possible. ✨","followersCount": 104380790,"followsCount": 90,"postsCount": 4968,"isVerified": true,"isPrivate": false,"isBusinessAccount": null,"businessCategory": null,"externalUrl": "https://www.nasa.gov/","externalUrls": [{"title": "NASA.gov Homepage","url": "https://www.nasa.gov"},{"title": "How to Watch NASA Livestreams","url": "http://nasa.gov/ways-to-watch"}],"businessEmail": null,"businessPhone": null,"profilePicUrl": "https://scontent-dfw5-1.cdninstagram.com/v/t51.2885-19/29090066_159271188110124_1152068159029641216_n.jpg","latestPosts": [{"shortCode": "DeTUk4sDSp-","url": "https://www.instagram.com/p/DeTUk4sDSp-/","type": "video","caption": "POV: you're watching the Earth set\n\nWe just released hundreds of new images and hours of new audio from our Artemis II m…","takenAt": "2026-10-10T15:15:02Z","likesCount": 712273,"commentsCount": 7097,"videoViewCount": 3089092,"displayUrl": "https://scontent-dfw5-2.cdninstagram.com/v/t51.82787-15/842191580_18656578867049152_4200499629839780998_n.jpg","ownerUsername": "nasa"}],"missingFields": ["isBusinessAccount","businessCategory","businessEmail","businessPhone"],"scrapedAt": "2026-10-19T23:53:20Z","error": null}
Failed profiles
A profile that cannot be retrieved (for example a mistyped, renamed, deleted or deactivated username, an account Instagram hides from signed-out visitors, or an age-restricted account) is reported in the run summary at OUTPUT.profileErrors with its input, username, code and message. Failed profiles are never dataset rows and are not charged. If no profile at all could be collected, the run ends with an error instead of finishing green with an empty dataset.
Limits and caveats
- Only what Instagram shows publicly on a profile is returned. Followers lists, stories, highlights and comments are not included.
latestPostsholds up to the 12 latest posts; older posts are not collected. For some profiles only the 6 latest posts carry likes and publish time.- Instagram does not always show every detail. The business category, account type and contact details are currently not shown to signed-out visitors, so they are null and listed in
missingFieldson most rows. Follower, following and post counts, bio and links are still returned; when Instagram shows only a profile's summary card, bio, following count and links are listed inmissingFieldstoo. - Counts are exact numbers as Instagram reports them at collection time.
- Instagram shows a small share of existing accounts to signed-out visitors as if they did not exist. Those come back as
NOT_FOUNDinOUTPUT.profileErrorsand are not charged. - Automated access is subject to Instagram's terms; use this actor only where you have the necessary permissions and a lawful basis, and handle any personal data in line with the privacy laws that apply to you.
FAQ
Do I need an Instagram account or cookies? No. Only public profiles are read.
What happens with private accounts? You get the profile figures (name, bio, counts, verified badge), but no posts, as Instagram shows them to anyone.
Can I mix usernames and links? Yes. Usernames, @ handles and profile links can all go in usernames; duplicates are returned once.
How fast is it? About 10 seconds per profile; 1,000 profiles take roughly 2.8 hours. The default run timeout is 4 hours, enough for about 1,400 profiles. For longer lists, split them across several runs or raise the timeout in the run options.
Price
$0.0025 per profile delivered, plus $0.005 per run start. The run-start event is charged per GB of memory; the default 512 MB run is one start event. The start is charged even if the run saves no results. Failed profiles are not charged. Platform usage is included in these prices.