Instagram Profile Scraper - No Login
Pricing
$1.00 / 1,000 successful instagram profiles
Instagram Profile Scraper - No Login
Scrape up to 10,000 Instagram profiles from usernames or URLs without login. Extract bios, followers, following, post totals, verification, categories, links, profile pictures, and available business details. Pay only for successful profiles at $1 per 1,000.
Pricing
$1.00 / 1,000 successful instagram profiles
Rating
0.0
(0)
Developer
DataScraperES
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape structured Instagram profile information from usernames, @handles, or complete public profile URLs without an Instagram account, login, cookies, or API key. The Actor returns one auditable dataset row for every submitted value.
It collects public identity, biography, audience-size, verification, account-type, category, website, biography-link, profile-picture, pronoun, and business-location fields when Instagram makes them available.
What this Actor can do
- Process one profile or a bulk list of up to 10,000 inputs.
- Normalize usernames,
@handles, and completeinstagram.comprofile URLs. - Deduplicate equivalent inputs without requesting or charging the same profile twice.
- Return structured data for public and publicly visible private profiles.
- Keep invalid, duplicate, unavailable, and failed inputs in the dataset for auditing.
- Charge only successful structured profile results.
- Resume an interrupted run without intentionally repeating completed inputs.
Common use cases
- Enrich creator, influencer, lead, and brand lists.
- Verify usernames, account visibility, categories, and audience size.
- Collect biographies, websites, and biography links.
- Monitor profile changes with recurring Apify Task runs.
- Build influencer research and market-analysis datasets.
- Export profile data to JSON, CSV, Excel, XML, or RSS.
What is included
For each successfully retrieved profile, the Actor can return:
- Instagram profile ID, username, full name, and biography;
- follower, following, and post counts;
- verified and private status;
- business, professional, category, and account-type information when available;
- external website and biography links;
- standard and high-resolution profile picture URLs;
- public pronouns; and
- public business location when Instagram provides it.
Some values can be null or empty when the account does not publish them or Instagram does not make them available.
What is not included
This Actor focuses on profile information. It does not scrape:
- individual posts or post captions;
- Reels or Stories;
- comments or likes;
- follower or following lists; or
- private content that Instagram does not expose publicly.
Quick start
- Open the Actor in Apify Console.
- Add one or more public Instagram usernames,
@handles, or profile URLs to Instagram profiles. - Click Start.
- Open the Dataset tab to preview or download the results.
For a quick test, use this input:
{"profiles": ["nasa"]}
Pricing
The Actor costs $0.001 per successful profile, equivalent to $1 per 1,000 successful profiles.
The only billable event is profile-result, charged once after structured profile information has been returned. You are not charged for:
- invalid inputs;
- duplicate usernames;
- profiles that are not found;
- failed profiles;
- starting the Actor; or
- non-billable rows written to the dataset.
The Actor respects the maximum total charge selected for the run and stops before starting another potentially billable profile when the remaining limit is insufficient.
| Successful profiles | Actor price |
|---|---|
| 1 | $0.001 |
| 100 | $0.10 |
| 1,000 | $1.00 |
| 10,000 | $10.00 |
Rows with success: false do not increase these amounts.
Input
Input fields
| Field | Type | Required | Default | Allowed values | Description |
|---|---|---|---|---|---|
profiles | array of strings | Yes | — | 1–10,000 items | Instagram usernames, @handles, or complete public Instagram profile URLs. |
Accepted profile formats
These values all identify public Instagram profiles:
nasa@nasainstagram.com/nasahttps://www.instagram.com/nasa/
Usernames are case-insensitive. Equivalent forms of the same username are deduplicated within the run.
Single-profile example
{"profiles": ["nasa"]}
Bulk example
{"profiles": ["nasa","@nike","https://www.instagram.com/google/","natgeo"]}
Mixed-input example
{"profiles": ["nasa","@NASA","bad value","https://www.instagram.com/nike/"]}
Invalid and duplicate values remain visible in the dataset with a non-billable status, so you can correct the source list without comparing only successful rows.
Output
The default dataset contains one row for every submitted value. A successful row has success: true and a populated profile object. Invalid, duplicate, unavailable, and failed values have profile: null and include an explanatory status or error.
Successful result example
{"success": true,"status": "ok","input": "nasa","username": "nasa","profileUrl": "https://www.instagram.com/nasa/","duplicateOf": null,"scrapedAt": "2026-07-22T12:00:00Z","attempts": 1,"responseTimeMs": 1840,"httpRequests": 2,"responseBytes": 190000,"backoffTimeMs": 0,"throttleWaitTimeMs": 0,"error": null,"profile": {"id": "528817151","username": "nasa","fullName": "NASA","biography": "Public biography text","followersCount": 100000000,"followsCount": 90,"postsCount": 4800,"isVerified": true,"isPrivate": false,"isBusinessAccount": false,"isProfessionalAccount": null,"accountType": 1,"accountTypeName": "personal","category": null,"externalUrl": "https://www.nasa.gov/","bioLinks": [],"profilePicUrl": "https://...","profilePicUrlHD": "https://...","pronouns": [],"location": null,"dataQuality": {"availableCoreFields": 8,"totalCoreFields": 8,"level": "full"}}}
Counts and other values in this example are illustrative and can change over time.
Result fields
| Field | Description |
|---|---|
success | true when structured profile information was returned. Only these rows are billable. |
status | Outcome of the submitted value. |
input | Original value submitted by the user. |
username | Normalized Instagram username when the input is valid. |
profileUrl | Canonical Instagram profile URL. |
duplicateOf | Original value matched by a duplicate row, otherwise null. |
scrapedAt | UTC timestamp for the result. |
attempts | Number of attempts used for this profile. |
responseTimeMs | Total processing time for this profile in milliseconds. |
httpRequests | Requests used to obtain the result. |
responseBytes | Response volume used for this result in bytes. |
backoffTimeMs | Time spent waiting before another request. |
throttleWaitTimeMs | Time spent waiting because Instagram temporarily restricted or slowed access. |
error | Error code and message for an unsuccessful row, otherwise null. |
profile | Structured Instagram profile information, otherwise null. |
Profile fields
| Field | Description |
|---|---|
id | Instagram profile identifier. |
username, fullName, biography | Public identity and biography fields. |
followersCount, followsCount, postsCount | Public follower, following, and post totals. |
isVerified, isPrivate | Verification and visibility flags. |
isBusinessAccount, isProfessionalAccount | Available account classification flags. |
accountType, accountTypeName, category | Available numeric and readable account/category information. |
externalUrl, bioLinks | Public website and biography links. |
profilePicUrl, profilePicUrlHD | Available standard and high-resolution profile image URLs. |
pronouns | Public pronouns listed by the profile. |
location | Public business location when available. |
dataQuality | Indicates how many core fields were available and labels the result full, partial, or minimal. |
Dataset rows from bulk runs may finish in a different order from the input. Use input or username to match results to submitted values.
Status values
| Status | Meaning | Charged? |
|---|---|---|
ok | Profile information was returned. | Yes |
private | Publicly visible information for a private profile was returned. | Yes |
not_found | The profile does not exist or is no longer publicly available. | No |
duplicate | The normalized username already appeared in the run. | No |
invalid_input | The value is not a valid Instagram username or profile URL. | No |
failed | Instagram did not return usable profile information after the available attempts. | No |
Run summary and recovery
Every run saves a SUMMARY record in the default key-value store. It reports completion, status counts, billable and charged profiles, request attempts, retry counts, response volume, elapsed time, effective worker count, and spending-limit state.
If a run is interrupted by a platform migration or restart, saved progress is reused so completed inputs are not intentionally requested or charged twice.
Exporting results
From the Dataset tab, results can be downloaded as JSON, CSV, Excel, XML, or RSS. The dataset can also be connected to downstream Apify workflows or external automation.
For recurring monitoring, save the input as an Apify Task and attach a schedule. Each scheduled run creates a separate dataset and summary.
Reliability and expected behavior
- Temporary profile failures are retried automatically using the Actor's internal retry policy.
- A failed or unavailable profile does not discard successful results from other profiles.
- Duplicate usernames, handles, and profile URLs are removed from billable processing.
- Invalid and duplicate inputs are written in batches without
profile-resultcharges. - The Actor respects the maximum total charge and stops safely when no billable capacity remains.
- Instagram can change or temporarily restrict its public profile responses, so available fields and result counts can vary between runs.
Limits and important notes
- A run accepts up to 10,000 profile inputs.
- Only information exposed by public Instagram profile responses can be returned.
- Private profiles may return only the public information Instagram exposes.
- This Actor accepts profile usernames and profile URLs, not individual post URLs.
- It does not access comments, followers, Stories, highlights, or private content.
- Profile-picture and other Instagram-hosted URLs can expire.
- Nullable fields mean that Instagram did not provide that value at run time; they do not mean zero.
Frequently asked questions
Do I need an Instagram account or login?
No. The Actor collects information exposed by public Instagram profile responses and does not require Instagram credentials or cookies.
Can it scrape private profiles?
It can return only the information Instagram exposes publicly for a private profile. It does not bypass privacy controls or access private content.
Why did I receive fewer successful profiles than submitted?
Some inputs may be invalid, duplicates, unavailable, private with no usable public data, or temporarily failed. Check the status and error fields in the dataset and the SUMMARY record for the run-level totals.
Are duplicate inputs charged twice?
No. Equivalent usernames, handles, and profile URLs are processed once. Duplicate rows remain available for auditing but are not billable.
How can I control the maximum cost?
Use the maximum run charge available in Apify. Each successful profile costs $0.001, so 1,000 successful profiles cost $1.00.
Are media files stored permanently?
No. profilePicUrl and profilePicUrlHD point to Instagram-hosted files and can expire. Download them promptly if you need permanent storage.
Responsible use
This Actor only returns information that Instagram makes publicly accessible. You are responsible for having a lawful purpose for collecting and using the data and for complying with applicable privacy, data-protection, intellectual-property, and platform rules. Avoid collecting unnecessary personal data and retain results only as long as needed for your stated purpose.