Instagram scraper API
The Instagram scraper API for public profiles, posts, reels, comments and followers, as JSON. No Meta app review, no Business account, no scraper to keep alive.
36 endpoints · from 10 credits a call · 10 free calls up to 100 credits each · no credit card
curl "https://api.insightsocial.app/v1/instagram/profile?handle=example_creator" \-H "x-api-key: $INSIGHTSOCIAL_API_KEY"
What Instagram data can you get?
Public Instagram data only, returned in the same JSON envelope as every other platform.
Profiles and contact details
Bio, exact follower count and verification, plus public business contact info (email/phone) where the account lists it.
Posts and reels
An account's recent posts and reels with captions, like, comment and play counts, and Collab co-authors.
Comments, replies and likers
Comment threads under any public post, with replies, plus a sample of the accounts that liked it.
Followers, search and discovery
Follower and following lists, hashtag and location posts, profile search and similar accounts.
Instagram API endpoints
All 36 Instagram endpoints and their price in credits. 14 are metered: they show a range and charge what the call actually read.
| Endpoint | Credits | What it returns |
|---|---|---|
| /profile | 10 | Returns an Instagram account's public profile: bio, exact integer follower count on author.followers, following count, picture URL, verification, and author.ext.public_email from the bio. |
| /profile/about | 10 | Returns Instagram's "About this account" details for a public account (country, month joined, published contact) plus its follower count and lifetime post count. |
| /profile/posts | 10–130 | Returns a user's recent posts with caption, like and comment counts, media URL, media type, and timestamp; share counts are not included. |
| /post | 10 | Returns one post's details: caption, view count on videos and reels, like and comment counts, media URLs, media type, the author, and any tagged users. |
| /post/comments | 50–150 | Returns a post's comments, each with its text, author, like count, reply count, and time, ranked by popularity by default or newest first. |
| /comment | 50–150 | Returns one comment's current text, like count, reply count, author, and timestamp, plus the post's total comment count for context. |
| /basic-profile | 10 | Returns a minimal Instagram profile looked up by numeric user id: username, full name, and profile picture. |
| /profile/reels | 10–140 | Returns a user's reels with view, like and comment counts and a thumbnail; share counts are not included here. |
| /highlights | 10 | Returns a user's saved story highlight collections, each with its title, cover image, and the number of items inside. |
| /highlight/detail | 10 | Returns the individual stories saved inside one highlight, with their media URLs, timestamps, and interaction counts. |
| /search/reels | 10–650 | Returns reels matching a keyword, each with its view count, like count, and author; share and save counts are not included on this endpoint. |
| /media/transcript | 100 | Returns the spoken words in an Instagram video or reel of up to 2 minutes as text. |
| /media/screen-text | 50–50 | Returns the text shown on an Instagram post's images, read by AI: the photo, each carousel slide up to 10, or a reel's cover frame, with results per slide. |
| /audio/reels | 10 | Returns reels that use one specific audio track, each with its engagement counts and the account that posted it. |
| /search/hashtag | 50 | Returns public posts carrying a hashtag, each with shortcode, URL, caption, media URLs, engagement counts, and the author; share and save counts are not included. |
| /search/profiles | 10–250 | Returns public profiles matching a keyword, each with username, display name, bio, follower and following counts, post count, and profile URL. |
| /reels/trending | 50 | Returns reels from Instagram's public trending page, each with shortcode, URL, caption, media URLs, engagement counts where shown, and the account. |
| /followers | 50–100 | Returns the accounts that follow a user, each with username, display name, avatar URL, verification status, and profile URL. |
| /following | 50–100 | Returns the accounts a user follows, each with username, display name, avatar URL, verification status, and profile URL. |
| /similar | 50–850 | Returns the accounts Instagram suggests as similar to a given user, each with username, display name, avatar URL, verification status, and URL. |
| /post/likers | 50 | Returns up to about 2,000 of the accounts that liked a post, each with username, display name, avatar, and verification status, plus the full like count, in one call with no further pages. |
| /post/stats | 50–90 | Returns one post's engagement: likes, comments, and, on video posts only, the play count and the share count shown by the paper plane icon. |
| /tagged | 50 | Returns posts that tag a given user, each with its shortcode, URL, caption, media URLs, engagement counts, and the account that posted it. |
| /location/posts | 50 | Returns posts tagged at a place, newest first, about 60 a page, each with shortcode, URL, caption, media URLs, engagement counts, and the author. |
| /engagement | 50 | Returns an engagement report for an account: its engagement rate over the recent posts, follower count, total likes and comments, and a per-post breakdown. |
| /search/location | 50 | Returns places matching a keyword, each with its location id, name, and coordinates, plus a display title and subtitle. |
| /search | 10 | Returns mixed Instagram search matches for a query: accounts, hashtags, and places in one payload. |
| /search/popular | 10–130 | Returns popular Instagram posts matching a keyword, each with caption, play count, permalink, thumbnail, and the owner's username. |
| /post/comment/replies | 10 | Returns replies under one Instagram comment, each with text, like count, nested reply count, author, and timestamp. |
| /username-suggestions | 50 | Returns suggested available Instagram usernames built from a keyword you supply. |
| /search/music | 50 | Returns audio tracks matching a keyword, each with artist, title, audio and cover artwork URLs, duration, and usage details. |
| /stories | 50 | Returns the stories a user has live right now, each with its id, image or video URLs, thumbnail, duration, capture time, and the author. |
| /story/download | 50 | Returns the full resolution image or video URLs and metadata for one specific story. |
| /profile/full | 50 | Returns the profile plus its latest 12 posts in one call. |
| /profile/reels/full | 50–250 | Returns a user's reels with views, likes, comments, and a per-reel share count where the second source exposes one, plus a coverage figure. |
| /profile/posts/full | 50–250 | Returns a user's recent posts with likes, comments, views, and a per-post share count where the second source exposes one, plus a coverage figure. |
Parameters, response fields and examples for each endpoint are in the Instagram API reference.
InsightSocial vs the official Instagram API
The Instagram Graph API is built for Business and Creator accounts that connect to your app, and every permission goes through Meta app review.
| InsightSocial API | Official Instagram API | |
|---|---|---|
| Whose data | Any public account, personal or business | Accounts that connect to your app; limited lookups of other Business accounts |
| Approval | None. Sign in and copy a key | Meta app review for each permission |
| Followers and likers | Lists of accounts, page by page | Counts only, not the accounts |
| Comments | Any public post, with replies | Posts on accounts you manage |
| Cost per call | 10 credits | No per-call price; access is gated by Meta app review |
The official API is the right tool for posting, messaging or managing accounts you own. This one is read-only public data.
How much does the Instagram API cost?
Instagram calls start at 10 credits. Every endpoint's price is in the table above and in the free GET /v1/endpoints catalogue, so you know the cost before you call. Pro's 10,000 monthly credits cover about 1,000 profiles at 10 credits each.
Failed calls are free
A call that errors or finds nothing costs 0 credits.
Retries are free
Resend a request with the same Idempotency-Key and the replay costs 0. Repeating a call without one is charged like the first time, because it can return newer data.
One balance
API calls and Chrome extension exports share the same credits. The free plan includes 500 a month.
Not writing code?
Connect InsightSocial to Claude or ChatGPT and ask for Instagram data in plain English. Same account, same credits.
Instagram API: frequently asked questions
Not for personal accounts. Meta retired the Instagram Basic Display API in December 2024, and the Graph API that remains reads Business and Creator accounts that connect to your app, after app review. The InsightSocial API reads any public profile with one key and no review.
Yes. /v1/instagram/followers and /v1/instagram/following return the accounts page by page, each with its username and profile details. Private accounts are not readable by anyone outside their approved followers, including us.
Only when it is public. /v1/instagram/profile returns public business contact info (email/phone) where the account lists it: an email written in the bio arrives in author.ext.public_email, and /v1/instagram/profile/about returns the contact details the account publishes. When there is none, the field is null.
A profile call costs at most 10 credits, and 2 when the answer comes from the shared cache. Repeating it is charged again, so keep the profiles you already fetched. List endpoints such as posts or comments are metered: they quote a range and charge what the page actually read. Calls that fail or find nothing are free.
No. There is no Instagram app, OAuth flow or review. One API key in the x-api-key header works for Instagram and the other 24 platforms.
Yes. Your first 10 calls priced at 100 credits or less are free, and the free plan includes 500 credits every month. No credit card is needed to get a key.
60 requests a minute and 10 requests in flight at once, per API key. Going over either returns a 429 with a Retry-After header, and a rejected request costs nothing. There is no daily quota: past those two limits, your credit balance is what bounds volume.
List endpoints return rows in data.items and a pagination object with next_cursor and has_more. Send next_cursor back unchanged as the cursor parameter for the next page, and stop when has_more is false. A handful of endpoints page with their own parameter instead; their reference pages name it.
No. A call that errors or finds nothing costs 0 credits. A live fetch costs the endpoint's price, or for a metered endpoint what it actually read. An answer served from the shared cache costs 2 credits. Repeating a call is charged like the first time, because it can return newer data.
A call fetches live unless a recent copy is in the shared cache, and every response says which with the cached field; a cached answer costs 2 credits. Add fresh=1 or send Cache-Control: no-cache to skip the cache; that call is charged at the normal price.
Collecting publicly available data is generally treated differently from accessing private data, but the answer depends on your jurisdiction, Instagram's terms and what you do with personal data afterwards. The API reads public data only. Talk to a lawyer for anything commercial.
The same key works for 24 more platforms
- TikTok scraper API
- Facebook scraper API
- LinkedIn scraper API
- Twitter/X scraper API
- YouTube scraper API
- Reddit scraper API
- Threads scraper API
- Pinterest scraper API
- Bluesky scraper API
- Truth Social scraper API
- Snapchat scraper API
- Telegram scraper API
- Twitch scraper API
- Kick scraper API
- Rumble scraper API
- Kwai scraper API
- Douyin scraper API
- Xiaohongshu (RedNote) scraper API
- Quora scraper API
- TikTok Shop scraper API
- Weibo scraper API
- Zhihu scraper API
- Substack scraper API
- Nextdoor scraper API