Instagram Account Search | $0.4/1K Accounts + $0.002 per Page avatar

Instagram Account Search | $0.4/1K Accounts + $0.002 per Page

Pricing

from $0.40 / 1,000 account results

Go to Apify Store
Instagram Account Search | $0.4/1K Accounts + $0.002 per Page

Instagram Account Search | $0.4/1K Accounts + $0.002 per Page

Search public Instagram accounts by keyword for $0.40 per 1,000 saved accounts plus $0.002 per successfully fetched page. Optional public profile enrichment. No login, cookies, browser, or proxy setup.

Pricing

from $0.40 / 1,000 account results

Rating

0.0

(0)

Developer

Public Signal Labs

Public Signal Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Share

Search Instagram's current ranked public accounts by keyword. Get normalized account identity, username, name, profile URL, privacy and verification flags, query provenance, and deterministic rank. Optionally enrich results with current public profile counts, biography, links, category, business details, and available public contact fields.

Run one or more queries, follow ranked results across bounded pages, and export clean rows to JSON, CSV, Excel, XML, or API workflows. No Instagram login, cookies, browser, or proxy setup.

What this Actor does

  • Searches current Instagram account results for free-text keywords and phrases
  • Returns up to 20 ranked account candidates from each valid provider page
  • Supports 1–10 queries and up to 10 pages per query for paying users
  • Removes duplicate account IDs across pages of the same query
  • Optionally enriches accounts with current public profile counts, biography, links, category, business fields, and available public contact fields
  • Preserves deterministic query, page, and result ranks
  • Exports normalized rows to JSON, CSV, Excel, XML, and API workflows

Use it for account discovery, creator research, local-business research, brand mapping, recruiting research, and building public-profile lists for downstream workflows.

Quick start

Basic account search:

{
"queries": ["coffee roaster", "travel photographer"],
"maxPagesPerQuery": 1,
"enrichProfiles": false
}

Search with profile enrichment:

{
"queries": ["vegan bakery london"],
"maxPagesPerQuery": 1,
"enrichProfiles": true
}

enrichProfiles is disabled by default and is available to paying users only.

Basic versus enriched output

CapabilityBasic (enrichProfiles=false)Enriched (enrichProfiles=true)
ID, username, full name, profile URLIncludedIncluded
Search rank and search contextIncludedIncluded
Privacy and verification flagsIncludedIncluded and refreshed when available
Profile counts and biographynullCurrent public values when available
Website and bio linksEmpty/nullCurrent public values when available
Category and business flagsnullCurrent public values when available
Public email, phone, and address fieldsnullIncluded only when the account publicly exposes them
Recent posts or ReelsNot includedNot included
Enrichment eventNeverOnly for a successful identity-matching profile

Every row has an enrichment_status:

  • not_requested — basic mode
  • succeeded — a matching profile was mapped and charged
  • not_available — the profile lookup returned no available profile
  • failed — the lookup, validation, or identity check failed safely

Unavailable and failed enrichments preserve the basic account row and do not create an enrichment charge.

Input

FieldRules
queriesRequired array of free-text account searches. Whitespace is trimmed; equivalent Unicode/case variants are deduplicated while first occurrence order is retained. The schema accepts up to 10 unique queries; plan-specific effective limits are detailed in Pricing. Each query is limited to 100 Unicode code points.
maxPagesPerQueryOptional integer from 1 through 10; default 1. Applied separately to each query. Plan-specific effective limits are detailed in Pricing. This is a maximum page count, not a result guarantee.
enrichProfilesOptional boolean; default false. Paying users only. Enables one bounded profile-by-ID lookup for each first-seen account candidate that fits within the remaining spending capacity.

Unknown properties, empty queries, control or formatting characters, invalid types, and out-of-range values are rejected before credentials or network work.

Dataset rows

One row represents one charged, unique account for one submitted query. The same account may appear once—and incur one account-result event—for each distinct query because query provenance is meaningful. Duplicate account IDs from later pages of the same query are suppressed.

Example enriched row:

{
"query": "coffee roaster",
"query_index": 0,
"page_number": 1,
"page_rank": 1,
"rank": 1,
"id": "1234567890",
"username": "example.roaster",
"full_name": "Example Coffee Roaster",
"profile_url": "https://www.instagram.com/example.roaster/",
"is_private": false,
"is_verified": false,
"profile_pic_url": "https://cdn.example/profile.jpg",
"search_serp_type": 1,
"is_verified_search_boosted": false,
"search_social_context": null,
"enrichment_status": "succeeded",
"follower_count": 12500,
"following_count": 420,
"media_count": 680,
"biography": "Small-batch coffee roasted weekly.",
"external_url": "https://example.com",
"bio_links": [{"title": "Shop", "url": "https://example.com/shop"}],
"account_type": 2,
"category": "Coffee shop",
"is_business": true,
"is_professional_account": true,
"public_email": "hello@example.com",
"public_phone_number": null,
"business_contact_method": "EMAIL",
"address_street": null,
"city_name": "Portland",
"profile_pic_url_hd": "https://cdn.example/profile-hd.jpg"
}

