Instagram Tagged Posts Scraper
Pricing
$24.99/month + usage
Instagram Tagged Posts Scraper
Scrape Instagram posts by tags with the Instagram Tagged Posts Scraper. Extract post captions, images, videos, usernames, likes, comments, and timestamps. Perfect for trend analysis, content research, and engagement tracking. Fast, reliable, and scalable for bulk scraping.
Pricing
$24.99/month + usage
Rating
0.0
(0)
Developer
Scrapier
Maintained by CommunityActor stats
0
Bookmarked
37
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Instagram Tagged Posts Scraper — Captions, Media and Post Dates
Instagram Tagged Posts Scraper pulls every public post where a target Instagram account has been tagged, with no login or session cookie required. Give it one or more usernames and it returns each post's caption, every available image URL, like/comment/view counts, a verified publish date, and a direct permalink. Every response is structured JSON — ready to pass directly to an LLM, index into a vector store, or feed a brand-monitoring pipeline. Point it at any public account and start collecting today.
What is Instagram Tagged Posts Scraper?
Instagram Tagged Posts Scraper automates Instagram's own Tagged tab — the feed of public posts where other accounts tagged your target username — and returns it as structured, exportable data instead of an endless mobile scroll. It runs entirely logged out: no Instagram username, password, or session cookie is ever requested. It authenticates each request the same way a logged-out browser does, rotating browser-signature fingerprints to stay reliable against Instagram's rate limiting, and enriches every post with a verified publish date before handing back the row.
Key capabilities:
- Extracts every public tagged post for one or more usernames in a single run (
usernamesarray) - Returns full caption text, accessibility alt-text, and Instagram's internal post/media IDs
- Captures every available image resolution/candidate plus dedicated thumbnail and display-quality URLs
- Reports like, comment, and view counts, along with disabled-counts/comments flags
- Fetches a verified
takenAtpublish date per post, since the tagged-posts feed itself doesn't include one - Lets you cap results per profile with
maxItems(0collects everything available)
What data can you get with Instagram Tagged Posts Scraper?
Instagram Tagged Posts Scraper returns one row per public tagged post it finds, built from three groups of fields: the post record itself, its media assets, and the account that posted it.
| Result Type | Extracted Fields | Primary Use Case |
|---|---|---|
| Tagged post | pk, id, code, postUrl, takenAt, scrapedAt, media_type, product_type, queriedUsername, caption.text, accessibility_caption, like_count, comment_count, view_count, comments_disabled, like_and_view_counts_disabled | Brand/UGC monitoring, mention tracking, content research |
| Media assets | image_versions2.candidates, display_uri, thumbnailUrl, thumbnails, carousel_media, carousel_media_count, original_height, original_width | Building a media archive, UGC gallery, or image-processing pipeline |
| Post owner | owner.id, user.pk, user.username, user.id | Identifying which account tagged or posted, for creator/UGC outreach |
Media assets: every resolution, not just one preview
Every tagged post row carries its full set of media assets. image_versions2.candidates lists every resolution Instagram generated, display_uri is the display-quality URL, thumbnailUrl is the smallest variant for grids, and thumbnails holds the remaining sizes. Carousel posts also include carousel_media_count and the raw carousel_media array per slide. Useful for a media archive, a UGC gallery, or an image pipeline — the exact URL for the job is already there, with no re-derivation needed.
How does Instagram Tagged Posts Scraper differ from the official Instagram API?
Instagram's Graph API can return tagged media too, but only for the Instagram professional account connected to your own app and access token — Meta's documentation for the /{ig-user-id}/tags edge states it returns media where "your app user's Instagram professional account has been tagged," not an arbitrary third-party profile. Instagram Tagged Posts Scraper queries the public Tagged tab of any username directly, with no ownership requirement.
| Feature | Instagram Graph API | Instagram Tagged Posts Scraper |
|---|---|---|
| Accounts you can query | Only the account your own access token manages | Any public Instagram username |
| Account type required | Business/Creator account linked to a Facebook Page | None — works on any public profile |
| Permissions & review | instagram_basic, instagram_manage_comments, pages_read_engagement, plus Meta App Review | None — no Instagram credentials at all |
| Batch across accounts | Only accounts you personally manage | Any number of usernames in one run |
| Media resolutions | Standard media fields | Every resolution candidate, display URL, and thumbnail variant |
| Post publish date | Included on the Media node | Verified per-post via a dedicated fallback fetch |
| Setup | OAuth app, review process, token refresh | Add usernames, set maxItems, start the run |
(Meta Instagram Graph API docs, /{ig-user-id}/tags reference, checked July 2026.)
The Graph API fits when you already manage the account and want tagged-media data inside your own connected app. Instagram Tagged Posts Scraper fits when you need tagged-post data for accounts you don't own — competitors, creators, or your brand's public handle — without an app review cycle.
How to scrape Instagram with Instagram Tagged Posts Scraper?
- Open Instagram Tagged Posts Scraper on the Apify Store and load it into your Apify Console.
- Add one or more Instagram usernames, profile URLs, or
@handlestousernames— for examplemrbeastorhttps://www.instagram.com/cristiano/. - Set
maxItemsto the number of tagged posts you want per profile (default10;0collects everything available). - Optionally configure
proxy_configuration— Residential proxies are recommended for stable runs. - Start the run, then export the dataset as JSON, CSV, or Excel once it finishes.
Real request via the Apify API:
POST https://api.apify.com/v2/acts/scrapier~instagram-tagged-posts-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>Content-Type: application/json{"usernames": ["mrbeast", "cristiano"],"maxItems": 50}
How to run multiple usernames in one job
Pass every username you want to track in a single usernames array instead of starting a separate run for each one. The Actor processes them one at a time within the same run, resolving each account and walking its Tagged feed in turn, with a short randomized pause between accounts to stay reliable against rate limiting. Every row is stamped with queriedUsername, so the combined dataset can be filtered or grouped back out by account afterward.
⬇️ Input
Instagram Tagged Posts Scraper takes three inputs, read directly from the Actor's input schema: which accounts to check, how many posts per account, and which proxy to route through. None of the three are required — but at least one entry in usernames is needed to get any results.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
usernames | No | array of strings | Instagram usernames, full profile URLs, or @handles to scrape tagged posts for | ["mrbeast", "https://www.instagram.com/cristiano/", "@leomessi"] |
maxItems | No | integer | Maximum tagged posts to collect per profile. Default 10; minimum 0; maximum 10000. 0 extracts all available. | 100 |
proxy_configuration | No | object (proxy) | Apify Proxy configuration; Residential proxies are recommended for stable, undetectable extraction | {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} |
Example input:
{"usernames": ["mrbeast", "https://www.instagram.com/cristiano/", "@leomessi"],"maxItems": 50,"proxy_configuration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Common pitfall: none of the three fields are schema-required, but usernames has no default value. Leave it empty and the run logs "No valid usernames provided!" and finishes with zero rows — always add at least one username or URL before starting.
⬆️ Output
Instagram Tagged Posts Scraper writes one dataset row per tagged post, in the same typed JSON schema on every run — export it as JSON, CSV, HTML table, or Excel directly from the Apify Console or API. Every pushed row is billed under the single row_result charged event; there are no separate uncharged error or accounting rows mixed into the dataset.
Scraped results
[{"pk": "3401234567890123456","media_type": 1,"code": "C8xYzAbCdEf","id": "3401234567890123456_987654321","queriedUsername": "mrbeast","postUrl": "https://www.instagram.com/p/C8xYzAbCdEf/","takenAt": "2026-06-14T18:32:05Z","scrapedAt": "2026-07-26T09:12:41.203981","owner": { "id": "987654321" },"accessibility_caption": "Photo by Creator Studio on June 14, 2026. May be an image of 2 people and text.","caption": { "pk": "3401234567890123400", "text": "Tagged @mrbeast in our latest giveaway drop!" },"carousel_media_count": null,"carousel_media": null,"image_versions2": {"candidates": [{ "url": "https://scontent.cdninstagram.com/v/.../1080x1350.jpg", "width": 1080, "height": 1350 },{ "url": "https://scontent.cdninstagram.com/v/.../640x800.jpg", "width": 640, "height": 800 },{ "url": "https://scontent.cdninstagram.com/v/.../150x187.jpg", "width": 150, "height": 187 }]},"display_uri": "https://scontent.cdninstagram.com/v/.../1080x1350.jpg","thumbnailUrl": "https://scontent.cdninstagram.com/v/.../150x187.jpg","thumbnails": ["https://scontent.cdninstagram.com/v/.../640x800.jpg"],"media_cropping_info": null,"product_type": "feed","user": { "pk": "987654321", "username": "creatorstudio", "id": "987654321" },"like_count": 48213,"like_and_view_counts_disabled": false,"comment_count": 921,"comments_disabled": false,"view_count": null,"original_height": 1350,"original_width": 1080,"__typename": "XDTMediaDict"},{"pk": "3399876543210987654","media_type": 2,"code": "C7wRstUvWx","id": "3399876543210987654_112233445","queriedUsername": "cristiano","postUrl": "https://www.instagram.com/p/C7wRstUvWx/","takenAt": "2026-06-02T11:05:47Z","scrapedAt": "2026-07-26T09:13:02.558102","owner": { "id": "112233445" },"accessibility_caption": null,"caption": { "pk": "3399876543210987600", "text": "Training day with @cristiano's new boot line" },"carousel_media_count": null,"carousel_media": null,"image_versions2": { "candidates": [{ "url": "https://scontent.cdninstagram.com/v/.../1080x1920.jpg", "width": 1080, "height": 1920 }] },"display_uri": "https://scontent.cdninstagram.com/v/.../1080x1920.jpg","thumbnailUrl": "https://scontent.cdninstagram.com/v/.../1080x1920.jpg","thumbnails": [],"media_cropping_info": null,"product_type": "clips","user": { "pk": "112233445", "username": "footballgearco", "id": "112233445" },"like_count": 205410,"like_and_view_counts_disabled": false,"comment_count": 3388,"comments_disabled": false,"view_count": 1874002,"original_height": 1920,"original_width": 1080,"__typename": "XDTMediaDict"},{"pk": "3398765432109876543","media_type": 8,"code": "C6vOpQrStU","id": "3398765432109876543_556677889","queriedUsername": "cristiano","postUrl": "https://www.instagram.com/p/C6vOpQrStU/","takenAt": null,"scrapedAt": "2026-07-26T09:13:19.887431","owner": { "id": "556677889" },"accessibility_caption": "Photo by Fan Page on an unknown date.","caption": { "pk": "3398765432109876500", "text": "Threw it back to the derby with @cristiano's iconic celebration #legend" },"carousel_media_count": 3,"carousel_media": [{ "id": "3398765432109876543_1" }, { "id": "3398765432109876543_2" }, { "id": "3398765432109876543_3" }],"image_versions2": { "candidates": [{ "url": "https://scontent.cdninstagram.com/v/.../1080x1080.jpg", "width": 1080, "height": 1080 }] },"display_uri": "https://scontent.cdninstagram.com/v/.../1080x1080.jpg","thumbnailUrl": "https://scontent.cdninstagram.com/v/.../1080x1080.jpg","thumbnails": [],"media_cropping_info": null,"product_type": "carousel_container","user": { "pk": "556677889", "username": "footyfanpage", "id": "556677889" },"like_count": 61042,"like_and_view_counts_disabled": false,"comment_count": 447,"comments_disabled": false,"view_count": null,"original_height": 1080,"original_width": 1080,"__typename": "XDTMediaDict"}]
Note takenAt is null on the third row above — the actor never fabricates a publish date; if the post's detail page can't be fetched or parsed, the field is left empty rather than guessed.
How can I use the data extracted with Instagram Tagged Posts Scraper?
- Brand and UGC monitoring teams: run the same
usernameslist on a schedule and watch for newcode/postUrlvalues — every post the public tags your brand in, without manually opening the Tagged tab. - Content researchers: pull
caption.text,like_count, andcomment_countacross a set of public figures or competitors to study what kind of tagged content performs, without re-scrolling each profile by hand. - AI engineers and LLM developers: have an agent call the Actor with a username, receive structured JSON back, and pass the
caption,accessibility_caption, and media URLs into a model as grounded context for summarization or moderation. - Market researchers: compare tagged-post volume and engagement counts across brand and competitor usernames to track share-of-voice and mention coverage over time.
How do you monitor tagged posts and mentions over time?
Tagged-post monitoring means re-running the same username list on a schedule and treating each run's dataset as a snapshot to diff against the last one, rather than a one-off pull. Because Instagram's Tagged tab changes as new content gets published, comparing two runs surfaces exactly what changed: new tags appearing, and how engagement on existing tagged posts moved.
The fields worth diffing between runs are code (or pk) to detect posts that weren't in the previous run's dataset, like_count/comment_count/view_count to track engagement growth on posts you've already seen, and takenAt to confirm how recent a newly-appearing tag actually is. A practical workflow: schedule a run across your brand's and competitors' usernames, keep the previous run's dataset (or export it to your own store), join the new run against it on code, flag any row with no match as a new tagged post, and alert when like_count or comment_count on a tracked post crosses a threshold you care about.
To automate the repeated run itself, use Apify's Scheduler on this Actor to trigger it on a recurring interval (hourly, daily, or whatever cadence fits your monitoring need), then pull each run's dataset via the API for the diff step.
Integrate Instagram Tagged Posts Scraper and automate your workflow
Instagram Tagged Posts Scraper works with any language or tool that can send an HTTP request.
REST API with Python
import requestsTOKEN = "YOUR_APIFY_API_TOKEN"url = f"https://api.apify.com/v2/acts/scrapier~instagram-tagged-posts-scraper/run-sync-get-dataset-items?token={TOKEN}"payload = {"usernames": ["mrbeast", "cristiano"], "maxItems": 50}response = requests.post(url, json=payload)posts = response.json()for post in posts:print(post["queriedUsername"], post["postUrl"], post["like_count"])
MCP for query-grounded AI agents
Instagram Tagged Posts Scraper is reachable through Apify's Actors MCP Server: run npx @apify/actors-mcp-server --actors scrapier/instagram-tagged-posts-scraper with an APIFY_TOKEN environment variable set, and it registers as a callable tool. An agent in Claude Desktop, Cursor, or VS Code can then take a username, call the tool, receive the structured tagged-post JSON, and generate an answer grounded in the actual returned rows.
Scheduled monitoring and delivery
Instagram Tagged Posts Scraper has no built-in webhook or scheduling logic of its own, but the Apify platform does: attach a Scheduler to run it on an interval, and use Apify's run-finished webhooks or the Dataset API to pull each run's results into your own pipeline automatically.
Is it legal to scrape Instagram tagged posts?
Yes, scraping publicly visible Instagram posts is generally legal — Instagram Tagged Posts Scraper only collects what any logged-out visitor to a public profile's Tagged tab can already see, and courts have found that scraping publicly accessible web data does not violate the U.S. Computer Fraud and Abuse Act (hiQ Labs v. LinkedIn Corp., 9th Cir., 2019, amended 2022). That said, tagged posts identify real people, so any data you collect (captions, usernames, poster IDs) is personal data under GDPR and CCPA if you store or process it — you're responsible for your own legal basis, retention limits, and any data-subject rights obligations that follow. Scraping for AI training and scraping for operational monitoring carry different risk profiles. Consult your legal team for commercial use cases involving bulk data storage.
Frequently asked questions
Does this scraper need my Instagram login or cookies?
No. It runs entirely logged out and never asks for a username, password, or session cookie.
How do I control how many tagged posts I get per profile?
Set maxItems to the number of tagged posts you want per profile — default is 10, maximum is 10000, and 0 collects everything available for that account.
How does Instagram Tagged Posts Scraper handle Instagram's anti-bot measures?
It never logs in, rotates browser-signature fingerprints and user-agent strings on retry, and backs off with randomized delays on rate-limit (429) responses. Residential proxies, configurable via proxy_configuration, are recommended to keep runs stable at scale.
How many results does Instagram Tagged Posts Scraper return per query?
Up to whatever maxItems you set (max 10000, or 0 for unlimited) — but pagination is capped at 100 pages per profile in the current implementation, roughly 1,200 tagged posts, whichever the account actually has fewer of.
Does it work on private Instagram accounts?
No. Since the Actor runs logged out, it can only see public profiles and their public tagged posts, the same as any anonymous visitor.
How do I use Instagram Tagged Posts Scraper to monitor mentions over time?
Schedule the same usernames list to run on a recurring interval via Apify's Scheduler, extract code, like_count, and comment_count from each run's dataset, and diff it against the previous run — new code values are new tagged posts, and rising counts on existing ones are growing engagement.
Does Instagram Tagged Posts Scraper work with Claude, ChatGPT, and AI agent frameworks?
Yes. It's reachable through Apify's Actors MCP Server (npx @apify/actors-mcp-server --actors scrapier/instagram-tagged-posts-scraper) for MCP-native clients, and callable as a plain HTTP endpoint by any agent framework — enabling agents that retrieve live tagged-post data before answering.
How does Instagram Tagged Posts Scraper compare to other Instagram tagged-post scrapers?
As observed on their Apify Store listings in July 2026, some competing tagged-posts scrapers (e.g. Instagram Scraper's tagged-posts Actor) return additional fields this Actor does not, including hashtags, mentions, location, comment threads, and monetization flags. Instagram Tagged Posts Scraper covers the core post, media, and owner fields without that extra enrichment — a sibling Actor in this catalog, Instagram Tagged & Mentions Posts Scraper With Profile Data Insights & Engagement, adds mentions, engagement analytics, and poster-profile enrichment if you need that depth.
Can I use Instagram Tagged Posts Scraper without managing proxies or Instagram credentials?
Yes. The Actor manages its own proxy fallback (defaulting to Apify's Residential group when proxy_configuration is left empty) and never requires Instagram credentials — you only need an Apify account to run it.
What counts as a "tagged post"?
Any public post where someone tagged the target Instagram account in the photo or video — Instagram's own Tagged tab on that profile — not posts the account itself published.
Your feedback
Found a bug or a field that doesn't match what's documented here? Open an issue on the Actor's Issues tab in Apify Console, or reach out through Scrapier's Apify Store profile. Feedback like this directly shapes what gets fixed next.