Instagram Profile Scraper | $2.0/1K on Starter
Pricing
$2.00 / 1,000 profile lookup results
Instagram Profile Scraper | $2.0/1K on Starter
Scrape public Instagram profile data from usernames, profile URLs, or IDs. Extract names, audience and content counts, bios, links, business categories, contact details, verification and privacy status, and profile images. Export results as JSON, CSV, Excel, or through the API.
Pricing
$2.00 / 1,000 profile lookup results
Rating
0.0
(0)
Developer
Public Signal Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share
Instagram Profile Scraper
Scrape public Instagram profile data from usernames, @usernames, profile URLs, or numeric IDs. Extract names, follower and following counts, post counts, biographies, links, business categories, public contact details, verification and privacy status, and profile images.
Use the data for creator research, public business enrichment, CRM preparation, account verification, and automated Instagram research. Batch up to 50 unique profiles on paying plans, then export the results as JSON, CSV, Excel, XML, or through the API. No Instagram login, cookies, browser, or proxy setup.
What this Actor does
- Resolves usernames,
@usernames, profile URLs, and numeric profile IDs - Verifies that every response matches the requested identity
- Returns normalized public profile and business/contact fields when found
- Preserves input order and returns a
succeededornot_foundrow for every completed valid lookup - Deduplicates equivalent inputs before making requests
- Exports one stable row schema across all supported identifier forms
Use it for creator research, public business enrichment, CRM preparation, account verification, and resolving profiles discovered by other Public Signal Labs Instagram Actors.
Quick start
{"profiles": ["instagram", "@natgeo", "https://www.instagram.com/nasa/"]}
Input
| Field | Rules |
|---|---|
profiles | Required array of 1–50 Instagram usernames, @usernames, canonical profile URLs, or numeric IDs. Equivalent values are deduplicated while first occurrence order is retained. Plan-specific effective limits are detailed in Pricing. |
Unknown properties, unsupported URLs, malformed usernames/IDs, empty values, and invalid types are rejected before credentials, network work, or charging.
Dataset rows
Each completed valid lookup creates one row with the following fields:
| Field | Description |
|---|---|
source_input | Original submitted username, URL, or numeric ID. |
input_index | Zero-based position of the normalized input. |
status | succeeded when profile facts were found; otherwise not_found. |
id | Stable Instagram profile ID. |
username | Current Instagram username. |
full_name | Display name. |
profile_url | Canonical Instagram profile URL. |
is_private | Whether the account is private. |
is_verified | Whether Instagram marks the account as verified. |
profile_pic_url | Current standard-resolution profile image URL. |
profile_pic_url_hd | Higher-resolution profile image URL when exposed. |
follower_count | Current follower count. |
following_count | Current followed-account count. |
media_count | Current published-media count. |
biography | Public profile biography. |
external_url | Primary external profile link. |
bio_links | Structured links exposed in the biography. |
account_type | Instagram account-type value. |
category | Public professional or business category. |
is_business | Whether Instagram marks the account as a business. |
is_professional_account | Whether Instagram marks the account as professional. |
public_email | Public business email when exposed. |
public_phone_number | Public business phone number when exposed. |
business_contact_method | Preferred public business contact method. |
address_street | Public business street address. |
city_name | Public business city. |
zip_code | Public business postal code. |
latitude, longitude | Public business coordinates when exposed. |
Profile fields are null and bio_links is empty when status is not_found. Optional values can also be null or empty when Instagram does not expose them. Missing contact values are not lookup failures. Profile images and external URLs can change or expire.
Pricing
$2.0 per 1,000 completed valid profile lookups. One lookup result row costs exactly $0.0020.
| Outcome | Dataset row | Exact event charge |
|---|---|---|
| Profile found | status: succeeded with available profile facts | $0.0020 |
| Valid lookup with no profile information found | status: not_found with profile fields empty | $0.0020 |
| Malformed customer input rejected before lookup | None | $0.0000 |
| Provider, identity-check, or malformed-response failure | None | $0.0000 |
A completed valid profile lookup is charged even when no profile information can be found. Syntactically malformed handles, unsupported URLs, and other inputs rejected before upstream work are never charged. The single profile-result event both saves the status-bearing row and charges it. The Actor verifies that the requested maximum workload fits the run spending limit before starting upstream work.
FREE demo limits
FREE Apify accounts can run this Actor up to 5 times per UTC calendar month. Each admitted FREE run accepts exactly one unique profile and returns the same row fields and billing semantics as paid runs. Console, CLI, API, schedules, webhooks, MCP, and other launch methods share the same account allowance. A run counts once admitted even when it is later aborted or unsuccessful, and resurrecting it does not start another extraction. Creating another task or API token does not reset the allowance. Paid Apify users are not subject to these demo limits.
Run summary and audit
The default key-value store contains:
OUTPUT— overall status, exact prices, maximum and actual event charge, delivered/charged totals, and sanitized per-input outcomesAUDIT— aggregate request attempts, request units, response bytes, retries, status counts, operation counts, storage reconciliation, and non-sensitive FREE admission metadata
Source summaries contain only input indexes, status, row count, and a stable sanitized error code. They never contain usernames, IDs, profile data, credentials, provider paths, or raw responses.
Status behavior
Per-input status is one of:
succeeded— one identity-matching profile row was saved with available facts;not_found— the valid lookup completed and a charged status row was saved with empty profile fields;failed— the request, response validation, or identity check failed safely; no row is saved or charged.
The run is SUCCEEDED, PARTIAL, FAILED, or CHARGE_LIMIT_REACHED. One failed source does not discard successful rows from other sources.
Limitations and data quality
This Actor returns current public profile facts. It does not retrieve private content, posts, Reels, Stories, followers/following lists, historical profile changes, engagement rates, email verification, or linked-website data. Public contact fields are sparse, can be outdated, are not independently verified, and are never guaranteed.
API and CLI use
apify actors call publicsignallabs/instagram-profile-scraper \--input '{"profiles":["instagram"]}' \--output-dataset
The Actor also works with Apify clients, the Runs API, schedules, webhooks, and platform integrations.
Responsible use
Collect and use public data only where you have a lawful purpose. Respect privacy, intellectual-property rights, platform rules, anti-spam requirements, and applicable data-protection law. Minimize retained data, secure exports, and honor deletion obligations.
This Actor is unofficial and is not affiliated with or endorsed by Instagram or Meta.
Support
Use the Issues tab on this Actor's Apify page. Include the run ID and a sanitized input shape. Never include API tokens, cookies, credentials, personal contact values, or other private data.