Instagram User Scraper avatar

Instagram User Scraper

Pricing

from $5.00 / 1,000 profile founds

Go to Apify Store
Instagram User Scraper

Instagram User Scraper

Search public Instagram users by keyword and return enriched profiles: bio, follower/following/media counts, verified & business flags, category, external links, and parsed email/phone. No login, no cookies. Provider-backed (ScrapeCreators). MCP-ready.

Pricing

from $5.00 / 1,000 profile founds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

13

Total users

2

Monthly active users

2 days ago

Last modified

Share

Search public Instagram users by keyword and return enriched profile records for discovery, lead generation, and workflow automation. Provide one or more search phrases, and each returned record represents one public Instagram profile that matched the query. The dataset can include username, full name, biography, follower, following, and media counts, verified and business flags, category, external links, parsed email and phone, profile picture URL, and public profile URL. This Apify Actor is usable through Apify MCP.

Best fit and connected workflows

This Actor fits workflows that begin with a keyword and end with structured public Instagram profiles.

Use it when you want to:

  • Build niche creator, influencer, or local business lists from phrases such as "fitness coach" or "vegan bakery".
  • Enrich lead lists with public profile context such as category, website, and contact fields.
  • Feed an agent or internal tool a keyword and receive flat records that are easy to filter, deduplicate, and export.
  • Move from discovery to a deeper Instagram workflow by connecting verified related Actors.

Connected workflows:

  • Start with Instagram Keyword Search Scraper when you want to discover Instagram records first, then pass a verified public URL or ID into this Actor for profile detail data.
  • Continue to Instagram Comments Scraper when you want comments or reactions for a returned Instagram record and the downstream schema accepts its public ID or URL.

Practical scenario

Maya is building a list of public Instagram accounts for a local campaign. She starts with the phrase real estate agent miami and sets a per-query cap to guide the run size. The Actor returns records with username, fullName, followerCount, categoryName, profileUrl, and sometimes email, phone, and externalUrl. Maya reviews the dataset, selects accounts that match her outreach criteria, and moves the chosen profiles into her CRM or a follow-up enrichment step.

Input

Input fields

FieldTypeRequiredDescription
searchQueriesarray of stringsYesOne or more keyword or phrase queries. Each query matches against public bios and captions and is used for discovery.
maxResultsPerQueryintegerNoMaximum number of profiles to return per query. Default is 50. Range 1-500. Results paginate automatically.
parseContactsbooleanNoExtract available email and phone values from the bio and bio links. Default is true.
providerstringNoBackend resolver. auto uses ScrapeCreators first and can fall back to SociaVault. You can also choose scrapeCreators or sociaVault.

Valid input example

{
"searchQueries": [
"vegan bakery"
],
"maxResultsPerQuery": 25,
"parseContacts": true,
"provider": "auto"
}

Output

The default dataset stores one record per matched public Instagram profile. Records are flat and include the search query, profile identity fields, public counts, profile metadata, contact fields when available, and provenance fields. The output also includes run summary records in the key-value store.

Output fields

FieldTypeDescription
querystringSearch query that matched the profile.
igIdstring or nullNumeric Instagram user identifier.
usernamestring or nullInstagram handle.
fullNamestring or nullDisplay name from the profile.
biographystring or nullProfile bio text.
emailstring or nullEmail parsed from the bio and bio links, when present.
phonestring or nullPhone parsed from the bio text, when present.
followerCountinteger or nullPublic follower count at scrape time.
followingCountinteger or nullNumber of accounts the profile follows.
mediaCountinteger or nullTotal number of posts on the profile.
isVerifiedboolean or nullVerified badge flag.
isPrivateboolean or nullPrivate account flag.
isBusinessAccountboolean or nullBusiness or professional account flag.
categoryNamestring or nullInstagram business or creator category.
externalUrlstring or nullWebsite link set on the profile.
bioLinksarray or nullOutbound links published in the bio.
profilePicUrlstring or nullDirect profile photo URL.
profileUrlstring or nullPublic instagram.com profile URL.
matchedFromstring or nullMatch path: profile or caption.
scrapeSourcestringData provider that returned the record.
scrapedAtstringISO 8601 timestamp for when the record was emitted.

Illustrative output record

{
"query": "fitness coach",
"igId": "188767259",
"username": "charliejohnsonfitness",
"fullName": "World's #1 Fitness Business Coach",
"biography": "DM me \"PAID\" ...",
"email": null,
"phone": null,
"followerCount": 503332,
"followingCount": 6541,
"mediaCount": 8387,
"isVerified": true,
"isPrivate": false,
"isBusinessAccount": true,
"categoryName": "Coach",
"externalUrl": "https://www.7fss.com/step-1-copy",
"bioLinks": [
"https://www.7fss.com/step-1-copy"
],
"profilePicUrl": "https://instagram.f.../444225908_....jpg",
"profileUrl": "https://www.instagram.com/charliejohnsonfitness/",
"matchedFrom": "profile",
"scrapeSource": "scrapecreators",
"scrapedAt": "2026-07-01T12:00:00.000Z"
}

How it works

