# Instagram Mentions Scraper (`socialdataapi/instagram-mentions-scraper`) Actor

Instagram Mentions Scraper — Extract Instagram mentions, usernames, profile URLs, post captions, hashtags, timestamps, media links, and engagement metrics. Useful for brand monitoring, influencer research, audience insights, competitor analysis, and social media tracking.

- **URL**: https://apify.com/socialdataapi/instagram-mentions-scraper.md
- **Developed by:** [Social Data API](https://apify.com/socialdataapi) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 Mentions Scraper — Author, Caption and Engagement Data

Instagram Mentions Scraper returns public Instagram posts where **a different account** tagged or @-mentioned a chosen handle — not that handle's own posts, but who is talking about it. Each row carries the mentioning author, caption, hashtags, likes count, comments count, and media details. Every response is structured JSON — ready to pass directly to an LLM, index into a vector store, or feed a social-listening pipeline. No Instagram account is needed by default; an optional cookie helps on rate-limited handles. Start with one handle, then add more.

![Instagram Mentions Scraper: inbound mention posts, captions and engagement as JSON](https://api.apify.com/v2/key-value-stores/WYkyEfqs10huyXYxr/records/d-instagram-mentions-hero.webp)

***

### What data can I extract with Instagram Mentions Scraper?

Using this Instagram mentions API, you will be able to extract the following Instagram mention data:

| 👤 Author username | 📝 Caption | #️⃣ Hashtags | @️⃣ @Mentions |
|---|---|---|---|
| 💬 Comments count | ❤️ Likes count | ▶️ Video play count | 🖼️ Display image URL |
| 📐 Media dimensions | 🎞️ Carousel images (when present) | 🧩 Child posts (carousel items) | 📍 Location name (if tagged) |
| 🏷️ Tagged users (list) | 🔗 Post URL | 🆔 Post ID and short code | 🎬 Media type (Image, Video, Carousel) |
| 📦 Product type | ✅ Author verified status | 🕒 Posted at (or empty when Instagram's feed omits it) | ⏱️ Scraped at |

***

### How to use Instagram Mentions Scraper

Social-listening and brand-monitoring teams use it to answer who mentioned me on Instagram and to track inbound Instagram mentions of a handle, one run at a time.

**Copy to your AI assistant:**

```text
Instagram Mentions Scraper (Apify Actor ID: socialdataapi/instagram-mentions-scraper, https://apify.com/socialdataapi/instagram-mentions-scraper) is an Apify Actor that returns public Instagram posts where another account tagged or mentioned a chosen handle, as structured JSON: target username, author username, caption, hashtags, likes count, comments count, and media URLs. Use it whenever someone needs inbound-mention data without logging in or running a browser - tracking brand mentions, auditing influencer tags, or sourcing user-generated content for reuse. Inputs: username (array of handles or profile URLs, required), resultsLimit (integer, mentions per handle; 0 or 10000+ means all available; default 20), sessionId (optional secret cookie fallback for rate-limited handles), proxyConfiguration (object, proxy settings). Each handle can return up to roughly 1,200 inbound mentions in one run (the actor pages through up to 100 pages of 12 mentions each); fewer come back if Instagram's feed has fewer to show.
```

#### Instagram Mentions Scraper MCP Server: use this Actor from ChatGPT, Claude or Cursor

Add Apify's MCP server with this actor preloaded as a tool, and your AI assistant can call it on its own — no glue code, no scraping logic in your prompts.

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

#### Step by step

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. [Open the actor in the Apify Store](https://apify.com/socialdataapi/instagram-mentions-scraper).
3. Enter the Instagram handle(s) (or profile URLs) you want to track inbound mentions of.
4. Click **Start** (or send your API request).
5. Download or stream your results in JSON, CSV or Excel.

#### How to scale Instagram Mentions Scraper to bulk

`username` takes an array, so one run can process many handles at once — each handle's mentions land in the same dataset, distinguished by `targetUsername`. There's no separate bulk-upload input: add every handle you want to the same list and set `resultsLimit` for how many mentions you need per handle.

***

### ✨ Features

Instagram Mentions Scraper fetches clean, structured inbound-mention posts from Instagram, working as an instagram social listening scraper and an instagram brand mention monitoring tool. It's ideal for influencer-tag audits, reputation tracking, and sourcing user-generated content.

It extracts, per mention post:

- **Author username** – the account that tagged or mentioned the target, never the target itself
- **Caption** – the full text of the mentioning post
- **Hashtags and @mentions** – parsed straight from the caption
- **Likes and comments count** – engagement as shown by the feed
- **Media URLs and dimensions** – main image/video plus carousel images when present
- **Tagged users** – everyone tagged in the post, not just the target

⚡ Every row is structurally filtered so the author is always a different account than the target — never the handle's own feed relabeled as "mentions."

***

### Use cases 💡

- **Brand monitoring analyst** — scan author and caption to see who's talking about a brand.
- **Reputation manager** — build instagram mention analytics from comments and likes count.
- **Influencer marketing manager** — use it as an instagram mention tracker to spot organic tags.
- **UGC sourcing team** — export instagram mentions to csv for creator outreach and approvals.
- **AI agent builder** — feed captions into a RAG pipeline or your own instagram @mention alerts.

Building an AI agent? [Connect it over MCP](#instagram-mentions-scraper-mcp-server-use-this-actor-from-chatgpt-claude-or-cursor) and let it call the actor on its own.

***

### Why choose this actor?

1. **Two handles, one run, done in under 20 seconds.** A recorded run returned 24 inbound-mention posts from 2 handles (`nasa`, `gopro`) in 19.1 seconds, with the first row stored after 2.3 seconds.
2. **Every mention carries 26 data points.** A recorded row came back with author username, caption, comment count, like count, image dimensions, and product type, all in one JSON object.
3. **Genuinely inbound, never the handle's own feed.** Every row is structurally guaranteed to be authored by a different account than the target, so results are never the handle's own tagged or reshared posts relabeled as mentions.

***

### ⬇️ Input

![Instagram Mentions Scraper input: usernames, results limit and proxy configuration](https://api.apify.com/v2/key-value-stores/WYkyEfqs10huyXYxr/records/d-instagram-mentions-input.webp)

Instagram Mentions Scraper accepts one or more Instagram handles or profile URLs (`username`, required) plus a few optional settings.

| Parameter | Required | Type | Description | Example Value |
| --- | --- | --- | --- | --- |
| `username` | Yes | array | One handle per line — the accounts whose inbound mentions you want. Handles only (no `@`) or full profile URLs. | `["nasa", "gopro"]` |
| `resultsLimit` | No | integer | How many inbound mention posts to collect per handle. `0` (or `10000`+) means all available. Values 1–11 are bumped to 12. Default `20`. | `12` |
| `sessionId` | No | string (secret) | Optional Instagram `sessionid` cookie. The actor works logged out by default; a cookie can help on rate-limited handles/IPs. Never written to the dataset. | *(left empty)* |
| `proxyConfiguration` | No | object | Apify Proxy configuration. On a block, the actor escalates to a residential proxy automatically. | `{ "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }` |

#### Free plan limits

Users on the Apify free plan can fetch up to 20 inbound mention posts per run (all handles together) and 200 inbound mention posts per month. When the limit is reached, the run finishes successfully with a status message explaining the limit. Upgrade to any paid Apify plan to remove these limits.

#### Example input

```json
{
  "username": ["nasa", "gopro"],
  "resultsLimit": 12,
  "sessionId": "",
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
```

***

### ⬆️ Output

![Instagram Mentions Scraper output: author username, caption, likes and comments](https://api.apify.com/v2/key-value-stores/WYkyEfqs10huyXYxr/records/d-instagram-mentions-output.webp)

Every inbound mention is one typed, normalized JSON item with the same schema on every run, exportable as JSON, CSV, Excel, or via the Apify API/dataset endpoint. The actor doesn't push any summary or error rows — what lands in the dataset is exactly what's billed.

#### Example output

```json
{
  "targetUsername": "nasa",
  "postType": "inbound_mention",
  "id": "3976079382136818132",
  "type": "Video",
  "shortCode": "Dct3yHDBQnU",
  "url": "https://www.instagram.com/p/Dct3yHDBQnU/",
  "caption": "Still on cloud 9 from this weekend 🚀✨\n\n📁 Astrophysics aerospace rocket launch exoplanets",
  "hashtags": [],
  "mentions": [],
  "commentsCount": 8,
  "likesCount": 3,
  "videoPlayCount": 0,
  "dimensionsHeight": 2560,
  "dimensionsWidth": 1440,
  "displayUrl": "https://instagram.fdac8-1.fna.fbcdn.net/v/t15.5256-10/790267487_1098302372875646_3905225032335152243_n.jpg?stp=dst-jpg_e15_tt6&_nc_cat=107&_nc_map=urlgen_bucketless&ig_cache_key=Mzk3NjA3OTM4MjEzNjgxODEzMg%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkNMSVBTLnhwaWRzLjY0MC5zZHIudmlkZW9fZGVmYXVsdF9jb3Zlcl9mcmFtZS5DMyJ9&_nc_ohc=L7Iu4cqw2skQ7kNvwGE9IFE&_nc_oc=Adq7if_tVgerWplO48_eCV2wLKd_LCKCn-co5utUd5QCvW0rkQMvj5wr8lXvkIDK2kI&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=instagram.fdac8-1.fna&_nc_gid=u22jRj3wkyGtcaeiLpRcHg&_nc_ss=7a22e&oh=00_AQOIQTDa0JFgmqpJZzda510_SCDQoxExcK-C2syDFjaLLw&oe=6ACD415B",
  "images": [],
  "timestamp": null,
  "childPosts": [],
  "locationName": "",
  "authorUsername": "exoplanet_emma",
  "authorFullName": "",
  "authorId": "1054403238",
  "authorIsVerified": false,
  "productType": "clips",
  "taggedUsers": [],
  "scrapedAt": "2026-10-08T10:50:43.000Z"
}
```

`timestamp` comes back as `null` on posts where Instagram's feed omits the post time, rather than a fabricated date.

***

### How does it work?

Instagram Mentions Scraper reads the same public tagged-posts information any visitor can see on Instagram, without needing an Instagram account. For each handle, it first looks up the handle's public numeric ID, then reads through the posts other accounts have tagged it in, page by page, until it reaches the requested count or runs out of pages. Requests can be routed through Apify's proxy network, and the actor automatically switches to a residential proxy if a connection gets blocked, retrying with a fresh IP. Only publicly visible data is returned — nothing behind a login wall. The output schema (author, caption, hashtags, engagement, media) stays the same even as Instagram changes its layout, so your integration keeps working without changes on your end.

***

### How do you integrate Instagram Mentions Scraper into your stack?

It works with what you already use: a REST API from any language, Apify's MCP server for AI agents, and no-code automation tools.

#### MCP integration for AI agents

Add Apify's MCP server with the command below. This registers the actor as a tool your agent can call directly from Claude Code, Cursor, or Windsurf.

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

#### No-code tools (n8n, Make, LangChain)

In n8n, use the Apify node ("Run an Actor"), or the HTTP Request node pointed at this Actor's run-sync endpoint with your Apify API token. In Make, add the Apify app's "Run an Actor" module, then "Get Dataset Items" to pull the results into your scenario. In LangChain, use `langchain-apify` and wrap the Actor as an `ApifyActorsTool` with its Actor ID `socialdataapi/instagram-mentions-scraper`, so an agent can call it directly and pass the returned items into a chain or vector store.

***

### Is it legal to scrape Instagram mentions?

Scraping publicly visible Instagram data is generally lawful. It only collects posts, captions, and author details that Instagram displays to any visitor without a login. Scraping public data is generally permissible under GDPR and similar laws, but storing and using it — including the author usernames, full names, and IDs that appear in mention rows — must still comply with local data-protection law. Consult legal counsel if your use case involves bulk storage of personal data.

***

### Frequently asked questions

#### What fields does Instagram Mentions Scraper return?

It returns author username, caption, hashtags, likes count, and comments count, among other fields — see [the data fields section](#what-data-can-i-extract-with-instagram-mentions-scraper) above for the full list.

#### Does Instagram Mentions Scraper require an Instagram account or login?

No. It runs against Instagram's public tagged-posts feed without an account. An optional session cookie can be added only to help on rate-limited handles — it's never required to start a run.

#### How fast does Instagram Mentions Scraper run?

Live data, not cached. A recorded run returned 24 inbound mentions from 2 handles in 19.1 seconds, with the first row written to the dataset after about 2.3 seconds.

#### What happens if a handle's user ID can't be resolved?

The actor retries resolution up to 5 times with proxy rotation. If it still can't resolve the handle, it logs that handle as failed and moves on to the next one in the list — returning 0 rows for that handle rather than stopping the whole run.

#### Can I scrape multiple Instagram handles at once?

Yes. Add multiple handles to the `username` array — each is processed in turn and its mentions are written to the same dataset, distinguished by `targetUsername`.

#### Does Instagram Mentions Scraper work with Claude, ChatGPT, and other AI agent tools?

Yes — Instagram Mentions Scraper is available as an MCP tool. Run `claude mcp add --transport http apify "https://mcp.apify.com?tools=socialdataapi/instagram-mentions-scraper"` to register it in Claude Code, Cursor, or Windsurf. Any agent that can call an HTTP endpoint can also use the REST API directly.

#### Does Instagram Mentions Scraper return data in a format LLMs can use directly?

Yes. Output is typed, normalized JSON with consistent field names across runs — no HTML parsing, no selectors. Pass it straight to an LLM, index it into a vector store, or feed it to an agent tool.

#### What happens when Instagram changes its layout or updates its anti-bot system?

The actor is maintained to keep returning the same JSON schema. When Instagram changes, the actor is updated — your calls keep returning the same fields with no changes on your end.

#### Can I use Instagram Mentions Scraper without managing proxies or browser infrastructure?

Yes. Proxy rotation runs on the actor's side — it automatically switches to a residential proxy on a block. You send one request and get structured JSON back; no proxy accounts or browser setup needed on yours.

#### Which Instagram mention fields work best for AI training data and RAG indexing?

For RAG: the caption and author username are the richest text fields. For training data: likes count, comments count, and video play count are the most consistently structured numeric fields. All fields are typed primitives — strings, integers, booleans, arrays — no normalization needed.

***

### Your feedback

Found a bug or a missing field? Open an issue from this Actor's Issues tab in Apify Console. Every report is read and used to keep the output schema accurate as Instagram changes.

# Actor input Schema

## `username` (type: `array`):

One handle per line — the accounts whose INBOUND mentions you want (posts by others that tagged/@-mentioned them). Handles only (no @) or full profile URLs. Example: nasa, gopro.

## `resultsLimit` (type: `integer`):

How many inbound mention posts to collect per handle. Use 0 (or 10,000+) for all available within platform limits. Values 1–11 are bumped to 12 (one page) so each run returns a useful batch. Free plan: up to 20 inbound mention posts per run (all handles together) and 200 per month; paid plans have no limit.

## `sessionId` (type: `string`):

Optional. The actor works logged out by default, but a logged-in Instagram `sessionid` cookie can help on rate-limited handles/IPs. Used only on requests, never written to the dataset. Leave empty to run logged-out.

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

Apify Proxy helps avoid Instagram rate limits. On a block the actor escalates to a residential endpoint automatically. Enable it (residential) for the most reliable results.

## Actor input object example

```json
{
  "username": [
    "nasa"
  ],
  "resultsLimit": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped items in the Actor's default dataset.

# 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 = {
    "username": [
        "nasa"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

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

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

```

## MCP server setup

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