InsightSocial API
How-to

Get Instagram posts an account is tagged in

List the posts other people tagged an Instagram account in, with caption, media URLs, engagement counts and who posted each. 50 credits per page.

To list the posts other people tagged an Instagram account in, call GET /v1/instagram/tagged with the account's handle or user_id. Each page returns tagged posts with their caption, media URLs, view, like and comment counts, and the account that posted them. It costs 50 credits a page; the first page in our test held 21 posts. GET /v1/instagram/profile/posts returns only what the account posted itself, so this is how you see what others posted about it.

Cost

50 credits per page. Walking 10 pages costs 500 credits. Asking for the same page again within 6 hours is answered from the shared cache for 2 credits. Failed calls and empty results are free.

How do I find the handle or user ID?

The handle is the username without the @: https://www.instagram.com/mrbeast/ has the handle mrbeast. Send user_id instead for faster responses. GET /v1/instagram/profile/about (10 credits) returns it as data.author.id.

Make the request

cURL
curl "https://api.insightsocial.app/v1/instagram/tagged?handle=mrbeast" \
  -H "x-api-key: $INSIGHTSOCIAL_API_KEY"

What comes back

A real response from 2026-10-14, shortened: one post instead of 21, long URLs cut, the caption shortened, and the poster's account replaced with a placeholder.

Response (shortened)
{
  "success": true,
  "endpoint": "/v1/instagram/tagged",
  "schema_version": "2",
  "data": {
    "items": [
      {
        "post": {
          "id": "4007852954603258964",
          "url": "https://www.instagram.com/reel/DeewQcXIIRU/",
          "kind": "short",
          "content": {
            "text": "Short clip… #viralvideos",
            "media_urls": ["https://scontent-hel3-1.cdninstagram.com/o1/v/t2/f2/m86/….mp4?…"],
            "thumbnail_url": "https://scontent-hel3-1.cdninstagram.com/v/t51.71878-15/…",
            "duration_seconds": 15.603
          },
          "author": { "id": null, "username": "example_user", "display_name": null, "verified": false },
          "engagement": { "views": 0, "likes": 0, "comments": 0, "shares": null, "saves": null },
          "flags": { "pinned": false, "deleted": false, "likes_hidden": null },
          "published_at": "2026-10-14T15:56:39.000Z",
          "ext": { "media_type": "video", "coauthors": [] }
        }
      }
    ],
    "total": 990416,
    "truncated": null
  },
  "pagination": { "next_cursor": "v2c.hukrcTcxA8iy…", "has_more": true, "page_size": 21 },
  "unavailable": ["items[].post.author.id", "items[].post.author.display_name"],
  "credits_used": 50
}
FieldWhat it holds
data.items[].postOne tagged post in the shared post shape: caption, media and thumbnail URLs, duration, counts, publish time.
data.items[].post.kindshort for a reel, image for a photo.
data.items[].post.authorThe account that posted it and tagged yours: username, avatar, verified badge.
data.items[].post.flags.likes_hiddentrue when the poster hid the like count; engagement.likes is then null.
data.totalThe total Instagram reports for the tagged list. 990,416 for mrbeast.
unavailableFields this endpoint cannot fill: the poster's id and display_name are always null. Use the username.

How do I get more than one page?

Send pagination.next_cursor back as cursor, with the same handle, and stop when pagination.has_more is false. Each page is 50 credits.

Python: walk the first 5 pages
import os
import requests

BASE = "https://api.insightsocial.app/v1"
HEADERS = {"x-api-key": os.environ["INSIGHTSOCIAL_API_KEY"]}

params = {"handle": "mrbeast"}
posts = []
for _ in range(5):
    body = requests.get(f"{BASE}/instagram/tagged", params=params, headers=HEADERS, timeout=120).json()
    posts += body["data"]["items"]
    if not body["pagination"]["has_more"]:
        break
    params["cursor"] = body["pagination"]["next_cursor"]

A large account can be tagged in hundreds of thousands of posts, so set a page limit before you start. See Pagination for the full rules.

What are the limits?

  • Recent first, not strictly ordered. In our test, all 21 posts on the first page were published within 42 minutes of each other on the day of the call, mostly newest first. For a large account, one page covers a short window.
  • Hidden likes. 10 of the 21 posts had likes_hidden: true and engagement.likes: null. null means unknown, not zero.
  • Shares and saves. engagement.shares and engagement.saves are null on this endpoint.
  • Poster ID and name. author.id and author.display_name are always null. Pass the username to GET /v1/instagram/profile for the full profile.
  • Mostly low-reach posts. Anyone can tag a large account. In our test, 15 of the 19 reels on the first page had under 20 views, so filter by engagement before you act on the list.

What can I build with it?

  • Brand mention monitoring. Collect the posts that tag your brand each day. The brand mention monitoring recipe shows the full loop.
  • Creator discovery. The accounts that tag a brand are fans and creators already posting about it.
  • Campaign tracking. Check which creators in a campaign tagged the brand, and how their posts did.

On this page