# Instagram Profile Email Scraper API (`lance_api/instagram-profile-email-scraper-api`) Actor

Extract public email addresses and rich Instagram profile data, including followers, bio, links, verification status, and business metadata. Ideal for lead generation, CRM enrichment, influencer discovery, and automation.

- **URL**: https://apify.com/lance\_api/instagram-profile-email-scraper-api.md
- **Developed by:** [LanceAPI](https://apify.com/lance_api) (community)
- **Categories:** Social media, Lead generation, AI
- **Stats:** 3 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.00 / 1,000 profile 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/platform/actors/running/actors-in-store#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

## Instagram Profile Email Scraper API

**Instagram Profile Email Scraper API** extracts publicly listed email addresses and structured public profile data from one or more Instagram profile URLs. Use it for **creator outreach**, influencer lead generation, partnership research, CRM enrichment, sales lead enrichment, and automated API workflows without managing Instagram cookies, browser sessions, proxies, or external data-source credentials.

### Key features

- **Simple input:** submit one Instagram profile URL or a batch of profile URLs.
- **Public email detection:** find emails exposed in public Instagram profile data and profile link data.
- **Profile enrichment:** return username, display name, user ID, category, followers, following, account flags, links, and avatar URLs when available.
- **No Instagram setup required:** users do not provide Instagram cookies, sessions, proxies, or browser configuration.
- **Developer-ready output:** one structured Apify dataset item per processed profile.
- **Transparent two-part pricing:** pay a low base price for each returned dataset result, with an additional email-found charge only when an email is detected.

### Quick input example

```json
{
  "profileUrls": [
    "https://www.instagram.com/example.creator/"
  ]
}
```

### Short output example

This is a compact preview of the result format. A full output example and complete field reference are included below.

```json
{
  "username": "example.creator",
  "profileUrl": "https://www.instagram.com/example.creator/",
  "displayName": "Example Creator",
  "emails": ["hello@examplecreator.com"],
  "followersCount": 24500,
  "followingCount": 312,
  "category": "Digital creator",
  "status": "EMAIL_FOUND"
}
```

### Try it in 3 steps

1. Paste one or more Instagram profile URLs.
2. Click **Start**.
3. Open the **Dataset** to inspect or export the results.

Start with one profile to confirm the output format, or use the free validation limit to test batch processing with up to 3 profile URLs. When you are ready, scale to larger batches, Apify Tasks, schedules, API calls, or integrations.

### Table of contents

- [What does this Instagram email scraper do?](#what-does-this-instagram-email-scraper-do)
- [Input](#input)
- [Input examples](#input-examples)
- [Instagram Email Scraper API](#instagram-email-scraper-api)
- [Output](#output)
- [Complete output field reference](#complete-output-field-reference)
- [Status values](#status-values)
- [Where are email addresses found?](#where-are-email-addresses-found)
- [Common use cases](#common-use-cases)
- [Pricing](#pricing)
- [Public data and responsible use](#public-data-and-responsible-use)
- [Why choose this Actor](#why-choose-this-actor)
- [FAQ](#faq)
- [Limitations](#limitations)
- [Support](#support)

### What does this Instagram email scraper do?

This Actor works as an **Instagram profile email scraper** and **Instagram email extractor** for profile-level contact discovery. It accepts Instagram profile URLs, normalizes shared links with query strings, retrieves public profile data, detects email addresses in the returned public data, and stores one result item per profile in an Apify dataset.

It is built for workflows where you already have Instagram profile URLs and need structured contact and profile metadata. It does **not** discover profiles by keyword, scrape follower lists, search hashtags, extract emails from posts or Reels, crawl linked websites, access private profile content, or solve CAPTCHA / reCAPTCHA challenges.

### Input

The only required input is `profileUrls`.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `profileUrls` | array of strings | Yes | One or more Instagram profile URLs. Query strings are accepted and normalized automatically. |

Run limits are enforced by the Actor:

- Free API validation runs can process up to **3 profile URLs per run** so you can confirm batch processing before scaling.
- Paying Apify users can process up to **100 profile URLs per run**.

### Input examples

#### Single Instagram profile

```json
{
  "profileUrls": [
    "https://www.instagram.com/example.creator/"
  ]
}
```

#### Bulk Instagram email scraper input

```json
{
  "profileUrls": [
    "https://www.instagram.com/example.creator/",
    "https://www.instagram.com/example.brand/",
    "https://www.instagram.com/example.agency/?igsh=EXAMPLE"
  ]
}
```

### Instagram Email Scraper API

You can run this **Instagram Email Scraper API** from the Apify Console, Apify API, JavaScript client, Python client, Tasks, schedules, webhooks, and integrations.

Use the same Actor slug consistently in API calls:

```text
lance_api/instagram-profile-email-scraper-api
```

#### JavaScript client

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

const client = new ApifyClient({
  token: process.env.APIFY_TOKEN,
});

const run = await client.actor('lance_api/instagram-profile-email-scraper-api').call({
  profileUrls: [
    'https://www.instagram.com/example.creator/',
  ],
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python client

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ["APIFY_TOKEN"])

run = client.actor("lance_api/instagram-profile-email-scraper-api").call(
    run_input={
        "profileUrls": [
            "https://www.instagram.com/example.creator/"
        ]
    }
)

items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

#### cURL

```bash
curl "https://api.apify.com/v2/acts/lance_api~instagram-profile-email-scraper-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "profileUrls": [
      "https://www.instagram.com/example.creator/"
    ]
  }'
```

#### Dataset retrieval

Every run stores results in the default Apify dataset. You can retrieve dataset items through the API, SDK clients, or the Storage tab in Apify Console.

```text
https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_APIFY_TOKEN
```

### Output

The Actor returns one dataset item for each processed Instagram profile URL. Each item includes the original input, normalized profile identity, detected email addresses, public profile metadata, links, media fields, and a per-profile processing status.

If no email is detected, the result can still include available public metadata with `status: "NO_EMAIL_FOUND"`.

#### Full output example

```json
{
  "actorVersion": "0.1.26",
  "inputUrl": "https://www.instagram.com/example.creator/",
  "profileUrl": "https://www.instagram.com/example.creator/",
  "username": "example.creator",
  "userId": "1234567890",
  "displayName": "Example Creator",
  "category": "Digital creator",
  "emails": ["hello@examplecreator.com"],
  "externalUrls": ["https://examplecreator.com"],
  "bioLinks": [
    {
      "title": "Official website",
      "url": "https://examplecreator.com",
      "linkType": "external"
    }
  ],
  "threadsUrl": null,
  "profilePictureUrl": "https://example.com/profile.jpg",
  "profilePictureUrlHd": "https://example.com/profile-hd.jpg",
  "followersCount": 24500,
  "followingCount": 312,
  "isVerified": false,
  "isPrivate": false,
  "isBusinessAccount": false,
  "isProfessionalAccount": true,
  "businessPhoneNumber": null,
  "businessContactMethod": null,
  "highlightReelCount": 4,
  "status": "EMAIL_FOUND",
  "scrapedAt": "2026-07-29T08:00:00.000Z",
  "error": null
}
```

### Complete output field reference

#### Input and identity

| Field | Type | Description |
| --- | --- | --- |
| `actorVersion` | string | Actor code version used for the run. |
| `inputUrl` | string | Original submitted Instagram profile URL. |
| `profileUrl` | string | Normalized Instagram profile URL. |
| `username` | string | Normalized Instagram username. |
| `userId` | string or null | Instagram user ID when returned by the public profile data. |

#### Profile information

| Field | Type | Description |
| --- | --- | --- |
| `displayName` | string or null | Profile display name or full name when available. |
| `category` | string or null | Instagram profile category, such as `Digital creator`, when available. |
| `isVerified` | boolean or null | Whether the profile is marked as verified when returned. |
| `isPrivate` | boolean or null | Whether the profile is marked as private when returned. |
| `isBusinessAccount` | boolean or null | Whether the profile is marked as a business account when returned. |
| `isProfessionalAccount` | boolean or null | Whether the profile is marked as a professional or creator account when returned. |
| `highlightReelCount` | integer or null | Highlight reel count when returned. |

#### Contact information

| Field | Type | Description |
| --- | --- | --- |
| `emails` | array of strings | Deduplicated email addresses detected in public profile data. |
| `businessPhoneNumber` | string or null | Public business phone number when returned by the profile data. |
| `businessContactMethod` | string or null | Public business contact method when returned by the profile data. |

#### Audience information

| Field | Type | Description |
| --- | --- | --- |
| `followersCount` | integer or null | Follower count when returned. |
| `followingCount` | integer or null | Following count when returned. |

#### Profile links

| Field | Type | Description |
| --- | --- | --- |
| `externalUrls` | array of strings | Public external URLs returned with the profile data. |
| `bioLinks` | array of objects | Structured public profile links with `title`, `url`, and `linkType` when available. |
| `threadsUrl` | string or null | Threads-related URL when returned. |

#### Media

| Field | Type | Description |
| --- | --- | --- |
| `profilePictureUrl` | string or null | Profile picture URL when returned. |
| `profilePictureUrlHd` | string or null | HD profile picture URL when returned. |

#### Processing status

| Field | Type | Description |
| --- | --- | --- |
| `status` | string | Per-profile processing status. |
| `scrapedAt` | string | Extraction timestamp in ISO 8601 format. |
| `error` | string or null | Error message when the profile could not be processed. |

### Status values

| Status | Meaning | Base Result charge? | Additional `email-found` charge? |
| --- | --- | --- | --- |
| `EMAIL_FOUND` | At least one email address was detected for the profile. | Yes | Yes |
| `NO_EMAIL_FOUND` | The profile was processed, but no email address was detected. | Yes | No |
| `PROFILE_NOT_FOUND` | The submitted profile could not be found. | Yes | No |
| `BLOCKED_OR_RATE_LIMITED` | The profile could not be processed because the request was blocked or rate-limited. | Yes | No |
| `FETCH_FAILED` | The profile request failed or returned an unexpected response. | Yes | No |
| `INVALID_INPUT` | The input is empty, invalid, or above the allowed URL limit. | Yes | No |

### Where are email addresses found?

This **Instagram Profile Email Scraper API** detects email addresses in public profile data returned for the submitted profile URL. Depending on what Instagram profile data is publicly available, emails may be found in:

- Instagram biography text
- Public business email fields when returned
- Public profile link metadata, including structured bio link titles and URLs
- Public external URL strings returned with the profile data
- Other public text fields returned in the profile payload

The Actor does **not** crawl linked websites, follow Linktree-style pages, scan posts or Reels, scrape follower lists, or search the broader internet for emails.

### Common use cases

| Use case | How this Actor helps |
| --- | --- |
| Creator outreach | Build contact-ready lists from Instagram profile URLs. |
| Influencer discovery and outreach | Enrich known creator profiles with detected emails and audience fields. |
| Partnership research | Review creator identity, category, links, and audience size before outreach. |
| Agency prospecting | Process batches of profile URLs for campaign or sponsorship research. |
| CRM enrichment | Add Instagram profile metadata and detected emails to existing records. |
| Sales lead enrichment | Turn known Instagram profile URLs into structured lead data. |
| Automated data workflows | Connect the Actor to Apify API, SDKs, Tasks, schedules, webhooks, and integrations. |
| Internal tools | Add Instagram profile email lookup to dashboards or backend applications. |

### Pricing

This Actor uses **transparent two-part pricing**: a low base Result fee for every processed dataset result, plus an email discovery fee only when an email is found.

#### Pricing at a glance

| Charge | When it applies | Price |
| --- | --- | ---: |
| Result | Every returned dataset item, regardless of status | **$1.00 / 1,000 results** |
| `email-found` | Additional charge when the profile contains at least one detected public email | **$6.00 - $3.00 / 1,000 email-found results** |

#### What this means

| Result type | Base Result cost | Email-found add-on | Typical total |
| --- | ---: | ---: | ---: |
| Returned result without email | $0.001 | $0 | $0.001 |
| Returned result with email, standard tier | $0.001 | $0.006 | $0.007 |
| Returned result with email, best discount tier | $0.001 | $0.003 | $0.004 |

Email-found add-on discounts are available through Apify Store pricing tiers: **$6.00 / 1,000** with no discount, **$4.00 / 1,000** for Bronze, **$3.50 / 1,000** for Silver, and **$3.00 / 1,000** for Gold.

Each submitted URL is processed and returned with a clear status, so users can see what happened for every item in the batch. The base Result fee covers processing and returned metadata/status; the `email-found` add-on is charged only when a detected public email is returned.

Free API validation runs can process up to **3 profile URLs per run**. Paying Apify users can process up to **100 profile URLs per run**.

See the Actor's **Pricing** tab on Apify for the current rate available to your Apify plan.

### Public data and responsible use

This Actor is designed to process **publicly available Instagram profile information**. Data availability depends on the profile, Instagram responses, region, runtime conditions, and what the profile owner has made public.

The Actor does not return private profile content, bypass login walls, break platform protections, or solve CAPTCHA / reCAPTCHA challenges. It should be used only for workflows that comply with Instagram's terms, Apify's terms, and applicable laws and regulations. This README is not legal advice.

### Why choose this Actor

- It focuses on one clear job: **extract email from Instagram profile** URLs you already have.
- It supports both single-profile lookup and bulk Instagram email scraper workflows.
- It requires only profile URLs from users, with no Instagram cookies, sessions, proxies, or external credentials.
- It returns clean Apify dataset output for API, spreadsheet, CRM, and automation use.
- It includes useful public profile enrichment fields alongside detected emails.
- It reports a clear status for every submitted profile.
- It aligns pricing with returned value: every processed dataset result has a low base cost, and email-found profiles add a separate email discovery charge.

### FAQ

#### What input do I need?

Only Instagram profile URLs. Add one or more URLs to `profileUrls`.

#### Can I process multiple profiles at once?

Yes. Free API validation runs can process up to **3 profile URLs per run** so you can test batch processing. Paying Apify users can process up to **100 profile URLs per run**.

#### Where does the Actor find email addresses?

It detects emails in public profile data returned for the submitted Instagram profile, including biography text, public business email fields when returned, profile link metadata, and public URL strings. It does not crawl linked websites or scan posts and Reels.

#### Are the extracted emails verified?

No deliverability verification is performed. The Actor detects email-shaped strings in public profile data and applies syntax and domain-shape checks. It does **not** perform MX lookup, SMTP verification, inbox validation, or third-party deliverability verification.

#### Does the Actor work with private Instagram profiles?

It does not access private profile content. If a profile is private, unavailable, blocked, or incomplete in the returned data, the result may contain limited metadata or a non-email status.

#### Do I need Instagram cookies or login credentials?

No. Users do not need to provide Instagram cookies, sessions, browser configuration, proxies, or external data-source credentials.

#### What happens when no email is found?

The Actor returns the profile with `status: "NO_EMAIL_FOUND"` when profile data is available but no email is detected. These profiles are charged only the base Result fee and are **not** charged the additional `email-found` fee.

#### How is a paid result counted?

Every returned dataset item is counted as one base Result. If at least one email is detected, that same profile also counts as one additional `email-found` event. Multiple detected emails on the same profile are deduplicated and still count as one profile-level email-found event.

#### Can I use this Actor through an API?

Yes. You can run this **Instagram profile email API** through the Apify API, JavaScript client, Python client, Tasks, schedules, webhooks, and integrations.

#### Can I export the results?

Yes. Apify datasets can be exported as JSON, CSV, Excel, XML, RSS, or HTML.

#### Can I automate it with Apify Tasks or schedules?

Yes. Save a configured input as an Apify Task, run it manually, schedule recurring runs, or trigger it from your own application.

### Limitations

- The Actor requires Instagram profile URLs; it does not accept username-only input.
- It does not discover Instagram profiles from keywords, hashtags, followers, posts, or Reels.
- It does not crawl websites linked from profiles.
- It does not access private profile content.
- It does not solve CAPTCHA / reCAPTCHA challenges.
- It does not verify email deliverability with MX, SMTP, or inbox checks.
- Some profiles may not expose email addresses or complete metadata.
- Follower and following counts can change over time.
- Instagram data availability can vary by profile, region, and runtime conditions.

### Support

Questions, feedback, or feature requests?

Use the Actor's **Issues** or **Support** tab on Apify, or contact support at **lanceapi2026@hotmail.com**.

# Actor input Schema

## `profileUrls` (type: `array`):

Submit one or more Instagram creator profile URLs. Free API validation runs can process up to 3 URLs per run. Paying Apify users can process up to 100 URLs per run.

## Actor input object example

```json
{
  "profileUrls": [
    "https://www.instagram.com/hex.gar"
  ]
}
```

# Actor output Schema

## `profileResults` (type: `string`):

Open the default dataset to view or export one structured result per processed Instagram profile URL.

# 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 = {
    "profileUrls": [
        "https://www.instagram.com/hex.gar"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lance_api/instagram-profile-email-scraper-api").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 = { "profileUrls": ["https://www.instagram.com/hex.gar"] }

# Run the Actor and wait for it to finish
run = client.actor("lance_api/instagram-profile-email-scraper-api").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 '{
  "profileUrls": [
    "https://www.instagram.com/hex.gar"
  ]
}' |
apify call lance_api/instagram-profile-email-scraper-api --silent --output-dataset

```

## MCP server setup

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

```

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/POchHcX3os4uS1xYy/builds/ijhczgiAJLUV1Qhb9/openapi.json
