# Instagram Comments Scraper (No Login) (`sfoln/instagram-post-comments`)

Scrape comments from public Instagram posts and reels, no login needed: text, date, likes, reply count and the commenter's handle, with optional replies linked to their parent. $0.30 per 1,000 comments + $0.003 per page of comments.

- Family: Social media data
- Categories: Social media, Lead generation, Automation
- Availability: on request (private on Apify). Email contact@sfoln.com with subject "Access request: Instagram Comments Scraper (No Login) (sfoln/instagram-post-comments)" before calling; calls fail until it is public.
- JSON: https://www.sfoln.com/actors/instagram-post-comments.json
- MCP: https://mcp.apify.com?tools=sfoln/instagram-post-comments
- REST (sync): POST https://api.apify.com/v2/actors/sfoln~instagram-post-comments/run-sync-get-dataset-items
- REST (async): POST https://api.apify.com/v2/actors/sfoln~instagram-post-comments/runs

Instagram Comments Scraper (No Login) gets comments from public Instagram posts and reels, one normalized record per comment: comment ID, text, date, likes, reply count, and the commenter's handle, ID and verification flag. Turn on includeReplies to also get the first page of replies to every comment, linked to their parent. It's built for audience research, sentiment analysis, giveaway draws, community management and AI agents.

## Price per delivered record

| Event | Price | Per 1,000 | Charged for |
| --- | --- | --- | --- |
| Instagram comment (`instagram-comment`) | $0.0003 | $0.30 / 1,000 | Charged once per comment or reply delivered as a dataset record. Post summary records are never charged. |
| Comments page (`instagram-comments-query`) | $0.003 | $3 / 1,000 | Charged once per page of comments that delivered at least one comment (replies not requested). Covers the per-request upstream fee. Also charged for an empty page the upstream billed (when the budget covers it). |
| Comments page with replies (`instagram-comments-with-replies-page`) | $0.075 | $75 / 1,000 | Charged instead of instagram-comments-query for every page that delivered comments when includeReplies is on (the upstream performs one reply lookup per comment and bills 15 credits per page). Also charged for an empty page the upstream billed (when the budget covers it). |

Pay-per-event, USD, billed by Apify; no platform usage charge. Only records with status `ok` are charged. Cap a run with `maxTotalChargeUsd`. Apify free plan: up to 5 per run.

## Run

```bash
curl -X POST "https://api.apify.com/v2/actors/sfoln~instagram-post-comments/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"posts":["https://www.instagram.com/reel/DOq6eV6iIgD"],"maxCommentsPerPost":15}'
```

