# Instagram Profile Scraper & API: Bio, Email & Followers (`s_actors/instagram-profile-scraper`) Actor

Scrape public Instagram profiles: bio, followers, following, posts count, verified, private, emails and phone numbers from the bio, links, mentions, 6 latest posts, average likes, engagement rate, posting frequency and follower change. No login.

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

## Pricing

from $0.49 / 1,000 profiles

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

### Instagram Profile Scraper

Scrape **public Instagram profiles** in bulk: name, bio, followers, following, exact posts count, verified and private flags, profile picture, the **emails and phone numbers written in the bio**, links, mentions and hashtags from the bio, whether a story is live, the **6 latest posts** with likes and comments, **average likes, engagement rate and posts per week**, and the **follower change since your previous check**.

```json
{ "profiles": ["humansofny", "garyvee", "kevinhart4real"] }
```

No Instagram login, no cookies, no browser. Give usernames, profile links or user IDs; get one row per profile. Use it as an **Instagram profile scraper API** for influencer vetting, lead lists, competitor tracking, a follower count tracker or CRM enrichment.

#### What you get

Real example, 19 October 2026:

| username | followers | following | posts | contact in bio | avg likes | engagement, % | posts a week |
|---|---|---|---|---|---|---|---|
| humansofny | 12,644,261 | 756 | 5,876 | honybrandon@gmail.com | 114,914 | 0.917 | 3.6 |
| khaby00 | 78,069,381 | 1,019 | 678 | team@khabylame00.com | 1,965,539 | 2.533 | 1.2 |
| garyvee | 12,131,047 | 7,645 | 11,000 | phone 12129315731 | 44,128 | 0.367 | 15.3 |
| kevinhart4real | 171,807,068 | 1,328 | 10,065 | Facebook.com/HartKevin | 69,282 | 0.041 | 3.6 |
| nasa | 104,380,592 | 90 | 4,967 | | 564,612 | 0.543 | 7.3 |

Every row:

| Field | Example | What it is |
|---|---|---|
| `username`, `fullName`, `userId`, `profileUrl` | garyvee, Gary Vay-Ner-Chuk, 1697296 | the account |
| `biography` | "✈️CEO/Chairman @vaynermedia…" | the bio text |
| `followers`, `following`, `postsCount` | 12,130,982, 7,645, 11,000 | exact counts |
| `isVerified`, `isPrivate` | true, false | blue check, private account |
| `email`, `emails`, `phone`, `phones` | honybrandon@gmail.com, 12129315731 | emails and phone numbers written in the bio (also "name \[at] domain \[dot] com") |
| `bioLinks`, `bioMentions`, `bioHashtags` | \["Facebook.com/HartKevin"], \["vaynermedia"], \["ComedicRockstar"] | links, @mentions and #hashtags in the bio |
| `hasPublicStory`, `hasReels`, `pronouns` | true, true, \[] | a story is live now, the account has Reels |
| `latestPostAt`, `postsPerWeek` | 2026-10-19T12:45:24Z, 15.31 | the newest post and the posting frequency |
| `avgLikes`, `avgComments`, `engagementRate` | 43,849, 332, 0.364 | averages of the latest posts; (likes + comments) / followers × 100 |
| `paidPartnerships` | 2 | latest posts marked "Paid partnership" |
| `followersChange`, `previousCheckAt` | +1,250, 2026-10-12T09:00:00Z | follower change since your previous check of this profile |
| `latestPosts` | \[{url, type, takenAt, likes, comments, caption, imageUrl, isPaidPartnership}] | the 6 latest posts |
| `profilePicUrl` | scontent…cdninstagram.com/… | the profile picture (Instagram links expire after a few days) |
| `profileReadAt`, `scrapedAt` | 2026-10-19T14:42:24Z | when the profile was read |

The **Profiles** view of the dataset shows the main table, **Contacts from bio** the emails, phones and links, **Activity & growth** the latest post, averages and follower change. Export to Excel, CSV, JSON or Google Sheets.

#### How to use it

1. Add profiles: `nasa`, `@nasa`, `https://www.instagram.com/nasa/` or the numeric ID `528817151`, one per line (up to 5,000 a run).
2. Keep **Include the 6 latest posts** on for the post list in each row (the averages are counted either way).
3. Run, then open the dataset or call it from the API.

#### Why this Actor

| | This Actor | Typical profile scrapers |
|---|---|---|
| Login, cookies | none | some need your session |
| Counts | exact followers, following and posts count | sometimes rounded ("32K") |
| Contacts | emails and phones from the bio in their own columns | bio text only, or a paid add-on |
| Engagement | average likes, comments, engagement rate, posts a week in every row | separate post scraping |
| Growth | follower change since the previous check | no |
| Price | $1.09 per 1,000 profiles | $0.80-20 per 1,000, often + add-ons |

#### Track follower growth

