# Instagram Email Scraper & Phone Number Finder (No Login) (`daperk/instagram-contact-finder`) Actor

Instagram email scraper and phone number finder. Extract emails, phone numbers and WhatsApp from Instagram bios, Linktree, Beacons, Stan and linked websites. Bulk usernames, no login, no cookies. Build Instagram leads for outreach. Pay per result.

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

## Pricing

from $6.00 / 1,000 contact founds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Instagram Email Scraper & Phone Number Finder (No Login)

**Instagram Email Scraper** that finds the public **email address, phone number and WhatsApp number** behind any list of Instagram accounts. Paste usernames or profile links, get a clean lead list for your CRM, cold email tool or dialer.

Most Instagram contact info is not in the bio. It sits one click away, on the account's **Linktree** page or on its **website**. This Instagram contact scraper follows those links for you:

1. **Instagram bio.** Emails and phone numbers written in the bio, including tricks like `hello [at] brand [dot] com`.
2. **Link in bio.** A built-in **Linktree email scraper** that also reads Beacons, Stan, Bio.site, Lnk.bio, Taplink, Hoo.be, Komi and 25+ more link-in-bio pages, including their `mailto:`, `tel:` and WhatsApp buttons.
3. **Website.** The site linked from the profile, its home page and up to two contact or about pages.

Every email and phone comes with its **source** (bio, link in bio, website), so you know how reliable it is.

No Instagram login. No cookies. No browser. Your Instagram account is never at risk.

### What can this Instagram email scraper do?

- **Extract emails from Instagram** profiles in bulk, from bio, Linktree and website
- **Instagram phone number scraper**: phone numbers in international format (E.164), ready for dialers
- **Instagram WhatsApp extractor**: wa.me and api.whatsapp.com links turned into numbers
- **Linktree scraper**: emails, phones and links from Linktree and 30+ link-in-bio tools
- **Website contact finder**: emails on the account's own site and contact page
- Business details: category, city, followers, verified and business account flags
- **Best email first**: `primaryEmail` picks the owner's own email, then shared inboxes like `info@`, before staff names
- **Pay per result**, and profiles that do not exist are free

### Who uses this Instagram lead scraper?

- **Agencies and freelancers** building **Instagram leads** of local businesses: med spas, salons, barbers, restaurants, gyms, dentists, real estate agents, contractors.
- **Brands and influencer marketing teams** looking for an **Instagram influencer email finder** for collabs and UGC.
- **Sales teams** enriching a list of Instagram handles they already have with emails and phone numbers.
- **Recruiters and PR teams** reaching creators and small businesses.
- **AI agents** that need an Instagram contact lookup tool (works through the Apify MCP server).

### How to find someone's email on Instagram (step by step)

1. Add Instagram usernames, `@handles` or profile URLs in **Instagram accounts**. One per line, thousands at once.
2. Keep the defaults. Residential proxy is already selected.
3. Click **Start**.
4. Download the emails and phone numbers as **Excel, CSV or JSON**, or send them to Google Sheets, HubSpot, Zapier, Make or n8n.

Tip: turn on **Only save profiles with a contact** to get a clean list with no empty rows.

### How to scrape Instagram emails in bulk

Paste as many usernames as you want. The scraper checks up to 20 profiles in parallel, follows each Linktree and website, and returns one row per account. Set a **maximum cost per run** and it stops cleanly when it reaches it, so a big list never surprises you.

Need the usernames first? Use any Instagram followers, hashtag or search scraper to collect handles, then paste them here to turn them into emails and phone numbers.

### What data do you get?

| Field | Example value |
|---|---|
| username | lebernardinny |
| fullName | Le Bernardin |
| primaryEmail | office@le-bernardin.com |
| primaryPhone | +12122628899 |
| emails | `[{ "email": "office@le-bernardin.com", "source": "link-in-bio" }, ...]` |
| phones | `[{ "phone": "+12122628899", "source": "bio" }]` |
| whatsapp | `[{ "number": "+13055550199", "link": "https://wa.me/13055550199", "source": "link-in-bio" }]` |
| website | https://www.le-bernardin.com/ |
| linkInBioService | Linktree |
| followers, category, city, isBusinessAccount, isVerified | profile details |
| status | `ok`, `not_found` or `blocked` |

### How much does it cost to scrape Instagram emails?

Pay per result. No monthly fee.

