~ / endpoints / Profile API

Instagram Profile Scraper API

Our Instagram profile scraper turns any public username or profile URL into structured JSON: the exact follower count, following and posts totals, full bio, verified and private flags, category, and the avatar URL, all from a single request with no login.

Get a free API keyBrowse the endpoints
1,000
free requests / mo
2.6s
median response
JSON
structured output
1
call per profile
the login wall

Why Instagram Profile data hides behind a login

A logged-out Instagram profile is a React shell that hydrates its numbers over later requests, so the raw HTML holds placeholders and hand-written selectors break within weeks. The official Graph API only reads accounts you own or manage and needs a Facebook app, a linked Business or Creator account, and app review before it returns a single public profile.

call it once

Your first Instagram Profile Scraper API call

cURL
curl "https://api.instagramscraperapi.com/api/v1/instagram/profile?username=nasa&api_key=$API_KEY"
Python
import requests, os

BASE = "https://api.instagramscraperapi.com"
API_KEY = os.environ["API_KEY"]

# Pass a username (no leading @) or a full profile URL.
data = requests.get(
    f"{BASE}/api/v1/instagram/profile",
    params={"username": "nasa", "api_key": API_KEY},
    timeout=30,
).json()

print(data["full_name"], "-", data["follower_count"], "followers")
print(data["posts_count"], "posts | verified:", data["is_verified"])
print(data["biography"])
inputs

Parameters

ParameterRequiredDefaultNotes
usernamerequired-The Instagram username without the leading @, e.g. nasa. A leading @ or a trailing slash is stripped for you.
urloptional-A full profile URL such as https://www.instagram.com/nasa/. The handle is parsed out of the path, so you can pass a link instead of a username.
countryoptionalUSTwo-letter country code for the egress region. Instagram serves the embedded profile data to logged-out clients from residential US IPs, so US is the default.
api_keyrequired-Your API key, passed as a query parameter. Get one free at signup.
what returns

What the Instagram Profile Scraper API hands back

200 OK
{
  "id": "528817151",
  "username": "nasa",
  "full_name": "NASA",
  "url": "https://www.instagram.com/nasa/",
  "biography": "Making the seemingly impossible, possible.",
  "profile_pic_url": "https://scontent-lax7-1.cdninstagram.com/v/t51.2885-19/29090066_159271188110124_1152068159029641216_n.jpg",
  "external_url": null,
  "category": null,
  "is_verified": true,
  "is_private": false,
  "is_business": null,
  "follower_count": 104390464,
  "following_count": 91,
  "posts_count": 4833,
  "posts": null,
  "og_description": "104M Followers, 95 Following, 4,833 Posts - See Instagram photos and videos from NASA (@nasa)",
  "source": "instagram",
  "data_source": "embedded"
}
FieldTypeDescription
idstringThe account's numeric Instagram user id (pk), the stable identifier that never changes.
usernamestringThe profile handle, e.g. nasa.
full_namestringThe display name shown on the profile.
urlstringThe canonical profile URL.
biographystringThe full bio text from the profile.
profile_pic_urlstringURL of the profile picture (the HD version when Instagram ships it).
external_urlstringThe link in the bio when present, otherwise null. Gated for many profiles logged-out.
categorystringThe business or creator category label when present, otherwise null.
is_verifiedbooleanTrue when the account carries the blue verified badge.
is_privatebooleanTrue when the account is private.
is_businessbooleanTrue for a business account, false otherwise, or null when Instagram does not ship the flag logged-out.
follower_countintegerExact follower count from the embedded profile object when present, falling back to the abbreviated og count.
following_countintegerNumber of accounts this profile follows.
posts_countintegerTotal number of public posts on the account.
postsnullAlways null. Instagram loads the post grid over a separate authenticated request, so the timeline media is not served on the logged-out profile page. Use the hashtag or post endpoint for media.
og_descriptionstringThe raw Open Graph description sentence, kept verbatim for transparency (abbreviated counts and handle).
data_sourcestringembedded when the exact integer counts came from the embedded profile object, opengraph when only the abbreviated og counts were available.
put it to work

Where teams point Instagram data

>

Influencer vetting

Resolve a list of handles into exact follower_count, following_count, and posts_count so you can size creators and screen for bought audiences before you reach out.
>

Audience tracking

Poll a profile daily and store follower_count and posts_count to build the growth history Instagram never shows you in the app.
>

Creator databases

Enrich a spreadsheet of usernames into clean rows: full_name, biography, category, verified flag, and avatar for a searchable creator catalog.
>

Competitor monitoring

Watch rival brand accounts on a schedule and chart how their follower count and post cadence move week over week.
>

Account verification checks

