FastSocialFastSocial API

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.

Get a free key Read the docs Sign in
  • 27 endpoints
  • 50 free credits a month
  • Failed calls cost nothing
GEThttps://data.fastsocial.co/v1/profile?username=nasa
{
  "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
  }
}
200 OKExample response from the docs

Your first call in a minute

  1. Get a keyThe free plan needs an email, no card.
  2. Send it as a headerX-API-Key: your_key
  3. Read the JSONEverything sits under data. Cache age and credits are in meta.
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/mcp

Setup 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

27 endpoints, one shape

Public accounts only. Parameters, examples and errors are in the docs.

Profiles 4

Posts & reels 5

Engagement 4

Network 3

Stories & highlights 3

Discovery 7

Top charts 1

Account 1

Instagram API pricing

Every plan includes every endpoint. Credits reset each month. No overage billing.

Free

$0 / month

Try every endpoint on real accounts

50 credits a month

  • 10 requests per minute
  • All 27 data endpoints
  • Failed calls cost nothing
Start free

Starter

$5 / month

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
Get Starter
Recommended

Pro

$15 / month

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
Get Pro

Ultra

$50 / month

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
Get Ultra

Insanity

$150 / month

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
Get Insanity

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.

Instagram API FAQ

7 answers

Still stuck?

Email supportManage your key

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.

Get your free keySign in