Social Media

Instagram Public Data API API

The Instagram API returns public Instagram data — profiles, posts, reels and hashtags — as clean JSON.

10 actionsLive JSON1,000 free creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary profile endpoint returns a username's full name, biography, follower, following and post counts, verified/private/business flags, category and profile picture — no login or scraping. You can also pull a user's posts and reels, run a users_search, expand a post's info and comments, and fetch hashtag results and post audio. It is built for social-analytics tools, creator platforms and brand-monitoring products that need live public Instagram data without account pools or a fragile scraper. One ReefAPI key, one shared credit pool, the standard { ok, data, meta, error } envelope.

Live example

Real request and response JSON

Captured from the indexed primary action, profile, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/instagram/v1/profile",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "username": "nike"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "instagram",
    "endpoint": "profile",
    "mode": "live",
    "latency_ms": 16988.3,
    "record_count": 1,
    "bytes": 119,
    "cache_hit": false,
    "method": "i.instagram.com internal public JSON",
    "content_type": "application/json; charset=utf-8",
    "status": 401
  },
  "data": {
    "username": "nike",
    "full_name": "Nike",
    "biography": "Just Do It.",
    "bio_links": [],
    "pronouns": [],
    "follower_count": 291770197,
    "following_count": 264,
    "post_count": 0,
    "is_verified": true,
    "is_private": false,
    "is_business": false,
    "bio_mentions": [],
    "bio_hashtags": [],
    "profile_pic": "https://scontent.cdninstagram.com/v/t[redacted-phone]/[redacted-phone]_[redacted-phone]_[redacted-phone]_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=1&ccb=7-5&_nc_sid=f7ccc5&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLnd3dy4zOTkuQzMifQ%3D%3D&_nc_ohc=seHSxG1XmiAQ7kNvwHmnIUO&_nc_oc=AdrZlYdwoK2k4WOl1OG4BLaViqAa7Bs-qy_m-5hoy8-LafzAQvwZpldCKc0a_MlDIOU&_nc_zt=24&_nc_ht=scontent.cdninstagram.com&_nc_gid=rQhcgsso9cUouGedQfFwuw&_nc_ss=7ea8c&oh=00_AQDZmik6sLizzAmmPA9fnwXLlyqU_olhT0oaxqukO2nHnQ&oe=6A61A43A",
    "user_id": "13460080",
    "recent_posts": [],
    "timeline_page_info": {}
  }
}
Actions

What the Instagram Public Data API API does

ActionDescriptionConcrete use caseKey params
profilepublic profile facts and first-page recent postsOps teams call profile to get public profile facts and first-page recent posts.username
postspublic profile timeline posts from feed/user with max_id paginationDeveloper tools call posts to get public profile timeline posts from feed/user with max_id pagination.username, limit, max_id, cursor
reelspublic profile reels from clips/user with max_id paginationValidation workflows call reels to get public profile reels from clips/user with max_id pagination.username, limit, max_id, cursor
similar_accountspublic related profiles from web_profile_infoData-quality teams call similar_accounts to get public related profiles from web_profile_info.username, limit
searchtopsearch blended public users, hashtags, and placesOps teams call search to get topsearch blended public users, hashtags, and places.query
users_searchpublic user lookup by handle (exact / near-exact match)Developer tools call users_search to get public user lookup by handle (exact / near-exact match).query
hashtag_searchtopsearch public hashtags onlyValidation workflows call hashtag_search to get topsearch public hashtags only.query
post_infomaximally-complete public post/reel detail by shortcode (URL) or media_idData-quality teams call post_info to get maximally-complete public post/reel detail by shortcode (URL) or media_id.shortcode, media_id
post_commentspublic comments for a post/reel by shortcode (URL) or media_id, with CURSOR paginationOps teams call post_comments to get public comments for a post/reel by shortcode (URL) or media_id, with CURSOR pagination.shortcode, media_id, limit, cursor
audio_mediapublic reels feed that use a given audio/music track, with paginationDeveloper tools call audio_media to get public reels feed that use a given audio/music track, with pagination.audio_id, limit, max_id, cursor
Code samples

Call profile from your stack

curl -X POST https://api.reefapi.com/instagram/v1/profile \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"username":"nike"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.instagram.profile with {"username":"nike"}.
Use cases