Save your input as a task and schedule it every day or week: each row shows `followersChange` and `previousCheckAt`, the change since the previous run with the same **Monitor name**. Use separate monitor names for separate lists (for example `competitors` and `clients`). Send the rows to Google Sheets, Slack, email or a webhook with an Apify integration.

#### Pricing

Pay per result, no subscription:

| Event | Price | When |
|---|---|---|
| Profile | $1.09 per 1,000 ($0.98 on Scale, $0.49 on Business) | each profile in the results; accounts that do not exist are free |
| Residential profile read | $0.003 | rare: only when Instagram shows a profile page to none of the datacenter IPs and a residential IP has to read it (a few percent of profiles, often none) |
| Run start | $0.001 | |

Examples: 100 profiles ≈ **$0.12**; 1,000 profiles ≈ **$1.25**; a weekly check of 50 competitors ≈ $0.25 a month.

#### FAQ

**Do I need an Instagram account?** No. The Actor reads public profiles the way a logged-out visitor sees them.

**Private accounts?** You get the name, bio, counts and the private flag; their posts are not public, so the post averages stay empty.

**Where do the emails and phones come from?** From the bio text: whatever the account wrote there, including spelled-out forms like "mail \[at] site \[dot] com". The website button, business category and the contact buttons of business accounts are shown only to logged-in users, so they are not in the results.

**Some accounts have no posts list.** Accounts that turned off embedding (some celebrities) show their counts and bio, but not their latest posts; `postsCount` is still filled.

**An account shows as not found.** It does not exist, was renamed, or Instagram does not show it to logged-out visitors (also some deactivated or restricted accounts). Those rows are free and listed in the run log.

**How fast is it?** About 40 profiles a minute with the default 5 profiles at once.

#### Use with the API and AI agents

Run it from your code or an AI agent with the Apify API, the Apify MCP server or the Python and JavaScript clients; read the results from the dataset (`?view=profiles`, `?view=contacts`, `?view=activity`).

#### Other social media tools

| Tool | What it does |
|---|---|
| [Instagram Influencer Finder](https://apify.com/s_actors/instagram-influencer-email-finder) | Instagram creators and local businesses by keyword and city, with emails from the bio and website, phones and engagement |
| [Instagram Reels Scraper](https://apify.com/s_actors/instagram-reels-scraper) | All Reels of any profile with plays, likes, comments, MP4 links and engagement |
| [Instagram Post Scraper](https://apify.com/s_actors/instagram-post-scraper) | Any post, Reel or carousel by link with the exact posting time, likes, comments and plays |
| [Instagram Video Downloader](https://apify.com/s_actors/instagram-video-downloader) | Reels, videos and carousels as MP4 files in 1080p from links or whole profiles, one ZIP |
| [Instagram Reel Transcript](https://apify.com/s_actors/instagram-reel-transcript) | Reels and videos to text by link or profile: AI transcript in 99 languages, hook, SRT and VTT |
| [Instagram Audio Scraper](https://apify.com/s_actors/instagram-audio-scraper) | The Reels using any sound or song, with its exact Reels count, growth per day and Spotify link |
| [Instagram Trending Audio](https://apify.com/s_actors/instagram-trending-audio) | Reels sounds trending right now in any country, with Reels counts and daily growth |
| [TikTok Profile Scraper](https://apify.com/s_actors/tiktok-profile-scraper) | All videos of TikTok creators with exact stats and MP4 links |

# Actor input Schema

## `profiles` (type: `array`):

Usernames (nasa or @nasa), profile links (https://www.instagram.com/nasa/) or numeric user IDs, one per line. Up to 5,000 profiles a run.

## `includeLatestPosts` (type: `boolean`):

Add the 6 latest posts of each profile (link, type, likes, comments, date, caption, image) as a list in the row. The averages and engagement rate are counted either way.

## `monitorName` (type: `string`):

Separate memory for separate schedules (for example 'competitors' and 'clients'). Empty = default.

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

How many profiles are read in parallel.

## `debugLog` (type: `boolean`):

Log every retried request.

## Actor input object example

```json
{
  "profiles": [
    "humansofny",
    "garyvee",
    "kevinhart4real"
  ],
  "includeLatestPosts": true,
  "maxConcurrency": 5,
  "debugLog": false
}
```

# Actor output Schema

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

One row per profile with counts and engagement.

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

Emails, phone numbers, links and mentions written in the bio.

## `activity` (type: `string`):

Latest post, averages, posting frequency and follower change.

## `all` (type: `string`):

Every field of every row.

# 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 = {
    "profiles": [
        "humansofny",
        "garyvee",
        "kevinhart4real"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("s_actors/instagram-profile-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 = { "profiles": [
        "humansofny",
        "garyvee",
        "kevinhart4real",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("s_actors/instagram-profile-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 '{
  "profiles": [
    "humansofny",
    "garyvee",
    "kevinhart4real"
  ]
}' |
apify call s_actors/instagram-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,s_actors/instagram-profile-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/yCzFJtV19Wu3yUHTI/builds/JkWvUEB2454SGpdce/openapi.json
