instagram-api
This skill provides easy access to Instagram's public data via simple HTTP GET requests. It covers profiles, posts, reels, stories, followers/followings, hashtags, locations, and post comments—no login, no session cookies, no headless browser, and no Graph API business verification required. This Skill is ideal for social media monitoring, influencer research, content analytics, and market intelligence. By simplifying data collection into a single authenticated call, users can integrate Instagram data into their workflows in minutes instead of days, significantly accelerating development timelines and reducing operational complexity. Whether you need to track competitors, analyze engagement, or build dashboards, this Skill offers a reliable and cost-effective solution.
npx skills add https://github.com/fetcher-sh/fetcher-skills --skill instagram-apiBefore / After Comparison
1 组Without this skill, developers had to apply for Instagram's official API permissions, go through complex business verification, set up OAuth, and still couldn't access certain endpoints like Stories or Tagged Posts. A basic data integration typically took days.
This skill requires only one HTTP GET request and a Bearer Token to call all 16 endpoints, eliminating authentication setup. It enables developers to complete integration in minutes, greatly improving development speed.
Instagram API
Instagram data on demand: profile lookup by @handle, posts, reels, stories, tagged posts, followers and followings, hashtag and location feeds, audio/music feeds, and post comments — one plain HTTP GET per call, paid as you go. No login, no session cookies, no headless browser, no Graph API business verification.
Base URL: https://instagram.fetcher.sh
Quick reference
| Base URL | https://instagram.fetcher.sh |
| Auth | Authorization: Bearer bby_live_... or x402 (USDC) |
| Price | $0.004/call (flat) |
| Endpoints | 16, all GET |
| MCP | https://instagram.fetcher.sh/mcp |
| Machine-readable | /openapi.json · /llms.txt · /skill.md |
Which endpoint do I need?
| I want to... | Call |
|---|---|
| Look up a profile by @handle | GET /api/user/handle/{handle} |
| Search accounts by name | GET /api/user/search |
| Get a user's posts, reels, or stories | GET /api/user/{id}/posts / /reels / /stories |
| Get a user's followers or followings | GET /api/user/{id}/followers / /followings |
| Look up a post by its share-URL shortcode | GET /api/post/code/{code} |
| Get a post's comments | GET /api/post/{id}/comments |
| Find posts under a hashtag | GET /api/hashtag/{name}/posts |
| Find posts tagged at a location | GET /api/location/{id}/posts |
Full param details for every row: references/endpoints.md.
Authentication
Two ways to pay, same data — full mechanics in the fetcher
skill:
# 1. Prepaid credits (recommended — get a key at https://fetcher.sh/topup
# or via POST /api/credits/topup, see the fetcher skill)
export FETCHER_API_KEY="bby_live_xxxxxxxxxxxx"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/user/handle/nasa"
# 2. x402 pay-per-call — omit the header; a GET with no payment returns 402
# with machine-readable payment requirements (USDC on Base, Polygon,
# Arbitrum, Monad, or Solana). @x402/fetch signs and retries automatically.
Every response is { "status": number, "message": string, "data": ... }; the
HTTP status mirrors status.
Endpoints (16 — all GET, $0.004/call)
| Endpoint | What it returns |
|---|---|
/api/user/handle/{handle} | Full profile by @handle — follower counts, bio, numeric ID |
/api/user/search | Profiles matching a keyword query |
/api/userid/{handle} | Just the numeric user ID for a @handle |
/api/user/{id} | Profile by numeric ID |
/api/user/{id}/posts | A user's posts |
/api/user/{id}/posts/tagged | Posts the user is tagged in |
/api/user/{id}/reels | A user's reels |
/api/user/{id}/stories | A user's active stories |
/api/user/{id}/followers | A user's followers |
/api/user/{id}/followings | Accounts a user follows |
/api/post/code/{code} | A single post by its shortcode (from the post URL) |
/api/post/{id}/comments | A post's comments |
/api/hashtag/{name}/posts | Posts under a hashtag |
/api/hashtag/{name}/reels | Reels under a hashtag |
/api/location/{id}/posts | Posts tagged at a location |
/api/audio/{id}/posts | Posts using a specific audio/music track |
{id} / {handle} / {name} / {code} are path parameters. Optional
cursor / page paginate; query (user search) is required where it
appears.
Scenarios
Resolve a profile by handle — the endpoint most callers want first:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/user/handle/nasa"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/user/handle/natgeo"
Search for profiles by keyword, or resolve just the numeric ID for a handle:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "query=fitness influencer" -G \
"https://instagram.fetcher.sh/api/user/search"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/userid/nasa"
A profile's posts, reels, stories, and tagged posts (by numeric ID from the handle lookup above):
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/user/528817151/posts"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/user/528817151/reels"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/user/528817151/stories"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/user/528817151/posts/tagged"
Followers and followings:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/user/528817151/followers"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/user/528817151/followings"
A single post by shortcode (the part of the URL after /p/), and its
comments:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/post/code/C0JD3tntcmy"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/post/3245142029192513970/comments"
Posts and reels under a hashtag, posts from a location, and posts using an audio track:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/hashtag/travel/posts"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/hashtag/travel/reels"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/location/213131048/posts"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://instagram.fetcher.sh/api/audio/271328201351336/posts"
MCP
{
"mcpServers": {
"instagram": {
"url": "https://instagram.fetcher.sh/mcp",
"headers": { "Authorization": "Bearer bby_live_..." }
}
}
}
Free: search_endpoints, describe_endpoint, check_balance. Paid:
fetch_data (any endpoint above), topup_credits, plus the named shortcut
instagram_user_handle. Drop the headers block to pay per call with x402
instead — see the fetcher skill for the full flow.
Errors
400— missing/invalid parameter (message names it)401— unknown or rotated key402— payment required (x402 challenge) ortopup_required(credits exhausted)404— not a priced path- No rate limits; no refunds on upstream failures (settlement precedes delivery)
Reference
- Deep dives:
references/endpoints.md(every param) ·references/scenarios.md(onecurlper endpoint) ·references/faq.md·references/comparison.md(vs. the official Instagram Graph API and a browser scraper) - Task guides: profile lookup · hashtag and location monitoring
- Slash command:
/instagram-profile - Full agent setup: https://instagram.fetcher.sh/skill.md
- OpenAPI 3.1 contract: https://instagram.fetcher.sh/openapi.json
- Condensed catalog: https://instagram.fetcher.sh/llms.txt
- Payment, credits, and MCP deep dive:
fetcherskill - Site: https://instagram.fetcher.sh
User Reviews (0)
Write a Review
No reviews yet
Statistics
User Rating
Rate this Skill