# 🔥Instagram Profile Finder🔥 (`instagram-scraper/instagram-profile-finder`) Actor

Discover public Instagram profiles through Google Search and turn available public data into structured datasets. Extract bios, follower stats, links, public contact emails, latest-post previews, related accounts, and optional Facebook context.

- **URL**: https://apify.com/instagram-scraper/instagram-profile-finder.md
- **Developed by:** [Instagram Scraper](https://apify.com/instagram-scraper) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

<img src="https://apify-stats.seadfeng-7bd.workers.dev/instagram-scraper/instagram-profile-finder" height="20" alt="Actor Stats">

Discover public Instagram accounts from business search queries, then collect
public Profile data in structured Apify Datasets.

Use it for influencer research, competitor lists, lead enrichment, and market
research. Start with the words a customer would search for; the Actor uses
Google Search to discover eligible public Instagram pages, validates the
returned URLs, and fetches each public Profile it can resolve.

> This Actor discovers resources from search queries. It does not accept
> usernames, Instagram URLs, or full search URLs as its primary input.

### What you get

- Public Instagram Profile records: identity, bio, links, account flags,
  profile images, and available follower, following, and post counts.
- A Profile-discovery record for every eligible Profile URL accepted from a
  search-result page.
- A public Post or Reel discovery record when a content search mode is used,
  including its resolved owner when Instagram makes it available.
- Optional enrichments: a linked Facebook profile, latest-post previews, and
  related-profile suggestions.

The Actor is designed for Profile research. Post and Reel modes use public
content to identify account owners; the default Dataset contains deduplicated
Profile results, not a full post archive.

### How it works

```text
Your business queries
        |
        v
Search-powered Instagram discovery
        |
        +-- Profile URL ------> public Profile fetch ------> default Dataset
        |
        +-- Post / Reel URL --> public owner resolution --> public Profile fetch
                                      |
                                      +--> searchPostResults

Accepted Profile URLs -------------------------------------> searchProfileResults
```

The Actor avoids fetching the same Instagram Profile more than once per run.
Discovery records remain in separate datasets so you can trace which searches
produced each result, while the default Dataset stays a clean Profile table.

Discovery results come from Google Search. The Actor then fetches current
public Profile or content data from Instagram, with optional Facebook
enrichment. It does not use or contribute results to a Profile, email, or
contact database owned by the Actor publisher. Run outputs are written to the
Apify account of the user running the Actor.

### Quick start

1. In the Input tab, add one or more business search expressions to **Search
   queries**.
2. Choose a **Search mode** and, if useful, set the maximum results and search
   localization.
3. Run the Actor. Open the default Dataset for Profiles, or use the Output tab
   to open the two discovery datasets.

Example: find public Profile URLs relevant to a Singapore skincare search.

```json
{
  "queries": ["vegan skincare singapore"],
  "searchMode": "profiles",
  "queryMaxResults": 30,
  "searchCountry": "sg",
  "searchLanguage": "en"
}
```

### Typical use cases

- **Influencer discovery:** find accounts in a location, category, or niche,
  then compare verification, audience size, links, and public Profile details.
- **Market and competitor research:** create a repeatable list of accounts
  found for the business searches you care about.
- **Lead enrichment:** identify public business Profiles and review
  biographies, websites, categories, and any email visible in the public
  Profile or search description.
- **Content-led account discovery:** search for Posts and Reels, then resolve
  their public owners to Profiles.

### Configure the input

| Input | Default | What it controls |
| --- | --- | --- |
| **queries** | Required | One to 5,000 business search expressions used to discover Instagram resources. |
| **emailDiscoveryMode** | **false** | Replace each input with email-provider searches, including country-specific hosts selected by **searchCountry**. |
| **searchMode** | **profiles** | Target Profiles, Posts, Reels, or both content types. |
| **searchTimeRange** | Not set (Any time) | Limit results to the past 24 hours, week, month, or year. |
| **queryMaxResults** | **10** | Maximum unique eligible candidate URLs retained for each query, from 10 to 100. |
| **searchCountry** | **us** | Two-letter lowercase search country code, such as **sg** or **jp**. |
| **searchLanguage** | **en** | Search language code, such as **en** or **ja**. |
| **scrapeFacebookProfile** | **false** | Fetch one linked public Facebook Profile when a supported URL is found. |
| **skipPostCount** | **false** | Skip the extra request used to derive post count. |
| **skipLatestPosts** | **true** | Skip lightweight latest-post previews. |
| **skipRelatedProfiles** | **true** | Skip related-profile suggestions. |

#### Search queries

Enter ordinary business search expressions, not URLs. Quotes and supported
search operators are allowed.

- **vegan skincare singapore**
- **independent coffee roaster berlin**
- **コスメ "@gmail.com"**

Use double quotes (`"..."`) to match an exact word or phrase, for example
`"vegan skincare"`. Prefix a word or quoted phrase with a minus sign (`-`) to
exclude it, for example `vegan skincare -wholesale` or `-"job hiring"`. Do not
put a space between the minus sign and the excluded term.

Leading/trailing whitespace and exact duplicate expressions are removed. Search
operators are preserved. A full search URL is rejected.

#### Email discovery mode

**Email discovery mode is off by default.** Enable **emailDiscoveryMode** to
search for Profiles that may publish an email address. The Actor replaces,
rather than additionally runs, each input query with one Google Search query
for each built-in email host. It always starts with
**gmail.com**, **hotmail.com**, **outlook.com**, **icloud.com**, and
**yahoo.com**, then uses **searchCountry** to append local hosts. For example,
`searchCountry=jp` also
adds `yahoo.co.jp`; its query excludes the known same-domain Yahoo shopping and
auction noise.

```json
{
  "queries": ["Health/beauty"],
  "emailDiscoveryMode": true,
  "searchCountry": "au"
}
```

The example executes email-focused variants such as:

```text
Health/beauty "@gmail.com"
Health/beauty "@bigpond.com"
Health/beauty "@optusnet.com.au"
```

`queryMaxResults` applies separately to every effective email query. The
country-specific host list is bounded at four, so a query expands to at most
nine effective queries. With the 5,000-query input limit, this can create up
to 45,000 initial search tasks. Email discovery improves the likelihood of
finding a public email-related search result; it does not guarantee that the
resulting Profile has an extractable email.

A publicly visible email may be inaccurate or may not belong to the Profile
owner. Its public availability does not mean the recipient has agreed to
receive marketing messages. You are responsible for ensuring that collecting,
exporting, sharing, and using results complies with applicable laws and
platform terms.

#### Search time range

Optionally set **searchTimeRange** to limit search results to a recent period:

| Value | Input label |
| --- | --- |
| `day` | Past 24 hours |
| `week` | Past week |
| `month` | Past month |
| `year` | Past year |

Leave it unset to search all available results (Any time). For example:

```json
{
  "queries": ["vegan skincare singapore"],
  "searchTimeRange": "week"
}
```

#### Search modes

| Mode | Search target | Default Dataset result | Discovery dataset |
| --- | --- | --- | --- |
| **profiles** | Public Profile URLs | One Profile record per resolved Profile | **searchProfileResults** |
| **posts\_and\_reels** | Public Post and Reel URLs | One Profile record per resolved owner | **searchPostResults** |
| **only\_posts** | Public Post URLs | One Profile record per resolved owner | **searchPostResults** |
| **only\_reels** | Public Reel URLs | One Profile record per resolved owner | **searchPostResults** |

Content search modes retain one **searchPostResults** row for each accepted
discovery source. If multiple sources resolve to the same account, the owner
Profile is still fetched and emitted only once.

#### Optional Profile enrichments

These switches affect the Profile fetch after discovery:

- **Facebook Profile:** when enabled, the Actor looks for one supported Facebook
  URL in **external\_url**, **bio\_links**, **fb\_profile\_biolink**, **biography**,
  and **full\_name**, in that order. If found, it writes an **fb\_profile** object.
- **Post count:** **post\_count** is derived from the public Profile page's
  metadata. Enable **skipPostCount** to avoid that extra request.
- **Latest posts:** disable **skipLatestPosts** to request a lightweight latest
  post preview. This is not a fixed full-post schema or a replacement for a
  dedicated post scraper.
- **Related profiles:** disable **skipRelatedProfiles** to collect Instagram's
  available account suggestions. A failed suggestion enrichment produces an
  empty list rather than failing the Profile.

### Understand the results

The Actor writes three datasets with different purposes.

| Dataset | One row represents | Use it for |
| --- | --- | --- |
| **Default Dataset** | A scraped Instagram Profile | Profile analysis, exports, monitoring, and enrichment. |
| **searchProfileResults** | An eligible Profile URL accepted from one search-result page | Auditing Profile discovery for each query. |
| **searchPostResults** | An accepted Post or Reel after its content fetch attempts finish | Auditing content-led discovery, collection status, and any resolved owner. |

The search datasets preserve real search-discovery events. They can contain more
than one row for the same Profile or content item when it appears in different
queries or sources. The default Dataset does not contain search provenance
fields such as matched queries or matched URLs.

When Email discovery mode is on, the two search datasets distinguish
**inputQuery** (your business expression), **query** (the effective email
search), and **emailHost** (the added domain). When the mode is off,
**inputQuery** equals **query** and **emailHost** is `null`.

#### Default Dataset: Profile records

The Dataset provides a compact Overview view, while raw items retain available
Instagram fields. Common fields include:

| Group | Fields | Notes |
| --- | --- | --- |
| Identity | **pk**, **id**, **pk\_id**, **username**, **full\_name**, **url** | **url** is the canonical public Profile URL. |
| Profile and links | **profile\_pic\_url**, **profile\_pic\_url\_hd**, **biography**, **contact\_email**, **bio\_links**, **external\_url**, **pronouns** | Availability depends on Instagram's public payload. |
| Counts | **followers**, **following**, **post\_count**, **total\_clips\_count**, **has\_any\_clips** | Post count can be approximate. |
| Account details | **is\_private**, **is\_verified**, **is\_business**, **is\_professional\_account**, **category**, **account\_type** | Missing optional values are commonly null. |
| Optional enrichments | **fb\_profile**, **latest\_posts**, **related\_profiles** | Controlled by the settings above. |
| Run metadata | **ig\_status**, **crawled\_at** | **ig\_status** describes the Profile fetch outcome. |

Instagram may return additional raw metadata. Treat optional fields as
non-guaranteed: public payloads vary by account, locale, and endpoint changes.

#### Profile result example

This shortened example shows a successfully resolved Profile. Optional fields
can be null, and optional lists can be empty.

```json
{
  "pk": "6590609",
  "id": "6590609",
  "username": "kevinhart4real",
  "full_name": "Kevin Hart",
  "url": "https://www.instagram.com/kevinhart4real/",
  "profile_pic_url": "https://scontent.example-cdn.net/profile.jpg",
  "profile_pic_url_hd": "https://scontent.example-cdn.net/profile-hd.jpg",
  "biography": "Live Love & Laugh!!!",
  "contact_email": null,
  "bio_links": [],
  "external_url": "https://www.kevinhartnation.com/",
  "followers": 172275843,
  "following": 1287,
  "post_count": 2122,
  "is_private": false,
  "is_verified": true,
  "is_business": false,
  "is_professional_account": null,
  "category": "Comedian",
  "fb_profile": null,
  "latest_posts": [],
  "related_profiles": [],
  "ig_status": "ok",
  "crawled_at": "2026-09-02T10:30:00Z"
}
```

When Instagram does not return a Profile, the default Dataset can contain a
minimal result:

```json
{
  "username": "example",
  "url": "https://www.instagram.com/example/",
  "ig_status": "not_found",
  "message": "Profile not found or restricted",
  "crawled_at": "2026-09-02T10:30:00Z"
}
```

**not\_found** means the Profile did not return usable public Profile data. It
can mean the account does not exist, is restricted, or is otherwise unavailable
to the public request; it does not prove that an account has been deleted.

#### Search discovery examples

The **searchProfileResults** Dataset has one row per eligible Profile URL
accepted from a search page:

```json
{
  "inputQuery": "vegan skincare singapore",
  "query": "vegan skincare singapore",
  "emailHost": null,
  "searchPageIndex": 0,
  "desc": "Instagram photos and videos from this public profile.",
  "email": "hello@example.com",
  "isVerifiedUrl": true,
  "profileUrl": "https://www.instagram.com/example/",
  "username": "example",
  "discoveredAt": "2026-09-02T10:30:00Z"
}
```

The **searchPostResults** Dataset records the final content collection
outcome and, when available, the fetched public media object and owner:

```json
{
  "inputQuery": "vegan skincare singapore",
  "query": "vegan skincare singapore",
  "emailHost": null,
  "searchPageIndex": 0,
  "desc": "Instagram photos and videos from this public Reel.",
  "email": null,
  "isVerifiedUrl": true,
  "contentType": "reel",
  "shortcode": "ABC123",
  "contentUrl": "https://www.instagram.com/reel/ABC123/",
  "ownerId": "123456789",
  "ownerUsername": "example",
  "post": {
    "id": "123456789_123456789",
    "code": "ABC123"
  },
  "ig_status": "ok",
  "message": null,
  "fetchedAt": "2026-09-02T10:31:00Z"
}
```

For content results, **ig\_status** is **ok** when both the public media object
and its owner were resolved. **not\_found**, **owner\_not\_found**, and
**fetch\_failed** identify unsuccessful collection outcomes after retries;
**message** contains the corresponding reason. A failed result can therefore
have null **ownerId**, **ownerUsername**, and **post** values.

**isVerifiedUrl: true** says only that the Actor accepted the URL as an
eligible HTTPS Instagram route. It does not verify the Instagram account,
guarantee availability, or represent Instagram verification status.

### Result semantics and limits

#### Candidate limits and pagination

**queryMaxResults** limits unique eligible candidate URLs retained per query; it
does not guarantee default Profile Dataset rows. A query can produce fewer
Profiles because results may be missing, invalid, duplicated, deleted,
restricted, ownerless, or unavailable. For content modes,
**searchPostResults** retains the final collection status for every accepted
source even when its fetch attempts are exhausted.

The Actor requests at most **ceil(queryMaxResults / 10)** search-result pages
per query. It schedules the next page only when needed, rather than scheduling
all pages up front.

#### Public availability and fields

Only public data returned through the Actor's requests can be emitted. Private
or restricted Profiles have less available information, and raw Instagram
fields can change without notice.

**post\_count** is parsed from public Profile-page metadata. Instagram can
abbreviate values such as **14K** or **1.2M**, so the value can be approximate.
It is null for private Profiles, when the setting skips the request, and when
the metadata is unavailable or cannot be parsed.

**contact\_email** is the first email address found in the public **biography**
or **full\_name**, or null when none is available. The **email** field in a search
dataset is different: it is the first address found in the search description.

With latest-post enrichment enabled, the Actor requests up to 10 previews for
paying users and up to 5 for non-paying users. Their nested shape follows
Instagram's current payload except for Actor convenience fields; do not depend
on it as a fixed full-post contract.

#### Pricing and usage

This Actor uses pay-per-event pricing.

Each successfully fetched search-results page counts as one
`search-results-page` event, including pages with no eligible Instagram results.
Failed search requests are not charged.

If **Facebook Profile** enrichment is enabled, a `scrape-fb-profile` event is
charged only when a supported linked Facebook Profile is successfully added to
the Profile result.

Higher **queryMaxResults** values can require more search-results pages.
**Email discovery mode** can also increase usage because it expands each input
query into several email-focused searches. See the Actor's **Pricing** tab and
your Apify usage details for current rates.

### Tips and troubleshooting

| Situation | What to check |
| --- | --- |
| The run stops before discovery | Check that at least one non-empty search query is provided. |
| Fewer Profiles than expected | Increase **queryMaxResults** within 10–100, refine the query, and remember the limit is candidates rather than output records. |
| You need Posts or Reels rather than owners | Use a dedicated post or Reel Actor below; this Actor's main result is a Profile. |
| You only need basic Profile data | Leave **skipLatestPosts** and **skipRelatedProfiles** enabled. Enable **skipPostCount** if post count is not needed. |
| Discovery needs a different market | Set **searchCountry** and **searchLanguage** with valid country and language codes. |

### Need a different Instagram dataset?

<table>
  <thead>
    <tr>
      <th width="26%">Actor</th>
      <th width="52%">Description</th>
      <th width="22%">Stats</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://apify.com/instagram-scraper/instagram-profile-scraper">Instagram Profile Scraper</a></td>
      <td>Scrape public Instagram Profile data from usernames or Profile URLs.</td>
      <td><img src="https://apify-stats.seadfeng-7bd.workers.dev/instagram-scraper/instagram-profile-scraper" height="20" alt="Instagram Profile Scraper Actor Stats"></td>
    </tr>
    <tr>
      <td><a href="https://apify.com/instagram-scraper/fast-instagram-post-scraper">Fast Instagram Profile Posts Scraper</a></td>
      <td>Scrape post data from Instagram Profile pages.</td>
      <td><img src="https://apify-stats.seadfeng-7bd.workers.dev/instagram-scraper/fast-instagram-post-scraper" height="20" alt="Fast Instagram Profile Posts Scraper Actor Stats"></td>
    </tr>
    <tr>
      <td><a href="https://apify.com/instagram-scraper/instagram-profile-posts-scraper">Instagram Profile Posts Scraper</a></td>
      <td>Extract Profile post fields such as hashtags, counts, media, and shortcodes.</td>
      <td><img src="https://apify-stats.seadfeng-7bd.workers.dev/instagram-scraper/instagram-profile-posts-scraper" height="20" alt="Instagram Profile Posts Scraper Actor Stats"></td>
    </tr>
    <tr>
      <td><a href="https://apify.com/instagram-scraper/instagram-profile-reels-scraper">Fast Instagram Profile Reels Scraper</a></td>
      <td>Scrape public Instagram Reels from Profile pages.</td>
      <td><img src="https://apify-stats.seadfeng-7bd.workers.dev/instagram-scraper/instagram-profile-reels-scraper" height="20" alt="Fast Instagram Profile Reels Scraper Actor Stats"></td>
    </tr>
    <tr>
      <td><a href="https://apify.com/instagram-scraper/instagram-hashtags-scraper">Instagram Hashtags Posts Scraper</a></td>
      <td>Scrape public Instagram hashtag pages.</td>
      <td><img src="https://apify-stats.seadfeng-7bd.workers.dev/instagram-scraper/instagram-hashtags-scraper" height="20" alt="Instagram Hashtags Posts Scraper Actor Stats"></td>
    </tr>
    <tr>
      <td><a href="https://apify.com/instagram-scraper/instagram-related-profiles">Instagram Related Profiles Scraper</a></td>
      <td>Discover related accounts and recursively expand Profile networks.</td>
      <td><img src="https://apify-stats.seadfeng-7bd.workers.dev/instagram-scraper/instagram-related-profiles" height="20" alt="Instagram Related Profiles Scraper Actor Stats"></td>
    </tr>
  </tbody>
</table>

### Legal and ethical use

This is a user-operated research tool: you provide the queries, choose whether
to enable Email discovery or Facebook enrichment, and decide how to use the
results. The Actor returns data to your Apify account and does not contact
people on your behalf.

Public availability does not grant additional rights to use personal data or
constitute consent to marketing. You are responsible for ensuring that your
collection, access, export, sharing, and use of results complies with
applicable privacy, data protection, marketing, and platform rules. Do not use
the Actor for harassment, stalking, doxxing, fraud, unlawful discrimination,
or sensitive-attribute inference, and do not attempt to access private or
restricted accounts or bypass authentication. Follow the applicable terms of
Instagram, Google, and Apify. If you enable Facebook enrichment, you must also
follow Facebook's applicable terms.

# Actor input Schema

## `queries` (type: `array`):

Business keywords and search operators used to discover public Instagram profiles. Do not enter search URLs.

## `emailDiscoveryMode` (type: `boolean`):

Opt in to replace each business search expression with Google searches for common email-provider domains.

This increases the number of searches and may find public email addresses, but it does not guarantee that every resulting Profile will have an email address.

A publicly available email does not verify ownership or grant permission to send marketing messages; you are responsible for lawful use.

## `searchMode` (type: `string`):

Choose direct Profile URL discovery, or discover Post and/or Reel URLs and resolve their public owners to Profiles.

## `searchTimeRange` (type: `string`):

Limit search results to a recent time range. Leave blank to search all available results.

## `queryMaxResults` (type: `integer`):

Maximum number of unique valid Profile URLs retained from each query. This is not a guarantee of dataset records.

## `searchCountry` (type: `string`):

Enter a two-letter lowercase country code, such as us. If not set, us is used.

## `searchLanguage` (type: `string`):

Enter a language code, such as en. If not set, en is used.

## `scrapeFacebookProfile` (type: `boolean`):

When enabled, the actor looks for one Facebook profile URL in external\_url, bio\_links, fb\_profile\_biolink, or biography, then fetches fb\_profile.

## `skipPostCount` (type: `boolean`):

Skip post\_count. Enable this to get profile data faster when post count is not required.

## `skipLatestPosts` (type: `boolean`):

Skip latest\_posts. Enable this to get profile data faster when latest posts are not required.

## `skipRelatedProfiles` (type: `boolean`):

Skip related\_profiles. Enable this to get profile data faster when related profiles are not required.

## Actor input object example

```json
{
  "queries": [
    "Health/beauty"
  ],
  "emailDiscoveryMode": false,
  "searchMode": "profiles",
  "queryMaxResults": 10,
  "searchCountry": "us",
  "searchLanguage": "en",
  "scrapeFacebookProfile": false,
  "skipPostCount": false,
  "skipLatestPosts": true,
  "skipRelatedProfiles": true
}
```

# Actor output Schema

## `profiles` (type: `string`):

Scraped Instagram Profile records.

## `searchProfileResults` (type: `string`):

One row for each valid Profile URL accepted from a search-results page.

## `searchPostResults` (type: `string`):

One status row for each accepted Post or Reel discovered in search results.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "Health/beauty"
    ],
    "emailDiscoveryMode": false,
    "searchMode": "profiles",
    "queryMaxResults": 10,
    "searchCountry": "us",
    "searchLanguage": "en",
    "scrapeFacebookProfile": false,
    "skipPostCount": false,
    "skipLatestPosts": true,
    "skipRelatedProfiles": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("instagram-scraper/instagram-profile-finder").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "queries": ["Health/beauty"],
    "emailDiscoveryMode": False,
    "searchMode": "profiles",
    "queryMaxResults": 10,
    "searchCountry": "us",
    "searchLanguage": "en",
    "scrapeFacebookProfile": False,
    "skipPostCount": False,
    "skipLatestPosts": True,
    "skipRelatedProfiles": True,
}

# Run the Actor and wait for it to finish
run = client.actor("instagram-scraper/instagram-profile-finder").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "Health/beauty"
  ],
  "emailDiscoveryMode": false,
  "searchMode": "profiles",
  "queryMaxResults": 10,
  "searchCountry": "us",
  "searchLanguage": "en",
  "scrapeFacebookProfile": false,
  "skipPostCount": false,
  "skipLatestPosts": true,
  "skipRelatedProfiles": true
}' |
apify call instagram-scraper/instagram-profile-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,instagram-scraper/instagram-profile-finder"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/TqWhVzC65ffCgr0Ir/builds/GOuWC9jUf5TMhfDpN/openapi.json
