INSTA
anonymous
Pull public Instagram profiles, posts, reels, stories, highlights, followers and comments with one REST call and get JSON back. No login, no proxies to run.
Everything a public account shows, as structured JSON: who it is, what it posts, who follows it and who reacts
Bio, profile picture and the follower, following and post counts of any public account.
userInfo
Photos, videos, reels and carousels with captions and direct media URLs. It works as an Instagram reel scraper and an Instagram video downloader API in one.
posts reels taggedPosts
Live stories before they expire, the full list of highlights and every story saved in each one.
stories highlights highlightStories
Follower and following lists of any public account, page by page.
followers followings
Comments under any post or reel with their authors, plus the accounts that liked it.
comments likers
All the Instagram scraping runs on our side: requests, proxies, retries and parsing. Your code sends a POST and reads JSON.
Three steps from sign-up to your first JSON response
Authorization: Bearer
import requests response = requests.post( "https://scraperapi.to/scrape/instagram-scraper/userInfo", headers={"Authorization": "Bearer YOUR_API_KEY"}, json={"username": "instagram"}, ) print(response.json())
const response = await fetch("https://scraperapi.to/scrape/instagram-scraper/userInfo", { method: "POST", headers: { "Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ username: "instagram" }), }); console.log(await response.json());
curl -X POST https://scraperapi.to/scrape/instagram-scraper/userInfo \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"username": "instagram"}'
Every endpoint is a POST to https://scraperapi.to/scrape/instagram-scraper/<endpoint> with your key in the Authorization: Bearer header and a JSON body. Responses are JSON.
POST
https://scraperapi.to/scrape/instagram-scraper/<endpoint>
/userInfo
{"username": "instagram"}
/posts
/reels
/taggedPosts
/stories
/highlights
/highlightStories
{"highlightId": "highlight:17898029584289730"}
/followers
/followings
/comments
{"shortcode": "C9ABC123Xyz"}
/likers
Where the values come from. username is the handle without the @. shortcode is the code after /p/ or /reel/ in the post URL. highlightId comes from the highlights endpoint. Paginated endpoints return results page by page, one request per page.
username
shortcode
/p/
/reel/
highlightId
You pay per request, not per result. The bigger the plan, the cheaper each call
$0.00 /mo
Free every month
Includes:
$50.00 /mo
$1.00 per 1,000 requests
$150.00 /mo
$0.60 per 1,000 requests
$250.00 /mo
$0.25 per 1,000 requests
Plans and billing live in the API console, where you get the key.
Need more than a million requests a month? Contact us for a custom plan.
Public Instagram data for less, plus the stories and highlights that Apify’s actor does not return
Apify prices are per result, from the actor's public listing in the Apify Store, checked on 29 September 2026. If you are scraping followers or comments, a request that returns a full page is billed here once, while Apify bills every result on that page.
For profiles, posts, stories, highlights and audience lists, you get one key and pay less per call.
Same data, two ways in. Call the REST API from your own scripts, backend or data pipeline. Connect the MCP server when an AI agent such as Claude, ChatGPT or Cursor should decide on its own when to fetch a profile, a reel or a story. The MCP server signs you in with OAuth, so there is no key to paste.
Set up the Instagram MCP
Quick answers about keys, pricing, limits and what the API returns.
Start scraping Instagram on the Free plan with 1,000 requests a month, then move up as your project grows.