Read is_verified, is_private, and is_business to confirm an account is real, public, and reachable before you add it to a campaign.
>

CRM enrichment

Drop follower size, bio, and category next to each lead so partnerships and sales see reach and niche without opening Instagram.
why it holds

How our Instagram Profile Scraper API stays reliable

Pass a username or a full profile URL and we resolve it for you, with no Facebook app, no Business account link, and no app review. Every request runs through residential proxies, anti-bot handling, and retries, returning validated JSON with a stable schema in about 2.6 seconds.

*

Username or URL input

One call takes a bare handle or a full instagram.com profile link and resolves it server side.
*

Exact follower counts

We read the embedded profile object for the precise follower, following, and post integers, falling back to the abbreviated Open Graph numbers only when Instagram withholds the exact ones.
*

Residential proxies and anti-bot

Requests route through residential US IPs with anti-bot handling, because Instagram serves the embedded profile data only to that egress logged-out.
*

Auto-retry across pools

Failed fetches retry through residential and datacenter tiers before a response is returned, so transient blocks do not surface as errors.
*

Validated JSON schema

Regression-tested fields return in the same shape on every call, with honest nulls for anything Instagram gates logged-out.
*

Transparent gating

The data_source field tells you whether the exact counts came from the embedded object or the abbreviated og fallback, so a schema change is visible.
weigh the options

Instagram Profile Scraper API weighed against the Instagram API and DIY

Our APIDIY (requests / headless)Instagram Graph API
Input by username or URLYes, handle or profile URLManual page fetch and parseBy owned account id only
Public profilesAny public accountPossible but parser breaks oftenOnly accounts you own or manage
SetupAPI key onlyResidential proxies, headless browser, parsersFacebook app, linked Business account, app review
Exact follower countFrom the embedded profile objectBuried in a hydrated blob you must locateAvailable for your own account
Anti-bot and proxiesBuilt in, residential USYou build and maintain itNot applicable
OutputValidated JSON, stable schemaRaw HTML you parse yourselfJSON, scoped to your assets
plans & pricing

Pay only for what you pull

PlanPriceBest for
Free1,000 requestsTesting and small jobs
Pro$0.60 / 1kProduction workloads
Pay-as-you-go$0.90 / 1kSpiky or one-off volume

Median response 2.6s. You only pay for successful requests.

FAQ

What is an Instagram profile scraper?

An Instagram profile scraper is a tool that reads a public account's data and returns it in a structured format. Our Instagram profile scraper API takes a username or profile URL and returns the numeric id, full name, bio, exact follower_count, following_count, posts_count, verified and private flags, category, and avatar URL as JSON from a single request, with no login or Facebook app.

How do I scrape an Instagram profile without writing a parser?

Send one GET request to our instagram/profile endpoint with the username (or a profile URL) and your API key. We route through residential IPs, handle anti-bot checks, retry on failure, and parse the embedded profile object, so you get clean JSON back without maintaining selectors against Instagram's changing markup.

Can I get the exact follower count?

Yes, when Instagram ships it. We read the embedded profile object that carries the precise integer follower, following, and post counts, which is why the sample shows 104390464 rather than a rounded 104M. When that object is withheld for a given capture, we fall back to the abbreviated Open Graph counts and set data_source to opengraph so you can tell the two apart.

Why is the posts field null?

Instagram does not serve the post grid on the logged-out profile page. The timeline media loads over a separate authenticated GraphQL request, so the profile response returns posts_count (the total) but posts is always null. To pull actual media, use a hashtag or post endpoint rather than the profile endpoint. We keep the field null rather than inventing entries.

Do I need an Instagram or Facebook API key?

No. You only need an instagramscraperapi key passed as the api_key query parameter. There is no Facebook app to register, no Business or Creator account to link, and no app review. The official Instagram Graph API requires all three and still only returns data for accounts you own or manage, not arbitrary public profiles.

Can I scrape private accounts?

No. We only return data that a logged-out visitor can see on a public profile. For a private account the response reports is_private as true and does not expose posts or a follower list. Reading private content would require an authenticated session, which this endpoint does not use.

How fast is the Instagram profile scraper API, and is scraping Instagram legal?

Median end-to-end response is about 2.6 seconds, including proxy routing, anti-bot handling, retries, and parsing. On legality: scraping public data is broadly permitted in many jurisdictions, and US courts have declined to treat scraping public profiles as unauthorized access, but Instagram's terms restrict automated collection and you are responsible for lawful, privacy-compliant use of the data. Scrape only public fields, respect personal data laws such as GDPR and CCPA, and take your own legal advice for your use case.

Pull profile api as clean JSON
Start on 1,000 free requests. No card needed.
Get a free API key Browse the endpoints