Instagram Comment Leads Extractor
Pricing
from $1.60 / 1,000 comment results
Instagram Comment Leads Extractor
Extract leads from Instagram post and reel comments. Enrich commenter profiles, detect buying intent, score leads, and export flat CSV-friendly rows for outreach, prospecting, and social listening.
Pricing
from $1.60 / 1,000 comment results
Rating
0.0
(0)
Developer
Delowar Munna
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share

Extract leads from Instagram post and reel comments. Enrich commenter profiles, detect buying intent, score leads, and export flat CSV-friendly rows for outreach, prospecting, and social listening.
What does this actor do?
Instagram Comment Leads Extractor is an Apify Actor that turns Instagram post and reel comments into actionable lead records. It identifies who is commenting, detects buying intent and contact signals, optionally enriches commenter profiles, and outputs one clean row per comment or per commenter — ready for CRM import, Google Sheets, or downstream enrichment.
Unlike generic Instagram comment scrapers that focus on raw comment data, this actor is lead-generation-first — built for agencies, brands, and sales teams who need prospect lists, not comment dumps.
Each comment row includes:
- Post context — source URL, post owner, caption, likes, comment count
- Comment data — text, timestamp, likes, reply status
- Commenter identity — username, full name, profile URL, verified status
- Optional enrichment — follower/following/post counts, bio, external URL, category
- Intent signals — question detection, buying intent, contact intent, recommendations, complaints
- Lead scoring — heuristic 0-100 score with transparent reasons
- Keyword matching — custom keyword tagging
How it works
- Input — Accept one or more public Instagram post/reel URLs
- Extraction — Fetch post metadata and paginate comments via Instagram API
- Filtering — Apply keyword filters, minimum likes, language allowlist
- Analysis — Detect intent signals, match keywords, compute lead scores
- Enrichment — Optionally fetch commenter public profile data
- Aggregation — Optionally aggregate per commenter across multiple posts
- Export — Output flat, CSV-friendly rows
Use cases
Extract leads from competitor posts
A skincare brand wants commenters from competitor reels discussing acne, product recommendations, or purchase decisions.
Find high-intent commenters
A local service business wants comments containing phrases like "price?", "where are you located?", "DM me", "need this", "available in Canberra?", or "how can I order?".
Build creator or customer prospect lists
A UGC agency wants to identify active commenters on beauty, travel, or food niche posts, then optionally enrich profile-level details.
Social listening
A brand wants comments grouped by keyword themes like complaints, questions, praise, comparison, or buying intent.
Export clean CSV for outreach
A user needs one row per comment or one row per commenter, ready for Google Sheets, Airtable, CRM import, or downstream enrichment.
Sample input
Example 1 — Quick comment export
{"startUrls": ["https://www.instagram.com/p/DXFnCHojbs-/","https://www.instagram.com/reel/DXG2abcDEF/"],"maxCommentsPerUrl": 200,"outputMode": "comment_rows","detectIntentSignals": true,"detectQuestionComments": true,"enableLeadScore": true}
Example 2 — Lead discovery with enrichment
{"startUrls": ["https://www.instagram.com/reel/DXF12abcXYZ/","https://www.instagram.com/reel/DXG98defUVW/"],"maxCommentsPerUrl": 500,"outputMode": "both","includeReplies": true,"maxRepliesPerComment": 10,"enrichCommenterProfile": true,"includeProfileBio": true,"includeProfileExternalUrl": true,"includeProfileCounts": true,"detectIntentSignals": true,"enableLeadScore": true,"tagKeywords": ["price", "order", "available", "interested", "dm"],"dedupeCommentersAcrossUrls": true,"aggregateCommenterMetrics": true}
Input reference
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | string[] | — | Instagram post or reel URLs (required) |
maxCommentsPerUrl | integer | 500 | Max comments per URL |
maxRepliesPerComment | integer | 10 | Max replies per comment |
maxUrls | integer | 50 | Max URLs to process |
outputMode | string | "comment_rows" | comment_rows, commenter_rows, or both |
includeReplies | boolean | false | Include reply threads |
onlyPinnedComments | boolean | false | Only pinned comments (best effort) |
sortMode | string | "default" | default, top_first, newest_first |
minCommentLikes | integer | 0 | Minimum comment likes filter |
keywordInclude | string[] | [] | Only comments with these keywords |
keywordExclude | string[] | [] | Exclude comments with these keywords |
languageAllowlist | string[] | [] | Language filter (best effort) |
enrichCommenterProfile | boolean | false | Fetch commenter profile data |
includeProfileBio | boolean | true | Include bio text |
includeProfileExternalUrl | boolean | true | Include external URL |
includeProfileCounts | boolean | true | Include follower/post counts |
includeRecentActivitySnapshot | boolean | false | Include recent activity |
detectIntentSignals | boolean | true | Detect buying/contact intent |
detectQuestionComments | boolean | true | Detect questions |
tagKeywords | string[] | [] | Custom keywords to tag |
enableLeadScore | boolean | true | Compute lead score (0-100) |
dedupeCommentersAcrossUrls | boolean | true | Deduplicate commenters |
keepFirstSeenCommentOnly | boolean | false | One comment per commenter |
aggregateCommenterMetrics | boolean | true | Aggregate commenter metrics |
requestTimeoutSecs | integer | 300 | Request timeout |
maxConcurrency | integer | 1 | Max concurrent URLs |
debugMode | boolean | false | Verbose logging |
Output
The run produces four dataset views — Comment Rows, Commenter Rows, Lead Signals, and Contact Hints — all backed by the same dataset and each tuned for a specific workflow.

