Extract public comments from Instagram posts and Reels. Give the Actor one or more public Instagram post URLs and it exports comment authors, text, relative timestamps, visible like counts, visible reply counts, source post URLs, and scrape timestamps to an Apify dataset.
This Actor is useful when you need comment data in a structured format for research, social listening, creator reporting, campaign QA, moderation workflows, or downstream analysis in spreadsheets, BI tools, and AI agents.
What can you do with this Actor?
- Export public comments from Instagram post, Reel, and TV URLs.
- Collect usernames, comment text, visible timestamps, likes, and reply counts.
- Process multiple post URLs in one run with a shared maximum result limit.
- Send results to Apify datasets, webhooks, integrations, API clients, or MCP tools.
- Schedule repeat checks for a known set of public posts.
Who is it for?
- Social media teams monitoring campaign posts.
- Agencies reporting engagement and audience responses.
- Researchers studying public discussions on specific posts.
- Support and moderation teams reviewing public feedback.
- Developers building Instagram comment data pipelines on Apify.
Input example
{
"startUrls": [
{ "url": "https://www.instagram.com/p/DN8-GjPkgjS/" }
],
"maxItems": 20,
"maxLoadMoreAttempts": 3
}
Input settings
| Field | Type | Description |
|---|---|---|
startUrls |
array | Public Instagram post, Reel, or TV URLs to extract comments from. |
maxItems |
integer | Maximum comment rows to save across all input URLs. |
maxLoadMoreAttempts |
integer | How many times to scroll or use public comment-loading controls per post. |
Output example
{
"postUrl": "https://www.instagram.com/p/DN8-GjPkgjS/",
"postShortcode": "DN8-GjPkgjS",
"commentId": "RE44LUdqUGtnalN8dXNlcnwxZCBhZ28",
"commentUrl": null,
"ownerUsername": "example_user",
"text": "Great post!",
"postedAtText": "1d ago",
"likesCount": 2,
"repliesCount": null,
"isReply": false,
"scrapedAt": "2026-08-02T20:53:22.000Z"
}
Input recipes
Scrape one public post
{
"startUrls": [{ "url": "https://www.instagram.com/p/DN8-GjPkgjS/" }],
"maxItems": 20,
"maxLoadMoreAttempts": 3
}
Scrape several posts with a shared cap
{
"startUrls": [
{ "url": "https://www.instagram.com/p/DN8-GjPkgjS/" },
{ "url": "https://www.instagram.com/instagram/p/DbbY9pdm6Q2/" }
],
"maxItems": 50,
"maxLoadMoreAttempts": 6
}
API usage
Apify CLI
apify call fetch_cat/instagram-comments-scraper --input-file input.json
JavaScript / Node.js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/instagram-comments-scraper').call({
startUrls: [{ url: 'https://www.instagram.com/p/DN8-GjPkgjS/' }],
maxItems: 20,
maxLoadMoreAttempts: 3,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python
from apify_client import ApifyClient
client = ApifyClient('MY_APIFY_TOKEN')
run = client.actor('fetch_cat/instagram-comments-scraper').call(run_input={
'startUrls': [{'url': 'https://www.instagram.com/p/DN8-GjPkgjS/'}],
'maxItems': 20,
'maxLoadMoreAttempts': 3,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~instagram-comments-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://www.instagram.com/p/DN8-GjPkgjS/"}],"maxItems":20,"maxLoadMoreAttempts":3}'
MCP and agent usage
Use Apify MCP to let AI agents run this Actor as a tool:
https://mcp.apify.com/?tools=fetch_cat/instagram-comments-scraper
Add it to Claude Desktop or Claude Code with:
claude mcp add apify-instagram-comments "https://mcp.apify.com/?tools=fetch_cat/instagram-comments-scraper"
Example MCP server configuration:
{
"mcpServers": {
"apify-instagram-comments": {
"url": "https://mcp.apify.com/?tools=fetch_cat/instagram-comments-scraper"
}
}
}
Example prompts:
- "Run the Instagram Comments Scraper for these post URLs and return the top recurring themes."
- "Export public comments from this Reel and group them by positive, negative, and question comments."
- "Save the comment dataset and tell me which usernames appear more than once."
Tips for better results
- Use direct post or Reel URLs, not profile URLs.
- Keep the first run small, then raise
maxItemsafter confirming the target post is public. - Increase
maxLoadMoreAttemptsonly when you expect many comments on a single post. - Use several smaller runs instead of one very large run when monitoring unrelated posts.
Limitations
- Only public comments visible on public Instagram post pages can be exported.
- Private posts, deleted posts, login-only comments, and account-specific views are not supported.
- Instagram may hide some likes, replies, timestamps, or comment permalinks from public views; missing values are saved as
nullinstead of guessed. - Very large comment threads may expose fewer rows publicly than the visible in-app count.
Data exports and integrations
Results are saved to the default Apify dataset. You can export the dataset as JSON, CSV, XLSX, XML, HTML, or RSS, or connect it to webhooks, Make, Zapier, Google Sheets, S3, data warehouses, and custom API consumers.
Support
Questions or bug reports? Open an Apify issue from the Actor page and include the run ID, input URL, expected result, and a short description of what looked wrong.