MCP client configuration:

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=sfoln/instagram-post-comments"
    }
  }
}
```

Example prompt: Get the first 100 comments on the Instagram reel https://www.instagram.com/reel/DOq6eV6iIgD and tell me the overall sentiment and the most common questions.

## Input

Enter Instagram post or reel URLs. Each post produces one dataset record per comment plus one summary record per post.

| Field | Type | Default | Meaning |
| --- | --- | --- | --- |
| `posts` (required) | array | — | Post or reel URLs: Public post or reel URLs (https://www.instagram.com/p/… or /reel/…) or bare shortcodes. Duplicates are removed. Accounts on the Apify free plan can process up to 5 posts per run. |
| `maxCommentsPerPost` | integer | `50` | Max comments per post: How many comments to return per post (1–500), replies included. Each delivered comment is one charged event, plus one page event per page. |
| `includeReplies` | boolean | `false` | Include replies: Also return the first page of replies to every comment. Much slower, and each page costs the higher instagram-comments-with-replies-page fee instead of instagram-comments-query, because the upstream performs one reply lookup per comment. |
| `maxPosts` | integer | `100` | Max posts: Safety cap on the number of posts processed in this run. |
| `concurrency` | integer | `4` | Concurrency: How many posts are fetched in parallel (1–8). |
| `itemTimeoutSecs` | integer | `600` | Time limit per input (seconds): Pagination for one post stops cleanly shortly before this limit (60–3600). Raise it for very large per-input limits. |
| `includeRaw` | boolean | `false` | Include raw upstream response: Attach the unmodified provider object to each result record. |

Example input:

```json
{
  "posts": [
    "https://www.instagram.com/reel/DOq6eV6iIgD"
  ],
  "maxCommentsPerPost": 15
}
```

## Output

One record per input item with `status` (`ok` is charged; `not_found`, `error`, `skipped_*` are free) and `charged`. The run stores an `OUTPUT` summary record.

| Field | Type | Meaning |
| --- | --- | --- |
| `input` | string | object | Input: The post URL or shortcode as provided. |
| `recordType` | string | Record type: comment (one per delivered comment or reply, charged) \| post (one summary per post, never charged) |
| `position` | integer | Position: 1-based position of the comment within its input |
| `shortcode` | string | null | Post shortcode |
| `postUrl` | string | null | Post URL |
| `includeReplies` | boolean | Replies requested: Summary records only. |
| `commentId` | string | null | Comment ID |
| `text` | string | null | Text |
| `createdAt` | string | null | Created at: ISO 8601 UTC |
| `likes` | number | null | Likes |
| `repliesCount` | number | null | Replies: null when Instagram does not expose it |
| `isReply` | boolean | Is reply |
| `parentCommentId` | string | null | Parent comment ID: Set for replies |
| `authorHandle` | string | null | Author handle |
| `authorId` | string | null | Author ID |
| `authorIsVerified` | boolean | null | Author verified |
| `authorProfilePicUrl` | string | null | Author picture |
| `rowsDelivered` | integer | Comments delivered: Summary records only. |
| `pagesFetched` | integer | Pages fetched: Summary records only. |
| `pagesCharged` | integer | Pages charged: Summary records only. |
| `reachedEnd` | boolean | Reached end: Summary records only: the upstream reported no further pages. |
| `stopReason` | string | Stop reason: Summary records only: limit \| end \| budget \| max_pages \| deadline \| empty_pages \| error |
| `status` | string | Status: ok \| not_found \| error \| skipped_invalid \| skipped_budget \| skipped_free_plan |
| `charged` | boolean | Charged |
| `chargedEvent` | string | Charged event |
| `error` | object | Error |
| `warnings` | array | Warnings |
| `source` | string | Source |
| `fetchedAt` | string | Fetched at |

Example record:

```json
{
  "input": "https://www.instagram.com/reel/DOq6eV6iIgD",
  "recordType": "comment",
  "position": 1,
  "shortcode": "DOq6eV6iIgD",
  "postUrl": "https://www.instagram.com/p/DOq6eV6iIgD/",
  "commentId": "18051843701642870",
  "text": "\"...but who wants to know people who don't love animals anyway?\". ❤️",
  "createdAt": "2025-09-16T17:03:04.000Z",
  "likes": 0,
  "repliesCount": 0,
  "isReply": false,
  "parentCommentId": null,
  "authorHandle": "catherina_thijs",
  "authorId": "46773599357",
  "authorIsVerified": false,
  "authorProfilePicUrl": "https://scontent-dfw5-1.cdninstagram.com/v/t51.2885-19/….jpg",
  "status": "ok",
  "charged": true,
  "chargedEvent": "instagram-comment",
  "source": "scrapecreators",
  "fetchedAt": "2026-10-14T10:00:00.000Z"
}
```

## Related

- [Instagram Posts Scraper (No Login)](https://www.sfoln.com/actors/instagram-user-posts.md) (`sfoln/instagram-user-posts`)
- [Instagram Hashtag Scraper (No Login)](https://www.sfoln.com/actors/instagram-hashtag-posts.md) (`sfoln/instagram-hashtag-posts`)
- [TikTok Comments Scraper](https://www.sfoln.com/actors/tiktok-video-comments.md) (`sfoln/tiktok-video-comments`)
- [YouTube Comments Scraper](https://www.sfoln.com/actors/youtube-video-comments.md) (`sfoln/youtube-video-comments`)

Publisher: SFOLN LLC, contact@sfoln.com. Catalogue: https://www.sfoln.com/catalog.json. Agent guide: https://www.sfoln.com/agents.md.
