For Instagram profile lookups inside an app or an AI agent that already pulls other platforms, use Scavio's Instagram API: POST /api/v1/instagram/profile returns follower, following and post counts, bio, link, verified flag and profile picture as structured JSON in about 2.4 seconds, with no Meta app and no Instagram login. Scavio starts from $2 per 1,000 requests; a profile request is usually 8 credits, so $16 per 1,000 profiles on the Growth plan billed yearly. One API key covers 40+ platforms, so the same integration that pulls Instagram profiles also handles TikTok, YouTube, LinkedIn and Google. Above a few thousand profiles a month, price decides it: HikerAPI lists at $0.60 to $1.00 per 1,000 profiles, Apify's Instagram Profile Scraper and Bright Data suit batch lists, Meta's business discovery is free for business and creator accounts, and instaloader is free for small scripts.
We build Scavio, so that recommendation comes with an obvious bias. To keep it honest: every price below was read off the vendor's own page on October 8, 2026, every Scavio response in this post is a real capture from that day, and the Scavio section lists what it does badly. On price per profile, Scavio is the most expensive paid option here by a wide margin, and we say by how much.
Which Instagram profile scraper fits your job?
Every tool in this list returns the public profile header of an account. What separates them is price per 1,000 profiles, which fields come back, and whether you need a login or a Meta app first.
| Tool | Choose it for | Login or Meta app needed? | Price per 1,000 profiles (checked Oct 8, 2026) | Main thing to check |
|---|---|---|---|---|
| Scavio | Lookups inside an app or agent that also uses other platforms | No | Starts from $2 per 1,000 requests; a profile is usually 8 credits, so $16 on the Growth plan billed yearly, $80 at pay as you go | higher rates; category often empty |
| HikerAPI | The lowest per-request price | No | $1.00 on its popular plan, $0.60 at volume | Instagram only; 404 responses are billed |
| Apify Instagram Profile Scraper | Batch runs over a list of usernames | No | $2.60 on the free plan, down to $1.60 on Business | Results land in a dataset, not a reply |
| Bright Data | Bulk delivery to S3, Snowflake or a webhook | No | $1.50 pay as you go; 5,000 free records a month | Asynchronous, input is a profile URL |
| Instagram business discovery | Business and creator accounts, through Meta's own API | Yes: Meta app, professional account, App Review | No per-call fee | Six public fields, no personal accounts |
| instaloader | Free Python scripts at small volume | Optional for profiles, required for some data | Free, open source | Stricter limits on cloud IPs |
Volume is the decision that matters
On this job the paid tools differ by more than 25 times on price per profile, so start with how many profiles you will pull in a month.
At a few hundred, the gap is a few dollars and convenience wins: one key, a synchronous reply, the same JSON shape across platforms. At 50,000 a month, HikerAPI's popular plan lists $50 and Bright Data's pay as you go about $67.50 after its 5,000 free records, while Scavio is about $800 at the Growth plan's billed-yearly rate of $16 per 1,000 profiles (though 400,000 credits is twice what that plan includes in a month) and $4,000 at pay as you go. If your job is a large, recurring crawl of creator profiles, Scavio is the wrong tool and the cheaper APIs below are the right ones.
The second decision is whose accounts you need. Meta's own business discovery costs nothing per call, but it only reaches professional accounts, skips age-gated ones, and requires your own professional account, a Meta app and approved access. Every other tool here reads public data without your account, which is also why Instagram's terms apply to all of them (see the FAQ).
What one profile call returns, measured
To see what you actually get, we pulled 8 public accounts through Scavio's profile endpoint on October 8, 2026: two global brands, a creator, a public figure, three bakeries of very different sizes and an independent photographer with a few hundred followers. We counted which of 10 profile fields came back non-empty and timed each call from the client.
| Account | Kind | Verified | Followers | Fields returned (of 10) | Response time |
|---|---|---|---|---|---|
| nike | Global brand | Yes | 291,032,093 | 9 | 2.7 s |
| natgeo | Media brand | Yes | 268,417,855 | 9 | 2.4 s |
| mkbhd | Creator | Yes | 5,288,135 | 9 | 2.4 s |
| zuck | Public figure | Yes | 17,273,294 | 9 | 2.4 s |
| tartinebakery | Bakery chain | Yes | 497,339 | 9 | 2.4 s |
| franzbakery | Regional bakery | Yes | 35,553 | 9 | 2.2 s |
| helenbernhardbakery | Local bakery | No | 3,925 | 10 | 2.9 s |
| An independent photographer | Personal public account | No | 365 | 8 | 3.0 s |
The counts, bio, flags and profile picture came back on every account, and the median call took 2.4 seconds. Two fields did not hold up. The category label came back only for Helen Bernhard Bakery ("Bakery"); it was an empty string on the other seven, including both brands. And the photographer's profile returned no external link. If you segment profiles by category, plan on another source for that field.
We also sent two usernames that do not exist. Both came back as HTTP 200 with "valid": false in the body, and both billed 8 credits. Check that flag before you store a row.
1. Scavio for lookups inside an app or agent
Scavio is a REST API with one key across Instagram, TikTok, YouTube, Google, Amazon and more, plus an MCP server for agents. The profile endpoint takes a username or a numeric user_id and answers synchronously.
The endpoints that matter for profile work, with the credit costs on our backend today:
| Endpoint | Returns | Credits |
|---|---|---|
/api/v1/instagram/profile | Counts, bio, link, verified and private flags, profile picture | Usually 8 (2 to 10) |
/api/v1/instagram/user/posts | A page of the account's timeline posts | Usually 2 (2 to 10) |
/api/v1/instagram/search/users | Accounts matching a keyword, to find usernames | Usually 8 (2 to 10) |
/api/v1/instagram/user/followers | A page of the account's followers | Usually 8 (2 to 10) |
A profile lookup is one request:
import os
import requests
r = requests.post(
"https://api.scavio.dev/api/v1/instagram/profile",
headers={"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}"},
json={"username": "nike"},
timeout=60,
)
body = r.json()
profile = body["data"]
if profile.get("valid") is False:
print("no such account, billed", body["credits_used"])
else:
print(profile["follower_count"], profile["is_verified"], profile["external_url"])The response, trimmed to the fields most pipelines keep (the picture URL is shortened here):
{
"data": {
"pk": "13460080",
"username": "nike",
"full_name": "Nike",
"follower_count": 291032093,
"following_count": 266,
"media_count": 1668,
"is_private": false,
"is_verified": true,
"biography": "Just Do It.",
"profile_pic_url_hd": "https://scontent-phl2-1.cdninstagram.com/v/t51.82787-19/551608484_...n.jpg?...",
"external_url": "http://empli.fi/nike",
"category": ""
},
"response_time": 2215,
"credits_used": 8
}The fields sit at the top level of data, so there is no nested user object to dig through. If you only need a picture, the free Instagram profile picture downloader is built on the same endpoint and needs no key. Our post on the Instagram API without OAuth covers which Instagram data needs Meta's login at all.
What Scavio does badly, from the same day's testing:
- It is the most expensive option here per profile. Each lookup billed 8 credits: $0.016 on the Growth plan billed yearly ($16 per 1,000 profiles) and $0.08 at pay as you go. Every other paid tool in this post lists under $0.003 a profile.
- The billed amount varies. The endpoint usually bills 8 credits and can bill anywhere from 2 to 10; all 10 of our calls billed 8. The real figure is in
credits_usedon every response, so budget for 10. - Missing usernames are billed. A username that does not exist returns HTTP 200 with
"valid": falseand costs 8 credits. Failed calls that return an error status are not billed. - Category is unreliable. It came back on 1 of 8 accounts. There is also no business email, phone number, bio link list or related-profiles list in this response; Apify returns those.
- Profile picture links expire. They are signed Instagram CDN URLs with an expiry timestamp. Download the image when you fetch the profile if you need to keep it.
- One profile per request. There is no batch input, so 1,000 profiles means 1,000 calls; Apify and Bright Data take a whole list in one job.
2. HikerAPI for the lowest price per request
HikerAPI is an Instagram-only API. Its profile endpoint is GET /v2/user/by/username, which its API docs describe as one request per call; the documented example returns a user object with full_name, biography, bio_links, is_business and profile_pic_url, among others. Pricing is $1 per 1,000 requests on the popular plan and $0.60 per 1,000 at volume, prepaid with no subscription, and 100 free requests. Its pricing FAQ says it charges for any successful response "such as 200, 400, 403, 404" and not for 50x errors, so a list full of dead usernames still costs money, as it does with Scavio.
If Instagram is your only platform and price per profile is the deciding number, test this one first.
3. Apify Instagram Profile Scraper for batch lists
Apify's own Instagram Profile Scraper is the top organic result for "instagram profile scraper", maintained by Apify rather than a third-party author, with 240K total users, 32K monthly active users and a 4.7 rating from 175 reviews on its page. You give it usernames, profile URLs or IDs and it writes one row per profile to a dataset, including business category, verified flag, profile picture, related profiles and the latest 12 posts.
It bills per profile: $2.60 per 1,000 on the free plan, $2.30 on Starter, $2.00 on Scale and $1.60 on Business. An "About account" add-on (join date and country) costs $7 per 1,000 on the free plan and $4 on Business. It fits "run this list overnight", less so "answer this request in my app right now".
4. Bright Data for bulk delivery
Bright Data's Instagram Profiles Scraper API takes profile URLs and returns the handle, user ID, biography, followers, following, posts count, verification status and external link. Pay as you go is $1.50 per 1,000 records, the Scale plan is $499 a month for 384,000 records plus $1.30 per 1,000 after that, and 5,000 records a month are free with no card. Delivery is asynchronous, to the API, a webhook, S3, Google Cloud Storage, Azure, Snowflake or SFTP.
Choose it when profiles land in a warehouse, not in a user-facing request.
5. Instagram business discovery for business and creator accounts
Meta's official route is business discovery: you query another professional account's username through your own professional account, with a call shaped like business_discovery.username(nike){followers_count,media_count}. There is no per-call fee. The limits are the point:
- Six fields. Meta's IG User reference marks only
biography,followers_count,media_count,username,websiteandid(plusalt_text) as public. Following count, display name and profile picture are not, and there is no verified flag or category field. - Professional accounts only. Personal accounts, even public ones, are not reachable, and age-gated accounts return nothing.
- Setup first. You need a Meta app with Facebook Login, an Instagram professional account linked to a Facebook Page, and App Review for anything beyond your own team.
- Rate limits per app. Business discovery uses Platform Rate Limits: 200 calls per hour times the number of app users.
If your list is brands and creators and you need only counts, bio and website, it is the sanctioned and free option.
6. instaloader for free scripts
instaloader is the most popular open-source option: 13,519 GitHub stars, MIT licensed, latest release v4.15.3 on July 26, 2026. Its Profile object exposes followers, followees, media count, biography, external URL, verified flag, business category and profile picture URL. Public profiles work without a login, but its usage docs mark stories, feeds and follower lists as requiring one, and its troubleshooting page warns that cloud, VPN and public proxy IP addresses "might be subject to significantly stricter limits for anonymous access".
Good for a few dozen profiles from a laptop. In production, you own the rate limits, the retries and, if you log in, the account.
What to check before buying volume
- Price per 1,000 profiles, normalized. Per request, per credit, per record or per result. Convert everything to the cost of 1,000 profiles at your real monthly volume.
- Whether misses are billed. Run a few usernames that do not exist. Scavio and HikerAPI both bill them; know your dead-username rate before you upload a list.
- The fields on your own list. Run 10 accounts that look like your real targets and count non-empty fields, as we did above. Big brands and tiny accounts fill different fields.
- Synchronous or batch. A request that answers in under 3 seconds and a dataset that arrives later solve different problems.
- Image handling. Profile picture URLs are signed and expire. Store the image, not the link.
Frequently asked questions
Is Instagram scraping illegal? It depends on what you collect, how and where, and this is not legal advice. In Meta v. Bright Data, a US court ruled in January 2024 that logged-out scraping of public data did not breach Meta's terms as they were then written. Instagram's current Terms of Use, effective March 4, 2026, prohibit automated collection without permission whether or not you are logged in, and personal data laws such as GDPR apply to whatever you store.
Can you scrape an Instagram account? You can read the public parts of a public account: the profile header, counts, bio, link and public posts. Private accounts hide their posts from anyone who does not follow them, so no public-data tool can read those. Scavio's profile response includes an is_private flag, so you can skip private accounts before paying for post calls.
Is there a free tool to scrape Instagram profiles? Yes. instaloader is free and open source, and Meta's business discovery has no per-call fee for business and creator accounts. Bright Data includes 5,000 free records a month, Apify's free plan credit covers nearly 2,000 profiles, HikerAPI gives 100 free calls, and Scavio's 50 free credits cover 6 profile lookups.
Is there a tool that can scrape Instagram accounts? Yes, several. Scavio and HikerAPI return one profile per request as JSON, Apify and Bright Data process whole lists of usernames or URLs as batch jobs, and instaloader is a free Python library. Meta's business discovery returns six public fields for business and creator accounts if you have a Meta app with approved access.
Skip the Instagram plumbing
If you build profile collection yourself, you own the parts this post kept running into: rate limits that tighten on cloud IPs, logins that hit checkpoints, usernames that no longer exist, a category field that is empty more often than not, picture links that expire, and a re-test every time Instagram moves its page shape.
Scavio absorbs that. You send a username and get the same JSON shape back in a couple of seconds, with no Meta app, no Instagram account and nothing to maintain, and the same key works for TikTok, YouTube and the rest. Scavio starts from $2 per 1,000 requests on the Growth plan billed yearly; a profile is usually 8 credits, so $16 per 1,000 profiles. To start small, pay as you go at $0.01 a credit: vetting 500 creators for a campaign costs $40 at 8 credits each and $50 at the worst case of 10, or take the Project plan at $30 a month for 7,000 credits if it runs every month. If you need tens of thousands of profiles a month, use one of the cheaper APIs above; we would rather say that here than have you find it on your invoice.
Get an API key with 50 free credits, no card required, and run the profile endpoint on five of your own target accounts before you decide.