Scraping Instagram Comments
Raw data collection. No assumed use case — returns the full dataset for downstream analysis.
Inputs
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
startUrls |
array | Optional | [] |
Instagram post URLs |
postIds |
array | Optional | [] |
Instagram post IDs |
maxItems |
number | Optional | Unlimited | Maximum comments to return |
customMapFunction |
string | Optional | — | JavaScript function to transform each output object |
How to Run
Using run_actor.js (recommended)
# Quick answer (table)
node scripts/run_actor.js --actor "apidojo~instagram-comments-scraper" --input '{"startUrls": ["https://www.instagram.com/p/POSTCODE/"], "maxItems": 100}'
# Save as CSV
node scripts/run_actor.js --actor "apidojo~instagram-comments-scraper" --input '{"startUrls": ["https://www.instagram.com/p/POSTCODE/"], "maxItems": 100}' --output results.csv --format csv
# Save as JSON
node scripts/run_actor.js --actor "apidojo~instagram-comments-scraper" --input '{"startUrls": ["https://www.instagram.com/p/POSTCODE/"], "maxItems": 100}' --output results.json --format json
REST API fallback
curl -X POST "https://api.apify.com/v2/acts/apidojo~instagram-comments-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls": ["https://www.instagram.com/p/POSTCODE/"], "maxItems": 100}'
If Apify MCP is available:
Use the Apify MCP call_actor tool with actor apidojo~instagram-comments-scraper and the input above.
Output Fields
| Field | Type | Description |
|---|---|---|
postId |
string | Parent post ID |
type |
string | Always comment |
id |
string | Comment ID |
userId |
string | Commenter user ID |
message |
string | Comment text |
createdAt |
string | Comment timestamp (ISO 8601) |
likeCount |
number | Likes on comment |
replyCount |
number | Number of replies |
user.id |
string | Commenter ID |
user.username |
string | Commenter @username |
user.fullName |
string | Commenter full name |
user.profilePicUrl |
string | Commenter profile picture |
isRanked |
boolean | Whether comment is ranked/top |
Edge Cases
- Private post: Returns 0 results. Tell user the post or account is private.
- Deleted post: Returns error. Verify URL is correct.
- Few comments: Normal — post may genuinely have low engagement.
- Missing fields: Some users may not have fullName or isVerified; handle gracefully.
- Rate limit: Reduce maxItems or run at off-peak time.