Instagram Mentions Tagged Brand Monitor avatar

Instagram Mentions Tagged Brand Monitor

Pricing

from $3.60 / 1,000 matched posts

Go to Apify Store
Instagram Mentions Tagged Brand Monitor

Instagram Mentions Tagged Brand Monitor

Track Instagram posts where a brand or account is tagged or mentioned. Export flat, analytics-ready data for brand monitoring, UGC discovery, influencer campaign tracking, and competitor research.

Pricing

from $3.60 / 1,000 matched posts

Rating

0.0

(0)

Developer

Delowar Munna

Delowar Munna

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 days ago

Last modified

Share

Instagram Mentions / Tagged Brand Monitor

Instagram Mentions / Tagged Brand Monitor

Track Instagram posts where a brand or account is tagged or mentioned. Export flat, analytics-ready data for brand monitoring, UGC discovery, influencer campaign tracking, and competitor research.

What does this actor do?

Instagram Mentions / Tagged Brand Monitor is an Apify Actor built for brand monitoring workflows — not generic scraping. Point it at one or more Instagram handles, and it returns one flat row per matched post that tags or mentions the target, ready for CSVs, Google Sheets, SQL tables, and BI tools.

Unlike raw Instagram scrapers that dump every post of a profile, this actor is monitoring-first. It is designed to answer: "Where does my brand / client / creator show up on Instagram, and what do those posts look like?"

Each matched-post row includes:

  • Monitoring contextmonitorTarget, matchedType (tag / mention / both), matchSource, isTagMatch, isMentionMatch, discoveryTimestamp, runId
  • Post identitypostId, postShortcode, postUrl, postType, postCaption, postTimestamp, postDate
  • AuthorauthorUsername, authorFullName, authorProfileUrl, authorIsVerified, optional follower/following/posts counts, category
  • EngagementlikesCount, commentsCount, viewsCount, videoDurationSeconds
  • Content analysishashtags, mentions, locationName, isSponsoredHint, isPotentialUGC, hasBrandKeywordHint, brandKeywordMatches
  • MediamediaCount, imageUrl, videoUrl, thumbnailUrl
  • AttributioncoauthorUsernames, taggedUsernames, mentionedUsernames, sponsorLabel
  • Reporting convenienceengagementTotal, engagementRateApprox, authorFollowerBucket, postAgeDays

Who this is for

  • Agencies monitoring client mentions and campaign content
  • Brands / ecommerce teams surfacing customer and influencer content featuring their account
  • Influencer campaign managers verifying required tags and mentions
  • UGC sourcing teams identifying posts worth repurposing or reviewing
  • Competitor analysts tracking where competitor brands are referenced
  • Automation builders sending mention events into Slack, Airtable, Sheets, Notion, or CRMs

How it works

  1. Input — One or more Instagram usernames to monitor (no @) plus your Instagram sessionid cookie.
  2. Authentication — The actor installs your sessionCookie on the browser session so Instagram's tagged-feed endpoints stop login-walling requests (see Authenticating below).
  3. Resolution — Each target is resolved to a userId and public profile.
  4. Discovery — The actor calls Instagram's tagged-feed endpoint, pages through the results, and falls back to DOM scrolling if needed.
  5. Classification — Each post is checked for tagged relationships, coauthor credits, and caption @mentions of the target.
  6. Filtering — Date window, post type, ownership, and dedupe filters are applied.
  7. Output — One flat row per matched post, billed as matched-post.

Availability of fields like viewsCount, exact follower counts, and some media URLs depends on Instagram's public visibility at run time.

Authenticating

