Instagram API for public data, as clean JSON.
Follower counts, profiles, posts, reels, stories and engagement rate for any public Instagram account. No Meta app review, and it reads personal accounts too, which the official Graph API can't. One request, one key, simple credits.
From Product Hunt? Your free key comes with 100 extra credits.
- 27 endpoints
- 50 free credits a month
- Failed calls cost nothing
{
"ok": true,
"data": {
"id": "528817151",
"username": "nasa",
"full_name": "NASA",
"biography": "Exploring the universe and our home planet.",
"external_url": "https://www.nasa.gov",
"bio_links": [
"https://www.nasa.gov"
],
"followers": 104000000,
"following": 90,
"posts_count": 4950,
"is_private": false,
"is_verified": true,
"is_business": true,
"category": "Government organization",
"avatar_url": "https://scontent.cdninstagram.com/…/avatar.jpg"
},
"meta": {
"cache": "hit",
"age_seconds": 212,
"stale": false,
"credits": 1,
"credits_remaining": 4812,
"retry_after": 0
}
} Your first call in a minute
- Get a keyThe free plan needs an email, no card.
- Send it as a header
X-API-Key: your_key - Read the JSONEverything sits under
data. Cache age and credits are inmeta.
curl "https://data.fastsocial.co/v1/profile?username=nasa" \
-H "X-API-Key: $FASTSOCIAL_API_KEY"import os
import requests
r = requests.get(
"https://data.fastsocial.co/v1/profile",
params={"username": "nasa"},
headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
timeout=30,
)
r.raise_for_status()
print(r.json()["data"])const url = new URL("https://data.fastsocial.co/v1/profile");
url.search = new URLSearchParams({ username: "nasa" });
const res = await fetch(url, { headers: { "X-API-Key": API_KEY } });
const body = await res.json();
if (!body.ok) throw new Error(body.error.code);
console.log(body.data);
// Call from your server or a worker, never from a public web page: the key must stay secret.// Node 18+ (built-in fetch). Run as an ES module: node app.mjs
const url = new URL("https://data.fastsocial.co/v1/profile");
url.search = new URLSearchParams({ username: "nasa" });
const res = await fetch(url, { headers: { "X-API-Key": process.env.FASTSOCIAL_API_KEY } });
const { ok, data, error } = await res.json();
if (!ok) throw new Error(error.code);
console.log(data);<?php
$url = "https://data.fastsocial.co/v1/profile?" . http_build_query(['username' => "nasa"]);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-Key: " . getenv("FASTSOCIAL_API_KEY")],
CURLOPT_TIMEOUT => 30,
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]);package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
)
func main() {
q := url.Values{}
q.Set("username", "nasa")
req, _ := http.NewRequest("GET", "https://data.fastsocial.co/v1/profile?"+q.Encode(), nil)
req.Header.Set("X-API-Key", os.Getenv("FASTSOCIAL_API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://data.fastsocial.co/v1/profile")
uri.query = URI.encode_www_form({"username" => "nasa"})
req = Net::HTTP::Get.new(uri)
req["X-API-Key"] = ENV["FASTSOCIAL_API_KEY"]
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)["data"] Ask Claude or Cursor, get the number
Add the server to your AI assistant. No key to paste: you sign in once in your browser.
claude mcp add --transport http instagram-data https://data.fastsocial.co/mcpSetup for Cursor, VS Code and the Claude app is in the GitHub repo. Tools and credits match the API.
How many followers does @nasa have?
✓ instagram-data · instagram_profile(username="nasa")
NASA has 104,000,000 followers and 4,950 posts.
Our own tools on this data
-
Profile viewer
Profile, follower count, posts
Built on /v1/profile/v1/posts/v1/media Open profile viewer → -
Reel downloader
Save any reel as MP4
Built on /v1/media Open reel downloader → -
Photo downloader
Photos and carousels, full size
Built on /v1/media Open photo downloader → -
Story viewer
Watch stories anonymously
Built on /v1/stories/v1/highlight Open story viewer → -
Highlight viewer
Saved highlights, no login
Built on /v1/highlights/v1/highlight Open highlight viewer → -
Profile analyzer
Audit, engagement, earnings
Built on /v1/profile/v1/insights Open profile analyzer → -
Best time to post
When your audience is online
Built on /v1/insights Open best time to post → -
Username generator
Ideas, or check a name you have
Built on /v1/check Open username generator → -
Top charts
Most-followed accounts, gainers and losers
Built on /v1/top Open top charts →
27 endpoints, one shape
Public accounts only. Parameters, examples and errors are in the docs.
Profiles 4
-
GET /v1/profileGet an Instagram profile 1 credit Try it in Profile viewer -
GET /v1/user-idInstagram username to user id 1 credit -
GET /v1/usernameInstagram user id to username 2 credits -
GET /v1/checkCheck if an Instagram handle exists and is public 1 credit Try it in Username generator
Posts & reels 5
-
GET /v1/postsGet recent Instagram posts 1 credit Try it in Profile viewer -
GET /v1/reelsGet an account's Instagram reels 1 credit -
GET /v1/taggedGet posts an account is tagged in 1 credit -
GET /v1/postGet one Instagram post or reel 1 credit -
GET /v1/mediaDownload URLs for a post, reel or carousel 1 credit Try it in Profile viewer
Engagement 4
Network 3
Stories & highlights 3
-
GET /v1/storiesView Instagram stories anonymously 3 credits Try it in Story viewer -
GET /v1/highlightsGet Instagram story highlights 3 credits Try it in Highlight viewer -
GET /v1/highlightGet the items in one highlight 3 credits Try it in Story viewer
Discovery 7
-
GET /v1/searchSearch Instagram accounts, hashtags and places 1 credit -
GET /v1/hashtagGet posts for an Instagram hashtag 1 credit -
GET /v1/placeGet an Instagram location 3 credits -
GET /v1/place-postsGet posts tagged at an Instagram location 1 credit -
GET /v1/audioGet an Instagram audio track and the reels using it 1 credit -
GET /v1/audio-searchSearch Instagram music and sounds 3 credits -
GET /v1/reels-searchSearch Instagram reels by keyword 3 credits
Top charts 1
Account 1
Instagram API pricing
Every plan includes every endpoint. Credits reset each month. No overage billing.
Free
Try every endpoint on real accounts
50 credits a month
- 10 requests per minute
- All 27 data endpoints
- Failed calls cost nothing
Starter
Personal projects and small scripts
5,000 credits a month
- 30 requests per minute
- All 27 data endpoints
- Failed calls cost nothing
- No ads on any FastSocial tool
Pro
Side projects, dashboards, small tools
20,000 credits a month
- 60 requests per minute
- All 27 data endpoints
- Failed calls cost nothing
- No ads on any FastSocial tool
Ultra
Apps with steady daily traffic
70,000 credits a month
- 120 requests per minute
- All 27 data endpoints
- Failed calls cost nothing
- No ads on any FastSocial tool
Insanity
High-volume apps and scrapers
225,000 credits a month
- 180 requests per minute
- All 27 data endpoints
- Failed calls cost nothing
- No ads on any FastSocial tool
What does one call cost?
Most calls cost 1 credit. Insights and username-from-id cost 2. Stories, highlights, comments, location info, likes, followers, following, comment replies and audio or reel search cost 3. On paid plans, up to 20% of your credits can go to the heavier lookups. When credits run out, calls stop until the reset or an upgrade.
Meta's Graph API only returns data for accounts you manage, plus a limited Business Discovery lookup of other business and creator accounts, and it needs a Facebook app and app review. It can't read personal accounts or other people's stories. This API returns public data for any public account with one key and no app review.
It gives you what people use a scraper for, public profile and post data as JSON, without running or maintaining a scraper yourself. We handle the fetching, caching and retries.
Yes. The profile endpoint returns followers, following and post count, plus bio, links, category and whether the account is verified. It costs 1 credit.
No. Only public data. A private account returns a clear private_account error.
Yes, for public accounts. Followers and following return one page of accounts per call, with the total count and a cursor for the next page. Likers returns a sample of accounts that liked a post, not the full list, plus the total like count. Each call costs 3 credits. Asking for the followers of a private account returns a private_account error.
Calls return quota_exceeded until your credits reset next month, or until you upgrade. There's no overage bill.
Meta doesn't charge for Graph API calls. What it costs you is the setup from the first answer: a Facebook app, App Review and access to accounts you manage only. This API has a free plan: 50 credits a month, every endpoint included, no card.
Start with 50 free credits
No card. Upgrade or cancel from your dashboard.
Docs · OpenAPI spec · Docs as Markdown · API privacy

