Instagram User Search Scraper avatar

Instagram User Search Scraper

Pricing

from $4.45 / 1,000 accounts

Go to Apify Store
Instagram User Search Scraper

Instagram User Search Scraper

Search public Instagram accounts by keyword, niche, person, brand, or business. Export unique matches with usernames, profile details, audience counts, country when available, and public contact data when available.

Pricing

from $4.45 / 1,000 accounts

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

991

Total users

84

Monthly active users

8.9 hours

Issues response

12 days ago

Last modified

Security

Limited permissions

Share

🔎 Turn Instagram keywords into profile lists

Built for marketers, researchers, agencies, and creator teams, Instagram User Search Scraper finds public Instagram accounts from your keywords. It saves one row per unique account with the first keyword that found it, account identity, country when available, audience counts, business details, and public contact data when available. Use the rows to build creator lists, review brands, or export account data.

📊 Instagram account rows

Each saved row is one unique public Instagram account. The Actor keeps the first eligible match for an account and ignores later duplicate matches. Its matchedKeyword field records the keyword tied to that first saved match. Rows include identity, privacy and verification flags, country when available, audience counts, business and professional details, biography links, and public contact fields when available. Missing optional values are null.

▶️ Search Instagram accounts by keyword

Run steps

  1. Open the Actor's Input tab.
  2. Add one or more keywords, such as vegan chef, Montreal photographer, or a brand name. Each term is searched independently.
  3. Set an optional maximum number of unique accounts for the run. Leave it empty to return all available results until the source is exhausted.
  4. Optionally choose an account type to keep only personal, business, or professional accounts.
  5. Start the run and open the dataset when it finishes.

Use clear terms that describe a niche, person, brand, or business. Results depend on the public account matches available for each term, so the Actor is not a guaranteed exhaustive directory.

⚙️ Input

Input fields

FieldTypeWhat it does
keywordsarray of stringsRequired. Add one or more keywords, niches, people, brands, or businesses. Each term is searched independently.
minFollowersinteger (optional)Keeps only accounts with at least this many public followers. Leave it empty to include accounts with any follower count.
maxFollowersinteger (optional)Keeps only accounts with at most this many public followers. Leave it empty to include accounts with any follower count.
verifiedOnlybooleanWhen enabled, keeps only accounts Instagram marks as verified. Leave it off to include verified and unverified accounts.
accountTypestring (optional)Keeps only personal, business, or professional accounts. business and professional use Instagram's own flag for that type. personal keeps accounts that are neither. Leave it empty to include all account types.
maxItemsinteger (optional)Sets the maximum number of unique accounts across all search terms. Leave it empty or enter 0 to return all available results until the source is exhausted. The form prefills 1.

All numeric fields accept whole numbers of 0 or more. minFollowers must not exceed maxFollowers. A follower limit skips accounts whose follower count is unavailable. The form prefills fitness coach as a search term. These prefills are not schema defaults. When verifiedOnly is omitted, both verified and unverified accounts can be returned.

Example input

This is the public input from a successful current-beta run:

{
"keywords": [
"fitness coach"
],
"maxItems": 1
}

Profile details are included when Instagram makes them public. There is no separate enrichment input.

🧾 Output

Output fields

FieldTypeWhat it does
userIdstringStable Instagram account ID.
usernamestringInstagram account username.
fullNamestring or nullDisplay name shown for the account, or null when unavailable.
countrystring or nullPublicly listed account country, or null when unavailable. The Actor does not infer it from names, language, emojis, biography wording, or search terms.
profilePictureUrlURL or nullPublic profile-picture URL, or null when unavailable.
isPrivatebooleanWhether Instagram marks the account as private.
isVerifiedbooleanWhether Instagram marks the account as verified.
matchedKeywordstringSubmitted keyword tied to the account's first saved match.
biographystring or nullPublic profile biography, or null when unavailable.
websiteUrlURL or nullExternal website published on the profile, or null when unavailable.
biographyLinksarrayLinks published in the biography. The array is empty when there are none.
biographyLinks.urlURLOne link published in the biography.
biographyLinks.titlestring or nullTitle shown for that link, or null when it has none.
followerCountinteger or nullPublic follower count, or null when unavailable.
followingCountinteger or nullPublic following count, or null when unavailable.
postCountinteger or nullPublic post count, or null when unavailable.
isBusinessAccountboolean or nullWhether Instagram identifies the profile as a business account, or null when unavailable.
isProfessionalAccountboolean or nullWhether Instagram marks the profile as a professional account, or null when unavailable.
categorystring or nullPublic business or creator category, or null when unavailable.
publicEmailstring or nullEmail explicitly published by the account, or null when unavailable.
publicPhonestring or nullPhone number explicitly published by the account, or null when unavailable. It comes from the public contact phone, or from a real phone number written in the biography. Dates and street numbers in the biography are not saved as a phone.

Each dataset row has the same account shape. The Actor saves the first eligible match for an account and does not add later duplicate matches. Country is included only when public account data provides it. Otherwise it is null.

Example account row

This is a genuine row from a successful current-beta run. The biography shows a phone number with a street address on the next line. Only the phone number is saved in publicPhone.

