instagram-data-mcp
Read-only MCP server for public Instagram data, exposing 28 GET-based tools that return JSON from the FastSocial API.
Look up profiles, check whether a handle exists/is public, and convert usernames to numeric user IDs (and back).
Fetch recent posts, reels, tagged posts, single posts/reels/IGTV, media download URLs, and engagement insights.
Get comments, comment replies, likers, followers, following, similar accounts, stories, highlights, and highlight items.
Search accounts, hashtags, places, audio, and reels; get hashtag posts, place details/posts, and audio details.
View daily rankings of most-followed accounts (followers, gainers, losers, milestones) and your monthly API usage.
All tools are read-only: no login, posting, following, liking, or messaging; the only network request is to the FastSocial API.
Provides read-only access to public Instagram data, enabling retrieval of profiles, posts, reels, stories, highlights, comments, likers, followers, hashtags, places, audio, and search results.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@instagram-data-mcp show me the latest posts from @nike"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
instagram-data-mcp (local stdio package)
A small local MCP server for public Instagram data, published on PyPI as instagram-data-mcp.
It gives Claude, Cursor and any other MCP client 28 read-only tools: profiles, posts, reels,
stories, highlights, comments, likers, followers, hashtags, places, audio, search
and a daily ranking of the 2,000 most-followed accounts.
Most people don't need this package. The same tools are available from the remote server at
https://data.fastsocial.co/mcp, with sign-in in the browser and nothing to install. Setup for
that is in FastSocialCo/instagram-data-mcp.
Use this package if your client only runs local (stdio) servers.
Run it
Get a key at https://fastsocial.co/instagram-api?ref=pypi (there is a free plan), then:
{
"mcpServers": {
"instagram-data": {
"command": "uvx",
"args": ["instagram-data-mcp"],
"env": { "IG_DATA_API_KEY": "your_key" }
}
}
}No uvx? pip install instagram-data-mcp and use "command": "instagram-data-mcp" instead.
Related MCP server: instagram-mcp
What it does and what it sends
The whole server is server.py, about 150 lines. It reads the
bundled openapi.json (the public spec of the Instagram
Data API) and turns each GET endpoint into one tool.
When a tool is called, it makes one HTTPS GET request to https://data.fastsocial.co/v1/<endpoint>
with the tool's arguments as query parameters, your key in the X-API-Key header and
instagram-data-mcp as the user agent. It returns the JSON response as is. That is the only
network request it makes.
Every tool reads. Each one is marked
readOnlyHint: true. None can log in to Instagram, post, follow, like or message.It writes no files and stores nothing. Your key stays in your client's config and is only ever sent in that header.
No install scripts, no telemetry.
Privacy policy: https://fastsocial.co/privacy · Terms: https://fastsocial.co/terms
Settings
Env var | Default | |
| none | Required |
|
| |
|
| Seconds |
Tools
The tool list and what each one costs in credits are in the plugin README and the API docs.
Security
Report a vulnerability to contact@fastsocial.co. See SECURITY.md.
License
MIT
Available Tools
28 toolsinstagram_audioARead-only
Get an Instagram audio track and the reels using it. Title, artist, duration and a preview URL for an original sound or song, plus reels that use it. Audio ids come from reels.
Cost: 1 credit.
Inputs: id (required).
instagram_audio_searchARead-only
Search Instagram music and sounds. Find songs and sounds by title or artist, with ids you can pass to /v1/audio.
Cost: 3 credits.
Inputs: q (required).
instagram_checkARead-only
Check if an Instagram handle exists and is public. Does this handle exist, and is it public? States: ok, not_found, private, deactivated, memorialized, age_restricted, restricted_minor. Exact match only, so a typo never resolves to someone else.
Cost: 1 credit.
Inputs: username (required).
instagram_comment_repliesBRead-only
Get replies to an Instagram comment. Replies under one comment. Page with cursor.
Cost: 3 credits.
Inputs: comment_id (required), url, cursor, shortcode.
instagram_commentsARead-only
Get comments on an Instagram post. The top comments on a post with author, text, time, likes and reply count, plus the total comment count.
Cost: 3 credits.
Inputs: url, shortcode.
instagram_followersARead-only
Get an account's followers. One page of the accounts that follow a public account, with the total follower count. Pass next_cursor back as cursor for the next page; null means no more pages are available. Private accounts return 422 private_account.
Cost: 3 credits.
Inputs: cursor, user_id, username.
instagram_followingARead-only
Get accounts an account follows. One page of the accounts a public account follows, with the total. Pass next_cursor back as cursor for the next page; null means no more pages are available. Private accounts return 422 private_account.
Cost: 3 credits.
Inputs: cursor, user_id, username.
instagram_hashtagARead-only
Get posts for an Instagram hashtag. Recent posts under a hashtag and its total post count. Page with cursor.
Cost: 1 credit.
Inputs: tag (required), cursor.
instagram_highlightBRead-only
Get the items in one highlight. Every photo and video inside one highlight, with signed CDN URLs. Costs 3 credits the first time for an account; more highlights of the same account are free for 15 minutes.
Cost: 3 credits.
Inputs: id (required).
instagram_highlightsARead-only
Get Instagram story highlights. Title, cover image and item count for each highlight. Pass an id to /v1/highlight for its items.
Cost: 3 credits.
Inputs: user_id, username.
instagram_insightsARead-only
Instagram engagement rate calculator. Engagement rate (mean and median), posting cadence, format mix, best posting hours (UTC) and a percentile against the Instagram Benchmarks report, from the latest 12 posts. Pinned posts are excluded.
Cost: 2 credits.
Inputs: user_id, username.
instagram_likersARead-only
Get accounts that liked an Instagram post. A sample of accounts that liked a public post, plus the total like count. One page per call with no cursor, so it is not the full list of likers.
Cost: 3 credits.
Inputs: url, shortcode.
instagram_mediaARead-only
Download URLs for a post, reel or carousel. Direct image and video file URLs for every slide of a post, in the best quality available. URLs are signed Instagram CDN links that expire after a few hours.
Cost: 1 credit.
Inputs: url, shortcode.
instagram_placeARead-only
Get an Instagram location. Name, category, address, city, phone, website and post count of a location page. Find ids with /v1/search.
Cost: 3 credits.
Inputs: id (required).
instagram_place_postsARead-only
Get posts tagged at an Instagram location. Recent posts geotagged at a location. Page with cursor.
Cost: 1 credit.
Inputs: id (required), cursor.
instagram_postARead-only
Get one Instagram post or reel. Likes, comments, views, caption, owner and media URLs for a single post, reel or IGTV video.
Cost: 1 credit.
Inputs: url, shortcode.
instagram_postsARead-only
Get recent Instagram posts. 12 posts per page, newest first, with likes, comments, views, caption and media URLs. Page with cursor.
Cost: 1 credit.
Inputs: cursor, user_id, username.
instagram_profileARead-only
Get an Instagram profile. Follower, following and post counts, bio, links, category, verification and the profile picture of any public account.
Cost: 1 credit.
Inputs: user_id, username.
instagram_reelsARead-only
Get an account's Instagram reels. The reels tab of a public account: play counts, likes, comments, captions and video URLs. Page with cursor.
Cost: 1 credit.
Inputs: cursor, user_id, username.
instagram_reels_searchBRead-only
Search Instagram reels by keyword. Reels matching a keyword. Page with cursor.
Cost: 3 credits.
Inputs: q (required), cursor.
instagram_searchARead-only
Search Instagram accounts, hashtags and places. Matching accounts, hashtags (with post counts) and places (with location ids).
Cost: 1 credit.
Inputs: q (required).
instagram_similarBRead-only
Find similar Instagram accounts. Accounts Instagram considers related to this one.
Cost: 1 credit.
Inputs: user_id, username.
instagram_storiesARead-only
View Instagram stories anonymously. Stories posted in the last 24 hours by a public account, with image and video URLs. Signed CDN links that expire after a few hours.
Cost: 3 credits.
Inputs: user_id, username.
instagram_taggedARead-only
Get posts an account is tagged in. Public posts by other accounts that tag this account.
Cost: 1 credit.
Inputs: cursor, user_id, username.
instagram_top_accountsARead-only
Most-followed Instagram accounts, gainers and losers. The same data as fastsocial.co/most-followed-instagram-accounts (Instagram Top Charts): the biggest notable public Instagram accounts ranked by followers, updated daily, with 1, 7 and 30-day follower changes, country, category and projected milestones. Free (0 credits); needs any API key. Data CC BY 4.0: credit FastSocial and link the source.
Cost: 0 credits.
Inputs: sort, limit, offset, window, +2 more.
instagram_usageBRead-only
Your usage this month. Free (0 credits).
Inputs: no named parameters.
instagram_user_idARead-only
Instagram username to user id. The numeric user id for a handle. Every endpoint also accepts either one directly, so you rarely need this.
Cost: 1 credit.
Inputs: user_id, username.
instagram_usernameARead-only
Instagram user id to username. The current handle for a numeric user id, which still works after the account renames itself.
Cost: 2 credits.
Inputs: user_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 28 tools
Several tool pairs are easy to confuse: instagram_highlight vs instagram_highlights, instagram_post vs instagram_posts, and instagram_username vs instagram_user_id all operate on closely related concepts with near-identical names. Descriptions do clarify the boundaries, but the volume of overlapping account/post/sub-resource endpoints creates real misselection risk.
Every tool uses a consistent instagram_ prefix followed by lowercase snake_case, which is predictable. The pattern mixes noun-only names (instagram_profile) with noun_action names (instagram_reels_search), so it is not a strict verb_noun convention, but it is still highly readable and consistent.
At 28 tools the surface is heavy and exceeds the typical 3-15 range, with some endpoints that could be consolidated (e.g. highlight vs highlights, username vs user_id). However, the scope is genuinely broad—profiles, posts, comments, followers, stories, places, audio, search, insights—so most tools earn their place.
Coverage of public Instagram data is strong: profiles, posts, reels, comments, likers, followers/following, stories, highlights, hashtags, places, audio, search, insights, and top accounts are all present. Minor gaps exist (e.g. no single-post insights or live/other niche endpoints), but core lifecycle operations are well covered.
Maintenance
Related MCP Connectors
Instagram data over MCP: profiles, posts, reels, stories, highlights and search as JSON
Public Instagram data via MCP: profiles, posts, reels, ads, transcripts. $5/1k credits; 25 free.
Hosted MCP server for DataLikers — Instagram & TikTok data API. 51 tools: Instagram user search by demographics (gender/age/race/country/city), profiles, bulk lookup, engagement, posts & reels, comments, hashtags, locations, stories, highlights, music, business accounts, top users; TikTok users, videos, comments, hashtags, playlists and top charts. Streamable HTTP, Bearer API key. Free tier: 100 requests on signup at https://datalikers.com/p/1by27bwg
Read-only public Instagram data: profiles, posts, reels, stories, comments, top-accounts ranking.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for HikerAPI — auto-generates 100+ Instagram tools (profiles, posts, reels, stories, comments, hashtags, locations) from the live OpenAPI spec. Local stdio via npx -y hikerapi-mcp, requires only HIKERAPI_KEY.44130 npm9MIT
- FlicenseBqualityDmaintenanceProvides Instagram analytics, media downloads, and search capabilities through an MCP interface for use with Claude and other MCP clients.4344-
- AlicenseNot gradedqualityDmaintenanceA production-ready Remote MCP Server that gives Claude direct, tool-based access to your Instagram Business account through the Meta Graph API — profile data, posts, comments, publishing, insights, analytics, hashtags, messaging, and real-time webhooks.7 npmMIT
- AlicenseNot gradedqualityCmaintenanceMCP server for downloading Instagram content (videos, reels, audio, carousels) using yt-dlp, with tools for downloading media and fetching metadata. Supports stdio and HTTP transports.MIT