# Instagram Engagement Pod Check - Real People Or Bots? (`reapx/instagram-comment-authenticity`) Actor

"Every comment says fire emoji and nothing else. Is any of this real?" See which comments come from real people and which come from a pod or a bot farm, on any Instagram post.

- **URL**: https://apify.com/reapx/instagram-comment-authenticity.md
- **Developed by:** [Tarek Etman](https://apify.com/reapx) (community)
- **Categories:** For creators, Marketing, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.00 / 1,000 comment thread reads

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

![reapX - the record of what changed](https://reapx.dev/reapx.gif)

## Real People, Or A Bot Farm?

> *"Every comment is a fire emoji and three words. Is any of this real?"*

A pod looks perfect from the outside. Big comment counts, fast replies, engagement rate that
beats every creator you can afford. What gives it away is not one comment - it is **the same
handles turning up under post after post**, and no snapshot of a single post can see that.

We read across their posts, not down one. You get which commenters keep reappearing, how much
of the thread is three words and an emoji, whether the people commenting look like accounts or
like an audience, and how the mix has moved since we started watching.

**What comes back reads like this:**

> *"41% of the comments on @creator's last 6 posts came from the same 28 accounts. Those
> accounts comment on each other too. Strip them out and the engagement rate falls from 6.2%
> to 1.9%."*

That last number is the one that decides whether you pay them.

### ⬇️ Input

The actor accepts an array of Instagram handles or post shortcodes, maximum comment depth, and an optional proxy configuration.

```json
{
  "handles": [
    "nike",
    "gymshark",
    "natgeo"
  ],
  "maxComments": 50
}
```

#### Input Parameters

| Field | Type | Default | Description |
|---|---|---|---|
| `handles` | Array | `["nike", "gymshark", "natgeo"]` | An Instagram handle to read across their recent posts, or a post link to read just that one. |
| `maxComments` | Integer | `50` | Maximum comments to analyze per creator account or post. |
| `proxyConfiguration` | Object | `null` | Optional proxy settings to rotate exit IPs per request. |

### ⬆️ Output

Every processed comment outputs a structured record to the default dataset.

#### Output Fields

| Field | Type | Description |
|---|---|---|
| `commentPk` | String | Stable per-row identifier. Instagram comment primary key ID. |
| `username` | String | Instagram creator handle associated with post. |
| `shortcode` | String | Instagram post shortcode identifier. |
| `commentText` | String | Comment text body. |
| `commentAuthor` | String | Username of the commenter. |
| `commentAuthorRepeatRate` | Number | Share of comments originating from repeat authors across creator posts (engagement pod signal). |
| `genericCommentShare` | Number | Share of single-word or emoji-only comments indicating automated bot behavior. |
| `commenterAccountAge` | String | Estimated commenter account age band. |
| `commentToLikeRatio` | Number | Ratio of total comments to likes on post. |
| `computedStatus` | Object | Status object with observation evidence and calculation notes. |
| `scrapedAt` | String | ISO timestamp of data collection. |

#### Worked Output Example

```json
{
  "commentPk": "ig_cmt_nike_1_1770000000000",
  "username": "nike",
  "shortcode": null,
  "commentText": "Love this design!",
  "commentAuthor": "alex_runner",
  "commentAuthorRepeatRate": 0.125,
  "genericCommentShare": 0.25,
  "commenterAccountAge": "observed account (>90d)",
  "commentToLikeRatio": 0.018,
  "computedStatus": {
    "totalBatchSize": 4,
    "repeatAuthorCount": 0,
    "genericCommentCount": 1,
    "reason": "evidence computed across observed comment batch"
  },
  "scrapedAt": "2026-08-05T16:30:00.000Z"
}
```

### How it works

1. **Comment Payload Extraction**: Reads post comment data via guest HTTP without mandatory proxy spend.
2. **Pod & Bot Detection**: Calculates author co-occurrence across comments and identifies single-word or emoji-only bot patterns.
3. **Evidence Reporting**: Ships calculated ratio metrics alongside raw comment records to support client campaign reviews.

### ❓ FAQ

##### How does this actor spot engagement pods?

Engagement pods rely on reciprocal comment groups. The actor tracks author repeat rates and comment-to-like ratios to flag accounts whose comments come from the same recurring group.

##### Can this actor run on Apify without payload bodies?

Yes. If an API request contains no input body (such as automated health checks), the actor falls back to prefilled reference accounts to guarantee successful output.

##### Does this actor require account login?

No. Comment payloads are collected directly over guest HTTP without account login credentials.

### 💬 Your feedback

Need custom comment classification thresholds, pod network graphing, or reporting integrations? Contact reapxdev@proton.me.

***

Unofficial - not affiliated with Instagram. Collects only data visible without logging in. reapx · reapx.dev · reapxdev@proton.me

# Actor input Schema

## `handles` (type: `array`):

An Instagram handle to check across their recent posts, or paste a post link to start from that one. One per line - <b>@ is optional</b>.

## `maxPosts` (type: `integer`):

Each post is checked against the others, so more posts means a firmer picture of what normal looks like for this account. Six is enough to see a pattern; twelve makes it hard to argue with.

## `maxComments` (type: `integer`):

How many of each post's comments to carry through into the results as evidence. The like and comment totals on every row are the post's own full counts either way.

## Actor input object example

```json
{
  "handles": [
    "zendaya"
  ],
  "maxPosts": 6,
  "maxComments": 50
}
```

# Actor output Schema

## `items` (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 = {
    "handles": [
        "zendaya"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("reapx/instagram-comment-authenticity").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 = { "handles": ["zendaya"] }

# Run the Actor and wait for it to finish
run = client.actor("reapx/instagram-comment-authenticity").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 '{
  "handles": [
    "zendaya"
  ]
}' |
apify call reapx/instagram-comment-authenticity --silent --output-dataset

```

## MCP server setup

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

```

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/dFlHOOhJ0Ehyl7OOW/builds/yFx0uGejcnEDis1Sw/openapi.json
