# Instagram Engagement Rate Calculator - Bulk Creator Analysis (`zaver.api/instagram-engagement-rate-calculator`) Actor

Calculate the engagement rate of any list of Instagram creators: likes, comments, shares and saves per reel against followers, plus average views, view rate, tier benchmark and a rating. No login, no API key. Export CSV, JSON or Excel.

- **URL**: https://apify.com/zaver.api/instagram-engagement-rate-calculator.md
- **Developed by:** [Zaver](https://apify.com/zaver.api) (community)
- **Categories:** Social media, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $47.90 / 1,000 creator analyzeds

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 Engagement Rate Calculator - Bulk Creator Analysis

**Check the engagement rate of a whole list of Instagram creators in one run.** Paste handles, get one clean row per creator: engagement rate, average and median reel views, views as a share of followers, the benchmark for that creator's size, and a plain rating. No login, no cookies, no API key.

> ⭐ bulk creator lists · engagement rate + average views in one row · tier benchmarks · outlier-trimmed sampling · pay per creator analysed · CSV/JSON/Excel · API, MCP & schedules

### What does the Instagram Engagement Rate Calculator do?

Give it a list of creators you are considering for a campaign. For each one it reads the recent reels, drops the noise, and returns the numbers an influencer-marketing decision actually needs — how much the audience engages, how many people the creator really reaches, and whether that is good or bad for an account of that size.

### What data does it return?

One row per creator:

| Field | Description |
|---|---|
| `username` | Creator handle |
| `followers` | Current follower count |
| `engagement_rate_pct` | (likes + comments + shares + saves) per reel ÷ followers × 100 |
| `likes_comments_rate_pct` | The same rate counting only likes and comments |
| `engagement_per_view_pct` | Engagements per view — how well the reach converts |
| `avg_views` | Average reel views across the sample |
| `median_views` | Median reel views, less sensitive to one viral post |
| `view_rate_pct` | Average views ÷ followers × 100 |
| `tier` | nano, micro, mid, macro or mega, by follower count |
| `tier_benchmark_pct` | Typical engagement rate for that tier |
| `vs_benchmark` | This creator's rate against that benchmark |
| `rating` | excellent, good, average or poor |
| `reels_used` | How many reels the averages are based on |
| `is_verified`, `is_business`, `category` | Account type and Instagram category |
| `public_email` | Contact email, where the creator publishes one |
| `status` | `ok`, or why a creator could not be read |

#### Example output

```json
{
  "username": "dave2d",
  "url": "https://www.instagram.com/dave2d/",
  "followers": 251705,
  "engagement_rate_pct": 3.5,
  "likes_comments_rate_pct": 3.19,
  "avg_views": 206446,
  "median_views": 182377,
  "view_rate_pct": 82.02,
  "tier": "macro",
  "tier_benchmark_pct": 1.6,
  "vs_benchmark": 2.19,
  "rating": "excellent",
  "reels_used": 8,
  "status": "ok"
}
```

### How to calculate engagement rate for a list of creators

1. Paste handles or profile URLs into **Instagram creators**, one per line.
2. Leave **Reels per creator** at 12, or raise it for a steadier average.
3. Run it, then download as **CSV, Excel, JSON, JSONL or XML**, or read it from the API.

#### Input example

```json
{
  "usernames": ["mkbhd", "dave2d", "unboxtherapy"],
  "sampleReels": 12,
  "concurrency": 5
}
```

| Option | Type | Description |
|---|---|---|
| `usernames` | array | **Required.** Handles or profile URLs, one per line. |
| `sampleReels` | integer | Recent reels to average, 3–30. Default 12. Does not change the price. |
| `concurrency` | integer | Creators analysed at once, 1–10. Default 5. |

### Pricing

| Event | Price |
|---|---|
| `creator-analyzed` | **$47.90 per 1,000 creators** ($0.0479 per creator) |

You are billed per creator row delivered. Creators that are private, deleted or unreadable return an error row and cost **nothing**.

### How the engagement rate is calculated

The formula is the standard one — **(likes + comments + shares + saves) ÷ followers × 100**, averaged over recent reels — with three corrections that make bulk comparison trustworthy:

- **The three newest reels are skipped.** Their view counts are still climbing, so including them drags every average down.
- **Outliers are trimmed** with a 1.5× IQR fence on views and engagements, so one viral reel does not flatter a creator.
- **Shares and saves are counted**, not just likes and comments, because Instagram's ranking weighs them and creators quote them in media kits.

### Use cases

#### Vet an influencer shortlist before you pay anyone

Run the whole shortlist at once and sort by engagement rate against tier benchmark. A 2% rate is excellent for a mega account and mediocre for a nano one — the benchmark column does that comparison for you.

#### Spot bought followers without buying a fake-follower tool

A large account with a low view rate and a low engagement rate is the classic signature of purchased followers. `view_rate_pct` and `engagement_rate_pct` together separate real audiences from inflated ones.

#### Price a campaign on reach rather than follower count

`avg_views` and `median_views` tell you how many people a post actually reaches, which is the number a CPM should be built on. Followers only tell you how many once subscribed.

#### Benchmark your own creators each month

Schedule the same roster monthly and watch engagement drift. Falling engagement at steady follower counts is the earliest sign a partnership is going stale.

#### Build a creator database for an agency or marketplace

One row per creator, with category, verification and contact email where published, drops straight into a CRM or an internal ranking.

### Good to know

- Engagement is measured on **reels**, because that is where Instagram reports views. Photo-first accounts still return a rate, but compare them with other photo-first accounts.
- Private accounts cannot be read and return a `private` status row at no charge.
- The sample is the creator's recent reels, so a creator who has not posted reels recently returns fewer `reels_used`.
- Each creator costs three upstream requests regardless of how many fields you use — engagement, views and profile data come from one shared fetch.

### Frequently asked questions

#### What is a good engagement rate on Instagram?

It depends on size, which is why every row carries its tier benchmark. As a rule of thumb: about 4–5% for nano accounts, 2–3% for micro, 1.5–2% for mid and macro, and around 1% for mega accounts. The `rating` column applies those bands for you.

#### How do I check the engagement rate of multiple Instagram accounts at once?

Paste every handle into the **Instagram creators** field. The actor processes them in parallel and returns one row each, so a shortlist of 200 creators takes a few minutes.

#### Do I need an Instagram login, cookies or an API key?

No. Requests run through hosted infrastructure on our side — nothing to configure, and your own account is never used or put at risk.

#### Does it work for private accounts?

No. Instagram does not publish a private account's posts, so those rows come back with a `private` status and are not billed.

#### Why are the three newest reels excluded?

Their view counts are still rising. Including them pulls the average down and makes a creator look weaker than they are, which matters when you are comparing creators against each other.

#### Can I calculate engagement rate from likes and comments only?

Yes — every row carries `likes_comments_rate_pct` alongside the full rate, so you can use whichever definition your reporting already uses.

#### How many reels are used per creator?

Twelve by default, after skipping the newest three and trimming outliers. Raise **Reels per creator** up to 30 for a steadier figure; the price per creator does not change.

#### Can I run this on a schedule?

Yes. Use Apify schedules, the API, the MCP server, or Make, Zapier and n8n to refresh a roster weekly or monthly.

#### What does it cost to analyse 1,000 creators?

$47.90, billed per creator delivered. Unreadable creators cost nothing.

### Related actors

- [Instagram Follower Count Tracker](https://apify.com/zaver.api/instagram-creator-profile-refresher) — refresh a whole roster's follower counts and track the change
- [Instagram Profile Scraper](https://apify.com/zaver.api/instagram-profile-scraper) — bio, followers, email and category in bulk
- [Instagram Similar Profiles Finder](https://apify.com/zaver.api/instagram-similar-profiles-finder) — discover creators like the ones you already work with
- [Instagram Followers Scraper](https://apify.com/zaver.api/instagram-followers-scraper) — export a creator's follower list
- [Instagram Email Scraper](https://apify.com/zaver.api/instagram-email-contact-extractor) — contact details for outreach

***

*Not affiliated with or endorsed by Instagram or Meta. Returns publicly available data.*

# Actor input Schema

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

Handles or profile URLs of the creators to analyse, one per line - e.g. <code>mkbhd</code> or <code>https://www.instagram.com/mkbhd/</code>. Private accounts return an error row and are not billed.

## `sampleReels` (type: `integer`):

How many recent reels to average. The three newest reels are skipped because their views are still rising, and outliers are dropped with a 1.5x IQR fence. More reels means a steadier number; it does not change the price.

## `concurrency` (type: `integer`):

How many creators to analyse at once. Raise it for long lists; lower it if the data provider starts rate-limiting.

## Actor input object example

```json
{
  "usernames": [
    "mkbhd",
    "dave2d",
    "unboxtherapy"
  ],
  "sampleReels": 12,
  "concurrency": 5
}
```

# Actor output Schema

## `creators` (type: `string`):

One dataset item per creator: engagement rate, average and median views, view rate, tier benchmark and rating.

## `creatorsCsv` (type: `string`):

The same rows as a CSV download, ready for a spreadsheet or CRM import.

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

Creators analysed, errors and upstream requests for this run.

# 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": [
        "mkbhd",
        "dave2d",
        "unboxtherapy"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zaver.api/instagram-engagement-rate-calculator").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": [
        "mkbhd",
        "dave2d",
        "unboxtherapy",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("zaver.api/instagram-engagement-rate-calculator").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": [
    "mkbhd",
    "dave2d",
    "unboxtherapy"
  ]
}' |
apify call zaver.api/instagram-engagement-rate-calculator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zaver.api/instagram-engagement-rate-calculator"
        }
    }
}
```

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/2uF7kcDyDPNjD8bwb/builds/DTnIx4ApxdBUQosnv/openapi.json