This Actor uses provider-backed search for public Instagram profiles.

  • searchQueries drives keyword discovery across public bios and captions.
  • auto uses ScrapeCreators first and can switch to SociaVault when ScrapeCreators reaches a provider boundary.
  • ScrapeCreators is the primary backend, and SociaVault adds Google discovery plus per-handle profile enrichment.
  • Results are paginated automatically and deduplicated across queries.
  • The Actor stores flat records in the dataset and exposes run output in the key-value store.
  • The owner-provided API keys are pre-configured as environment variables, so you only supply search input.

Pricing

Instagram User Scraper uses Pay per event plus Apify platform usage. Open the live Pricing tab in the Apify console for the current event pricing and any platform charges that apply to your run.

A simple event-count example: if a run writes ten profile records, the charged event count includes the actor start event plus ten Profile found events. Review the live Pricing tab before you run to see the current pricing details for each event type.

Use with AI agents (MCP)

This Actor is available through Apify MCP as a tool that takes keyword-based discovery input and returns structured public Instagram profile records for downstream reasoning, filtering, and follow-up workflows.

Exact Actor identity: khadinakbar/instagram-user-scraper

Tool description: search public Instagram users by keyword and return enriched profile fields that an agent can read, filter, and pass into follow-up workflows.

Find public Instagram profiles for the query "vegan bakery" with up to 25 results. Return usernames, full names, bios, follower counts, categories, profile URLs, and any parsed contact fields. Keep the output as structured records and include the query source for each item.

Output interpretation:

  • query shows which keyword produced the match.
  • scrapeSource shows whether ScrapeCreators or SociaVault returned the record.
  • matchedFrom helps an agent understand whether the profile matched through a profile page or a caption path.
  • scrapedAt gives a timestamp for provenance and refresh logic.

Scope, pagination, and cost guidance:

  • This Actor searches public profiles by keyword, so it works well for discovery tasks.
  • Results are returned in pages and controlled by maxResultsPerQuery.
  • A smaller cap reduces the number of returned records, while a larger cap allows more paginated results when relevant profiles are available.
  • Contact fields are available and may be null when a profile does not publish them.
  • Costs are event-based, so the number of returned profile records determines the Profile found event count.

Apify API example

JavaScript

import { ApifyClient } from 'apify-client';
const APIFY_TOKEN = process.env.APIFY_TOKEN;
const client = new ApifyClient({ token: APIFY_TOKEN });
const run = await client.actor('khadinakbar/instagram-user-scraper').call({
searchQueries: ['real estate agent miami'],
maxResultsPerQuery: 10,
parseContacts: true,
provider: 'auto',
});
const datasetId = run.defaultDatasetId;
const { items } = await client.dataset(datasetId).listItems();
for (const item of items) {
console.log(item.username, item.fullName, item.email);
}

Python

import os
from apify_client import ApifyClient
APIFY_TOKEN = os.environ["APIFY_TOKEN"]
client = ApifyClient(APIFY_TOKEN)
run = client.actor("khadinakbar/instagram-user-scraper").call(run_input={
"searchQueries": ["vegan bakery"],
"maxResultsPerQuery": 10,
"parseContacts": True,
"provider": "auto",
})
dataset_id = run["defaultDatasetId"]
items = client.dataset(dataset_id).list_items().items
for item in items:
print(item.get("username"), item.get("fullName"), item.get("email"))

Best results and outcome guidance

  • Start with a phrase that describes the account type you want, such as a profession, niche, or city-based descriptor.
  • Use multiple search queries when you want coverage across related terms.
  • Keep maxResultsPerQuery aligned with your downstream workflow so the dataset stays manageable.
  • Leave parseContacts enabled when you want contact enrichment from public bios and links.
  • Use provider: auto for the standard route, or select a single provider when you want a fixed backend choice for a run.
  • Review matchedFrom alongside query when you filter results for research, lead generation, or agent handoff.

Continue the workflow

  • Then use Instagram Video Downloader to continue Instagram records selected with Instagram User Scraper into a focused media workflow.
  • Then use LinkedIn Ad Library Search Scraper to extend Instagram User Scraper with a neighboring social-media research source when the brief calls for Linkedin data.

Design note

I found that the live dataset contract includes query, scrapeSource, and scrapedAt as required fields, which makes provenance clear even when other profile fields are null.

FAQ

Is this Actor for username lookup or keyword discovery?
Use This Actor is for keyword discovery. For a known @username, the companion Instagram Keyword Search Scraper workflow is the closer fit when the next workflow needs that Actor's focused input and output contract.

How does this connect to other Instagram Actors?
A natural path is discovery with Instagram Keyword Search Scraper, then this Actor for enriched profile data, and later Instagram Comments Scraper for comments on a returned record.

What happens when I set a result cap per query?
The Actor paginates automatically and returns up to the cap you choose for each query, subject to the available relevant public profiles.

Which provider should I use?
auto uses ScrapeCreators first and can fall back to SociaVault. Use a single provider when you want to pin the backend for a run.

Are contact fields always present?
The Actor parses contact details from public bio content and links when available, so email and phone can be null.

Responsible use

This Actor collects public Instagram information and returns it in structured form. Use the data in ways that respect applicable laws, platform terms, and the rights of the people represented in the records. Keep outreach relevant to the context of the public profile and handle contact data carefully.