Use when a task needs public Instagram data or downloads without an Instagram login - a profile, posts, reels, stories, highlights, followers, following, comments, likers, account search, or a direct...
Public Instagram data for agents: profiles, posts, reels, stories, highlights, followers, comments and likers, plus direct video links in original quality. No Instagram account, cookies or proxies are involved. Private accounts are not available.
get_instagram_profile, list_instagram_stories): use them. Nothing else to set up.INSTAGRAM_API_TOKEN in the environment, or the user pastes one): call the REST API with curl.https://api-wh.storiesig.info/instagram/mcp, streamable HTTP, OAuth sign-in in the browser, 50 free requests. In Claude Code: claude mcp add --transport http storiesig-instagram https://api-wh.storiesig.info/instagram/mcp, then /mcp and Authenticate. Other clients: https://storiesig.info/en/mcp/Do not scrape instagram.com pages, and never ask for the user's Instagram password or session cookies. If the user pastes their Instagram login anyway, do not use it and suggest changing the password.
| Task | Tool | Input |
|---|---|---|
| Find an account by person or brand name | search_instagram_accounts |
query |
| Profile: bio, follower and post counts | get_instagram_profile |
username |
| Posts, reels or tagged posts of an account | list_instagram_posts |
username, type (posts, reels, tagged), maxId |
| One post, reel or carousel | get_instagram_post |
url or shortcode |
| Direct video links | download_instagram_video |
url of a post, reel or IGTV video |
| Comments on a post | list_instagram_comments |
url or shortcode, cursor |
| Accounts that liked a post | list_instagram_post_likers |
url or shortcode |
| Followers | list_instagram_followers |
username, cursor |
| Accounts it follows | list_instagram_following |
username, cursor, count |
| Stories live right now | list_instagram_stories |
username |
| One story by link | get_instagram_story |
url |
| Highlights of an account | list_instagram_highlights |
username |
| Stories inside one highlight | list_instagram_highlights |
highlightId exactly as the first call returned it |
maxId for posts and as cursor for followers, following and comments. list_instagram_post_likers takes no cursor and returns a single page.payment_required or plan_limit_reached, give the user every URL from it exactly as written and make no more calls: the rest of the task needs the same quota. Report what was done and what is left.Every endpoint is a POST to https://scraperapi.to/scrape/instagram-scraper/<endpoint> with a JSON body. A missing or wrong token returns 401.
curl -s -X POST https://scraperapi.to/scrape/instagram-scraper/userInfo \
-H "Authorization: Bearer $INSTAGRAM_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"username": "natgeo"}'
| Endpoint | Body | Returns |
|---|---|---|
userInfo |
username |
Profile: bio, picture, follower, following and post counts |
posts |
username |
Posts with captions and media URLs |
reels |
username |
Reels with video URLs |
taggedPosts |
username |
Posts where the account is tagged |
stories |
username |
Stories live right now |
highlights |
username |
Highlight ids, titles and covers |
highlightStories |
highlightId |
Stories inside one highlight. The id looks like highlight:17898029584289730 |
followers |
username |
Followers |
followings |
username |
Accounts it follows |
comments |
shortcode |
Comments with authors |
likers |
shortcode |
Accounts that liked the post |
Each REST call returns one page: the first page of reels, tagged posts, followers, followings or comments. When the task needs the full list, use the MCP tools, which take the next-page cursor. If they are not connected, return the first page and offer to connect the MCP server for the rest.
Plans: Free 1,000 requests a month at 2 requests per second, then $50, $150 and $250 a month for 50,000, 250,000 and 1,000,000 requests.
username is the handle without @. shortcode is the code after /p/ or /reel/ in a post URL.