Instagram requires an authenticated session to serve tagged-feed data reliably — both the REST endpoint (/api/v1/feed/usertags/...) and the SPA at /<user>/tagged/ login-wall guest traffic, even from residential IPs. So the actor needs your own sessionid cookie to retrieve data. Runs without a sessionCookie will be rejected at input validation.

  1. In your web browser, go to instagram.com and sign in with the account you want to monitor with.
  2. Open DevTools:
    • Chrome/Edge: F12 or Ctrl+Shift+I (macOS: ⌘⌥I)
    • Firefox: F12 or Ctrl+Shift+I
  3. Go to the Application tab (Chrome/Edge) or Storage tab (Firefox).
  4. In the left sidebar, expand Cookies and select https://www.instagram.com.
  5. Find the row named sessionid and copy its Value.
  6. Paste the value into the Instagram sessionid Cookie input of this actor.
  7. Leave the browser tab open — signing out or closing all Instagram tabs can rotate the sessionid and invalidate the one you just pasted.

Security

The cookie is used only for the current run. It is not logged, not written to the dataset, and not persisted between runs. Treat it like a password — anyone with it can act as you on Instagram.

Tips for a healthy session

  • Use a secondary Instagram account rather than your main one.
  • Avoid very high-volume scraping; the actor paces itself, but keep runs within realistic monitoring volumes.

Troubleshooting

Log messageWhat it meansFix
Missing Instagram sessionid cookie.The sessionCookie input was empty.Paste a non-empty sessionid value and rerun.
sessionid is likely expired or invalidInstagram served a login wall despite the cookie — usually because the sessionid was rotated or expired.Log into instagram.com in a fresh browser session and paste a new sessionid.
No csrftoken cookieThe initial instagram.com page didn't set a csrftoken, often an IP-level rate limit.Wait 10 minutes and rerun. If it persists, switch Instagram accounts.
sessionid=NO in cookie logThe page.setCookie call didn't install the value (empty or malformed).Verify you copied the full sessionid value — it's typically 40+ characters and URL-encoded (%3A, etc.).

Sample input

Example 1 — Monitor one brand handle

{
"targets": ["nike"],
"sessionCookie": "YOUR_INSTAGRAM_SESSIONID_COOKIE",
"resultsLimit": 200,
"includeTagged": true,
"includeMentioned": true,
"postTypes": ["all"],
"dedupeByPostId": true
}

Example 2 — UGC discovery, exclude brand's own posts

{
"targets": ["glossier", "fentybeauty"],
"sessionCookie": "YOUR_INSTAGRAM_SESSIONID_COOKIE",
"resultsLimit": 300,
"includeTagged": true,
"includeMentioned": true,
"excludeOwnPosts": true,
"postTypes": ["post", "reel", "carousel"],
"startDate": "2026-01-01",
"brandKeywords": ["gift", "unboxing", "review"]
}

Example 3 — Scheduled campaign verification

{
"targets": ["mybrand"],
"sessionCookie": "YOUR_INSTAGRAM_SESSIONID_COOKIE",
"resultsLimit": 500,
"includeTagged": true,
"includeMentioned": true,
"startDate": "2026-03-01",
"endDate": "2026-03-31",
"sortOrder": "newest",
"includeAuthorDetails": true
}

Input reference

FieldTypeDefaultDescription
targetsstring[]Instagram usernames to monitor (required, no leading @)
sessionCookiestringRequired. Your Instagram sessionid cookie — tagged-feed endpoints are login-walled. See Authenticating above.
resultsLimitinteger200Max matched posts per target
maxTargetsinteger25Max targets processed in a single run
includeTaggedbooleantrueInclude posts where the target is tagged
includeMentionedbooleantrueInclude posts that mention the target in the caption
startDatestringOptional lower date bound (ISO 8601)
endDatestringOptional upper date bound (ISO 8601)
postTypesstring[]["all"]all, post, reel, video, carousel
sortOrderstringplatform_defaultplatform_default, newest, oldest
includeAuthorDetailsbooleantrueInclude author verified / follower / category fields
includeCaptionbooleantrueInclude the post caption
includeRecentCommentsPreviewbooleanfalseBest-effort preview of recent comments
brandKeywordsstring[][]Additional brand-related keywords to tag
dedupeByPostIdbooleantrueReturn each post once across targets
excludeOwnPostsbooleanfalseSkip posts authored by the target
requestTimeoutSecsinteger300Per-target handler timeout
maxConcurrencyinteger1Max targets processed in parallel
debugModebooleanfalseVerbose logging

