# Instagram Profile Scraper: Followers, Engagement | $1/1K (`one_dollar_store/instagram-profile-data-scraper`) Actor

$1 per 1,000 results, platform usage included. Public Instagram profile data by username: exact follower and post counts, name, verified badge, profile picture, up to 6 recent posts and engagement rate. Optional bio and following count. No login needed.

- **URL**: https://apify.com/one_dollar_store/instagram-profile-data-scraper.md
- **Developed by:** [One Dollar Store](https://apify.com/one_dollar_store) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 5 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

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 Profile Scraper: Followers, Posts and Engagement

**$1 per 1,000 profiles. Platform usage included. No rental, no minimum.**

[Open it in Apify Console](https://console.apify.com/actors/h9fwoUmBX2ErMqmJz/input)

### What it costs

| Profiles | This actor |
|---|---|
| 1,000 | $1.00 |
| 10,000 | $10.00 |
| 100,000 | $100.00 |

One flat price, platform usage included, so there is no separate compute or proxy bill. Plus $0.001 per run. Checking 500 profiles once a day costs about $0.50 a day, or about $15 a month. One result is one profile row; the recent posts inside it are not charged separately.

### Why use it

- **Exact counts** of followers and posts for most profiles, from Instagram's public profile card.
- **Engagement in the same row.** Up to 6 recent posts with likes, comments and captions, plus average likes, average comments and engagement rate.
- **Bios at the same price.** Turn on `includeBio` for the bio text and following count. It is slower, not dearer.
- **No charge for misses.** Usernames that do not exist or could not be read are not charged. No login needed.

### Quick start

1. Open the actor, enter a few usernames, press **Start**.
2. Or paste this input:

```json
{ "usernames": ["nasa", "lego", "duolingo"], "includeBio": true }
```

3. Download the results as JSON, CSV or Excel, or read them through the API.

### Use it from code

```bash
curl -X POST "https://api.apify.com/v2/acts/one_dollar_store~instagram-profile-data-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"usernames": ["nasa", "lego"]}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("one_dollar_store/instagram-profile-data-scraper").call(
    run_input={"usernames": ["nasa", "lego", "duolingo"]}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["username"], item["followersCount"], item.get("recentEngagementRatePct"))
```

### Use it from an AI assistant

Claude, ChatGPT, Cursor and other assistants can call this actor through Apify's MCP server. Add it with this server address:

```
https://mcp.apify.com?tools=one_dollar_store/instagram-profile-data-scraper
```

Then ask, for example: "Compare the follower counts and engagement rates of the Instagram accounts nasa, lego and duolingo."

### Switching from another Instagram profile actor

Most Instagram profile actors take a list of usernames. Here it is `usernames`. The core fields are `username`, `fullName`, `followersCount`, `postsCount`, `isVerified`, `biography` (with bios) and `recentPosts`.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `usernames` | list of text | required | `natgeo`, `@natgeo` or the profile link. |
| `includeRecentPosts` | true or false | true | Put up to 6 recent posts inside each row. |
| `includeBio` | true or false | false | Also read the bio and following count from the profile page. Slower. |
| `summaryFallback` | true or false | true | For profiles without a profile card, read the basics from the profile page instead. |
| `proxyConfiguration` | proxy | Apify data center | Profile page reads that are refused move to Apify residential proxy. Its cost is included. |

### Output fields

`username`, `fullName`, `userId`, `profileUrl`, `isVerified`, `isPrivate`, `followersCount`, `followingCount` (with bios), `postsCount`, `countsRounded`, `hasPublicStory`, `pronouns`, `biography` (with bios), `profilePicUrl`, `lastPostAt`, `recentPostsAvgLikes`, `recentPostsAvgComments`, `recentEngagementRatePct`, `recentPosts` (each with `shortcode`, `url`, `type`, `caption`, `likeCount`, `commentCount`, `postedAt`, `imageUrl`, `isPaidPartnership`, `sponsors`), `source`, `requestedUsername`, `scrapedAt`. Empty fields are left out of a row.

The engagement rate is (average likes + average comments) / followers x 100, over the recent posts in the row.

### Sample results

Real rows from test runs on 4 October 2026 (nasa with bios on), shortened to the main fields. The dataset row for nasa holds 6 recent posts.

```json
[
  {"username": "nasa", "fullName": "NASA", "isVerified": true, "followersCount": 104280359, "postsCount": 4943,
   "biography": "Making the seemingly impossible, possible. ✨", "followingCount": 94,
   "recentPostsAvgLikes": 204990, "recentPostsAvgComments": 1140, "recentEngagementRatePct": 0.1977,
   "recentPosts": [{"url": "https://www.instagram.com/p/DeCPVhERA8e/", "type": "video", "caption": "Room with a view. ...",
     "likeCount": 120770, "commentCount": 1207, "postedAt": "2026-10-03T14:10:18.000Z"}], "source": "profile card"},
  {"username": "duolingo", "fullName": "Duolingo", "isVerified": true, "followersCount": 5313658, "postsCount": 1147,
   "recentPostsAvgLikes": 147343, "recentPostsAvgComments": 17107, "recentEngagementRatePct": 3.0949, "source": "profile card"},
  {"username": "lego", "fullName": "LEGO", "isVerified": true, "followersCount": 14011835, "postsCount": 6360,
   "recentPostsAvgLikes": 36017, "recentPostsAvgComments": 216, "recentEngagementRatePct": 0.2586, "source": "profile card"}
]
```

### Limits

- Most profiles are read from Instagram's public profile card, the widget Instagram makes for showing a profile on other websites. It has exact counts and the latest posts, but no bio and no following count. Turn on `includeBio` to add those from the profile page.
- Some owners turn the card off. Those profiles come from the profile page summary instead: name, bio, and follower, following and post counts that Instagram rounds for big accounts (`countsRounded` is true). These rows have no recent posts.
- Recent posts are the ones the card shows, up to 6. Posts with hidden like counts are left out of the averages.
- Private profiles show only what Instagram shows any visitor: name, bio and counts.

### FAQ

**How much does it cost to scrape 10,000 Instagram profiles?**
$10, plus $0.001 for each run. Recent posts and bios are included in the profile row.

**Do I pay for compute or proxy on top?**
No. Platform usage, including any residential proxy the actor falls back to, is included in the $1 per 1,000 price.

**Do I need an Instagram account?**
No. The actor only reads pages that anyone can open without logging in.

**How fast is it?**
In our tests a run of 30 profiles took from under a minute to about 4 minutes, with or without bios. Large lists work the same way, a few profiles at a time.

**Why is a username missing from my results?**
It does not exist, it shows no public data, or Instagram refused every try. Each case is listed by name in the log and in the RUN_SUMMARY record, and none of them is charged.

**Can I track follower growth?**
Yes. Schedule a run daily or weekly with the same usernames and compare `followersCount` by `username` and `scrapedAt`.

**Is it legal?**
The actor collects only public data that Instagram shows to any visitor. You are responsible for how you use it: follow Instagram's terms of use and the data protection laws that apply to you, such as GDPR or CCPA, especially when you store or process personal data.

**Is this an official Instagram product?**
No. It is an independent tool and is not affiliated with or endorsed by Meta or Instagram.

**Do I need an Apify account?**
Yes. Actors run from an Apify account, and a free account is enough to start: it includes $5 of platform usage every month. You can [sign up here](https://www.apify.com?fpr=ymnoit). This is a referral link and it costs you nothing.

**Is there a limit on the free plan?**
Yes. A run started from a free plan account delivers the first 10 results, then ends with a message and a link to the plans. Any paid plan returns everything you ask for, up to your own limit. The price per result is the same on every plan.

### More from The One Dollar Store

Every actor here costs $1 per 1,000 results, platform usage included.

**Google and search**

- [Google News Scraper](https://apify.com/one_dollar_store/google-news-articles-scraper): News articles by keyword, topic or country.
- [Google Maps Leads Scraper](https://apify.com/one_dollar_store/google-maps-leads-scraper): Local businesses with phones, websites and emails.
- [Google Ads Transparency Scraper](https://apify.com/one_dollar_store/google-ads-transparency-scraper): Ads any advertiser or domain runs on Google.

**Maps and local business**

- [2GIS Business Scraper](https://apify.com/one_dollar_store/2gis-business-scraper): Businesses in Russia, Central Asia and the UAE.
- [Yandex Maps Scraper](https://apify.com/one_dollar_store/yandex-maps-business-scraper): Businesses on Yandex Maps around any city.
- [IndiaMART Supplier Scraper](https://apify.com/one_dollar_store/indiamart-supplier-scraper): Indian suppliers for any product, with phones.

**Social media**

- [Threads Scraper](https://apify.com/one_dollar_store/threads-post-scraper): Public Threads posts by keyword or profile.
- [TikTok Hashtag Scraper](https://apify.com/one_dollar_store/tiktok-hashtag-videos-scraper): Videos, views and creators for any hashtag.
- [Pinterest Pin Search Scraper](https://apify.com/one_dollar_store/pinterest-pin-search-scraper): Public pins with images and outbound links.
- [Telegram Channel Scraper](https://apify.com/one_dollar_store/telegram-channel-posts-scraper): Posts, views and media from public channels.
- [Xiaohongshu Scraper](https://apify.com/one_dollar_store/xiaohongshu-explore-feed-scraper): RedNote notes from the public explore feeds.
- [Facebook Ad Library Scraper](https://apify.com/one_dollar_store/facebook-ad-library-scraper): Meta ads by keyword or advertiser page.

**Shopping**

- [Amazon Reviews Scraper](https://apify.com/one_dollar_store/amazon-product-reviews-scraper): Public reviews for any Amazon product.
- [AliExpress Product Scraper](https://apify.com/one_dollar_store/aliexpress-product-search-scraper): Products with prices, orders sold and ratings.
- [Etsy Scraper](https://apify.com/one_dollar_store/etsy-listings-scraper): Listings with prices, shops and badges.
- [Carsales Scraper](https://apify.com/one_dollar_store/carsales-car-listings-scraper): Australian car listings with prices and specs.

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/one_dollar_store/zillow-rentals-scraper): US rentals by city, ZIP or search link.
- [Zillow Sold Homes Scraper](https://apify.com/one_dollar_store/zillow-sold-homes-scraper): Recently sold US homes with prices and dates.
- [Zillow Photos Scraper](https://apify.com/one_dollar_store/zillow-listing-photos-scraper): Every photo of a Zillow listing.

**Jobs**

- [Foundit Jobs Scraper](https://apify.com/one_dollar_store/foundit-jobs-search-scraper): Indian jobs with salary and experience filters.
- [Naukri Jobs Scraper](https://apify.com/one_dollar_store/naukri-job-listings-scraper): Naukri.com jobs by keyword, city and experience.

**Company records**

- [Bundesanzeiger Scraper](https://apify.com/one_dollar_store/bundesanzeiger-filings-scraper): German company filings and notices.
- [US Business Registry Search](https://apify.com/one_dollar_store/us-business-registry-search): Company records from 6 US state registries.

### Changelog

- October 2026: first release.

# Actor input Schema

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

Instagram usernames or profile links, for example natgeo, @natgeo or https://www.instagram.com/natgeo/. You get one row per public profile.

## `includeRecentPosts` (type: `boolean`):

Add the latest posts shown on the public profile card (up to 6) inside each row, with caption, likes, comments and post time. They are part of the profile row and are not charged separately.

## `includeBio` (type: `boolean`):

Also read the bio and the following count from the profile page. This adds one request per profile through residential proxy, so runs take longer. The price per row stays the same.

## `summaryFallback` (type: `boolean`):

Some owners turn off the profile card. For those profiles, read name, bio and counts from the profile page instead. Instagram rounds big counts there (for example 1.2M), and the row says so in countsRounded.

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

Proxy for every request. Apify data center proxy works for most profiles and is the default. The profile page (bios, and profiles without a card) refuses many data center addresses, so after two refused tries those reads move to Apify residential proxy.

## Actor input object example

```json
{
  "usernames": [
    "natgeo",
    "nasa"
  ],
  "includeRecentPosts": true,
  "includeBio": false,
  "summaryFallback": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (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": [
        "natgeo",
        "nasa"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("one_dollar_store/instagram-profile-data-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": [
        "natgeo",
        "nasa",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("one_dollar_store/instagram-profile-data-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": [
    "natgeo",
    "nasa"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call one_dollar_store/instagram-profile-data-scraper --silent --output-dataset

```

## MCP server setup

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