Instagram Profile Scraper
Pricing
from $2.99 / 1,000 profiles
Instagram Profile Scraper
Extract public Instagram profile metadata such as usernames, follower counts, biography, verification state, profile images, and external links.
Pricing
from $2.99 / 1,000 profiles
Rating
0.0
(0)
Developer
w3crawler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract public Instagram profile metadata from anonymous browser-rendered profile pages: username, display name, biography, follower/following/post counts, verification and privacy flags, profile image, external links, bio links, story highlights, pronouns, category, and visible recent post links. The Actor never logs in, reuses private cookies, bypasses a challenge, or accesses private profiles.
Get started
- Open the Actor Store page and select Try for free or open the Input tab.
- Enter public profile identifiers in
usernamesand/or canonical profile URLs inprofileUrls. Both lists are merged and deduplicated. - Set
maxItemsand choosebrowserMode. KeepmaxItemssmall for the first run. - Start the Actor, open the dataset, and export the profiles as JSON, CSV, or Excel. Open Run summary (
OUTPUT) to check emitted and failure counts.
Input
All fields are optional; with no targets the Actor uses the instagram username. Unsupported field names and out-of-range values are rejected before the browser starts.
| Field | Type | Required? | Default | Meaning |
|---|---|---|---|---|
usernames | string array | Optional | ["instagram"] | Public usernames; a leading @ is accepted. Usernames and profile URLs are merged and deduplicated, up to 100 each. |
profileUrls | string array | Optional | Not supplied | Canonical https://www.instagram.com/<username>/ URLs. Merged with usernames; media, login, challenge, and non-Instagram URLs are rejected. |
maxItems | integer | Optional | 10 | Maximum profiles scraped, 1–100. It is also capped at the number of unique supplied profiles. |
browserMode | string enum | Optional | desktop | Anonymous rendering profile: desktop or mobile, with matching user agent, viewport, locale, and timezone. |
requestTimeoutSecs | integer | Optional | 20 | Per-profile navigation timeout, 5–60 seconds. |
maxRequestRetries | integer | Optional | 2 | Additional browser navigation attempts, 0–3. |
requestDelayMs | integer | Optional | 0 | Delay before each subsequent profile, 0–10,000 ms. |
proxyConfiguration | object | Optional | {"useApifyProxy":false} | Optional Apify Proxy settings: useApifyProxy, apifyProxyGroups, and apifyProxyCountry. Direct access is the default. |
Example input using the default username and settings:
{"usernames": ["instagram"],"maxItems": 10,"browserMode": "desktop","requestTimeoutSecs": 20,"maxRequestRetries": 2,"requestDelayMs": 0,"proxyConfiguration": {"useApifyProxy": false}}
If only one unique profile is supplied, the effective maxItems and the summary value are 1, even when the input requests a higher limit.
Output
The dataset contains one row per saved public profile. Optional values are omitted when Instagram does not expose them, and failures are reported in logs and OUTPUT instead of placeholder rows. Counts and links reflect what the public page returned during the run.
| Field | Type | Availability | Meaning |
|---|---|---|---|
url | string | Always | Canonical public profile URL. |
searchUrl | string | Always | Profile URL requested for extraction. |
id | string | Always | Stable identifier in the form instagram-profile:<username>. |
recordType | string enum | Always | Normal record type; always instagram-profile. |
targetType | string enum | Always | Target type; always profile. |
profileUrl | string | Always | Canonical public profile URL. |
sourceUrl | string | Always | Public profile page used for extraction. |
canonicalUrl | string | Always | Canonical profile URL. |
username | string | Always | Public Instagram username. |
userId | string | When published | Public numeric profile identifier as a string. |
fullName | string | When published | Public display name. |
bio | string | When published | Public biography text. |
followers | integer | When published | Public follower count. Private or restricted pages may hide it. |
following | integer | When published | Public following count. |
posts | integer | When published | Public post count. |
isVerified | boolean | When published | Public verification flag. |
isPrivate | boolean | When published | Public private-account flag. |
profilePicUrl | string | When published | Public profile image URL; CDN links are time-limited. |
externalUrl | string | When published | First public external URL from the biography links. |
bioLinks | object array | When published | Public biography links with url and, when displayed, title. |
highlights | object array | When published | Public story highlights with title and thumbnailUrl. |
pronouns | string array | When published | Public pronouns. |
category | string | When published | Public account category. |
recentPosts | object array | When a public non-private grid is rendered | Up to 12 visible post links with url, thumbnailUrl, and alt. Not a complete post catalog. |
scrapedAt | string | Always | Time the record was emitted, in ISO UTC. |
Example of a real saved row from the 2026-10-25 run. The profile image and all seven highlights are included exactly as saved.
{"id": "instagram-profile:instagram","recordType": "instagram-profile","targetType": "profile","profileUrl": "https://www.instagram.com/instagram/","sourceUrl": "https://www.instagram.com/instagram/","canonicalUrl": "https://www.instagram.com/instagram/","username": "instagram","userId": "25025320","fullName": "Instagram","bio": "Discover what's new on Instagram 🔎✨","followers": 686435702,"following": 158,"posts": 8624,"isVerified": true,"isPrivate": false,"profilePicUrl": "https://scontent-bos5-1.cdninstagram.com/v/t51.82787-19/550891366_18667771684001321_1383210656577177067_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=1&ccb=7-5&_nc_sid=f7ccc5&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLnd3dy4xMDgwLkMzIn0%3D&_nc_ohc=0JxmKDYmCiYQ7kNvwHiSmAD&_nc_oc=AdoFl79Z5KAUMUfDKNc-dNqorMD86eKtq_yrJ-pxwBpQYQpt3SIXYzIJLb38SgbX6COgdQmKBj-F3EUmD15dKEkc&_nc_zt=24&_nc_ht=scontent-bos5-1.cdninstagram.com&_nc_gid=Dbp8-d5uiRKBpmPDGLOvLQ&_nc_ss=79689&oh=00_AQNR7SAGSfS6XMyuRvIs7VspS2jtk_VRlkDb-KX717wZgQ&oe=6AE45927","externalUrl": "http://help.instagram.com","bioLinks": [{"url": "http://help.instagram.com"},{"title": "Close Friends Only with @kaicenat and @kaiyacenat | Spotify","url": "https://open.spotify.com/episode/6B8XsGCYuHMYzSLvLMitS7?si=kXd6_Y6AQhueoC_McepSKg"},{"title": "Close Friends Only with @kaicenat and @kaiyacenat | YouTube","url": "https://www.youtube.com/watch?v=z0X36mIbyCo"}],"highlights": [{"title": "close friends","thumbnailUrl": "https://scontent-bos5-1.cdninstagram.com/v/t51.71878-15/756700225_1653985762331725_8429300849500507026_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=1&ccb=7-5&_nc_sid=acbce5&_nc_ohc=NLBVWHHV_vYQ7kNvwGUxp6k&_nc_oc=Adrzem93E_YWyGDz3IxVbUuw6LyktoP3W5QChfx99DabTCrVmCUgvdOvYT8zt19Uk2Hej2tAaLxLVWuU57qctPxQ&_nc_zt=23&_nc_ht=scontent-bos5-1.cdninstagram.com&_nc_gid=Dbp8-d5uiRKBpmPDGLOvLQ&_nc_ss=79689&oh=00_AQM1esWCwEas45lAWteu4_gspQeu3SvYULKW9jXb8EYUew&oe=6AE4467E"},{"title": "🎤🎶🎸","thumbnailUrl": "https://scontent-bos5-1.cdninstagram.com/v/t51.71878-15/755867844_1751720619182762_5430881549273743299_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=1&ccb=7-5&_nc_sid=acbce5&_nc_ohc=SmUVvSate6sQ7kNvwGANO9K&_nc_oc=AdpVxu3BzBTs6a_GfGE9VDs_WYTRo-nwnDP-uozLc8vDL62E4xepgghJiO1pZV6lUeKJiO6IeTEucX6-gMmabA3_&_nc_zt=23&_nc_ht=scontent-bos5-1.cdninstagram.com&_nc_gid=Dbp8-d5uiRKBpmPDGLOvLQ&_nc_ss=79689&oh=00_AQP1eEVXIodLnYta435VXc3_kqcoIRBMWQ3efmsvZL_41w&oe=6AE44AAF"},{"title": "what’s new","thumbnailUrl": "https://scontent-bos5-1.cdninstagram.com/v/t51.71878-15/755331856_1609699020573638_4426177467586352650_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=1&ccb=7-5&_nc_sid=acbce5&_nc_ohc=xe_3WvMEa6UQ7kNvwGeyvp6&_nc_oc=AdrdztiK0HqKy6IaIwmT5ySpPdtOnv-pkzDrPAyT5yfRdpsk41JhBL0jQ6i3zAw9IWWC0HCPSPy3rma_gp4uN8i5&_nc_zt=23&_nc_ht=scontent-bos5-1.cdninstagram.com&_nc_gid=Dbp8-d5uiRKBpmPDGLOvLQ&_nc_ss=79689&oh=00_AQMb129lYCnfHYEz3iilRIoJnh9vHTPLrdvfKUE-JSDrrw&oe=6AE43EF3"},{"title": "creatives","thumbnailUrl": "https://scontent-bos5-1.cdninstagram.com/v/t51.71878-15/756661521_3289512177887855_4009891805420027177_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=1&ccb=7-5&_nc_sid=acbce5&_nc_ohc=n9BPI8bE91EQ7kNvwG1t19u&_nc_oc=AdrvwbzMESqrioAHQpLIRRhZrWU4gVdwZkNxQSx5aUvh03MtvesPxHBXF3Wg74SU0QR-bkVSP-q1y_2cPEjErTh7&_nc_zt=23&_nc_ht=scontent-bos5-1.cdninstagram.com&_nc_gid=Dbp8-d5uiRKBpmPDGLOvLQ&_nc_ss=79689&oh=00_AQPlixkduukPPrO8SwBbIAZZ0_r1mgEgsj-GGSf7SjDSBA&oe=6AE449D7"},{"title": "🎾🏀⚽️","thumbnailUrl": "https://scontent-bos5-1.cdninstagram.com/v/t51.82787-15/575724433_18680673526001321_5945490939444494882_n.jpg?stp=c0.5x0.5f_dst-jpg_e35_p150x150_tt6_u&_nc_cat=1&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiU1RPUlkuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=M_Lb7AxWwkEQ7kNvwGKOp61&_nc_oc=AdpfDAIO3JyCy3aFrbPAviryyrOGaBUGNHHZX_F0MXPSWk3wB1kUlJzT1AFJ3gBj4L7re2s_jZOAHjBvQ-9jDaSc&_nc_zt=23&_nc_ht=scontent-bos5-1.cdninstagram.com&_nc_gid=Dbp8-d5uiRKBpmPDGLOvLQ&_nc_ss=79689&oh=00_AQMjwXTa9pfWWIh7VvRD2ixBZIkQLbD-B9xGJuyV6_cmJA&oe=6AE45949"},{"title": "🚗🚗🚗","thumbnailUrl": "https://scontent-bos5-1.cdninstagram.com/v/t51.71878-15/775233495_1033957092733525_6010470506239881158_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=105&ccb=7-5&_nc_sid=acbce5&_nc_ohc=mKmwR4NP00sQ7kNvwFI9PLq&_nc_oc=AdrkPmyyhhhcB5om1Mr_PJJEBCA9-86TtwPr1Cbqg2oNBOQoQQN2T6lL1-NIrrSdUS0aQLNRMO4fZjsxdgjt63m-&_nc_zt=23&_nc_ht=scontent-bos5-1.cdninstagram.com&_nc_gid=Dbp8-d5uiRKBpmPDGLOvLQ&_nc_ss=79689&oh=00_AQNTx07_31thCI85Igq-7Sh03kG_hCrw2T5v3-ZedTTfGg&oe=6AE446B9"},{"title": "🎥🌟🍿","thumbnailUrl": "https://scontent-bos5-1.cdninstagram.com/v/t51.71878-15/755264526_1764587937905767_5811150211834945970_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=107&ccb=7-5&_nc_sid=acbce5&_nc_ohc=hq4jeuH5HHEQ7kNvwHmn08S&_nc_oc=Ado14PNCaGUZ1jan7-mqrKDnbANPqkKxRNPNNmhJShmAkCbs8q5T3ndcEbdTNUqeoYpL5i_zKexK33NWv1HFr8UW&_nc_zt=23&_nc_ht=scontent-bos5-1.cdninstagram.com&_nc_gid=Dbp8-d5uiRKBpmPDGLOvLQ&_nc_ss=79689&oh=00_AQMEJYAzjimA4ArmqDVpn7WKwFUfPswifLeUmFjzqNqvVA&oe=6AE421F9"}],"scrapedAt": "2026-10-25T20:48:18.329Z","url": "https://www.instagram.com/instagram/","searchUrl": "https://www.instagram.com/instagram/"}
Run summary
Run summary is stored separately from the dataset in the run's key-value store under OUTPUT.
| Field | Meaning |
|---|---|
status | Actor process outcome: SUCCEEDED or FAILED. |
runStatus | Canonical run status; matches status. |
dataStatus | Completeness of saved rows: COMPLETE, PARTIAL, NO_RESULTS, or FAILED. |
requestedProfileCount | Profiles scheduled after deduplication and the effective maxItems cap. |
emittedCount | Profile rows written to the dataset. |
profileCount | Profile rows written; matches emittedCount. |
diagnosticCount | Public page issues logged; diagnostics are not dataset rows. |
failureCount | Navigation or extraction failures for scheduled profiles. |
optionalFailureCount | Optional summary-write failures. |
maxItems | Effective profile cap, reduced to the number of unique supplied profiles when smaller. |
browserMode | desktop or mobile rendering profile used for the run. |
completedAt | Time the summary was written, in ISO UTC. |
| Status | Data status | Meaning |
|---|---|---|
SUCCEEDED | COMPLETE | Rows were saved without diagnostics or failures. |
SUCCEEDED | PARTIAL | Rows were saved, but at least one profile logged a diagnostic or failure. Saved rows remain available. |
SUCCEEDED | NO_RESULTS | No row was saved, with no run error or counted failure. |
FAILED | FAILED | No row was saved and the run hit an error or counted failure. |
Example OUTPUT from the 2026-10-25 run. The saved input asked for maxItems: 1; one profile was supplied.
{"status": "SUCCEEDED","runStatus": "SUCCEEDED","dataStatus": "COMPLETE","requestedProfileCount": 1,"emittedCount": 1,"profileCount": 1,"diagnosticCount": 0,"failureCount": 0,"optionalFailureCount": 0,"maxItems": 1,"browserMode": "desktop","completedAt": "2026-10-25T20:48:18.684Z"}
Coverage and limitations
Each profile is opened in a headless Chromium browser using the selected browserMode. Extraction tries Instagram's embedded Relay user payload first, then legacy JSON, then DOM text, then Open Graph/meta tags; later layers expose fewer fields. bioLinks, highlights, pronouns, and category are richest in the Relay payload and may be absent when only fallback layers succeed. Recent post links are read from the rendered public grid only for non-private profiles and are capped at 12.
The Actor does not log in, use private cookies, bypass challenges or rate limits, access private profiles, download media or story bytes, collect follower lists, fetch comments, or provide historical counts. Private or restricted profiles can expose only a subset of fields, and missing counts are not inferred. Follower, following, and post counts are display-derived and can be rounded or abbreviated. Profile and CDN image URLs are time-limited.
usernames and profileUrls are merged and deduplicated; maxItems cannot exceed the number of unique supplied profiles. browserMode changes rendering but does not guarantee a different field set. Proxy routing is optional and does not bypass access controls. Diagnostics and navigation failures are reported in logs and OUTPUT, and can leave the run PARTIAL or FAILED.
Usage and support
Cost is driven by browser compute time, the number of profiles, navigation retries, delay, and optional proxy use. Start with one or two profiles and a low maxItems, inspect the dataset and OUTPUT, then scale. See the Actor's Pricing tab for current account rates.
Use the Actor Issues page to report a problem. Include the run ID, the input used, and the run summary; do not include tokens, cookies, or private data. This Actor is not affiliated with Instagram or Meta. Use it only for public data and in accordance with Instagram's terms, robots guidance, and applicable law. Public pages can contain personal information; use the output only for lawful purposes.