The example is illustrative. Optional fields are returned as null or an empty list when Instagram does not expose a valid value. Profile image and external-link URLs can change or expire.

Pricing

$0.40 per 1,000 saved unique accounts + $0.002 per successfully fetched page. Profile enrichment adds $5.50 per 1,000 successfully enriched accounts.

ExampleCharge
1 valid empty page$0.0020
1 basic page with 5 saved accounts$0.0040
1 basic page with 20 saved accounts$0.0100
1 enriched page with 20 successful enrichments$0.1200

Only saved unique accounts are billed. Duplicate or malformed accounts are not. A valid empty or duplicate-only page costs $0.002; failed pages are not billed. Profile enrichment is billed only when a matching public profile is successfully enriched and saved. The minimum run spending limit is $0.0024, enough for one page and one saved account.

A requested page costs at most $0.010 in basic mode or $0.120 with 20 successful enrichments. The largest allowed paid input therefore has a maximum event charge of $1.00 basic or $12.00 fully enriched before a lower Apify run spending limit is applied.

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 query, uses exactly one search page, and cannot enable profile enrichment, while returning the same dataset fields and page/result billing semantics as paid runs. Console, CLI, API, schedules, webhooks, MCP, and other Apify 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 — run status, prices, maximum and actual event charge, delivered and charged totals, and sanitized per-query outcomes
  • AUDIT — aggregate non-query request, retry, byte, mapping, duplicate, enrichment, storage, timing, and exact charge-reconciliation metrics

Overall status is one of SUCCEEDED, PARTIAL, FAILED, or CHARGE_LIMIT_REACHED. A run can be partial when one query fails while another succeeds. Authentication, provider-balance, spending-capacity, or charged-storage failures stop later work safely.

Admitted FREE runs include a freeTier object in OUTPUT and AUDIT with the UTC month, claimed slot, remaining allowance, effective page limit, and policy version. Rejected FREE runs use stable reasons such as free_monthly_limit, free_run_already_consumed, or free_quota_unavailable. The record never contains an Apify user ID, API token, or internal quota-storage identifier.

Allowance exhaustion and replay complete the Apify run successfully, while OUTPUT.status remains FAILED; the stable stopReason/freeTier.outcome remains machine-readable, and identity/quota verification errors still fail the platform run.

Pagination and stopping behavior

Queries and pages run sequentially. Profile requests for a selected page use bounded concurrency of five, then rows are restored to rank order before storage.

For each query, extraction stops when:

  • maxPagesPerQuery is reached;
  • Instagram reports no more pages;
  • the next page token is absent;
  • the first continuation page contributes zero new valid account IDs;
  • the remaining spending capacity cannot cover the next required event bundle;
  • the query encounters a terminal failure.

Instagram search is ranked and query-dependent. This Actor does not promise exhaustive results, stable ordering, fixed page sizes, a minimum row count, or repeatable pagination. A provider page can contain more than 20 raw objects; only the first 20 are eligible for this product contract.

Limitations and data quality

This Actor:

  • returns a current ranked Instagram account-search snapshot, not an exhaustive directory;
  • cannot guarantee stable ordering, fixed page size, complete coverage, or a requested number of unique accounts;
  • does not search private content or bypass access controls;
  • does not include posts, Reels, stories, followers, following lists, engagement rates, email verification, website crawling, or historical tracking;
  • does not expose continuation tokens, custom filters, provider fields outside the documented schema, or arbitrary raw responses;
  • does not require or accept customer Instagram credentials, cookies, sessions, or proxy configuration.

Public email, phone, website, and address fields are sparse. They appear only when Instagram exposes them on the public profile, are not independently verified, can be outdated, and are never guaranteed. Do not describe a missing value as a lookup failure when enrichment_status is succeeded.

API and CLI use

Call the Actor through the standard Apify Actor Runs API. Read account rows from the default dataset and reconciliation metadata from OUTPUT and AUDIT.

apify actors call publicsignallabs/instagram-account-search \
--input '{"queries":["coffee roaster"],"maxPagesPerQuery":1,"enrichProfiles":false}' \
--output-dataset

The Actor also works with the Apify JavaScript and Python clients, REST 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, honor deletion obligations, and do not use unverified contact fields for unlawful or deceptive outreach.

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, input shape with private values removed, expected result, and observed result. Never include API tokens, cookies, credentials, personal contact values, or other private data.