🏷️Instagram Tagged Posts Scraper avatar

🏷️Instagram Tagged Posts Scraper

Pricing

from $0.49 / 1,000 results

Go to Apify Store
🏷️Instagram Tagged Posts Scraper

🏷️Instagram Tagged Posts Scraper

This actor scrapes posts from the profile Tagged tab (`/tagged/`). Whether you're gathering data for research, analytics, or monitoring, this scraper helps you extract structured post information with minimal setup.

Pricing

from $0.49 / 1,000 results

Rating

0.0

(0)

Developer

Instagram Scraper

Instagram Scraper

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

7

Monthly active users

a day ago

Last modified

Share

Fast Instagram Tagged Scraper

This Actor scrapes public Instagram tagged posts from profile pages (the Tagged tab). It runs in no‑login mode, which makes it fast to start and easy to use for analytics, research, and content monitoring workflows.

Need other Instagram data?

Use dedicated Actors for other Instagram data types:

How to run it in the Apify Console

  1. Open the Actor page and click Try for free / Run.
  2. In Input, paste one or more Instagram profiles (usernames or profile URLs).
  3. Set how many tagged posts to scrape per profile (postsPerProfile).
  4. After the run finishes, open the Dataset to view results and export to JSON / CSV / Excel.

Input parameters

instagramUsernames (required)

Accepts either a plain username or a full profile URL (you can mix both):

username
https://www.instagram.com/{username}

Notes:

  • Empty lines are ignored and inputs are de‑duplicated
  • Invalid URLs are reported in logs (they do not automatically fail the whole run)

postsPerProfile

Maximum number of tagged posts to scrape per profile.

  • Minimum: 5
  • Default: 12
  • If a profile has fewer public tagged posts (or Instagram limits access), the actual output will be lower

input json example

{
"instagramUsernames": ["youtube", "https://www.instagram.com/google"],
"postsPerProfile": 10
}

What you get

Each tagged post (or post represented by url) is stored as one item in the Dataset.

FieldTypeDescription
idstring | number | nullInstagram media ID (id if available, otherwise fallback from pk).
pkstring | number | nullInstagram media PK (pk if available, otherwise fallback from id).
shortcodestring (optional)Shortcode used to build the public URL.
urlstring | nullPublic media URL (/reel/{shortcode}/ or /p/{shortcode}/).
from_urlstringSource profile URL used for this crawl task.
imagestring (optional)Best-effort cover/thumbnail image URL.
dimensionsobject | nullRaw dimensions from Instagram; no backfill from other fields.
is_videobooleanMedia type hint normalized by the actor.
video_urlstring | nullBest playable video URL when available.
has_audioboolean | nullAudio flag for video media.
video_durationnumber | nullVideo duration in seconds.
accessibility_captionstring | nullAccessibility caption provided by Instagram.
captionstringPost caption text (best effort, may be empty).
hashtagsstring[]#hashtags extracted from caption.
mentionsstring[]@mentions extracted from user tags + caption.
tagged_userarray<object>Simplified tagged users list.
comment_countnumber | nullComment count when available.
commentsarray<object> (optional)Parent comments from edge_media_to_parent_comment (post detail query only).
like_countnumber | nullLike count when available.
play_countnumber | nullVideo play count when available.
view_countnumber | nullVideo view count when available.
taken_atstring | nullPost publish time in UTC ISO-8601 (...Z).
crawled_atstringCrawl timestamp in UTC ISO-8601 (...Z).
locationobject | string | nullMedia location payload when available.
product_typestring (optional)Instagram product type (for example clips).
clips_music_attribution_infoobject (optional)Music attribution payload for clips/reels.
ownerobject (optional)Media owner object; includes normalized post_count and followers when source data exists.
coauthor_producersarray<object> (optional)Co-author producer accounts when available.
is_adboolean | nullWhether Instagram marks the media as ad content.
is_affiliateboolean | nullAffiliate flag when provided by Instagram.
is_paid_partnershipboolean | nullPaid partnership flag when provided.
is_publishedboolean | nullPublication flag when provided.

Notes:

  • optional fields are omitted when Instagram does not return them.
  • Counter/time fields may be null depending on post type, visibility, and endpoint response.

comments

FieldTypeDescription
idstring | nullComment ID.
textstringComment text (may be empty).
created_atnumber | nullUnix timestamp (seconds).
did_report_as_spamboolean | nullWhether viewer reported the comment as spam.
viewer_has_likedboolean | nullWhether viewer liked the comment.
like_countnumber | nullLike count (edge_liked_by.count).
is_restricted_pendingboolean | nullRestriction flag when provided by Instagram.
ownerobject | nullSimplified comment owner profile.

owner shape:

FieldTypeDescription
idstring | nullOwner user ID.
is_verifiedboolean | nullVerified flag.
profile_pic_urlstring | nullProfile picture URL.
usernamestring | nullInstagram username (no @).

Output (Dataset)

Results are stored in the default Dataset (default). Example item (fields may vary slightly depending on Instagram responses):

