Instagram Tagged & Mention Posts: AI Sentiment & Captions avatar

Instagram Tagged & Mention Posts: AI Sentiment & Captions

Pricing

from $3.99 / 1,000 results

Go to Apify Store
Instagram Tagged & Mention Posts: AI Sentiment & Captions

Instagram Tagged & Mention Posts: AI Sentiment & Captions

Scrapes posts where an Instagram profile is tagged or mentioned, capturing captions, media, usernames, timestamps, engagement metrics, hashtags, and post URLs. Ideal for brand monitoring, influencer tracking, sentiment analysis, and automated UGC discovery at scale

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Scrapio

Scrapio

Maintained by Community

Actor stats

0

Bookmarked

25

Total users

0

Monthly active users

3 days ago

Last modified

Share

Instagram Scraper — Extract Tagged Posts, Mentions and AI Sentiment

The Instagram Tagged & Mentions Posts Scraper: AI Sentiment & Caption Analysis finds real posts where a profile is tagged by another account or @-mentioned in a caption, using Instagram's own "Tagged" tab feed rather than a guessed account list. Every caption is parsed for hashtags, mentions and sponsor usernames. Unlike scraping frameworks that return raw HTML, the Actor returns typed JSON — ready for your model, your database, or your pipeline without any parsing. Add an API key and the same pipeline scores caption and comment sentiment, emotion and topics with your choice of LLM provider. This guide covers every input, every output field, and how teams deploy it for brand monitoring, RAG pipelines and bulk dataset builds.

🧭 What Does Instagram Tagged & Mentions Posts Scraper: AI Sentiment & Caption Analysis Do?

Instagram Tagged & Mentions Posts Scraper: AI Sentiment & Caption Analysis is an Apify Actor that finds Instagram posts where a target profile is tagged by someone else or @-mentioned in a caption, then enriches every post with regex-based hashtag/mention/sponsor extraction and an optional multi-provider AI sentiment layer. It runs two passes per target: the profile's own feed (catching self-tags and self-mentions) and Instagram's real "Tagged" tab GraphQL feed — PolarisProfileTaggedTabContentQuery — which returns genuine posts by other accounts tagging the target. Every row is labeled with a discoverySource field (own_feed or tagged_feed) so you always know which pass produced it. No Instagram login or account is required — the Actor reads public profile pages and public GraphQL/API endpoints through an Apify proxy.

Key capabilities:

  • Two-pass discovery: own-feed self-tags/self-mentions plus Instagram's real Tagged-tab feed for genuine third-party tags
  • Deterministic hashtag (hashtags[]), mention (allMentions[]) and sponsor-username (sponsorUsernames[]) extraction from every caption — on by default, no key required
  • Optional AI sentiment, emotion and up to 3 topic keywords per caption and per collected comment, across 14 models from 7 providers
  • Configurable comment collection (maxCommentsPerPost, 0–50) feeding both the raw comment list and the AI layer
  • Full post, owner and comment metadata: likes, comments, video views/plays, paid-partnership/ad flags, and owner profile fields
  • Configurable proxy group via proxyConfiguration, defaulting to residential

⚡ Features & Capabilities

Capabilities split into two layers — always-on discovery and extraction, plus an optional AI layer — and into how this Actor sits next to the rest of the Scrapio Instagram lineup.

Core features

  • Real tagged-feed discovery via Instagram's own PolarisProfileTaggedTabContentQuery GraphQL query (doc_id 31297049089941898), not a hardcoded or fabricated account list
  • Own-feed scan for self-tagged/self-mentioned posts, labeled discoverySource: "own_feed"
  • Regex-based caption parsing into hashtags[] and allMentions[] — every hashtag and every @handle, not just one literal match
  • Sponsor-username normalization into a flat sponsorUsernames[] array, derived from the raw, inconsistently-shaped sponsor_user field
  • Optional AI enrichment fields: aiCaptionSentiment, aiCaptionEmotion, aiCaptionTopics[] on the post; aiSentiment, aiEmotion, aiTopics[] on each item in latest_comments[]
  • Full post/owner/comment metadata: like_count, comment_count, video_view_count, video_play_count, is_affiliate, is_paid_partnership, is_ad, owner{}, tagged_users[]
  • Results land in a standard Apify dataset — exportable as JSON, CSV, Excel, XML, or accessible via the Apify API

