Instagram MCP Server — Profiles, Posts, Reels, Comments
Pricing
from $4.00 / 1,000 instagram results
Instagram MCP Server — Profiles, Posts, Reels, Comments
Get public Instagram profiles, posts, Reels and comments from one Actor built for Apify MCP. Returns structured JSON with provenance, with no login or cookies.
Pricing
from $4.00 / 1,000 instagram results
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Instagram MCP Server — Profiles Posts Reels Comments
This Apify Actor gives researchers, automations, and AI agents one MCP-ready way to work with public Instagram profiles, posts, Reels, and comments. It accepts a public handle, profile URL, post URL, or Reel URL based on the selected tool, and each dataset row represents one public Instagram record. Useful fields include username, profileUrl, url, shortcode, caption, text, followersCount, likeCount, provider, and scrapedAt, with status marking a usable public row. The outcome is structured JSON with provenance, plus named OUTPUT and RUN_SUMMARY records for downstream decision-making.
Best fit and connected workflows
This Actor fits workflows that begin with a known public Instagram target and need one public-data tool for four common jobs:
- Profile enrichment from a public handle or profile URL.
- Public posts or Reels from a public handle.
- Public comments from a public post or Reel URL.
- MCP-based agent workflows that need one stable output contract with provider provenance.
Instagram MCP Server — Profiles Posts Reels Comments is designed as a focused standalone workflow.
Practical scenario
Maya, a social media analyst, starts with the public handle natgeo. She runs tool=profile and receives username, followersCount, profileUrl, provider, and scrapedAt. That gives her a clean public identity record for her notes. Next, she switches to tool=posts for the same handle to collect recent captions and media URLs for a content review. Her next step is to summarize the public themes from those rows and, if she needs discussion context, call tool=comments on a specific public Reel URL.
Input fields
| Field | Type | Purpose |
|---|---|---|
tool | string enum | Selects profile, posts, reels, or comments. Defaults to profile. |
usernames | array of strings | Public handles or profile URLs for profile, posts, and reels. |
postUrls | array of strings | Public post or Reel URLs for comments. |
maxResults | integer | Hard cap on billed dataset rows for the run, 1-200. |
maxResultsPerTarget | integer | Per-handle or per-post cap, 1-50. |
providerOrder | string enum | Provider preference order, including the routing options listed in the input schema. |
includeRawData | boolean | Adds the raw provider payload to each row when enabled. |
Focused JSON example
{"tool": "posts","usernames": ["nasa"],"maxResults": 3,"maxResultsPerTarget": 3,"includeRawData": false}
Output fields
The default dataset stores one row per profile, post, Reel, or comment. The named records in the key-value store provide run-level context for agents.
| Output record | Meaning |
|---|---|
dataset | The default dataset with public Instagram rows. |
output | Compact outcome data, item counts, and charged events. |
runSummary | Provider diagnostics, stop reason, and estimated PPE cost. |
Illustrative JSON record
{"tool": "profile","status": "OK","username": "natgeo","profileUrl": "https://www.instagram.com/natgeo/","followersCount": 0,"scrapedAt": "2026-08-18T11:24:00.000Z"}
How it works
This Actor uses owner-configured public-data providers and returns structured JSON with provenance. The live contract lists the primary and fallback data providers, with the default provider order as the default order and fallback to the fallback data provider. You can pin a single provider with a -only value. When includeRawData is enabled, each row also stores the unmodified provider payload under raw.
The dataset schema includes tool, status, username, profileUrl, url, shortcode, caption, followersCount, likeCount, text, provider, and scrapedAt.
Pricing
Instagram MCP Server — Profiles Posts Reels Comments uses Pay per event with Apify platform usage included. The live Pricing tab in Apify Console is the source of truth for current pricing details.
The charged events in the live contract are:
apify-actor-startig-result, one charged event for each public Instagram result row saved to the dataset
As an event-count example in words: one probe that returns one public row charges one actor start event and one Instagram result event. A larger run charges one Instagram result event for each saved public row.
Use with AI agents (MCP)
This Actor is usable through Apify MCP as a structured Instagram tool for public profiles, posts, Reels, and comments. The exact Actor identity is khadinakbar/instagram-mcp-server.
Scrape the public profile for natgeo with khadinakbar/instagram-mcp-server. Use
tool=profile,usernames=["natgeo"], andmaxResults=1. Return the username, followersCount, profileUrl, provider, and the OUTPUT record so I can see the outcome and provenance.
Output interpretation and provenance:
datasetcontains the public rows.outputprovides the named outcome contract for the run.runSummaryadds provider diagnostics, stop reason, and estimated PPE cost.provideridentifies the public-data source that supplied each row.scrapedAtshows when the row was written in UTC.
For pagination and cost control, keep maxResults and maxResultsPerTarget aligned with the amount of public data you want to read. The dataset is row-based, so each additional saved row corresponds to another billed public result.
Apify API example
import { ApifyClient } from "apify-client";const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor("khadinakbar/instagram-mcp-server").call({tool: "profile",usernames: ["natgeo"],maxResults: 1,});const datasetId = run.defaultDatasetId;const { items } = await client.dataset(datasetId).listItems();console.log(items);
Best results and outcome guidance
- Start with a public handle when you need
profile,posts, orreels. - Use a public post or Reel URL when you need
comments. - Keep
maxResultssmall for MCP probes and first-pass checks. - Review
OUTPUTandRUN_SUMMARYbefore chaining downstream steps. - Use
providerOrderwhen you want a preferred public-data source order. - Enable
includeRawDataonly when the raw provider payload is useful to your workflow.
Focused standalone workflow
Instagram MCP Server — Profiles Posts Reels Comments is designed as a focused standalone workflow.
Design note
I found that the live dataset contract is intentionally compact: it centers on tool, status, source identity, canonical URLs, counts, provenance, and scrapedAt, which makes each row easy for agents to read and pass downstream.
FAQ
Which input should I use for a profile lookup?
Use tool=profile with a public handle or profile URL in usernames.
Which input should I use for public comments?
Use tool=comments with one or more public post or Reel URLs in postUrls.
Which input should I use for recent public media from a handle?
Use tool=posts or tool=reels with the public handle in usernames.
How do I keep agent runs small and predictable?
Set maxResults to the smallest number of public rows you need, and use maxResultsPerTarget to narrow each handle or post.
Where do I check run outcome and provider details?
Read the OUTPUT and RUN_SUMMARY records in the default key-value store.
Is this Actor usable through Apify MCP?
Yes. It is an Apify Actor usable through Apify MCP, and it also works through the Apify API.
Responsible use
Instagram is a trademark of its owner. This independent Actor is not affiliated with, associated with, or endorsed by Instagram.
Use public information in line with applicable law and the platform's terms. This Actor works with public profiles, posts, Reels, and comments returned by the configured public-data providers. It is designed for public-data workflows and provenance-aware agent use.