{
"userId": "2931974218",
"username": "tendencyusa",
"fullName": "Wholesale Women’s Fashion Miami",
"profilePictureUrl": "https://scontent-lga3-3.cdninstagram.com/v/t51.82787-19/702515909_18473113387102219_2615990573386675122_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=104&ccb=7-5&_nc_sid=f7ccc5&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLnd3dy4yNjEuQzMifQ%3D%3D&_nc_ohc=NUMHdnLYpJoQ7kNvwFkCJHM&_nc_oc=AdpHD98279tlhGaJ5ysymYMbjSHiKJDz0ZLGxbwwqbijA4f96UGQH3rreUGVeclLQ9Y&_nc_zt=24&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_gid=tlOp9qsgYWYMEOpcUanKgA&_nc_ss=70a8c&oh=00_AQO68MpIzQUIQ5mBcrSfVij2K5COhw1qO_37FxSbrS5Gfw&oe=6AE69488",
"isPrivate": false,
"isVerified": false,
"matchedKeyword": "tendencyusa",
"country": "United States",
"biography": "TENDENCY USA Women’s Miami Fashion Boutique\nRetail and Wholesale\nWorldwide Shipping\n+1 (754) 249 0729\n2002 nw 20st Miami FL 33142\nMon-Sat: 9:30am-5:00",
"websiteUrl": "https://wa.link/usiikt",
"followerCount": 14878,
"followingCount": 901,
"postCount": 1146,
"isBusinessAccount": false,
"isProfessionalAccount": true,
"category": "Boutique Store",
"publicEmail": null,
"publicPhone": "+1 (754) 249 0729",
"biographyLinks": [
{
"url": "https://wa.link/usiikt",
"title": "WhatsApp"
},
{
"url": "http://tendencyusa.com",
"title": null
}
]
}

Export the default dataset in JSON, CSV, Excel, XML, RSS, or HTML, or retrieve it through the Apify API.

💳 Pricing

This Actor uses pay-per-event pricing. One account event applies when a unique Instagram account is successfully saved to your dataset. Each saved account uses the same event, whether optional public fields are present or not. The number of account events follows the number of unique accounts saved.

🔌 Integrations

Open the results in the Apify dataset, export them as JSON, CSV, Excel, XML, RSS, or HTML, or read them through the Apify API.

❓ FAQ

What happens when the same account matches more than one keyword?

The Actor saves the first eligible account match and ignores later matches for that account. The saved row describes that first match only.

Why did I receive fewer accounts than maxItems?

maxItems is a cap, not a promised count. A term may have fewer available public matches, and some accounts may not have the required identity and status data. Leave maxItems empty to return all available results until the source is exhausted.

What happens when a keyword has no matches?

That term produces no account rows. Other terms can still return their own saved matches.

Can a date or address end up in publicPhone?

It should not. The Actor checks biography text with standard phone-number rules and keeps only the phone number itself. Dates and street numbers near it are left out. When there is no contact phone and no real phone number in the biography, the field is null.

Can every account include an email or phone number?

No. Contact fields appear only when an account exposes them publicly. Unavailable optional values are null.

Can every account include a country?

No. Country is included only when public account data provides it. The Actor does not guess from a name, language, emoji, biography, or search term. Otherwise the field is null.

Can the Actor access private profiles or private data?

No. It can return a public account's privacy flag, but it does not provide private-profile content or data Instagram does not expose publicly.

Does it search posts, Reels, hashtags, locations, followers, or following lists?

No. It searches public accounts by text keywords. Use a specialized Actor for those other sources.

Is this the official Instagram API?

No. It is a focused Actor for keyword-based public account discovery and structured exports. It does not provide every official API capability.

📝 Changelog

v3.0 (27-10-2026)

  • Remove searchRank because it did not show an Instagram search position. There is no replacement. Remove this field from your exports and code.
  • Return only public accounts. Private accounts are now skipped to keep results within public account data. If you used private account rows, update your code to allow for fewer results. There is no replacement for those rows.
  • Warn when no accounts match the selected filters for a keyword, while keeping results from other keywords.
  • Reliability improvements.

v2.1 (26-10-2026)

  • Fix publicPhone when it comes from the biography. It now holds only a real phone number, so dates and street address numbers no longer appear in it.
  • Add a searchRank output field.
  • Add isProfessionalAccount to show if Instagram marks the account as professional.
  • Add biographyLinks with the links published in the account biography and their titles when available.
  • Enter 0 in maxItems to return all available results.
  • The business account type filter now keeps only accounts that Instagram marks as business. The professional filter keeps only accounts that Instagram marks as professional.

v2.0 (28-09-2026)

  • Add a country field when Instagram publicly provides a country, and use null when it is unavailable.
  • Replace matchedKeywords with matchedKeyword to keep only the first keyword that found each account. Update your code to read one string from matchedKeyword instead of a list from matchedKeywords.
  • Add an account type filter for personal, business, or professional accounts.

v1.1 (15-09-2026)

  • Filter account results by minimum followers, maximum followers, or verified status.
  • Keep results from other keywords when one keyword has no public account matches.

v1.0 (10-09-2026)

  • Search all available public account results when no maximum is set.
  • Save each account once and show the keywords that found it.
  • Include available public profile, audience, business, and contact details in account rows.
  • Open the default dataset view labeled Instagram accounts.

v0.0

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré