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
}
} 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.
What people build with it
Anything that needs Instagram numbers without a login or a scraper to babysit.

Vet creators before you pay them
Follower count, engagement rate and posting rhythm for any public account, so a 200K account with 0.1% engagement is obvious before the contract.

Show live follower counts
Put an account's current followers on a dashboard, a portfolio or a client report. Refresh as often as your plan allows.

Check handles at signup
Ask whether a handle exists and is public before you save it. Exact matches only, so a typo never resolves to a stranger.

Research content
Recent posts and reels with likes, comments, views, captions and formats. Enough to spot what works in a niche.
27 endpoints, one shape
Public accounts only. Parameters, examples and errors are in the docs.
/v1/profile1 credit Get an Instagram profile /v1/user-id1 credit Instagram username to user id /v1/username2 credits Instagram user id to username /v1/check1 credit Check if an Instagram handle exists and is public /v1/posts1 credit Get recent Instagram posts /v1/reels1 credit Get an account's Instagram reels /v1/tagged1 credit Get posts an account is tagged in /v1/post1 credit Get one Instagram post or reel /v1/media1 credit Download URLs for a post, reel or carousel /v1/comments1 credit Get comments on an Instagram post /v1/comment-replies3 credits Get replies to an Instagram comment /v1/likers3 credits Get accounts that liked an Instagram post /v1/insights2 credits Instagram engagement rate calculator /v1/followers3 credits Get an account's followers /v1/following3 credits Get accounts an account follows /v1/similar1 credit Find similar Instagram accounts /v1/stories3 credits View Instagram stories anonymously /v1/highlights1 credit Get Instagram story highlights /v1/highlight3 credits Get the items in one highlight /v1/search1 credit Search Instagram accounts, hashtags and places /v1/hashtag1 credit Get posts for an Instagram hashtag /v1/place1 credit Get an Instagram location /v1/place-posts1 credit Get posts tagged at an Instagram location /v1/audio1 credit Get an Instagram audio track and the reels using it /v1/audio-search3 credits Search Instagram music and sounds /v1/reels-search3 credits Search Instagram reels by keyword /v1/topFree Most-followed Instagram accounts, gainers and losers /v1/usageFree Your usage this month Why developers pick it
Clean JSON
The same shape on every call. Missing numbers come back as null, never a guess.
Cached and fast
Popular accounts answer from cache. Every response says how old its data is, and if Instagram is slow you get the last good copy instead of an error.
Simple credits
Most calls cost 1 credit, including highlights and comments. Insights cost 2. Stories, likes and followers cost 3. Failed calls cost nothing.
Buy direct
Pay us, get a key, start calling. No marketplace account and no middleman in between.
Simple monthly credits
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
2,500 credits a month
- 30 requests per minute
- All 27 data endpoints
- Failed calls cost nothing
Pro
Side projects, dashboards, small tools
8,000 credits a month
- 60 requests per minute
- All 27 data endpoints
- Failed calls cost nothing
Ultra
Apps with steady daily traffic
26,000 credits a month
- 120 requests per minute
- All 27 data endpoints
- Failed calls cost nothing
Insanity
High-volume apps (fair-use cap on the heaviest endpoints)
250,000 credits a month
- 300 requests per minute
- All 27 data endpoints
- Failed calls cost nothing
Most calls cost 1 credit, including highlights, comments and locations. Insights and username-from-id cost 2. Stories, one highlight's items, likes, followers, following, comment replies and audio or reel search cost 3. 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.
Yes. 50 credits a month, every endpoint included, no card.
Start with 50 free credits
No card. Upgrade or cancel from your dashboard.