Instagram MCP Server — Profiles, Posts, Reels, Comments
Pricing
from $4.00 / 1,000 instagram results
Instagram MCP Server — Profiles, Posts, Reels, Comments
One MCP-ready Instagram Actor for public profiles, posts, Reels, and comments. Cookieless ScrapeCreators + SociaVault providers, no login. Returns structured JSON with provenance. $0.004 per result.
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
Call one Apify Actor as an MCP tool and pick tool: profile, posts, reels, or comments. You get public Instagram JSON (handle, URL, caption, counts, comment text) with provider provenance. No Instagram login or cookies. Charged $0.004 per saved row.
Built for creator researchers, social-listening agents, and lead-gen workflows that already know a handle or a post URL and need structured public data—not a follower graph or a native hashtag feed.
Best fit for this Actor
- Strongest starting condition: a public handle (
natgeo) or a public/p/or/reel/URL. - Useful output: one billed row per profile, media item, or comment, plus
OUTPUT.outcomeso an agent can tell complete vs empty vs invalid. - Adjacent jobs: use Instagram Hashtag Scraper for hashtag posts, or Instagram Highlights Scraper for story highlights.
When to use this Actor
- You want one MCP tool covering four public Instagram jobs instead of wiring four Actors.
- You need cookieless, login-free public data with a named outcome (
COMPLETE,VALID_EMPTY,INVALID_INPUT,UPSTREAM_FAILED). - When you need hashtag feeds, follower identities, likes, or private accounts, this Actor is the wrong tool — hashtag search is not returned by the current public-data providers, and follower graphs are login-gated.
Workflow story: from a creator handle to outreach notes
A freelance brand strategist pastes natgeo into tool=profile with maxResults=1. The run returns one row: username, follower count, biography, verification, and profileUrl. She then runs tool=posts on the same handle with maxResults=5 to grab recent captions and like counts for a moodboard brief. Event cost is a few cents; she never logs into Instagram. If she later needs comments on a specific Reel, she switches tool=comments and passes that Reel URL.
Quick start input
{"tool": "profile","usernames": ["natgeo"],"maxResults": 1}
That input is the quality-test prefill: one public profile, one billed row, well under five minutes.
Input reference
| Field | Type | What it controls |
|---|---|---|
tool | enum | profile, posts, reels, or comments. Default profile. |
usernames | array | Handles or profile URLs for profile/posts/reels. Example: natgeo. |
postUrls | array | Post/Reel URLs for comments. Example: https://www.instagram.com/reel/DOq6eV6iIgD/. |
maxResults | integer | Run-wide billed-row cap, 1–200, default 12, prefill 1. |
maxResultsPerTarget | integer | Per-target cap, 1–50, default 12. |
providerOrder | enum | scrapecreators-first (default) or pin one provider. |
includeRawData | boolean | Adds bulky raw payloads. Default false. |
mode is accepted as an alias of tool for older agent prompts.
What data you receive
One dataset item is one public Instagram entity. Profile rows carry identity and counts; media rows carry URL, caption, and metrics; comment rows carry text and commenter handle.
{"tool": "profile","status": "OK","username": "natgeo","fullName": "National Geographic","followersCount": 280000000,"isVerified": true,"profileUrl": "https://www.instagram.com/natgeo/","provider": "scrapecreators","scrapedAt": "2026-08-18T11:24:00.000Z"}
Every terminal run also writes OUTPUT and RUN_SUMMARY with outcome, itemsPushed, provider attempts, and chargedEventCounts.
Use through the API
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~instagram-mcp-server/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"tool":"profile","usernames":["natgeo"],"maxResults":1}'
Read items from the run's default dataset. Check OUTPUT.outcome before treating an empty dataset as a failure.
Use with AI agents through Apify MCP
Scrape the public Instagram profile for natgeo. Use khadinakbar/instagram-mcp-server with tool=profile, usernames=["natgeo"], maxResults=1. Return username, followersCount, biography, profileUrl, and the OUTPUT.outcome. Do not request hashtags, followers, or private data.
Point the agent at Apify MCP. Inspect OUTPUT.outcome (COMPLETE vs VALID_EMPTY vs INVALID_INPUT) before chaining another tool. Bound maxResults so spend stays predictable at $0.004 per row.
Connect the workflow
- Profile URL out → Instagram Profile Scraper if you only need profile enrichment going forward.
- Handle out → Instagram Posts Scraper or Instagram Reels Scraper for dedicated media Actors.
- Hashtag job → Instagram Hashtag Scraper (not this Actor).
- Story highlights → Instagram Highlights Scraper.
Pricing
Pay per event + platform usage. Open the live Pricing tab for current event details. apify-actor-start is $0.00005. Each saved row charges ig-result at $0.004. Platform usage is paid by the user (isPPEPlatformUsagePaidByUser: true). Empty matches and invalid input are not billed as results. maxResults is the spend guard.
| Saved rows | Event cost (start + ig-result) |
|---|---|
| 1 (prefill / MCP probe) | $0.00005 + $0.004 = $0.00405 plus compute |
| 12 (default cap) | $0.00005 + $0.048 = $0.04805 plus compute |
| 50 | $0.00005 + $0.200 = $0.20005 plus compute |
Best results
- Prefer official public handles over unofficial fan pages.
- Cap
maxResultsat 1–12 for MCP probes. - Use
providerOrder=sociavault-firstonly when debugging a ScrapeCreators outage. - A 404 handle is
VALID_EMPTY, not a platform failure. - For hashtags, call Instagram Hashtag Scraper instead of
tool=hashtaghere.
Builder's note
Instagram's public web endpoints block datacenter scrapers. This Actor does not wrap other Store Actors (that would double-bill the owner). It calls ScrapeCreators first and SociaVault as fallback, the same provider pair used on the portfolio's other Instagram tools. Hashtag search was probed live and dropped from the public contract: ScrapeCreators /v1/instagram/search/hashtag currently returns not_found / "No posts found" for common tags, and SociaVault has no Instagram hashtag route. Follower lists are omitted for the same reason: neither provider exposes a public follower graph in the current snapshot.
FAQ and legal
Public data only. Respect Instagram's Terms of Use and applicable law. This is not an official Instagram API and not a substitute for Meta's Graph API. Private accounts return limited public metadata or nothing. Open an Issue on the Actor page for support.
Changelog
- 0.1.2 — Removed the advertised hashtag tool after live provider probes returned empty (
not_found) on ScrapeCreators and no matching SociaVault route. Public contract is now profile, posts, reels, comments. - 0.1 — Initial private release. Dual providers, PPE
ig-result$0.004,OUTPUT/RUN_SUMMARYoutcome contract.