Output

The run produces a flat dataset of matched-post rows. Every row carries the full schema; the Apify Console exposes three pre-built views that each project a tailored column set on top of the same underlying rows. Filter or sort by the flag columns (isPotentialUGC, isSponsoredHint, hasBrandKeywordHint) inside each view to narrow further.

  • Matched Posts — broad column set with match classification, author, engagement, and heuristic flags
  • Potential UGC — trimmed column set focused on author, engagement, and UGC signals
  • Sponsored / Paid Partnership — trimmed column set focused on author, engagement, and sponsorship signals

Matched Posts — table view in the Apify Console

The JSON examples below are real rows from a live targets: ["nike"] run (147 matched posts returned). Long caption text is preserved verbatim.

View 1 — Matched Posts

{
"monitorTarget": "nike",
"matchedType": "both",
"isTagMatch": true,
"isMentionMatch": true,
"matchSource": "tagged_relation+caption_mention",
"postUrl": "https://www.instagram.com/reel/CrYolT-xkI5/",
"postShortcode": "CrYolT-xkI5",
"postType": "reel",
"postCaption": "The @RTFKT X @nike Air Force 1 Forging Event kicks off on April 24th 👟⚒. We are merging digital and physical worlds, collaborating with RTFKT and @takashipom to redeem virtual sneakers for iconic physical pairs.\n\nOh, and If you're in Shinjuku City, Tokyo, between 4/23-4/30, make sure to look up to see some epic 3D billboards. 👀",
"postTimestamp": "2023-04-23T16:13:48.000Z",
"postDate": "2023-04-23",
"authorUsername": "nike",
"authorFullName": "Nike",
"authorIsVerified": true,
"authorFollowersCount": 297437580,
"likesCount": 440889,
"commentsCount": 2050,
"viewsCount": 15244116,
"hashtags": [],
"mentionedUsernames": ["rtfkt", "nike", "takashipom"],
"taggedUsernames": ["rkrkrk", "nike", "takashipom", "rtfkt"],
"isSponsoredHint": false,
"isPotentialUGC": false,
"hasBrandKeywordHint": false,
"brandKeywordMatches": [],
"engagementTotal": 442939,
"authorFollowerBucket": "10m+",
"postAgeDays": 1096,
"discoveryTimestamp": "2026-04-24T13:10:39.269Z"
}

View 2 — Potential UGC

Third-party creator tagged Nike in a post they authored (isPotentialUGC: true):

{
"monitorTarget": "nike",
"postUrl": "https://www.instagram.com/p/BrGNoZIld83/",
"postType": "image",
"postCaption": "At the gate outside, when they pull up, they get me loose",
"postTimestamp": "2018-12-07T19:00:45.000Z",
"authorUsername": "iamelvii_",
"authorFullName": "Elvi Nuhu",
"authorFollowersCount": 16196,
"authorIsVerified": false,
"isPotentialUGC": true,
"isSponsoredHint": false,
"hashtags": [],
"mentionedUsernames": [],
"taggedUsernames": ["jumpman23", "nike", "zaramen__", "doskulens"],
"likesCount": 16722,
"commentsCount": 711,
"viewsCount": null,
"engagementTotal": 17433
}

View 3 — Sponsored / Paid Partnership