Comment Rows
One row per comment, flat and CSV-friendly. Use this view for raw comment analysis, moderation, or as the base feed for downstream enrichment.
{"sourceUrl": "https://www.instagram.com/p/DXFnCHojbs-/","sourceType": "post","postId": "3874674723871636286_217723373","shortcode": "DXFnCHojbs-","postOwnerUsername": "CNN","postCaption": "Democratic Rep. Eric Swalwell announced Monday he planned to resign from Congress following explosive allegations of sexual misconduct against him.\n\nThe announcement from the California Democrat comes after mounting pressure from both Democrats and Republicans to step aside from his role in the House of Representatives.","postTimestamp": "2026-04-13T21:54:09.000Z","postLikeCount": 2840,"postCommentCount": 352,"commentId": "dom_2_1776130587350","parentCommentId": null,"isReply": false,"commentText": "👏👏👏 And his bid for California governor. Don't care if you're a democrat or a republican or a flying purple people eater if you're accused of sexual assault, you deserve what you get.","commentTextNormalized": "👏👏👏 and his bid for california governor. don't care if you're a democrat or a republican or a flying purple people eater if you're accused of sexual assault, you deserve what you get.","commentTimestamp": "2026-04-14T01:32:29.000Z","commentLikeCount": 0,"commenterUsername": "salty_but_humble_","commenterFullName": null,"commenterProfileUrl": "https://www.instagram.com/salty_but_humble_/","commenterIsVerified": false,"commenterFollowerCount": null,"commenterFollowingCount": null,"commenterPostCount": null,"commenterBio": null,"commenterExternalUrl": null,"commenterCategory": null,"commenterIsBusinessLike": null,"commenterRecentPostCount": null,"containsQuestion": false,"containsBuyingIntent": false,"containsContactIntent": false,"intentTags": null,"matchedKeywords": null,"leadScore": 30,"leadReason": "detailed_comment|multi_sentence","extractedAt": "2026-04-14T01:36:41.558Z"}
Commenter Rows
One row per unique commenter, aggregated across source URLs. Use this view when you want a de-duplicated prospect list with per-person activity metrics.
{"commenterUsername": "salty_but_humble_","commenterFullName": null,"commenterProfileUrl": "https://www.instagram.com/salty_but_humble_/","commenterIsVerified": false,"commenterFollowerCount": null,"commenterFollowingCount": null,"commenterPostCount": null,"commenterBio": null,"commenterExternalUrl": null,"commenterCategory": null,"commenterIsBusinessLike": null,"totalCommentsCaptured": 2,"totalRepliesCaptured": 0,"distinctSourceUrls": 1,"firstSeenCommentAt": "2026-04-14T01:32:29.000Z","lastSeenCommentAt": "2026-04-14T01:32:29.000Z","sourceOwnerUsernames": "CNN","sourceShortcodes": "DXFnCHojbs-","exampleComments": "@american_muscle_truck your entire profile screams that you're compensating. 🍆. Ladies, you know exa | 👏👏👏 And his bid for California governor. Don't care if you're a democrat or a republican or a flying","matchedKeywords": null,"aggregateIntentTags": null,"aggregateLeadScore": 30,"aggregateLeadReason": "active_commenter","extractedAt": "2026-04-14T01:36:42.014Z"}
Lead Signals
A focused view on lead-qualifying signals. Use this when you want to quickly rank commenters by buying intent, question presence, and lead score without the post-level noise.
{"commenterUsername": "dannyperezcu","commenterProfileUrl": "https://www.instagram.com/dannyperezcu/","commentText": "Why you had to do it man why","containsQuestion": true,"containsBuyingIntent": false,"containsContactIntent": false,"matchedKeywords": null,"intentTags": "question","leadScore": 35,"leadReason": "question","commenterIsVerified": false,"commenterFollowerCount": null,"commenterIsBusinessLike": null,"sourceUrl": "https://www.instagram.com/p/DXFnCHojbs-/","postOwnerUsername": "CNN"}
Contact Hints
A contact-oriented slice that highlights bio, external URL, category, and profile metrics next to the comment. Use this view to shortlist commenters you can actually reach out to (populated when enrichCommenterProfile is enabled).
{"commenterUsername": "salty_but_humble_","commenterFullName": null,"commenterProfileUrl": "https://www.instagram.com/salty_but_humble_/","commenterBio": null,"commenterExternalUrl": null,"commenterCategory": null,"commenterFollowerCount": null,"commenterFollowingCount": null,"commenterPostCount": null,"commenterIsBusinessLike": null,"commentText": "@american_muscle_truck your entire profile screams that you're compensating. 🍆. Ladies, you know exactly what I mean about these big truck driving little wiener idiots 😂","sourceUrl": "https://www.instagram.com/p/DXFnCHojbs-/"}
Intent tags
| Tag | Meaning |
|---|---|
question | Comment contains a question |
buying_intent | Mentions price, availability, ordering |
contact_intent | Mentions DM, email, collaboration |
recommendation_request | Asks for recommendations |
complaint | Negative feedback |
spam_like | Spam patterns detected |
emoji_only | Comment is emoji-only |
generic_praise | Single-word generic praise |
All intent tags and lead scores are heuristic best-effort classifications, not guaranteed labels.
Lead scoring
Heuristic 0-100 score based on comment content and commenter profile signals:
Positive signals: questions (+15), buying intent (+25), contact intent (+20), detailed comment (+5), liked comment (+5-10), verified commenter (+10), commenter with external URL (+10), business-like commenter (+10), keyword matches (+10)
Negative signals: emoji-only (-30), generic praise (-20), spam patterns (-40), very short comment (-10)
Pricing
Pay-per-event pricing:
comment-result: one event per comment row outputcommenter-result: one event per aggregated commenter row output
The actor respects user spending limits — when the configured limit is reached, the run stops gracefully.
Tips for best results
- Start small — test with
maxCommentsPerUrl: 20to verify results - Use keyword filters —
keywordIncludeandtagKeywordshelp find high-intent comments - Enable enrichment selectively —
enrichCommenterProfilesignificantly increases run time; use it for smaller batches - Commenter rows for prospecting — use
outputMode: "commenter_rows"withdedupeCommentersAcrossUrls: trueto get one row per person
Local development
cd actornpm installnpm start # Run with INPUT.jsonnpm run dev # Run with local storage