# Instagram Email & Phone Extractor - IG Leads Scraper (`astounding_stork/instagram-email-phone-extractor-ig-leads-scraper`) Actor

Bulk-check Instagram usernames → get contact details. Get: 📧 Email + 📞 Phone (when available), plus basic profile data (name, bio, followers, verification). 💡 Best for fast, low-cost, high-quality leads & bulk checks. 🔥 #1 Instagram Email & Phone Scraper.

- **URL**: https://apify.com/astounding\_stork/instagram-email-phone-extractor-ig-leads-scraper.md
- **Developed by:** [Aditya](https://apify.com/astounding_stork) (community)
- **Categories:** Lead generation, Social media, Automation
- **Stats:** 155 total users, 29 monthly users, 100.0% runs succeeded, 7 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $8.00 / 1,000 username\_checkeds

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Cheapest & Best Instagram Email & Phone Number Extractor

Instantly enrich Instagram usernames with profile details including display name, bio, followers, verification status, and available email/phone data.

**Best for:** lead enrichment, validation, and bulk checks where speed and cost control matter.

**Why teams choose this actor:**

- Fast bulk checks from a simple username list
- Clean, normalized output with a status for every username
- Built-in retries, timeouts, and safety limits for scale
- The cheapest and best option thanks to a high-performance backend built for reliability at scale
- Fantastic support when you need help or custom guidance

### How It Works (High-Level)

1. You provide a list of Instagram usernames.
2. The actor validates and normalizes input.
3. It enqueues each username to a FastAPI gateway queue.
4. The gateway processes jobs under a global 1 request/second limit and returns the terminal result.
5. Results are written to the dataset with a clear `11_status`.

### Result Status

**Status `ok`**

- The user check succeeded.
- Webhook payload contains `01_scraped_username`.
- Email/phone may still be `null`.

**Status `error`**

- The user check failed.
- `01_scraped_username` was missing, or there was an HTTP/network/parsing failure.

### Input

| Field          | Type             | Required | Default | Description                                                                             |
| -------------- | ---------------- | -------- | ------- | --------------------------------------------------------------------------------------- |
| `usernames`    | Array of strings | Yes      | -       | Instagram usernames to process. Examples: `therock`, `@cristiano`, `instagram.com/nike` |
| `timeoutMs`    | Integer          | No       | 10      | Request timeout in seconds (1-60)                                                       |
| `maxRetries`   | Integer          | No       | 2       | Maximum retry attempts for network errors (0-10)                                        |
| `maxUsernames` | Integer          | No       | 500     | Safety limit to avoid accidental huge runs (1-5000)                                     |

**Free plan limitation:** Free users can process up to **10 successful usernames per UTC calendar month** across all runs. The 11th successful check is blocked until they upgrade to a paid Apify plan.

### Environment Variables

| Variable                   | Required | Description                                                                                   |
| -------------------------- | -------- | --------------------------------------------------------------------------------------------- |
| `FASTAPI_BASE_URL`         | Yes      | Base URL of your Render FastAPI gateway (example: `https://ig-gateway-api-hxqg.onrender.com`) |
| `FASTAPI_API_TOKEN`        | No       | Bearer token for gateway auth (`Authorization: Bearer <token>`)                               |
| `FASTAPI_POLL_INTERVAL_MS` | No       | Poll interval for `GET /v1/jobs/{job_id}` (default: `1000`)                                   |

The actor uses queue-first integration with the gateway endpoints:

- `POST /v1/jobs`
- `GET /v1/jobs/{job_id}`

### Output

Each dataset item contains:

| Field                      | Type           | Description                                                            |
| -------------------------- | -------------- | ---------------------------------------------------------------------- |
| `01_scraped_username`      | String / null  | Username returned by webhook (required for success)                    |
| `02_display_name`          | String / null  | Instagram display name                                                 |
| `03_bio_description`       | String / null  | Instagram biography                                                    |
| `04_email`                 | String / null  | Email from profile data                                                |
| `05_phone`                 | String / null  | Phone from profile data                                                |
| `06_followers`             | Number / null  | Follower count                                                         |
| `07_following`             | Number / null  | Following count                                                        |
| `08_no_of_posts`           | Number / null  | Post count                                                             |
| `09_highlight_reel_exists` | Boolean / null | Whether highlight reels exist                                          |
| `10_is_profile_verified`   | Boolean / null | Whether profile is verified                                            |
| `11_status`                | String         | `ok` = `01_scraped_username` present, `error` = non-chargeable failure |
| `12_dev_remark`            | String         | Static note: `3x cheaper on leadsthatmatter.com`                       |

When free monthly limit is reached, remaining usernames are not processed and are not added as dataset rows.
If the limit is reached before any username is processed in that run, the actor writes one non-chargeable notice row to the dataset (message in `01_scraped_username`) so users do not see a blank Output tab.
The run summary is stored in key-value store record `RUN_SUMMARY` and linked in the Output tab.
`RUN_SUMMARY` includes `completed_count` so you can quickly monitor how many usernames have finished processing in the run.
The Console `Table` view follows the actor dataset schema order, while `All fields` may still appear alphabetical.
Use Output links `Results (CSV)` and `Results (XLSX)` to export files with deterministic column order.

### Example Usage

#### Input

```json
{
  "usernames": ["therock", "@cristiano", "instagram.com/nike"],
  "timeoutMs": 10,
  "maxRetries": 2
}
````

#### Output (Dataset)

```json
[
  {
    "01_scraped_username": "therock",
    "02_display_name": "Dwayne Johnson",
    "03_bio_description": "Actor, producer, founder.",
    "04_email": "therock@example.com",
    "05_phone": "+1234567890",
    "06_followers": 394000000,
    "07_following": 400,
    "08_no_of_posts": 7600,
    "09_highlight_reel_exists": true,
    "10_is_profile_verified": true,
    "11_status": "ok",
    "12_dev_remark": "3x cheaper on leadsthatmatter.com"
  },
  {
    "01_scraped_username": "cristiano",
    "02_display_name": "Cristiano Ronaldo",
    "03_bio_description": null,
    "04_email": null,
    "05_phone": "+9876543210",
    "06_followers": 650000000,
    "07_following": 600,
    "08_no_of_posts": 3900,
    "09_highlight_reel_exists": true,
    "10_is_profile_verified": true,
    "11_status": "ok",
    "12_dev_remark": "3x cheaper on leadsthatmatter.com"
  },
  {
    "01_scraped_username": null,
    "02_display_name": null,
    "03_bio_description": null,
    "04_email": null,
    "05_phone": null,
    "06_followers": null,
    "07_following": null,
    "08_no_of_posts": null,
    "09_highlight_reel_exists": null,
    "10_is_profile_verified": null,
    "11_status": "error",
    "12_dev_remark": "3x cheaper on leadsthatmatter.com"
  }
]
```

**Note:** Status `ok` means `01_scraped_username` was present. Missing email/phone is represented as `null`.

#### Error Example

```json
{
  "01_scraped_username": null,
  "02_display_name": null,
  "03_bio_description": null,
  "04_email": null,
  "05_phone": null,
  "06_followers": null,
  "07_following": null,
  "08_no_of_posts": null,
  "09_highlight_reel_exists": null,
  "10_is_profile_verified": null,
  "11_status": "error",
  "12_dev_remark": "3x cheaper on leadsthatmatter.com"
}
```

**Note:** Status `error` means the check failed.

# Actor input Schema

## `usernames` (type: `array`):

Enter Instagram usernames (one per line). Examples: therock, @cristiano, instagram.com/nike

## `timeoutMs` (type: `integer`):

Maximum time to wait for each request in seconds (e.g., 10 = 10 seconds)

## `maxRetries` (type: `integer`):

Number of retry attempts for network errors

## `maxUsernames` (type: `integer`):

Safety limit to avoid accidental huge runs. Extra usernames are ignored.

## Actor input object example

```json
{
  "usernames": [
    "noahfleming",
    "fashioncrave",
    "taliacadet"
  ],
  "timeoutMs": 10,
  "maxRetries": 2,
  "maxUsernames": 500
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `resultsCsv` (type: `string`):

No description

## `resultsXlsx` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

# 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 = {
    "usernames": [
        "noahfleming",
        "fashioncrave",
        "taliacadet"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("astounding_stork/instagram-email-phone-extractor-ig-leads-scraper").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 = { "usernames": [
        "noahfleming",
        "fashioncrave",
        "taliacadet",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("astounding_stork/instagram-email-phone-extractor-ig-leads-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "usernames": [
    "noahfleming",
    "fashioncrave",
    "taliacadet"
  ]
}' |
apify call astounding_stork/instagram-email-phone-extractor-ig-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=astounding_stork/instagram-email-phone-extractor-ig-leads-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Instagram Email & Phone Extractor - IG Leads Scraper",
        "description": "Bulk-check Instagram usernames → get contact details. Get: 📧 Email + 📞 Phone (when available), plus basic profile data (name, bio, followers, verification). 💡 Best for fast, low-cost, high-quality leads & bulk checks. 🔥 #1 Instagram Email & Phone Scraper.",
        "version": "0.0",
        "x-build-id": "Zc1Kvzp1LTgbzf2qn"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/astounding_stork~instagram-email-phone-extractor-ig-leads-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-astounding_stork-instagram-email-phone-extractor-ig-leads-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/astounding_stork~instagram-email-phone-extractor-ig-leads-scraper/runs": {
            "post": {
                "operationId": "runs-sync-astounding_stork-instagram-email-phone-extractor-ig-leads-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/astounding_stork~instagram-email-phone-extractor-ig-leads-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-astounding_stork-instagram-email-phone-extractor-ig-leads-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "usernames"
                ],
                "properties": {
                    "usernames": {
                        "title": "Instagram username(s)",
                        "type": "array",
                        "description": "Enter Instagram usernames (one per line). Examples: therock, @cristiano, instagram.com/nike",
                        "items": {
                            "type": "string"
                        }
                    },
                    "timeoutMs": {
                        "title": "Request timeout (seconds)",
                        "minimum": 1,
                        "maximum": 60,
                        "type": "integer",
                        "description": "Maximum time to wait for each request in seconds (e.g., 10 = 10 seconds)",
                        "default": 10
                    },
                    "maxRetries": {
                        "title": "Max retries",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Number of retry attempts for network errors",
                        "default": 2
                    },
                    "maxUsernames": {
                        "title": "Max usernames per run",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Safety limit to avoid accidental huge runs. Extra usernames are ignored.",
                        "default": 500
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