The 147-row live Nike run produced zero rows where the sponsored heuristic fired, so isSponsoredHint is false for every record in that dataset. The example below is an illustrative row showing what the Sponsored view columns look like when a match does include paid-partnership signals (e.g. #ad, #paidpartnership, branded-content labels):

{
"monitorTarget": "nike",
"postUrl": "https://www.instagram.com/p/illustrative-shortcode/",
"postType": "reel",
"postCaption": "So excited to partner with @nike on this drop — #ad #paidpartnership",
"postTimestamp": "2026-04-10T14:22:00.000Z",
"authorUsername": "creator_example",
"authorFollowersCount": 82400,
"isSponsoredHint": true,
"sponsorLabel": "Paid partnership with Nike",
"hashtags": ["ad", "paidpartnership"],
"mentionedUsernames": ["nike"],
"taggedUsernames": ["nike"],
"likesCount": 12480,
"commentsCount": 184,
"viewsCount": 96300,
"engagementTotal": 12664,
"engagementRateApprox": 15.369
}

Full record (all fields)

Every row in the dataset also contains these fields that are hidden from the trimmed views: runId, postId, postDate, authorProfileUrl, authorFollowingCount, authorPostsCount, authorCategoryName, videoDurationSeconds, mentions, locationName, mediaCount, imageUrl, videoUrl, thumbnailUrl, coauthorUsernames, engagementRateApprox. Here's the full Nike reel record (same row as View 1, with media URLs truncated for readability):

{
"monitorTarget": "nike",
"matchedType": "both",
"isTagMatch": true,
"isMentionMatch": true,
"matchSource": "tagged_relation+caption_mention",
"discoveryTimestamp": "2026-04-24T13:10:39.269Z",
"runId": "AP992me815g7o6zox",
"postId": "3087396030497833529",
"postShortcode": "CrYolT-xkI5",
"postUrl": "https://www.instagram.com/reel/CrYolT-xkI5/",
"postType": "reel",
"postCaption": "The @RTFKT X @nike Air Force 1 Forging Event kicks off on April 24th 👟⚒...",
"postTimestamp": "2023-04-23T16:13:48.000Z",
"postDate": "2023-04-23",
"authorUsername": "nike",
"authorFullName": "Nike",
"authorProfileUrl": "https://www.instagram.com/nike/",
"authorIsVerified": true,
"authorFollowersCount": 297437580,
"authorFollowingCount": 240,
"authorPostsCount": 1628,
"authorCategoryName": null,
"likesCount": 440889,
"commentsCount": 2050,
"viewsCount": 15244116,
"videoDurationSeconds": 59.93,
"hashtags": [],
"mentions": ["rtfkt", "nike", "takashipom"],
"locationName": null,
"isSponsoredHint": false,
"isPotentialUGC": false,
"hasBrandKeywordHint": false,
"brandKeywordMatches": [],
"mediaCount": 1,
"imageUrl": null,
"videoUrl": "https://scontent-iad3-2.cdninstagram.com/o1/v/t2/f2/m82/...<truncated>",
"thumbnailUrl": "https://scontent-iad6-1.cdninstagram.com/v/t51.71878-15/...<truncated>",
"coauthorUsernames": ["rtfkt"],
"taggedUsernames": ["rkrkrk", "nike", "takashipom", "rtfkt"],
"mentionedUsernames": ["rtfkt", "nike", "takashipom"],
"sponsorLabel": null,
"engagementTotal": 442939,
"engagementRateApprox": 0.0015,
"authorFollowerBucket": "10m+",
"postAgeDays": 1096
}

Match logic

For each target handle the actor classifies every captured post:

FieldMeaning
isTagMatchTarget appears in usertags, tagged_users, or coauthor producers
isMentionMatchTarget appears as @target in the caption
matchedTypetag, mention, both, or none
matchSourcetagged_relation, caption_mention, coauthor, or a +-joined combination

Heuristic flags

  • isSponsoredHint#ad, #sponsored, #paidpartnership, paid partnership labels, gifting language
  • isPotentialUGC — target is tagged/mentioned but is not the author
  • hasBrandKeywordHint / brandKeywordMatches — optional brandKeywords appear in the caption/hashtags

These are documented as hints, not guaranteed truth.

Pricing

Pay-per-event pricing:

  • matched-post — one event per matched post row returned

The actor respects user spending limits and stops gracefully when the limit is reached.

Tips for best results

  • Start small — test with resultsLimit: 25 to verify output quality.
  • Narrow the date window — recurring runs with startDate keep results relevant and billing predictable.
  • Enable excludeOwnPosts — for UGC-only monitoring.
  • Use brandKeywords — to surface mentions that don't use an @handle form.

Local development

cd actor
npm install
npm start # Run with INPUT.json
npm run dev # Run with local storage