Instagram Tagged & Mentions Posts Scraper: AI Sentiment & Caption Analysis within the Scrapio data stack

This Actor covers tagged and mentioned posts with hashtag, mention, sponsor and optional AI-sentiment enrichment layered on top. For a dedicated first-party tagged-posts view without the mentions/AI layer, use Instagram-Tagged-Posts-Scraper-Hashtags-And-Profile-Data-Insights. For mention-focused engagement data on its own, use instagram-mentions-scraper-with-engagement-data. For deeper comment-thread collection beyond a post's top comments, use instagram-comments-scraper-with-engagement-analytics. For hashtag-performance research feeding the same caption text, use instagram-hashtag-engagement-scraper.

Why do developers and data teams scrape Instagram?

Instagram tagging and mention data serves a narrower set of audiences than a general profile or hashtag scraper — mostly teams tracking how a brand or creator is being talked about by other accounts, plus the usual AI, research and product-building crowd.

🏢 Brand, PR & influencer marketing teams

A brand or creator's handle goes into targetProfiles; the Actor returns every real post that tags or mentions it, with discoverySource, tagged_users[], mentioned_user, sponsorUsernames[] and is_paid_partnership on each row. Teams route tagged_feed rows into a monitoring dashboard, flag is_paid_partnership: true rows for FTC-disclosure review, and rank UGC by like_count/comment_count to find creators worth a partnership follow-up. The dataset exports straight to CSV, BigQuery, or any downstream tool via the Apify API — no manual "Tagged" tab scrolling required.

📊 AI training data and RAG indexing

caption, hashtags[], allMentions[] and each comment's text in latest_comments[] are the high-information text fields here, since they carry the actual language people use around a brand or creator. For RAG, index caption plus latest_comments[].text keyed by postUrl so an agent can answer "what are people saying about us on Instagram" with citable posts. For training data, aiCaptionSentiment/aiCaptionEmotion/aiCaptionTopics (when the AI layer is on) give pre-labeled sentiment examples that are useful as evaluation or fine-tuning data for a lighter in-house classifier, without paying an LLM to re-label the same captions twice.

📱 Competitive and market intelligence

Point targetProfiles at a competitor's handle and track sponsorUsernames[] across their tagged posts to see which paid partners they're running campaigns with, and watch like_count/comment_count/video_view_count on tagged_feed rows to gauge how much organic UGC volume a competitor's campaigns generate versus your own.

🔬 Research and academic use

Tagging and mention patterns, sentiment distribution across public comment threads, and paid-partnership disclosure rates are all researchable from this Actor's output. Scope is limited to what Instagram exposes on public profile and post pages — private accounts and private posts are out of reach, keeping the dataset within public-data-only bounds.

🎥 Product and SaaS development

The typed JSON output is a direct building block for brand-monitoring dashboards, influencer-discovery tools, and sentiment-tracking widgets — teams build on discoverySource, sponsorUsernames[] and the AI fields rather than re-implementing caption parsing or LLM prompting from scratch.

🍚 Input Parameters

None of the parameters below are required — every field has a working default and the Actor runs with the mrbeast prefill if targetProfiles is left empty.

