Instagram Profile Scraper avatar

Instagram Profile Scraper

Pricing

from $2.99 / 1,000 profiles

Go to Apify Store
Instagram Profile Scraper

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

w3crawler

Maintained by Community

Actor 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

  1. Open the Actor Store page and select Try for free or open the Input tab.
  2. Enter public profile identifiers in usernames and/or canonical profile URLs in profileUrls. Both lists are merged and deduplicated.
  3. Set maxItems and choose browserMode. Keep maxItems small for the first run.
  4. 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.

FieldTypeRequired?DefaultMeaning
usernamesstring arrayOptional["instagram"]Public usernames; a leading @ is accepted. Usernames and profile URLs are merged and deduplicated, up to 100 each.
profileUrlsstring arrayOptionalNot suppliedCanonical https://www.instagram.com/<username>/ URLs. Merged with usernames; media, login, challenge, and non-Instagram URLs are rejected.
maxItemsintegerOptional10Maximum profiles scraped, 1–100. It is also capped at the number of unique supplied profiles.
browserModestring enumOptionaldesktopAnonymous rendering profile: desktop or mobile, with matching user agent, viewport, locale, and timezone.
requestTimeoutSecsintegerOptional20Per-profile navigation timeout, 5–60 seconds.
maxRequestRetriesintegerOptional2Additional browser navigation attempts, 0–3.
requestDelayMsintegerOptional0Delay before each subsequent profile, 0–10,000 ms.
proxyConfigurationobjectOptional{"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.

FieldTypeAvailabilityMeaning
urlstringAlwaysCanonical public profile URL.
searchUrlstringAlwaysProfile URL requested for extraction.
idstringAlwaysStable identifier in the form instagram-profile:<username>.
recordTypestring enumAlwaysNormal record type; always instagram-profile.
targetTypestring enumAlwaysTarget type; always profile.
profileUrlstringAlwaysCanonical public profile URL.
sourceUrlstringAlwaysPublic profile page used for extraction.
canonicalUrlstringAlwaysCanonical profile URL.
usernamestringAlwaysPublic Instagram username.
userIdstringWhen publishedPublic numeric profile identifier as a string.
fullNamestringWhen publishedPublic display name.
biostringWhen publishedPublic biography text.
followersintegerWhen publishedPublic follower count. Private or restricted pages may hide it.
followingintegerWhen publishedPublic following count.
postsintegerWhen publishedPublic post count.
isVerifiedbooleanWhen publishedPublic verification flag.
isPrivatebooleanWhen publishedPublic private-account flag.
profilePicUrlstringWhen publishedPublic profile image URL; CDN links are time-limited.
externalUrlstringWhen publishedFirst public external URL from the biography links.
bioLinksobject arrayWhen publishedPublic biography links with url and, when displayed, title.
highlightsobject arrayWhen publishedPublic story highlights with title and thumbnailUrl.
pronounsstring arrayWhen publishedPublic pronouns.
categorystringWhen publishedPublic account category.
recentPostsobject arrayWhen a public non-private grid is renderedUp to 12 visible post links with url, thumbnailUrl, and alt. Not a complete post catalog.
scrapedAtstringAlwaysTime 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.

FieldMeaning
statusActor process outcome: SUCCEEDED or FAILED.
runStatusCanonical run status; matches status.
dataStatusCompleteness of saved rows: COMPLETE, PARTIAL, NO_RESULTS, or FAILED.
requestedProfileCountProfiles scheduled after deduplication and the effective maxItems cap.
emittedCountProfile rows written to the dataset.
profileCountProfile rows written; matches emittedCount.
diagnosticCountPublic page issues logged; diagnostics are not dataset rows.
failureCountNavigation or extraction failures for scheduled profiles.
optionalFailureCountOptional summary-write failures.
maxItemsEffective profile cap, reduced to the number of unique supplied profiles when smaller.
browserModedesktop or mobile rendering profile used for the run.
completedAtTime the summary was written, in ISO UTC.
StatusData statusMeaning
SUCCEEDEDCOMPLETERows were saved without diagnostics or failures.
SUCCEEDEDPARTIALRows were saved, but at least one profile logged a diagnostic or failure. Saved rows remain available.
SUCCEEDEDNO_RESULTSNo row was saved, with no run error or counted failure.
FAILEDFAILEDNo 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.