# Instagram Email & Phone Scraper - Bio, Website & WhatsApp (`parseforge/instagram-contact-scraper`) Actor

Emails, phones and WhatsApp of Instagram business and creator profiles from the bio and linked sites, with category and address. Export CSV, Excel, JSON.

- **URL**: https://apify.com/parseforge/instagram-contact-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Social media, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.20 / 1,000 instagram profile with contacts

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?

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

[![ParseForge Banner](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)](https://apify.com/parseforge?fpr=vmoqkp)

### 📇 Instagram Email & Phone Scraper: Emails, Phones and WhatsApp from the Bio and the Linked Website

> 🚀 **Turn a list of Instagram handles into a contact sheet.** In our last test run, 25 real business and creator profiles came back in 45 seconds: 11 with an email, 11 with a phone number and 4 with a WhatsApp number, plus category, address and follower counts. No login, no cookies, no Instagram account.

Give the Actor Instagram usernames or profile links (or a keyword such as `nail salon miami`), and it returns one row per profile with every public email, phone and WhatsApp number it can find. It reads the bio, follows the link in the bio (Linktree, Beacons, Stan and the business website, including its contact page), and adds the business block Instagram shows to everyone: category, street address, city, ZIP and map coordinates, plus the profile's name, followers, posts and verified badge.

Each row has 41 fields. Phones come out in international E.164 format (`+17862756666`), ready for a dialer or a CRM, and every email and phone says where it was found, so you can trust or re-check it.

| 🎯 Who uses it | 💡 What they use it for |
|---|---|
| Agencies and freelancers | Building outreach lists of local businesses (salons, bakeries, clinics, gyms) |
| Influencer and brand teams | Getting the booking email of creators on a shortlist |
| Sales and SDR teams | Enriching a list of Instagram handles with phone and email before a sequence |
| Local marketing and web shops | Finding businesses that only have a Linktree, or no website at all |
| Recruiters and PR | Reaching creators and small brands through the address they publish |
| Researchers | Mapping business categories and locations in a niche |

### 📋 What the Instagram Email & Phone Scraper does

- 📧 **Emails from the bio and the linked site.** The bio first, then the link-in-bio page, the website and its contact or about page (up to 4 pages per profile, adjustable). Obfuscated forms like `info(at)shop.co.uk` are read too.
- 📞 **Phones in E.164.** Numbers written in the bio (`786.275.6666`, `(305) 674-1234`, `+54 9 11 5555-1234`) and `tel:` links or labelled numbers on the website, validated per country so dates and order numbers are not taken for phones.
- 💬 **WhatsApp numbers** from `wa.me` and `api.whatsapp.com` links and from "WhatsApp: +503 ..." labels.
- 🏢 **The business block:** business or creator account, category (Beauty Salon, Bakery, Sportswear Store), the contact button the business picked, street address, city, ZIP, latitude and longitude.
- 👤 **The profile:** name, bio, bio links, followers, following, posts, verified and private flags, profile picture.
- 🌐 **Other social profiles** found on the way: Facebook, TikTok, YouTube, X, LinkedIn, Pinterest, Threads, Telegram.
- 🔎 **Keyword discovery (optional):** type `bakery austin` or `wedding photographer "whatsapp"` and the Actor finds matching Instagram profiles through Google, then reads each one.
- 🧹 **Only leads with contact data (optional):** leave out profiles with no email, phone or WhatsApp. Left-out profiles are not billed.

> 💡 **Why it matters:** small businesses on Instagram often have no listing anywhere else. The bio and the link in it are where they publish how to reach them, and this Actor collects exactly that, with the source of every value.

### 🎬 Full Demo

🚧 Coming soon.

### 📊 Output

One row per profile. The main fields:

| Field | Example | Notes |
|---|---|---|
| 🖼 `imageUrl` | `https://scontent-...cdninstagram.com/...jpg` | Profile picture |
| 👤 `username` | `skynailsofsouthbeach` | |
| 🪪 `fullName` | `Sky Nails & Spa of South Beach` | |
| 📧 `email` | `info@skynailsofsouthbeach.com` | Best email; all of them in `emails` |
| 📞 `phone` | `+17862756666` | E.164; all of them in `phones` |
| 💬 `whatsapp` | `+50373794162` | From WhatsApp links or labels |
| 🧭 `emailSource` / `phoneSource` | `Linked website` / `Instagram bio` | Where the first value was found |
| ✅ `hasContact` | `Yes` | Any email, phone or WhatsApp found |
| 🏷 `category` | `Beauty Salon` | Category shown on the profile |
| 🔘 `contactButton` | `Call` | The contact button the business picked |
| 📍 `streetAddress`, `city`, `zipCode` | `One Bowerman Dr`, `Beaverton, Oregon`, `97005` | Business address, when set |
| 🌐 `latitude`, `longitude` | `45.5076448`, `-122.8269159` | |
| 🌍 `website`, `bioLinks` | `http://skynailsofsouthbeach.com/` | |
| 🌐 `socialProfiles` | `{"facebook": "https://www.facebook.com/..."}` | |
| 👥 `followersCount`, `postsCount` | `1427`, `820` | |
| 📄 `pagesScanned` | `["https://skynailsofsouthbeach.com/", ".../about-us/"]` | Every page read for this profile |
| 🛰 `dataSource` | `Instagram app API` | Or `Instagram profile page` (see FAQ) |

Values that a profile does not publish come back as `Not Disclosed`, never empty.

Three real rows from the test run (picture URLs shortened):

```json
{
  "imageUrl": "https://scontent-arn2-1.cdninstagram.com/v/t51.2885-19/469189465_605506225160757_782312444401354467_n.jpg?...",
  "username": "skynailsofsouthbeach",
  "fullName": "Sky Nails & Spa of South Beach",
  "profileUrl": "https://www.instagram.com/skynailsofsouthbeach/",
  "userId": "8566619369",
  "email": "info@skynailsofsouthbeach.com",
  "phone": "+17862756666",
  "whatsapp": "Not Disclosed",
  "emails": ["info@skynailsofsouthbeach.com"],
  "phones": ["+17862756666"],
  "whatsappNumbers": [],
  "emailSource": "Linked website",
  "phoneSource": "Instagram bio",
  "hasContact": "Yes",
  "isBusinessAccount": "No",
  "isProfessionalAccount": "Yes",
  "category": "Beauty Salon",
  "categoryCode": "Not Disclosed",
  "contactButton": "Call",
  "streetAddress": "Not Disclosed",
  "city": "Not Disclosed",
  "zipCode": "Not Disclosed",
  "latitude": "Not Disclosed",
  "longitude": "Not Disclosed",
  "biography": "Let us take care of you !  💅\nCall us at 786.275.6666  \n⬇️Click here to book your appointment ⬇️",
  "website": "http://skynailsofsouthbeach.com/",
  "bioLinks": [{ "title": "", "url": "http://skynailsofsouthbeach.com" }],
  "socialProfiles": { "facebook": "https://www.facebook.com/skynailofsouthbeach/" },
  "followersCount": 1427,
  "followingCount": 2497,
  "postsCount": 820,
  "isVerified": "No",
  "isPrivate": "No",
  "websitesScanned": ["https://skynailsofsouthbeach.com"],
  "pagesScanned": ["https://skynailsofsouthbeach.com/", "https://skynailsofsouthbeach.com/about-us/"],
  "websiteScan": "Done",
  "dataSource": "Instagram app API",
  "discoveredBy": "Input",
  "input": "skynailsofsouthbeach",
  "scrapedAt": "2026-09-28T16:47:25.045Z",
  "error": null
}
```

```json
{
  "username": "bombompasteleriasv",
  "fullName": "Bom Bom Pastelería | Pasteles y postres",
  "email": "pedidosbombom@gmail.com",
  "phone": "+50373794162",
  "whatsapp": "+50373794162",
  "emails": ["pedidosbombom@gmail.com"],
  "phones": ["+50373794162", "+50325104600"],
  "whatsappNumbers": ["+50373794162"],
  "emailSource": "Linked website",
  "phoneSource": "Instagram bio",
  "category": "Bakery",
  "biography": "Bueno Bueno ¡DOBLEMENTE BUENO!\n📞Call Center 2510-4600\n📱 WhatsApp (+503) 7379-4162",
  "website": "https://linktr.ee/bombom.sv",
  "socialProfiles": { "facebook": "https://www.facebook.com/BomBomPasteleriaSV/", "tiktok": "https://www.tiktok.com/@bombompasteleriasv" },
  "followersCount": 55855,
  "postsCount": 5382,
  "pagesScanned": ["https://linktr.ee/bombom.sv", "https://bombompasteleria.com/"],
  "dataSource": "Instagram app API"
}
```

```json
{
  "username": "nike",
  "fullName": "Nike",
  "email": "Not Disclosed",
  "phone": "Not Disclosed",
  "hasContact": "No",
  "isBusinessAccount": "Yes",
  "category": "Sportswear Store",
  "categoryCode": "SPORTSWEAR_STORE",
  "contactButton": "Call",
  "streetAddress": "One Bowerman Dr",
  "city": "Beaverton, Oregon",
  "zipCode": "97005",
  "latitude": 45.5076448,
  "longitude": -122.8269159,
  "website": "http://empli.fi/nike",
  "followersCount": 291100479,
  "postsCount": 1666,
  "isVerified": "Yes",
  "dataSource": "Instagram app API"
}
```

(The second and third rows are trimmed to their contact and business fields; every row carries all 41.)

### ✨ Why choose this Actor

| | What you get |
|---|---|
| **No login, no cookies** | Nothing to connect, no Instagram account at risk. Everything comes from what Instagram and the business's own site show to any visitor. |
| **The link in the bio is followed** | Linktree, Beacons, Stan and similar pages are opened, and so is the website behind them and its contact page. That is where most business emails live. |
| **Every value has a source** | `emailSource`, `phoneSource` and `pagesScanned` tell you where each contact came from. |
| **Phones ready to dial** | E.164 format with the country code, validated per country. |
| **Business block included** | Category, contact button, street address, city, ZIP and coordinates when the business set them. |
| **Keyword discovery** | Find profiles by niche and city through Google, no hashtag login needed. |
| **Clean billing** | Profiles that could not be read are free, and with `onlyWithContact` so are profiles without contact data. |

### 📈 How it compares to alternatives

| | This Actor | Typical Instagram email scraper |
|---|---|---|
| Login or cookies | None | Some need your session cookie |
| Email from the bio | ✅ | ✅ |
| Email from the linked website and its contact page | ✅ (up to 10 pages per profile) | Often not |
| Link-in-bio pages (Linktree, Beacons, Stan) | ✅ | Sometimes |
| WhatsApp numbers | ✅ | Sometimes |
| Phone format | E.164 with country code | Raw text |
| Business address and coordinates | ✅ when set | Rarely |
| Source of each value | ✅ | No |
| Email and phone behind Instagram's contact button | ❌ Instagram shows them to logged-in users only | Only actors that log in, or that resell a logged-in data provider |
| Keyword discovery | ✅ through Google | Varies |

Be clear on the one ceiling: the email and phone behind the **Contact** button inside the Instagram app are served to logged-in users only. We measured it on 28/09/2026 on 11 business and creator accounts (Nike, Taco Bell, NASA, Shopify and others) from a home line, a datacenter and a residential address: the fields were empty every time for a logged-out visitor. This Actor does not log in, so it does not have them. It does have everything the business prints in its bio and on its own site, which for small businesses is usually the same address.

### 🚀 How to use

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the Instagram Email & Phone Scraper.
3. Paste Instagram usernames or profile links in **Instagram usernames or profile URLs**, or type keywords in **Find profiles by keyword**.
4. Keep **Follow the links in the bio** on to search the linked websites, and set **Country for local phone numbers** if your list is outside the US.
5. Click **Start**, then export the rows as CSV, Excel, JSON or XML from the **Dataset** tab.

One usage example:

```json
{
  "usernames": ["nike", "skynailsofsouthbeach", "@bombompasteleriasv", "https://www.instagram.com/little_cloud_bakery/"],
  "searchQueries": ["nail salon miami"],
  "maxProfilesPerQuery": 20,
  "onlyWithContact": true,
  "maxItems": 100
}
```

### 💼 Business use cases

#### 🏪 Local business prospecting

Search `dentist chicago` or `hair salon austin`, keep only profiles with contact data, and hand the sheet to your SDRs with phones already in E.164.

#### 🤝 Influencer and creator outreach

Paste your shortlist of creator handles and get the booking email from their bio or their Linktree, with the source page for each one.

#### 🧾 CRM enrichment

You already have Instagram handles for your accounts. Run them on a schedule to fill in missing emails, phones, websites and categories.

#### 🌎 Market mapping

Pull categories, cities and coordinates for a niche to see where businesses cluster and which ones have no website at all.

### 🔌 Automating Instagram Email & Phone Scraper

Connect the Actor to the tools you already use:

- **Make** and **Zapier**: send each new lead to Google Sheets, HubSpot, Pipedrive or your email tool.
- **Slack**: post the leads found in a scheduled run to a channel.
- **Airbyte**: load the dataset into your warehouse.
- **GitHub Actions**: trigger runs from your own pipelines.
- **Google Drive**: save each run's CSV to a shared folder.

Schedule it from the **Schedules** tab to re-check a list every week.

### 🌟 Beyond business use cases

- 🎓 **Research:** study how small businesses in a sector present themselves and how they want to be contacted.
- 🙋 **Personal:** collect the booking contacts of the photographers, bakers or venues on your wedding shortlist.
- 💚 **Non-profit:** build a contact list of local businesses for a community event or a donation drive.
- 🧪 **Experimentation:** test lead-scoring ideas on real, public profile data.

### 🤖 Ask an AI assistant about this scraper

Give an AI agent this Actor through the Model Context Protocol:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/instagram-contact-scraper"
```

Then ask in plain language: *"Find 30 wedding photographers in Lisbon on Instagram and give me the ones with an email or WhatsApp."*

Or paste this into ChatGPT, Claude or Cursor:

```
Use the Apify Actor "parseforge/instagram-contact-scraper" to get public contact data of Instagram profiles. Input: { "usernames": [<handles or profile URLs>], "searchQueries": [<optional keywords>], "scanWebsites": true, "onlyWithContact": false, "phoneCountry": "US", "maxItems": <n> }. Each row has username, fullName, email, phone (E.164), whatsapp, emails, phones, emailSource, phoneSource, category, city, streetAddress, website, followersCount and pagesScanned. Call it with the ApifyClient and my APIFY_TOKEN.
```

### ❓ Frequently Asked Questions

**📧 Does it get the email behind Instagram's Contact button?**
No. Instagram serves that email and phone to logged-in users only; for any logged-out visitor the fields are empty (measured on 11 business and creator accounts from three kinds of network). The Actor finds the addresses the business publishes in its bio and on its linked site instead.

**🔐 Do I need an Instagram account or cookies?**
No. Nothing to connect and no account at risk.

**📈 How many profiles have an email?**
It depends on the niche. In our 25-profile test, 11 had an email and 11 had a phone. Small businesses and creators publish contact data far more often than big brands.

**🌍 Why is a phone number read as a US number?**
Numbers written without a `+country` code are read with **Country for local phone numbers** (US by default). Set it to your market, for example `MX` or `GB`. Websites on a country domain (`.co.uk`, `.de`) use that country automatically.

**🏢 Why is the category or address "Not Disclosed" for some businesses?**
For a share of business accounts (11 of 25 in our test) Instagram's app endpoint answers with an internal category error, so the Actor reads the public profile page instead. That page has the name, bio, links and counts, but not the business block. `dataSource` tells you which one a row came from.

**🔎 How does the keyword search work?**
Google indexes Instagram profiles with their bio. The Actor searches `site:instagram.com <your keywords>`, reads the handles from the results (about 6 to 10 per results page) and then reads each profile. Narrow queries return fewer profiles.

**🔒 What about private accounts?**
The name, bio and counts are public and come back; the website scan is skipped.

**🕸 Which link-in-bio services are followed?**
Linktree, Beacons, Stan, Bio.site, Carrd, Later, lnk.bio, bio.link, Taplink, hoo.be, Komi, Snipfeed, Milkshake, AllMyLinks, solo.to, Linkpop, Bento and more. Social networks are listed in `socialProfiles` but not opened.

**🧹 What does "Only profiles with an email or phone" do?**
It leaves out profiles where nothing was found. Those are not written and not billed.

**⏱ How fast is it?**
The 25-profile test run took 45 seconds with the website scan on.

**❌ What if a username does not exist?**
You get a free row with `error` explaining it: no such profile, not shown to logged-out visitors, or Instagram refusing the request.

**🧑‍⚖️ Is it legal?**
The Actor collects only data that businesses and creators publish for anyone to see. You are responsible for how you use it, including anti-spam and data-protection laws such as CAN-SPAM and GDPR.

### 💰 Pricing

Pay-per-event: **$4.20 per 1,000 profiles** ($0.0042 each) plus $0.005 per run start. The website scan is included. Profiles that could not be read are free, and so are profiles left out by `onlyWithContact`.

| Profiles | Approximate cost |
|---|---|
| 10 (a quick look) | $0.05 |
| 1,000 | $4.21 |
| 10,000 | $42.01 |

Optional, billed only when you use it:

| Add-on | Price |
|---|---|
| Keyword search (`searchQueries`) | $0.04 per Google results page read (about 6 to 10 profiles each) |

New Apify accounts start with $5 in free credit. Free-plan runs return up to 10 profiles as a preview.

### 🔌 Integrate with any app

Use the [Apify API](https://docs.apify.com/api/v2?fpr=vmoqkp), the JavaScript and Python [ApifyClient](https://docs.apify.com/api/client/js?fpr=vmoqkp), webhooks, or the Make, Zapier and n8n integrations to start runs and pull the rows wherever you need them.

### 🔗 Recommended Actors

- [Instagram Profile Scraper](https://apify.com/parseforge/instagram-profile-scraper?fpr=vmoqkp): profile identity, bio links and counts for many handles.
- [Instagram Scraper](https://apify.com/parseforge/instagram-scraper?fpr=vmoqkp): posts, reels and profiles in one Actor.
- [Instagram Search Scraper](https://apify.com/parseforge/instagram-search-scraper?fpr=vmoqkp): find Instagram accounts, hashtags and places.
- [Website Contact Leads Scraper](https://apify.com/parseforge/website-contact-leads-scraper?fpr=vmoqkp): emails, phones and socials from any list of websites.
- [Google Maps Contacts Scraper](https://apify.com/parseforge/google-maps-contacts-scraper?fpr=vmoqkp): local businesses with their contact details from Google Maps.

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA) with your run ID, your input and what you expected.

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Instagram or Meta. It collects only publicly available data that anyone can see without logging in. You are responsible for using it in compliance with Instagram's terms and with the laws that apply to you, including anti-spam and data-protection rules.

# Actor input Schema

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

Handles (nike, @nike) or profile links (https://www.instagram.com/nike/). One row per profile, duplicates removed. Post and reel links are not profiles and are skipped.

## `searchQueries` (type: `array`):

Keywords to discover profiles through Google, which indexes Instagram bios. Example: nail salon miami, or pasteleria "whatsapp" to favour bios that print a number. Each query adds up to Max profiles per keyword. Billed per Google results page read.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `scanWebsites` (type: `boolean`):

Read the link-in-bio page (Linktree, Beacons, Stan and similar), the website and its contact page to find emails, phones and WhatsApp numbers the bio does not print. Turn it off for a faster run that only reads Instagram.

## `maxPagesPerProfile` (type: `integer`):

Pages read per profile when following bio links: the links themselves, the sites a link-in-bio page points to, and one contact page.

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

Leave out profiles where no email, phone or WhatsApp number was found. Left-out profiles are not charged.

## `phoneCountry` (type: `string`):

Used to read phone numbers written without a +country code (for example 512-555-0123). Numbers written with a + are read as written; websites on a country domain (.co.uk, .de) use that country.

## `maxProfilesPerQuery` (type: `integer`):

How many profiles to take from Google for each keyword search. Google returns about 6 to 10 profiles per results page.

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

Instagram limits how many profiles one address can read, so each profile goes out on its own Apify Proxy session. The default datacenter proxy is enough; residential is not needed.

## Actor input object example

```json
{
  "usernames": [
    "nike",
    "skynailsofsouthbeach",
    "bombompasteleriasv",
    "little_cloud_bakery",
    "nasa"
  ],
  "maxItems": 10,
  "scanWebsites": true,
  "maxPagesPerProfile": 4,
  "onlyWithContact": false,
  "phoneCountry": "US",
  "maxProfilesPerQuery": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Emails, phones, WhatsApp, category and city

## `fullData` (type: `string`):

Complete dataset with all 41 fields

# 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": [
        "nike",
        "skynailsofsouthbeach",
        "bombompasteleriasv",
        "little_cloud_bakery",
        "nasa"
    ],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/instagram-contact-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": [
        "nike",
        "skynailsofsouthbeach",
        "bombompasteleriasv",
        "little_cloud_bakery",
        "nasa",
    ],
    "maxItems": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/instagram-contact-scraper").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": [
    "nike",
    "skynailsofsouthbeach",
    "bombompasteleriasv",
    "little_cloud_bakery",
    "nasa"
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call parseforge/instagram-contact-scraper --silent --output-dataset

```

## MCP server setup

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

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/mkz42dUSQUz2JqAiI/builds/rrh88fS2nG1dsiW41/openapi.json