ParameterRequiredTypeDescriptionExample Value
targetProfilesNoarray (stringList)Usernames or profile URLs to find tagged/mentioned posts for. One per line. Base key urlsOrKeywords is also accepted.["mrbeast"]
maxPostsPerProfileNointegerLimit on posts collected PER target, applied separately to the own-feed pass and the tagged-feed pass (so up to 2x this value per target). Minimum 10, maximum 1000, default 10. Base key maxPosts is also accepted.25
maxCommentsPerPostNointegerHow many of each post's latest comments to collect (also fed into the optional AI sentiment pass). Minimum 0, maximum 50, default 3.5
extractHashtagsAndMentionsNobooleanAdds hashtags[] and allMentions[] parsed from the caption via regex, plus sponsorUsernames[] normalized from the raw sponsor_user field. Default true, no API key needed.true
aiSentimentEnabledNobooleanEnables model-graded sentiment, emotion and topic tagging on captions and comments. Default false. Requires aiApiKey or a matching provider environment variable.false
aiModelNostring (enum)AI model/provider for sentiment analysis. Default "claude-haiku-4-5". Enum: claude-haiku-4-5, claude-sonnet-5, claude-opus-4-8, gpt-4o-mini, gpt-4o, gpt-4.1-mini, o3-mini, gemini-2.0-flash-lite, gemini-2.0-flash, gemini-2.5-flash, grok-3-mini, deepseek-chat, sonar, mistral-small-latest."claude-haiku-4-5"
aiApiKeyNostring (secret)Provider API key for AI sentiment enrichment. Falls back to the matching provider environment variable if left empty (ANTHROPIC_API_KEY / OPENAI_API_KEY / GEMINI_API_KEY / XAI_API_KEY / DEEPSEEK_API_KEY / PERPLEXITY_API_KEY / MISTRAL_API_KEY).(left empty)
proxyConfigurationNoobject (proxy)Controls the actual proxy used for every request. Prefilled to Apify residential proxy.{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}

JSON input example:

