Instagram Profile Scraper
Pricing
from $0.75 / 1,000 profiles
Instagram Profile Scraper
Scrape public Instagram profiles - bio, full name, follower and following counts, profile picture, links, and highlights - without logging in.
Pricing
from $0.75 / 1,000 profiles
Rating
0.0
(0)
Developer
Harpoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Instagram Profile Scraper — public profile data, one clean row per account
Turn any list of public Instagram handles into a structured table of profile data: full name,
bio, follower and following counts, verification and privacy status, profile picture, bio links,
and story highlights. Paste profile URLs or @handles, press Start, and download the results as
JSON, CSV, Excel, or XML. Each profile returns exactly one row, so the output drops straight into
a spreadsheet, CRM, or database.
What can Instagram Profile Scraper do?
- Fetch public profile data for one profile or thousands in a single run
- Accept profile URLs (
https://www.instagram.com/markruffalo/),@handles(@markruffalo), plain handles, or numeric IDs - Return audience size, bio, external links, verification, privacy, and highlight metadata
- Flag private, unpublished, or memorialized accounts instead of failing the run
- Export to JSON, CSV, Excel, or XML; run via the API, schedule runs, and connect through MCP
What data can I extract?
| What you get | Features |
|---|---|
|
|
How to use Instagram Profile Scraper
- Create a free Apify account.
- Open Instagram Profile Scraper in Apify Console.
- Paste one or more public profile URLs or
@handlesinto Instagram profiles, one per line. - Leave Include highlights on, or turn it off for a leaner dataset.
- Click Save & Start.
- Download the results in JSON, CSV, Excel, or XML from the Storage tab.
Input
There is a single way to run it: give it a list of profiles. Every profile in the list produces one dataset row, and duplicates are removed before the run.
profiles— public profile URLs,@handles, plain handles, or numeric IDs.include_highlights— include each profile's story highlights and their cover images (default on).
Example input
{"profiles": ["https://www.instagram.com/markruffalo/", "@markruffalo"],"include_highlights": true}
See the Input tab above for every parameter.
Output
Results land in a dataset under the Storage tab. View as a table (three built-in views: Overview, About, and Growth tracker), download in JSON, CSV, Excel, or XML, or pull them via the API.
{"id": "17841401914858621","pk": "1191807828","username": "markruffalo","url": "https://www.instagram.com/markruffalo/","full_name": "Mark Ruffalo","biography": "A husband, father, actor, director, and a climate justice and renewable energy advocate with an...","profile_pic_url": "https://scontent.cdninstagram.com/v/t51.2885-19/404601009_728153775882418_5195097191064167935_n.jpg","is_verified": true,"is_private": false,"is_unpublished": false,"is_memorialized": false,"is_coppa_enforced": false,"has_any_clips": true,"latest_reel_media": 0,"follower_count": 20714550,"following_count": 1589,"media_count": null,"pronouns": ["he", "him"],"highlight_reel_count": 4,"highlights": [{ "id": "18053423362909587", "title": "Vote 2024", "cover_url": "https://scontent.cdninstagram.com/v/t51.82787-15/584804620_18066887114_n.jpg" },{ "id": "17869069943343819", "title": "AAPI Resources", "cover_url": "https://scontent.cdninstagram.com/v/t51.2885-15/162436437_849875285593_n.jpg" },{ "id": "17869055039248765", "title": "BHM Takeover", "cover_url": "https://scontent.cdninstagram.com/v/t51.2885-15/465693856_106851802172_n.jpg" },{ "id": "18057609532230187", "title": "BLM", "cover_url": "https://scontent.cdninstagram.com/v/t51.2885-15/102419640_143916770545_n.jpg" }],"bio_links": [{ "title": "", "url": "https://linktr.ee/markruffalo", "link_type": "external", "is_pinned": false }],"scraped_at": "2026-09-17T13:33:43Z"}
Field names are lowercase snake_case, and the input keys match them. Image URLs above are abbreviated for readability — the dataset contains the full links.
What can you do with the data?
1. Shortlist influencers
- Run the Actor over a list of candidate handles.
- Open the Overview view and sort by
follower_count. - Filter
is_verified = trueandis_private = falseto keep public, verified accounts.
2. Track competitors over time
- Schedule the Actor to run weekly over the same handles.
- Use the Growth tracker view to compare
follower_count,following_count, andmedia_count. - Export to Sheets or your BI tool to chart growth.
3. Enrich leads with websites and contacts
- Run the Actor over target accounts.
- Read
bio_linksandbiographyto find company websites, contact pages, and self-reported details. - Join the results to your CRM by
username.
How much does Instagram Profile Scraper cost?
This Actor is billed per profile returned (pay-per-event) on top of standard Apify platform usage. A run over 250 handles is billed as 250 results, no matter how the run is configured. There is no per-profile data cap.
See the Pricing tab for current rates and your plan's discounts.
FAQ
Do I need an Instagram account, cookies, or an API key? No. The Actor reads publicly available profile data, so no login or credentials are required.
Can it scrape private or restricted profiles?
Private profiles are still returned, but with the limited public information that is visible
(is_private is true, and fields such as biography may be empty). Nothing behind a login is
accessed.
How many profiles can I scrape? As many as you list — one row each. Large lists simply take longer and are billed per profile.
Is it legal to scrape Instagram? The Actor returns public data only. Review Apify's guidance on legal and ethical scraping and the terms that apply to your use case.
Can I use it with the API, SDKs, or MCP? Yes — see the API tab above, or connect through the Apify MCP server.
A profile is missing from the results. That handle is logged in the run log with the reason (for example, it does not exist or was temporarily throttled). The rest of the run continues; re-run just that handle if needed.
Notes and limitations
media_countis frequentlynull: Instagram does not expose the post count to visitors who are not logged in. The field is populated when it is available.profile_pic_urland highlightcover_urlvalues are time-limited image links. Download the files soon after the run if you need to keep them.latest_reel_mediais an internal media ID, not a date (0means the profile has no such media).- Very long lists over busy accounts can hit temporary rate limiting; affected profiles are skipped and logged rather than aborting the run.
- Attempting to use a post, reel, or story URL as a profile raises a clear error for that entry.
Run locally
go run ./cmd/actor
Input is read from the Apify key-value store; see INPUT_SCHEMA.json.
Support
Found a bug or have feedback? Open an issue in the Issues tab.