instagram-mcp
Provides tools for searching Instagram profiles, reels, posts, carousels, and stories; fetching profile stats, comments, likers, followers, and following; analyzing publications; downloading media and audio; and exporting results to CSV/JSON, all through the Instagram API via HikerAPI.
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-mcp search reels about dubai real estate"
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 CLI
Terminal-first Instagram analytics, downloads, and MCP tools powered by HikerAPI, OpenRouter, and FastMCP.
___ _ _ ____ _____ _ ____ ____ _ __ __ ____ _ ___
|_ _| \ | / ___|_ _|/ \ / ___| _ \ / \ | \/ | / ___| | |_ _|
| || \| \___ \ | | / _ \| | _| |_) | / _ \ | |\/| | | | | | | |
| || |\ |___) || |/ ___ \ |_| | _ < / ___ \| | | | | |___| |___ | |
|___|_| \_|____/ |_/_/ \_\____|_| \_\/_/ \_\_| |_| \____|_____|___|
INSTAGRAM-CLI by @lupikovolegWhat It Does
Search Instagram by topic with adaptive deep pagination, including multilingual reel and media discovery
Filter search results by freshness, including
todayandlast N daysFetch profile stats, reel stats, up to 100 root comments per media, likers, followers, following, stories, and highlights
Analyze profile publications from the main grid:
reels
posts
carousels
Inspect pinned posts, tagged publications, comment replies, tagged users, and media insight metrics
Discover content and entities through:
hashtags
places
music tracks
suggested related profiles
Check HikerAPI balance and request-rate data from the CLI or MCP
Download Instagram content locally:
reels and posts
audio tracks
active stories
highlights
Export collected results to
csvorjsonSupport natural-language interaction with tool calling in the CLI
Handle chained workflows such as:
search -> inspect -> rank -> export
open a profile -> analyze publications -> download content
fetch a reel -> inspect comments or likers -> export the result
Expose the same capability layer through a local MCP server for Claude and other MCP clients
Related MCP server: Instagram MCP Server
Requirements
macOS or Linux
Python
3.10+HIKERAPI_KEYorHIKERAPI_TOKENOPENROUTER_API_KEYfor the interactive CLI agent
Installation
cd /path/to/instagram-cli
./install.shThis installs two commands:
instagramfor the interactive CLIinstagram-mcpfor the local MCP server
Install as a Python dependency in another project:
pip install git+https://github.com/lupikovoleg/instagram-cli.gitFirst Run
The CLI uses its own .env file.
default path:
/path/to/instagram-cli/.envoverride path:
INSTAGRAM_CLI_ENV_FILE=/path/to/custom.env
If required keys are missing, the CLI bootstrap asks for them and writes the local .env.
Quick Start
Start the CLI:
instagramTypical commands:
instagram> profile lupikovoleg
instagram> search portugal creators
instagram> search reels about dubai attack
instagram> publications lupikovoleg 10 30 all
instagram> comments https://www.instagram.com/reel/XXXXXXXXXXX/ 100
instagram> download media https://www.instagram.com/reel/XXXXXXXXXXX/
instagram> export csv latest-results
instagram> how many followers does @lupikovoleg have?
instagram> find today's reels about an attack on Dubai
instagram> find 100 reels about Dubai real estateStart the MCP server:
instagram-mcpUse it as a Python library:
from instagram_cli import InstagramClient
client = InstagramClient.from_env(env_file="/path/to/instagram-cli/.env")
profile = client.get_profile_stats(target="lupikovoleg")Custom agent example:
python /path/to/instagram-cli/examples/custom_agent.py \
--env-file /path/to/instagram-cli/.env \
"How many followers does @lupikovoleg have?"MCP Setup
Claude Code:
claude mcp add instagram-cli -- /path/to/instagram-cli/.venv/bin/instagram-mcpClaude Desktop config file on macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonExample:
{
"mcpServers": {
"instagram-cli": {
"command": "/path/to/instagram-cli/.venv/bin/instagram-mcp",
"args": [],
"env": {
"INSTAGRAM_CLI_ENV_FILE": "/path/to/instagram-cli/.env"
}
}
}
}Documentation
Internal Python integration is documented in the Python library guide. For your own Python product, prefer direct embedding with
InstagramClientover MCP.
Project Notes
CLI mode uses OpenRouter for natural-language tool selection and query expansion.
Search is adaptive by default: if
limitis omitted, the tool can paginate internally up to 50 final results; explicit one-shot search requests are capped at 100.High-level comment collection returns root comments only and can paginate internally up to 100 comments per media.
MCP mode does not use OpenRouter internally for search. MCP clients can pass
query_variantswhen richer multilingual retrieval is needed.Python library mode uses the same deterministic
InstagramOpslayer as the CLI and MCP server, exposed throughInstagramClient.Expensive follower and liker analysis is intentionally capped by default to avoid burning HikerAPI credits.
Some tools are exact page reads, while sampled ranking tools explicitly mark themselves as approximate.
Available Tools
43 toolsdownload_media_audioB
Download the audio track from a reel or post.
Inputs: media_url (required). Returns: object
download_media_contentC
Download a reel or post to local files.
Inputs: media_url (required). Returns: object
download_profile_highlightsC
Download highlights for a profile, optionally filtered by title.
Inputs: target (required), title_filter, limit_highlights. Returns: object
download_profile_storiesC
Download active stories for a profile.
Inputs: target (required), limit. Returns: object
export_resultC
Export a stored result by result_id to CSV or JSON.
Inputs: result_id (required), format (required), filename_hint. Returns: object
get_comment_likersC
Get users who liked a specific comment.
Inputs: comment_id (required), media_id, page_id, limit. Returns: object
get_comment_repliesB
Get nested replies for a specific comment on a reel or post.
Inputs: comment_id (required), media_url (required), page_id. Returns: object
get_followers_pageC
Get one low-cost followers page for a profile.
Inputs: target (required), limit, page_id. Returns: object
get_following_pageC
Get one page of following accounts for a profile.
Inputs: target (required), limit, page_id. Returns: object
get_hashtag_infoC
Get metadata for an Instagram hashtag.
Inputs: name (required). Returns: object
get_hashtag_reelsC
Get reels for an Instagram hashtag.
Inputs: name (required), limit. Returns: object
get_last_reel_metricC
Get one metric from the latest reel of a profile.
Inputs: target (required), metric (required). Returns: object
get_location_recent_mediaC
Get recent media for an Instagram location id.
Inputs: location_pk (required), limit. Returns: object
get_media_commentsA
Get up to 100 root comments for an Instagram reel or post URL with internal pagination.
Inputs: media_url (required), limit. Returns: object
get_media_comments_pageB
Get one paginated page of root comments for an Instagram reel or post URL.
Inputs: media_url (required), page_id, page_size. Returns: object
get_media_insightC
Get deeper insight metrics for an Instagram reel or post.
Inputs: media_url (required). Returns: object
get_media_likersC
Get a preview list of users who liked an Instagram reel or post.
Inputs: media_url (required), limit. Returns: object
get_media_usertagsC
Get users tagged in an Instagram reel or post.
Inputs: media_url (required). Returns: object
get_profile_highlightsC
List highlight folders for a profile.
Inputs: target (required), limit. Returns: object
get_profile_pinned_publicationsC
Get pinned publications for a profile.
Inputs: target (required), limit. Returns: object
get_profile_publicationsC
Get main-grid profile publications, including reels, posts, and carousels.
Inputs: target (required), limit, days_back, publication_type. Returns: object
get_profile_publications_pageB
Get one cursor-based page of profile publications, including reels, posts, and carousels. Use next_page_id from a previous page to continue.
Inputs: target (required), page_id, page_size, days_back, +1 more. Returns: object
get_profile_reelsC
Get reels for a profile with an optional days_back filter.
Inputs: target (required), limit, days_back. Returns: object
get_profile_reels_pageA
Get one cursor-based page of profile reels. Use next_page_id from a previous page to continue.
Inputs: target (required), page_id, page_size, days_back. Returns: object
get_profile_statsC
Get Instagram profile stats by username or profile URL.
Inputs: target (required). Returns: object
get_profile_storiesC
List active stories for a profile.
Inputs: target (required), limit. Returns: object
get_profile_suggestionsC
Get suggested profiles related to a profile.
Inputs: target (required), expand_suggestion, limit. Returns: object
get_profile_tagged_publicationsC
Get publications where a profile is tagged.
Inputs: target (required), limit. Returns: object
get_profile_tagged_publications_pageB
Get one cursor-based page of publications where a profile is tagged.
Inputs: target (required), page_id, page_size. Returns: object
get_recent_reelsC
Get latest reels for a profile.
Inputs: target (required), limit. Returns: object
get_reel_statsC
Get Instagram reel or post stats by media URL.
Inputs: media_url (required). Returns: object
get_system_balanceA
Get the current HikerAPI balance and request rate.
Inputs: no named parameters. Returns: object
get_top_followersC
Get an approximate sampled ranking of the biggest followers by follower count.
Inputs: target (required), sample_size, top_n, max_pages. Returns: object
get_track_mediaC
Get media using a specific Instagram track id.
Inputs: track_id (required), page_id, limit, stream. Returns: object
list_resultsA
List recent stored MCP results so a client can choose a result_id for export or follow-up.
Inputs: limit. Returns: object
rank_media_likers_by_followersC
Build a ranking of media likers sorted by follower count.
Inputs: media_urls (required), top_n. Returns: object
read_resultC
Read a stored MCP result by result_id.
Inputs: result_id (required). Returns: object
search_instagramA
Search Instagram by topic with adaptive deep pagination, optional client-supplied query_variants, media filtering, and freshness filters. If limit is omitted, the server targets up to 50 final results by default. In MCP mode this tool is deterministic and does not call OpenRouter internally.
Inputs: query (required), limit, media_only, today_only, +2 more. Returns: object
search_musicB
Search Instagram music/audio tracks by query.
Inputs: query (required), limit. Returns: object
search_placesC
Search Instagram places by query.
Inputs: query (required), lat, lng, limit. Returns: object
search_profile_followersC
Search inside a profile's followers list by keyword.
Inputs: target (required), query (required), force. Returns: object
search_profile_followingC
Search inside a profile's following list by keyword.
Inputs: target (required), query (required), force. Returns: object
server_infoA
Describe the MCP server, configured models, and main capabilities.
Inputs: no named parameters. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 43 tools
Most tools have distinct purposes, but there is some overlap between profile publication retrieval variants (e.g., get_profile_publications vs get_profile_reels) and multiple pagination methods. Detailed descriptions help differentiate, but agents might still confuse similar tools.
Tools follow a verb_noun pattern with consistent use of underscores and prefixes like get_, search_, download_. However, a few tools like server_info lack a verb, and there's a mix of verbs (get, download, search, list, export, rank, read), but the overall structure is predictable.
43 tools is on the high side for an MCP server. While the domain is broad, some tools seem redundant (e.g., multiple pagination helpers). It could be streamlined to reduce cognitive load, but the count is still within a manageable range.
The server covers a wide range of Instagram data: profiles, media, comments, hashtags, locations, music, stories, highlights, insights, search, and export. Missing actions like posting or interacting (like, comment, follow) are likely intentional, making it a comprehensive read-only toolset.
Maintenance
Related MCP Connectors
Instagram data over MCP: profiles, posts, reels, stories, highlights and search as JSON
Hosted Instagram MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Instagram MCP for DM and comment automation, AI Agent and content publishing via Meta's official API
Social media MCP server: your Instagram, TikTok, YouTube, LinkedIn and Threads history for your AI.
Related MCP Servers
- AlicenseAqualityCmaintenanceConnects Claude Desktop and other MCP clients to the Instagram Graph API for reading analytics, managing comments, and publishing photos, carousels, and reels.11129 npm1MIT
- AlicenseNot gradedqualityDmaintenanceExposes Instagram actions (posts, media, comments, DMs, insights, Messenger profile) to Claude and ChatGPT via MCP.1MIT
- 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 gradedqualityDmaintenanceConnects Claude to the official Meta Instagram Graph API (read-only) for retrieving Instagram profile, media, insights, and comments as MCP tools over Streamable HTTP.1MIT