An Instagram MCP server is a Model Context Protocol server that gives an AI agent such as Claude, ChatGPT or Cursor tools for reading Instagram data: profiles, follower counts, posts, reels, hashtags and comments. The best Instagram MCP setup for research is the hosted Scrape.ly MCP server, because your agent runs ready-made Instagram scrapers in the cloud against public, logged-out pages, for any public account, with no Instagram login, no Business account and no developer app.
This guide shows the setup for each client, which Instagram scrapers the agent can call, the exact tool calls, and what came back from real runs on 25 October 2026: two verified brand profiles in 7.8 seconds for half a cent, and NASA's five latest reels with play counts in 10.4 seconds. It also says plainly what an agent can't get from Instagram this way, so you can plan around it.
Two kinds of Instagram MCP server
Search for "instagram mcp" and most of page one connects your own account. The top result on 25 October 2026, mcpware/instagram-mcp, describes itself as integration "with Instagram's Graph API" for "Instagram Business accounts". Its prerequisites are an Instagram Business account connected to a Facebook Page, a Facebook developer account and a long-lived access token; reading and sending DMs also needs Meta's App Review. Hosted connectors from Zapier, Composio, Windsor.ai and Markifact rank next to it, each built around an Instagram account you connect (Zapier's is "Instagram for Business"; Windsor.ai and Markifact name Business and Creator accounts). Another result, shared on r/mcp, fetches posts "using Chrome's existing login session".
Those are tools for one account you own. Most agent questions are about accounts you don't own: a competitor's posting rhythm, a creator's real engagement before a contract, how three brands' reels perform. That needs public data, and that's what the Scrape.ly server reads.
| Scrape.ly MCP server | Graph API servers (top results) | Login-session servers | |
|---|---|---|---|
| Instagram account needed | None | Business account linked to a Facebook Page | Your logged-in browser |
| Whose data | Any public profile, post, reel or hashtag | Starts from the account you connect | Whatever your session sees |
| Setup | One URL, sign in with OAuth | Facebook developer app and an access token | Local browser on your machine |
| Your Instagram account in the loop | Never | Its token on every call | Its session on every call |
| Cost control | Pay per result, a dollar cap per run, scoped keys | Meta's API rules | Runs on your machine |
How to connect the Scrape.ly MCP server
The Scrape.ly MCP server is hosted at https://mcp.scrape.ly, speaks MCP's streamable HTTP transport, and signs you in with OAuth or a Scrape.ly API token. Create a free account first: the free plan includes $5 of usage every month, no card needed.
Claude Code. One command, then run /mcp inside Claude Code and choose scrapely to sign in:
claude mcp add --transport http scrapely https://mcp.scrape.lyClaude Desktop. Add https://mcp.scrape.ly as a custom connector under Customize → Connectors. Claude signs you in with OAuth.
Cursor. Add this to ~/.cursor/mcp.json, or .cursor/mcp.json in a project:
{
"mcpServers": {
"scrapely": {
"url": "https://mcp.scrape.ly",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}Leave out headers and Cursor offers to sign in with OAuth instead. Create a token, if you use one, under Settings → API & Integrations.
ChatGPT, VS Code, Windsurf and others. Any client that supports remote MCP servers over streamable HTTP uses the same URL with OAuth or a Bearer header. The MCP docs have VS Code's .vscode/mcp.json and a local stdio server for clients without remote support.
An Instagram-only server. To give the agent just the Instagram tools, add the Actors to the URL. Each one becomes its own tool, with up to 50 per URL:
https://mcp.scrape.ly?actors=echofield/instagram-profile-scraper,echofield/instagram-reel-scraper,echofield/instagram-scraperThe Instagram scrapers your agent can use
The agent doesn't need one tool per data type. It finds the right Actor in the Scrape.ly Store and runs it. All five Instagram Actors are maintained by Scrape.ly, read logged-out pages and take no session cookie:
| Actor | Input | What comes back | Price per 1,000 |
|---|---|---|---|
| Instagram Profile Scraper | Usernames, IDs or profile URLs | Bio, follower, following and post counts, verified badge, business category, bio links, the 12 latest posts | $2.47 profiles |
| Instagram Reel Scraper | Profiles or reel URLs | Play, like and comment counts, duration, music, caption | $2.47 reels |
| Instagram Post Scraper | Profiles or post URLs | Captions, hashtags, mentions, media, tagged accounts, paid-partnership flag | $1.61 posts |
| Instagram Hashtag Scraper | Hashtags | The public posts or reels on a tag's grid | $1.30 results |
| Instagram Scraper | Any mix of public URLs, or a search | Posts, reels, profile details, the first page of comments, hashtag and place search | $2.56 results |
Prices are pay per result with platform usage included, as listed on each Store page on 25 October 2026. The Hashtag Scraper adds $0.01 per hashtag in posts mode; reels mode has no such fee. The Instagram data scrapers page compares all five with sample output.
What the agent does: the four tool calls
Every Instagram request follows the same path through the server's tools:
search-actorswith a keyword like "instagram" finds the five Actors above.fetch-actor-detailsreturns the chosen Actor's input schema, README and pricing, so the agent knows which fields to send and what the output holds.call-actorstarts the run with a JSON input and waits up to 45 seconds. The runs below finished well inside that; for longer ones the agent follows up withget-actor-run.get-actor-outputreads the results page by page, with only the fields the agent asks for.
The rows never land in the call-actor reply. The agent reads them separately, so a big dataset doesn't flood the context window.
A real run: comparing @natgeo and @nasa
The prompt: "Use scrapely to compare the Instagram profiles of @natgeo and @nasa: followers, following, posts, category, and how their latest posts perform."
The agent picks echofield/instagram-profile-scraper and sends this call-actor request, with a cap on the charge:
{
"actor": "echofield/instagram-profile-scraper",
"input": { "usernames": ["natgeo", "nasa"] },
"waitSecs": 45,
"callOptions": { "maxTotalChargeUsd": 0.05 }
}Our run on 25 October 2026 finished in 7.8 seconds with the status message "Saved 2 profiles." Then the agent reads the fields it needs with get-actor-output:
{
"runId": "17b3b825a2e344fe9",
"fields": "username,fullName,followersCount,followsCount,postsCount,verified,businessCategoryName,externalUrl"
}What came back:
| Account | Name | Followers | Following | Posts | Verified | Category | Bio link |
|---|---|---|---|---|---|---|---|
| @natgeo | National Geographic | 268,286,431 | 195 | not sent | yes | — | visitstore.bio/natgeo |
| @nasa | NASA | 104,378,607 | 90 | 4,978 | yes | Government Agencies | nasa.gov |
Instagram didn't send a post count for @natgeo in this response, so the field is simply absent: the Actor leaves out what Instagram doesn't send instead of guessing.
For the second half of the prompt, the agent read each profile's latestPosts. One detail mattered: six of NASA's 12 latest posts were collaborations that another account had posted with @nasa, so their ownerUsername wasn't nasa. Counting only each account's own posts, NASA's six averaged 567,939 likes, about 0.54% of its followers, and National Geographic's eleven averaged 82,711, about 0.03%. NASA's top post was a carousel of the Sagittarius B2 star-forming region with 1,336,168 likes; National Geographic's was a Costa's hummingbird video with 380,728.
At list price the run cost 2 × $0.00247 = $0.00494, platform usage included. Our account was billed $0.00395 after its plan's Store discount.
A real run: NASA's latest reels by plays
The prompt: "What are NASA's five latest reels on Instagram, and how many plays did each get? Skip pinned ones."
The agent sends echofield/instagram-reel-scraper this input:
{ "username": ["nasa"], "resultsLimit": 5, "skipPinnedPosts": true }It finished in 10.4 seconds. Five reels:
| Date | Posted by | Plays | Likes | Comments | Length | Caption, first line |
|---|---|---|---|---|---|---|
| 2026-10-25 | a collaborator, with @nasa | 1,227,783 | 12,989 | 72 | 62 s | This is how @nasa does game day. |
| 2026-10-23 | @nasa | 2,504,749 | 53,790 | 440 | 60 s | We are not slowing down. |
| 2026-10-22 | a collaborator, with @nasa | 2,111,292 | 21,526 | 177 | 32 s | 28.1 miles. A new off-world record on Mars. |
| 2026-10-20 | @nasa | 3,755,964 | 55,531 | 451 | 46 s | There's a lot of ground to cover when you're building a Moon Base. |
| 2026-10-09 | a collaborator, with @nasa | 3,686,511 | 60,236 | 639 | 111 s | The journey brought them home. |
The Moon Base reel led with 3.76 million plays; likes per play ran from 1.0% to 2.1%. Each row also carried the reel URL, the music (all five used original audio) and the co-authors. Cost: 5 × $0.00247 = $0.01235 at list price; we were billed $0.00988.
Prompts that work well
Name the Actor, the size of the job and a cap, and the agent does the rest:
- "Use scrapely to get the profiles of @patagonia, @nike and @duolingo and rank them by average likes per post, counting only their own posts."
- "Run echofield/instagram-reel-scraper on @natgeo for reels from the last 30 days and list the three with the most plays."
- "Get the latest 12 posts from @nasa with echofield/instagram-post-scraper and tell me which hashtags they use most."
- "Use the Instagram Hashtag Scraper in reels mode for #coldbrew, 12 results, and summarize what kind of content performs."
- "Do all of this with a maximum charge of $0.25 per run."
The agent turns that last line into callOptions.maxTotalChargeUsd, which stops the run when it reaches the cap.
What your agent can and can't get from Instagram
These scrapers see what Instagram shows a logged-out visitor. That covers most research jobs, and the edges are worth knowing before you write a prompt:
- Follower counts, not follower lists. The Profile Scraper returns follower and following counts, and related profiles when Instagram sends them. Instagram doesn't show a logged-out visitor who the followers are, so no list comes back.
- No stories or mentions. The Instagram Scraper's README says stories and mentions "have stayed empty", so don't build on them. A profile's
hasPublicStoryflag tells you a story is live, not what's in it. - Comments are a preview. The Instagram Scraper returns the first page of comments; the Post and Reel Scrapers carry a short preview. A second page and nested replies aren't part of the output.
- Hashtags show the public grid. A logged-out tag page holds about a dozen posts per tag, per the Hashtag Scraper's README, so a higher limit doesn't add more.
- Private profiles stop cleanly. A private or missing account is listed under
failedInputswith its reason and isn't charged. - Hidden counts are flagged. When a creator hides likes,
likesCountis-1, not a guess. - Public data only. The agent never signs in, so DMs, account insights and posting are outside what it reads, and your Instagram account is never at risk.
Spending control for agents
An agent that can start paid runs needs limits, and the Scrape.ly server has three:
- A dollar cap per run.
maxTotalChargeUsdcovers everything the run can cost. The Instagram Actors stop cleanly at the cap and keep what they saved. - Scoped API keys with daily charge limits. Give an unattended agent its own key under Settings → API keys, with only
actors:runandruns:read, and a daily limit on what it can spend. - A prepaid balance. Usage draws from your balance. There's no surprise invoice at the end of the month.
Is it legal to scrape Instagram with an AI agent?
The agent collects what Instagram shows any logged-out visitor. Instagram's Terms of Use say you can't access or collect information "in an automated way without our express permission, regardless of whether such automated access or collection is undertaken while logged-in to an Instagram account". In Meta v. Bright Data (N.D. Cal., January 2024), the court found that Meta's terms did not apply to logged-off scraping of publicly viewable data; our guide to web scraping and the law covers the case. Accounts are often people, so treat what comes back as personal data: collect what you need, with a lawful basis, under the GDPR, CCPA and local rules. This is not legal advice.
For a REST endpoint instead of a chat, the Instagram API page has Python, JavaScript and cURL examples, and our guide on how to scrape Instagram walks through every Actor without an agent. The same server works for other sites: see LinkedIn MCP, Reddit MCP and the best MCP servers for web scraping.
FAQ
Is there an Instagram MCP server?
Yes, several. Most connect your own Instagram Business or Creator account through Meta's Graph API. The Scrape.ly MCP server works the other way: it runs scrapers that read public Instagram profiles, posts, reels and hashtags in the cloud, so you don't connect an Instagram account at all.
What is the Instagram MCP server URL?
For Scrape.ly it's https://mcp.scrape.ly, the same URL for Claude, ChatGPT, Cursor and every other client. Add ?actors=echofield/instagram-profile-scraper,echofield/instagram-reel-scraper to expose only the Instagram tools.
Can ChatGPT analyze an Instagram account?
Yes, once it can fetch the data. Connect ChatGPT, or Claude or Cursor, to https://mcp.scrape.ly, ask about a public account, and the agent runs the Profile or Reel Scraper and analyzes the numbers it gets back: followers, likes, comments and plays per post.
Can my agent get an Instagram account's follower list?
No. It gets follower and following counts, the latest posts and, when Instagram sends them, related profiles. Instagram doesn't show the list of followers to a logged-out visitor, and the Scrape.ly Actors never log in.
Is there a free Instagram MCP server?
The Scrape.ly server itself costs nothing, and the free plan includes $5 of usage every month, enough for about 2,000 profiles at $2.47 per 1,000. Our two-profile run cost under half a cent.
Do I need the Instagram API?
No. The Actors read public pages, so there's no Meta developer app, Business account or access token to set up. You only need a Scrape.ly account.




