Instagram Mentions API and MCP — Posts That Tag an Account
Send an Instagram username or profile URL and this source returns posts by other accounts that tag it: who posted, caption, hashtags, mentions, likes, comments, location and date.
- You send
- An Instagram username or profile URL
- You get back
- Posts from other accounts that tag it, with author, caption and engagement
- Coverage
- Public Instagram posts that tag the given account.
- Price
- 5 points per returned post, up to 1,000 per request — $5 per 1,000
- Billed per post actually returned, capped by max_items. An account nobody tags costs nothing.
Ways to get this data
Three approaches teams use today, and where each one runs into trouble.
| Approach | What it takes | Cost | Trade-off |
|---|---|---|---|
| Checking the Tagged tab | Open the profile's tagged posts and scroll | Free, and slow | Not practical to track over time or across competitors |
| A UGC or listening platform | Connect accounts, buy seats | Monthly or annual contract | Built around your own brand accounts |
| NeuralVerge | One request per account | $5 per 1,000, misses not billed | Only public posts that tag the account — untagged mentions aren't included |
What you get back
Every field in the example response below.
| Field | Type | Description |
|---|---|---|
total_items | number | How many posts came back. |
items[].id | string | Instagram's media ID. |
items[].short_code | string | The code in the post's URL. |
items[].url | string | Direct link to the post. |
items[].type | string | Image, Video or Sidecar (a carousel). |
items[].caption | string | Post caption. |
items[].hashtags | array | Hashtags in the caption. |
items[].mentions | array | Accounts mentioned in the caption. |
items[].timestamp | string | When the post was published (ISO 8601). |
items[].likes_count | number | Likes on the post. |
items[].comments_count | number | Comments on the post. |
items[].video_play_count | number | null | Plays, for videos and reels. |
items[].video_duration | number | null | Video length in seconds. |
items[].display_url | string | The main image or video cover. |
items[].video_url | string | null | The video file, for videos and reels. |
items[].owner_username | string | The account that published the post. |
items[].location_name | string | null | The tagged location, if any. |
items[].tagged_users | array | Accounts tagged in the media. |
items[].is_sponsored | boolean | Whether the post is marked as sponsored. |
items[].music | object | null | Audio used: artist, song and whether it's original audio. |
Example response
A real response, as returned.
{
"session_id": "9fced2f3-f7b5-4938-afdf-8bc8c84d9839",
"kind": "instagram_mentions",
"url": "https://www.instagram.com/natgeo/",
"max_items": 2,
"partial": false,
"machine": {
"total_items": 2,
"items": [
{
"id": "1929261108986102451",
"short_code": "BrGHMHIF8Kz",
"url": "https://www.instagram.com/p/BrGHMHIF8Kz/",
"type": "Image",
"caption": "Vardzia is a cave monastery site located in southern Georgia. It is excavated from the slopes of the Erusheti Mountain on the left side of the Kura River. … #georgia #exploregeorgia #MavicPro …",
"hashtags": ["georgia", "exploregeorgia", "MavicPro", "natgeo", "…"],
"timestamp": "2018-12-07T18:04:27.000Z",
"likes_count": 14040,
"comments_count": 583,
"owner_username": "hyn…",
"owner_full_name": "Hynek",
"location_name": "Vardzia, Aspindzis Raioni, Georgia",
"tagged_users": ["natgeo", "natgeotravel", "wonderful_places", "djiglobal", "georgiatravel", "…"],
"is_sponsored": false
},
{
"id": "1929229904589027835",
"short_code": "BrGAGBxFvn7",
"url": "https://www.instagram.com/p/BrGAGBxFvn7/",
"type": "Image",
"caption": "No helmet needed once your on Cát Bà Island. . Cát Bà Island || Vietnam … Shot on EOS T3i and SIGMA 85mm F1.4 EX DG HSM …",
"hashtags": ["vietnam", "vietnamtravel", "Canon", "canonphotography", "…"],
"timestamp": "2018-12-07T17:02:28.000Z",
"likes_count": 6179,
"comments_count": 180,
"owner_username": "sam…",
"owner_full_name": "Samuel",
"location_name": "Tàu Cát Bà Xanh",
"tagged_users": ["natgeo", "natgeotv", "natgeotravel", "canonusa", "…"],
"is_sponsored": false
}
],
"errors": []
},
"total_points": 10
}How to run it
The same lookup works from the app, the API, or as a tool an agent can call mid-task.
This endpoint is synchronous: the call blocks until the lookup completes and returns the records directly. If a lookup hits its time budget before finishing, the response comes back with partial: true and whatever it collected so far — re-run with a smaller max_items for a complete result. url is required and accepts a username or profile URL. Optional: max_items (1-1,000, default 20).
curl -X POST https://api.neuralverge.ai/functions/v1/run-instagram-mentions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "natgeo", "max_items": 20 }'What teams use it for
Where this field shows up in an actual workflow.
Find the customers and creators who post about a brand and tag it.
Spot accounts that already endorse a brand — candidates for a partnership.
See who tags a competitor and what they say about it.
Look at real photos of a product in use, with location and context.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
Public Instagram posts that tag the given account.
Read at request time.
This source returns content an account published publicly, stamped with the URL it was read from and a session id you can trace. Accounts can belong to individuals as well as brands — use it for legitimate business purposes under your own lawful basis and check the acceptable use policy.
- —Results follow the account's tagged feed, which isn't strictly newest first — in the sample above the posts are from 2018. Sort or filter by timestamp downstream.
- —Posts that name the brand in a caption without tagging it are not included.
- —Tagged posts on private accounts are not visible.
Questions, answered
Yes — every Data Source endpoint, including this one, is synchronous: the lookup runs inside the request and the result comes back in the same response, no polling. If a lookup hits its time budget before finishing, the response comes back with partial: true and whatever records it collected so far — re-run with a smaller max_items to get a complete result instead of a partial one.
Related sources
Try instagram mentions on your own data
One request format across every source in the catalog.