{
"id": "3847167235685798934",
"pk": "3847167235685798934",
"is_video": true,
"video_url": "https://sconten..oe=69B3232F",
"has_audio": true,
"video_duration": 8.103,
"accessibility_caption": null,
"hashtags": [],
"mentions": ["@bts.bighitofficial"],
"tagged_user": [
{
"full_name": "BTS official",
"followed_by_viewer": false,
"id": "2274763833",
"is_verified": true,
"profile_pic_url": "https://scontent..4041&_nc_sid=d885a2",
"username": "bts.bighitofficial"
},
{
"full_name": "Google India",
"followed_by_viewer": false,
"id": "8536113897",
"is_verified": true,
"profile_pic_url": "https://scontent-l...c_sid=d885a2",
"username": "googleindia"
},
{
"full_name": "Google Indonesia",
"followed_by_viewer": false,
"id": "44378210506",
"is_verified": true,
"profile_pic_url": "https://scontent-lax7..F9&_nc_sid=d885a2",
"username": "googleindonesia"
},
{
"full_name": "Google en Español",
"followed_by_viewer": false,
"id": "48967006444",
"is_verified": true,
"profile_pic_url": "https://scontent-lax..c_sid=d885a2",
"username": "googleespanol"
},
{
"full_name": "Google Japan / グーグル・ジャパン",
"followed_by_viewer": false,
"id": "45157324866",
"is_verified": true,
"profile_pic_url": "https://scontent-lax7..NTKIIoBAAAA&ccb=7-5&oh=00_Afy7_nxWep6lYlwcDSxLpVuWSSULtqQxWpL92A-kd_F73A&oe=69B34CB7&_nc_sid=d885a2",
"username": "googlejapan"
},
{
"full_name": "Google France",
"followed_by_viewer": false,
"id": "74161638136",
"is_verified": true,
"profile_pic_url": "https://scontent-lax7...id=d885a2",
"username": "googlefrance"
}
],
"caption": "@bts.bighitofficial fans, have you seen what happens when you search “BTS” yet? 👀 Something special is waiting for you.\n\n구글에 “BTS”를 검색하면 어떤 일이 일어나는 지 알고 계시나요? 👀 특별한 경험이 기다리고 있습니다!\n\nBTS ファンの皆さん、Google で「BTS」と検索すると何が起きるか、もうチェックしましたか?👀 今なら、とっておきのサプライズが待っていますよ!",
"comment_count": 5550,
"like_count": 261079,
"play_count": 6338210,
"view_count": 1897124,
"taken_at": "2026-03-06T23:04:38Z",
"is_ad": false,
"is_affiliate": false,
"is_paid_partnership": false,
"is_published": true,
"location": null,
"from_url": "https://www.instagram.com/google/reels/",
"url": "https://www.instagram.com/reel/DVj4je6ktQW/",
"crawled_at": "2026-03-08T12:33:04.461569Z",
"comments": [
{
"id": "...",
"text": "...",
"created_at": 1529249418,
"did_report_as_spam": false,
"owner": {
"id": "...",
"is_verified": false,
"profile_pic_url": "https://scont...",
"username": ".."
},
"viewer_has_liked": false,
"like_count": 0,
"is_restricted_pending": false
}
],
"image": "https://scontent-lax..c_sid=d885a2",
"shortcode": "DVj4je6ktQW",
"product_type": "clips",
"clips_music_attribution_info": {
"artist_name": "google",
"song_name": "Original audio",
"uses_original_audio": true,
"should_mute_audio": false,
"should_mute_audio_reason": "",
"audio_id": "33977498751893623"
},
"owner": {
"id": "1067259270",
"username": "google",
"is_verified": true,
"profile_pic_url": "https://sconte..9B33AE9&_nc_sid=d885a2",
"blocked_by_viewer": false,
"restricted_by_viewer": null,
"followed_by_viewer": false,
"full_name": "Google",
"has_blocked_viewer": false,
"is_embeds_disabled": false,
"is_private": false,
"is_unpublished": false,
"requested_by_viewer": false,
"pass_tiering_recommendation": true,
"post_count": 3137,
"followers": 15742809
},
"coauthor_producers": [
{
"id": "8536113897",
"is_verified": true,
"profile_pic_url": "https://scontent-lax7-..._sid=d885a2",
"username": "googleindia"
},
{
"id": "45157324866",
"is_verified": true,
"profile_pic_url": "https://scontent-la..._nc_sid=d885a2",
"username": "googlejapan"
},
{
"id": "48967006444",
"is_verified": true,
"profile_pic_url": "https://scontent-..._nc_sid=d885a2",
"username": "googleespanol"
},
{
"id": "44378210506",
"is_verified": true,
"profile_pic_url": "https://scontent-lax7-...sid=d885a2",
"username": "googleindonesia"
}
]
}

FAQ

1) Why is the Dataset empty / much smaller than expected?

The profile has no public tagged posts, not enough tagged posts, or Instagram is limiting access

2) What does Restricted profile mean?

A profile can be public but still limited for anonymous (no-login) access. Instagram may gate some profile endpoints unless a logged-in session is used. When this happens, the Actor logs the restriction and skips/stops that profile.

3) How does billing work for unavailable profiles?

The Actor uses one unified charge event: restricted_profile. This event is emitted when a profile cannot return tagged posts due to:

  • restricted/no-login access limits,
  • profile not found (dead link / non-existent profile),
  • no tagged posts found for that profile.

Limitations & recommendations

  • Data scope: this Actor is optimized for Reel/post-level data from profile pages. It is not a full profile-metadata scraper.
  • No-login access limits: this Actor runs without an Instagram login by default. Some profile-level fields or endpoints may be unavailable in no-login mode, even for public profiles.
  • Compliance: make sure your usage complies with Instagram’s terms and your local laws, and only collect data you have the right to use.