{
"targetProfiles": ["mrbeast", "feastables"],
"maxPostsPerProfile": 25,
"maxCommentsPerPost": 5,
"extractHashtagsAndMentions": true,
"aiSentimentEnabled": true,
"aiModel": "claude-haiku-4-5",
"aiApiKey": "",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Supported URL types and input formats

targetProfiles accepts three interchangeable formats, resolved by extract_username_from_url in the source: a bare username (mrbeast), an @-prefixed handle (@mrbeast), or a full profile URL (https://www.instagram.com/mrbeast/). Values are validated against Instagram's username character set before being used.

  • Bare username: mrbeast
  • Full profile URL: https://www.instagram.com/feastables/
  • @-handle: @nike

📦 Output Format

Output is a typed, normalized Apify dataset — one row per discovered post, with a consistent field set whether the row came from the own-feed pass or the real tagged-feed pass, and whether or not the AI layer is on (AI fields are simply null when it's off).

Output for Tagged & Mentioned Posts

{
"post_id": "3312345678901234567",
"short_code": "C1aBcDeFgHi",
"is_affiliate": false,
"is_paid_partnership": true,
"is_ad": false,
"like_count": 184320,
"comment_count": 2140,
"video_view_count": 5200110,
"video_play_count": 5200110,
"post_date": "2026-06-14T18:32:05.000Z",
"display_url": "https://scontent.cdninstagram.com/v/t51.2885-15/example.jpg",
"alt": "Photo by mrbeast",
"caption": "Huge shoutout to @feastables for the collab! #feastables #chocolate #giveaway",
"video_duration": 0.0,
"video_url": "",
"sponsor_user": [{"username": "feastables"}],
"owner": {
"id": "18428658",
"username": "mrbeast",
"is_verified": true,
"profile_pic_url": "https://scontent.cdninstagram.com/v/t51.2885-19/example_profile.jpg",
"blocked_by_viewer": false,
"restricted_by_viewer": null,
"followed_by_viewer": false,
"full_name": "MrBeast",
"has_blocked_viewer": false,
"is_embeds_disabled": false,
"is_private": false,
"is_unpublished": false,
"requested_by_viewer": false,
"pass_tiering_recommendation": true,
"edge_owner_to_timeline_media": {"count": 890},
"edge_followed_by": {"count": 448000000}
},
"latest_comments": [
{
"id": "17987654321098765",
"text": "This is amazing!!",
"created_at": 1750000000,
"did_report_as_spam": false,
"owner": {
"id": "5566778899",
"is_verified": false,
"profile_pic_url": "https://scontent.cdninstagram.com/v/t51.2885-19/fan.jpg",
"username": "fan_account_1"
},
"viewer_has_liked": false,
"edge_liked_by": {"count": 312},
"aiSentiment": "positive",
"aiEmotion": "joy",
"aiTopics": ["giveaway", "chocolate", "collab"]
}
],
"post_type": "tagged",
"tagged_users": [{"user_id": "9988776655", "username": "feastables", "full_name": "Feastables"}],
"mentioned_user": null,
"postUrl": "https://www.instagram.com/p/C1aBcDeFgHi/",
"hashtags": ["feastables", "chocolate", "giveaway"],
"allMentions": ["feastables"],
"sponsorUsernames": ["feastables"],
"aiCaptionSentiment": "positive",
"aiCaptionEmotion": "joy",
"aiCaptionTopics": ["giveaway", "chocolate", "collab"],
"discoverySource": "tagged_feed",
"success": true
}

Schema stability and export options

Every field name above is stable across runs regardless of which pass (own_feed/tagged_feed) produced the row, and the AI fields (aiCaptionSentiment, aiCaptionEmotion, aiCaptionTopics, and the per-comment aiSentiment/aiEmotion/aiTopics) are always present in the schema — they resolve to null when aiSentimentEnabled is off, a key is missing, or a model call fails, rather than being omitted, so downstream consumers never need to branch on a missing key. Rows that fail extraction are not pushed to the dataset at all, so no partial or error rows appear alongside real results. Export from the Apify dataset as JSON, CSV, Excel, XML, or RSS, or pull rows directly via the Apify API/SDK.

💡 Instagram Tagged & Mentions Posts Scraper: AI Sentiment & Caption Analysis Strategy Guide

🎯 Strategy 1: Real-time enrichment pipeline

Use this when a new brand mention needs a sentiment score attached the moment it appears. Trigger a run from your app or CRM whenever a handle needs checking → run the Actor with that handle in targetProfiles and aiSentimentEnabled: true → read back aiCaptionSentiment, aiCaptionEmotion, aiCaptionTopics[] and the per-comment AI fields on each returned row → write those fields back onto the matching CRM record or support ticket keyed by postUrl or short_code. Because AI fields degrade to null on any failure rather than throwing, the pipeline never has to special-case a bad model response.

🎯 Strategy 2: Scheduled monitoring and alerting

Use this to catch new tags or mentions as they happen rather than re-checking manually. Set up an Apify Schedule to run the Actor against the same targetProfiles list daily or hourly → diff the new run's dataset against the previous run on post_id/short_code to find genuinely new rows → alert on any new row where discoverySource is tagged_feed (a real third-party tag, not your own posting) or where is_paid_partnership is true. The Actor itself has no built-in scheduler or diffing — both are handled by the Apify platform's Schedule feature and your own comparison logic against the previous dataset.

🎯 Strategy 3: Bulk dataset build

Use this to build a research or training dataset covering many handles at once. Feed a full list of handles into targetProfiles in a single run, or split the list across parallel runs keyed by handle → let each run push directly to its dataset via the row_result charged event → aggregate all datasets to CSV or a database once runs complete. The source processes targets sequentially within a single run (one handle's own-feed and tagged-feed passes finish before the next handle starts), so bulk builds scale by running more Actor runs in parallel rather than by raising in-run concurrency.

Strategy comparison at a glance

StrategyBest forRun patternOutput format
Real-time enrichmentAttaching sentiment to a mention the moment it's foundOn-demand single run per eventJSON row read back immediately
Scheduled monitoringCatching new tags/mentions on a recurring basisApify Schedule, recurring runDataset diffed run-over-run
Bulk dataset buildResearch or training corpora across many handlesMultiple parallel runs, one per handle or batchAggregated CSV/database export
Scraper NameWhat it extracts
Instagram-Tagged-Posts-Scraper-Hashtags-And-Profile-Data-InsightsFirst-party tagged-posts feed with hashtag and profile insights, without the mentions/AI layer
instagram-mentions-scraper-with-engagement-data@-mention discovery with engagement metrics
instagram-comments-scraper-with-engagement-analyticsDeeper comment-thread collection beyond a post's top comments
instagram-hashtag-engagement-scraperHashtag-level engagement research
instagram-profile-scraper-with-bio-link-email-extractionProfile bio, link and contact-email extraction
twitter-profile-scraper-sentiment-analyzerCross-platform profile sentiment analysis on Twitter/X
reddit-comment-scraper-sentiment-lead-scoringCross-platform comment sentiment and lead scoring on Reddit

How to integrate Instagram Tagged & Mentions Posts Scraper: AI Sentiment & Caption Analysis with your stack

Instagram Tagged & Mentions Posts Scraper: AI Sentiment & Caption Analysis works with any language or tool that can call the Apify API — the examples below use the official Apify SDKs.

Python

import csv
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_API_TOKEN>")
run_input = {
"targetProfiles": ["mrbeast", "feastables"],
"maxPostsPerProfile": 25,
"maxCommentsPerPost": 5,
"extractHashtagsAndMentions": True,
"aiSentimentEnabled": True,
"aiModel": "claude-haiku-4-5",
"aiApiKey": "", # or set ANTHROPIC_API_KEY in the run's environment
}
run = client.actor("<YOUR_USERNAME>/instagram-tagged-mentions-scraper-ai-sentiment-caption-analysis").call(
run_input=run_input
)
rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())
with open("tagged_and_mentioned_posts.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=[
"short_code", "post_type", "discoverySource", "like_count",
"comment_count", "caption", "hashtags", "allMentions",
"sponsorUsernames", "aiCaptionSentiment", "aiCaptionEmotion", "postUrl",
])
writer.writeheader()
for row in rows:
writer.writerow({k: row.get(k) for k in writer.fieldnames})
print(f"Saved {len(rows)} posts to tagged_and_mentioned_posts.csv")

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });
const run = await client.actor('<YOUR_USERNAME>/instagram-tagged-mentions-scraper-ai-sentiment-caption-analysis').call({
targetProfiles: ['mrbeast', 'feastables'],
maxPostsPerProfile: 25,
maxCommentsPerPost: 5,
extractHashtagsAndMentions: true,
aiSentimentEnabled: true,
aiModel: 'claude-haiku-4-5',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Fetched ${items.length} posts`);
items.forEach((row) => {
console.log(row.short_code, row.discoverySource, row.aiCaptionSentiment, row.postUrl);
});

Async and scheduled pipelines

The Actor has no built-in webhook or scheduling code of its own — it relies on Apify platform features. Start a run via the Apify API or Console and poll client.run(runId).get() (or the dataset endpoint) until it finishes for fire-and-forget large jobs, or attach an Apify webhook to the run to get notified on completion instead of polling. For recurring monitoring, configure an Apify Schedule against the same input to re-run on a cron-style interval.

🎯 Who Needs Instagram Tagged & Mentions Posts Scraper: AI Sentiment & Caption Analysis? (Use Cases & Industries)

🏢 Brand, PR & influencer marketing teams

A social media manager puts a brand's handle into targetProfiles, gets back every real tagged_feed post from creators and customers, and filters is_paid_partnership: true rows into a weekly disclosure-compliance report while ranking the rest by like_count for potential ambassador outreach.

📊 AI/RAG engineering teams

A RAG engineer indexes caption and latest_comments[].text per postUrl so a support or brand-sentiment agent can answer "what are people tagging us in lately" with citable, typed post records instead of scraped HTML fragments.

📱 Competitive intelligence analysts

An analyst runs the same Actor against a competitor's handle monthly, tracking sponsorUsernames[] to see which creators or brands they're currently sponsoring and comparing video_view_count on tagged_feed rows against their own brand's numbers.

🔬 Researchers

Academic and market researchers use the public tagging, mention and sentiment fields to study influencer-marketing disclosure patterns or public sentiment around a brand, scoped strictly to what Instagram already shows on public profile and post pages.

🎥 Product and SaaS builders

A SaaS team builds a lightweight brand-monitoring or influencer-discovery product directly on the dataset's discoverySource, sponsorUsernames[] and AI sentiment fields, skipping the work of building their own caption parser or LLM prompt pipeline.

Scraping publicly accessible Instagram data is generally lawful in the US: in hiQ Labs v. LinkedIn Corp. (9th Cir., 2019), the court held that scraping data a platform makes publicly visible does not violate the Computer Fraud and Abuse Act. That precedent does not eliminate two separate risks. First, scraping may violate Instagram's own Terms of Service, which is a civil contract matter between the user and Instagram, not a criminal one. Second, because this Actor's output includes usernames, full names, profile pictures and comment text belonging to tagged and mentioned individuals, that output is personal data under GDPR and CCPA, and storing or processing it triggers those obligations regardless of the data's public origin.

Instagram Tagged & Mentions Posts Scraper: AI Sentiment & Caption Analysis returns only publicly accessible data. What you do with that data is your responsibility — consult legal counsel for commercial applications involving personal data.

❓ Frequently asked questions

Does the Actor work without an Instagram account?

Yes. It reads public profile pages and public GraphQL/API endpoints through an Apify proxy — no Instagram login, session cookie, or account credential is used anywhere in the source.

How does it handle Instagram's anti-scraping measures?

It routes every request through a configurable Apify proxy (residential by default), uses Chrome-TLS impersonation (via impit) for the tagged-feed auth and user-ID resolution steps because Instagram serves a reduced page to non-browser TLS fingerprints, and retries failed requests up to 3 times with short backoff delays.

Can I run it at scale without getting blocked?

The source caps pagination at 20 pages per profile per pass (max_pages_per_user) and processes target profiles sequentially within a run rather than concurrently, so scaling across many handles is done by running more Actor runs in parallel, not by raising in-run concurrency. No uptime or block-rate figure is published.

How fresh is the data?

Live per run — every run fetches directly from Instagram's own-feed and tagged-feed endpoints at request time; nothing is served from a cache.

Is the AI sentiment/caption analysis real, or just a label?

It's real. When aiSentimentEnabled is true and a valid API key is supplied (via aiApiKey or the matching provider environment variable), the Actor makes an actual call to the selected model — the Anthropic SDK for Claude models, or an OpenAI-compatible chat-completions call for OpenAI, Gemini, Grok, DeepSeek, Perplexity or Mistral — with a structured-output schema requesting sentiment, emotion and up to 3 topics per text. When the toggle is off, no key is present, or the call fails for any reason, every AI field simply resolves to null; the rest of the row, including the keyless hashtag/mention/sponsor extraction, is unaffected either way.

Which fields work best for AI training and RAG indexing?

For RAG, index caption and each latest_comments[].text keyed by postUrl. For training or evaluation data, aiCaptionSentiment, aiCaptionEmotion and aiCaptionTopics[] (when the AI layer is on) give consistently structured, pre-labeled examples. All fields return as typed primitives or arrays requiring no HTML parsing or normalization.

Does the Actor return personal data, and who is responsible for it?

Yes — owner, tagged_users[], mentioned_user and each latest_comments[].owner contain usernames, full names and profile pictures of real people, which is personal data under GDPR and CCPA. The Actor returns only publicly available data; the lawful basis for storing, processing or otherwise using it sits with the person running the Actor.

Does it work with Claude, ChatGPT and other AI agent tools?

There is no MCP server for this Actor. It's callable as a standard HTTP/Apify API endpoint by any agent framework, and every response is typed JSON — including the AI sentiment fields themselves — ready to drop into an LLM context window without parsing.

What's the difference between an own_feed row and a tagged_feed row?

own_feed rows come from scanning the target profile's own posts for self-tags or self-mentions; tagged_feed rows come from Instagram's real "Tagged" tab GraphQL connection and represent genuine posts by other accounts tagging the target. The discoverySource field on every row tells you which pass found it.

Does raising maxPostsPerProfile or maxCommentsPerPost change what I'm billed for?

Billing is per successful post row pushed to the dataset (the row_result charged event) — raising maxPostsPerProfile collects more rows per target and so charges for more of them, while maxCommentsPerPost only affects how much comment detail (and AI enrichment, if enabled) each existing row carries. Rows that fail extraction are never pushed, so they are never charged.

ℹ️ Disclaimer

Instagram Tagged & Mentions Posts Scraper: AI Sentiment & Caption Analysis extracts only publicly available data from Instagram. This tool is intended for lawful use cases only. Users are responsible for complying with Instagram's terms of service and applicable data protection laws in their jurisdiction.