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.
Use it for
Influencer vetting
Audience tracking
Creator databases
Competitor monitoring
Quickstart
curl "https://api.instagramscraperapi.com/api/v1/instagram/profile?username=nasa&api_key=$API_KEY" 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"]) Response
{
"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"
} | Field | Type | Description |
|---|---|---|
id | string | The account's numeric Instagram user id (pk), the stable identifier that never changes. |
username | string | The profile handle, e.g. nasa. |
full_name | string | The display name shown on the profile. |
url | string | The canonical profile URL. |
biography | string | The full bio text from the profile. |
profile_pic_url | string | URL of the profile picture (the HD version when Instagram ships it). |
external_url | string | The link in the bio when present, otherwise null. Gated for many profiles logged-out. |
category | string | The business or creator category label when present, otherwise null. |
How it works
- Send a GET request with your target and API key.
- We route through residential proxies, handle anti-bot, and parse the response.
- You get validated JSON back, ready to use.
How it compares
| Our API | DIY (requests / headless) | Instagram Graph API | |
|---|---|---|---|
| Input by username or URL | Yes, handle or profile URL | Manual page fetch and parse | By owned account id only |
| Public profiles | Any public account | Possible but parser breaks often | Only accounts you own or manage |
| Setup | API key only | Residential proxies, headless browser, parsers | Facebook app, linked Business account, app review |
| Exact follower count | From the embedded profile object | Buried in a hydrated blob you must locate | Available for your own account |
| Anti-bot and proxies | Built in, residential US | You build and maintain it | Not applicable |
| Output | Validated JSON, stable schema | Raw HTML you parse yourself | JSON, scoped to your assets |
Pricing
| Plan | Price | Best for |
|---|---|---|
| Free | 1,000 requests | Testing and small jobs |
| Pro | $0.60 / 1k | Production workloads |
| Pay-as-you-go | $0.90 / 1k | Spiky 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.