| Event | Price |
|---|---|
| Profile checked (public profile found and scanned) | $3 per 1,000 |
| Contact found (profile with at least one email, phone or WhatsApp) | $6 per 1,000 extra |

Example: 1,000 Instagram profiles where 400 have a contact cost $3 + $2.40 = **$5.40**.

Profiles that do not exist, and requests Instagram blocks, are **never charged**.

### Input options

| Option | Default | What it does |
|---|---|---|
| Instagram accounts | 3 sample accounts | Usernames, @handles or profile URLs |
| Read the link-in-bio page | on | Opens Linktree and similar pages |
| Read the account's website | on | Opens the website and up to 2 contact pages |
| Only save profiles with a contact | off | Hides rows with no contact |
| Default country for phone numbers | US | Reads local numbers like `(305) 262-9911` |
| Profiles in parallel | 5 | Speed, up to 20 |
| Proxy | Apify residential | Needed because Instagram blocks cloud servers |

### FAQ

**Can I get the email behind Instagram's "Email" contact button?**
Instagram only shows that button to logged-in users, and this scraper never logs in, so your account is never at risk. Most businesses put the same email in their bio, Linktree or website, which is exactly where this Instagram email finder looks.

**Does it work for Instagram business accounts and creators?**
Yes. Business accounts, creator accounts and personal accounts all work. Business and creator accounts are the most likely to list an email or phone.

**Does it work on private Instagram accounts?**
The bio and bio link of private accounts are public, so they are scanned too.

**Can I scrape Instagram phone numbers outside the US?**
Yes. Numbers with a country code are read anywhere. For local numbers, set **Default country for phone numbers** (MX, GB, ES, BR, IN and more).

**Is it legal to scrape emails from Instagram?**
This tool only reads information that people and businesses chose to publish. You are responsible for how you use it: follow the CAN-SPAM Act, GDPR and similar rules, and honor opt-outs.

**Something is missing or wrong?**
Open an issue on the Actor page with the username. Fixes usually ship within a day.

**Related searches:** instagram email extractor, instagram contact scraper, instagram phone number extractor, scrape emails from instagram, instagram email finder, instagram business email scraper, linktree email scraper, instagram whatsapp scraper, instagram lead generation, influencer email finder, instagram bio email scraper, instagram email finder tool, instagram email id finder, find instagram email address, instagram email address finder, instagram contact finder, linktree email, linktree whatsapp.

# Actor input Schema

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

Usernames, @handles or profile links. One per line. Example: nike, @lebernardinny or https://www.instagram.com/garyvee/

## `followLinkInBio` (type: `boolean`):

Open Linktree, Beacons, Stan, Bio.site and 30+ similar pages and collect the emails, phones and WhatsApp links on them.

## `visitWebsite` (type: `boolean`):

Open the website linked from the profile plus up to two contact or about pages, and collect contacts there. Adds a few seconds per profile.

## `onlyWithContact` (type: `boolean`):

Skip rows where no email, phone or WhatsApp was found. Every public profile checked is still billed as one profile check.

## `defaultCountry` (type: `string`):

Two-letter country code used to read phone numbers written without a country code, for example US, MX, GB, ES, BR.

## `maxConcurrency` (type: `integer`):

How many profiles to check at the same time. Higher is faster.

## `proxyConfiguration` (type: `object`):

Instagram blocks most cloud servers. Keep Apify residential proxy on for reliable results.

## Actor input object example

```json
{
  "usernames": [
    "lebernardinny",
    "hairbykristal",
    "thesalonproject"
  ],
  "followLinkInBio": true,
  "visitWebsite": true,
  "onlyWithContact": false,
  "defaultCountry": "US",
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `contacts` (type: `string`):

No description

## `allContacts` (type: `string`):

No description

## `summary` (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": [
        "lebernardinny",
        "hairbykristal",
        "thesalonproject"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("daperk/instagram-contact-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 = {
    "usernames": [
        "lebernardinny",
        "hairbykristal",
        "thesalonproject",
    ],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("daperk/instagram-contact-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 '{
  "usernames": [
    "lebernardinny",
    "hairbykristal",
    "thesalonproject"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call daperk/instagram-contact-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,daperk/instagram-contact-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/4QB4Qp39iNBfdMp3P/builds/jI2SttkbcohjGzYid/openapi.json