Who uses this API and why

  • Creator and influencer platforms call profile to pull follower counts, verification and bio for any public account.
  • Brand-monitoring tools use hashtag_search and posts to track a campaign's reach and engagement.
  • Social-analytics products use reels and post_comments to measure content performance and audience sentiment.
FAQ

Questions developers ask before integrating

What is the Instagram Public Data API API?

Instagram Public Data API API is a ReefAPI endpoint group for instagram public data api It returns live JSON through POST requests under /instagram/v1.

Is the Instagram Public Data API API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Instagram Public Data API calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Instagram Public Data API login or account?

No login to Instagram Public Data API is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Instagram Public Data API data?

The page example is captured from a live profile call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Instagram Public Data API API use?

Instagram Public Data API actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Instagram Public Data API from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call instagram actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the Instagram Public Data API API a Instagram Public Data API scraper?

It is the managed alternative to a DIY Instagram Public Data API scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same instagram public data api back as clean JSON.

Why does my Instagram Public Data API scraper keep getting blocked?

Most Instagram Public Data API scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.

docs / instagram

Instagram Public Data API

Instagram Public Data API

base /instagram/v110 endpoints
post/instagram/v1/profile1 credit

public profile facts and first-page recent posts

ParameterAllowed / rangeDescription
usernamerequiredInstagram handle without the @ (the name in instagram.com/<username>).
Try in playground →
post/instagram/v1/posts1 credit

public profile timeline posts from feed/user with max_id pagination

ParameterAllowed / rangeDescription
usernamerequiredInstagram handle without the @ (the name in instagram.com/<username>).
limit = 12optional1–50Max items to return (1-50). Larger values are clamped to 50.
max_idoptionalPagination cursor from a previous response's page_info.next_max_id (also accepted as 'cursor'). Omit for the first page.
Try in playground →
post/instagram/v1/reels1 credit

public profile reels from clips/user with max_id pagination

ParameterAllowed / rangeDescription
usernamerequiredInstagram handle without the @ (the name in instagram.com/<username>).
limit = 12optional1–50Max items to return (1-50). Larger values are clamped to 50.
max_idoptionalPagination cursor from a previous response's page_info.next_max_id (also accepted as 'cursor'). Omit for the first page.
Try in playground →
post/instagram/v1/similar_accounts1 credit

public related profiles from web_profile_info

ParameterAllowed / rangeDescription
usernamerequiredInstagram handle without the @ (the name in instagram.com/<username>).
limitoptional1–Max related accounts to return (Instagram returns up to ~80).
Try in playground →
post/instagram/v1/post_info1 credit

maximally-complete public post/reel detail by shortcode (URL) or media_id

ParameterAllowed / rangeDescription
shortcodeoptionalPost shortcode — the code in instagram.com/p/<shortcode>/ or /reel/<shortcode>/ (a full post/reel URL is also accepted). Provide shortcode OR media_id.
media_idoptionalNumeric media id (from a post's media_id field). Provide media_id OR shortcode.
Try in playground →
post/instagram/v1/post_comments1 credit

public comments for a post/reel by shortcode (URL) or media_id, with CURSOR pagination

ParameterAllowed / rangeDescription
shortcodeoptionalPost shortcode — the code in instagram.com/p/<shortcode>/ or /reel/<shortcode>/ (a full post/reel URL is also accepted). Provide shortcode OR media_id.
media_idoptionalNumeric media id (from a post's media_id field). Provide media_id OR shortcode.
limitoptional1–Comments per call (default 50; one call returns up to ~1200 within the time budget). For MORE, chunk with `cursor`.
cursoroptionalResume token from a previous call's `next_cursor` — page UNLIMITED depth across short calls (no timeout). Omit for page 1.
Try in playground →
post/instagram/v1/audio_media1 credit

public reels feed that use a given audio/music track, with pagination

ParameterAllowed / rangeDescription
audio_idrequiredNumeric audio/music id. Get it from a reel/post via post_info (post.music.audio_id) — every reel that uses a sound exposes one. Returns the public reels feed built on that sound.
limit = 12optional1–50Max items to return (1-50). Larger values are clamped to 50.
max_idoptionalPagination cursor from a previous response's page_info.next_max_id (also accepted as 'cursor'). Omit for the first page.
Try in playground →