Skip to main content
Two endpoints, one key. Post reads one public photo, video, reel, or carousel. Profile reads one public account, personal, creator, or business. Both read the page Instagram serves a signed-out visitor. See the Instagram API: overview, pricing, and free tier.

Post

GET /v1/instagram/post · 1 request
/p/, /reel/, and /tv/ links all work, with or without the username in them. query.shortcode is the shortcode, even when you sent a link.

Profile

GET /v1/instagram/profile · 1 request
The body is profile: user_id, username, full_name, url, bio, links, avatar, verified, private, exact followers_count and following_count, posts_count, highlights, and latest_posts.

Errors

A post or account that is gone or never existed returns 404 not_found, as does a post Instagram shows only to signed-in viewers. Instagram serves a missing page and a refused request the same error page, so Clair returns 404 only after two scraping vendors both got it; a single refusal moves on to the next vendor. A malformed shortcode or username is 400.

What this API does not do

  • It does not return view counts, which are not on the signed-out page.
  • It does not search hashtags or read a hashtag page, which needs a login.
  • It does not return a licensed song’s details or a post’s location yet.
  • It does not read stories, or anything that needs a signed-in account.
Auth, plans, rate limits, and error codes: Authentication.