Instagram Unofficial API
Meta's Graph API only covers accounts you manage. Unofficial APIs reach any public account, but self-hosted libraries mean logging in with real accounts, rotating proxies, and fixing breakage. A hosted unofficial API gives you the coverage without the upkeep.
50 free credits on signup · no card required
curl "https://api.profilequery.com/v1/profile?handle=nike" \
-H "Authorization: Bearer $INSTAGRAMAPI_KEY"What you get
Structured JSON, not raw HTML
- ▹Any public account: profiles, posts, reels, stories, highlights, followers
- ▹Comments, likers, hashtags, locations, and keyword search
- ▹No Instagram login, so no account of yours gets challenged or banned
- ▹No proxies, device emulation, or session refresh logic to run
- ▹Plain HTTPS + JSON: call it from Python, Node, Java, Go, or curl
- ▹Pay per request with no subscription; idle months cost nothing
Comparison
Your unofficial Instagram API options
"Unofficial" covers anything that reads Instagram data outside Meta's Graph API. In practice there are three approaches, and they differ mainly in who carries the operational risk.
1. Self-hosted private API libraries (instagrapi, instagram-private-api)
Libraries like instagrapi (Python) and instagram-private-api (Node) emulate the Instagram mobile app and call its private endpoints. They're capable, open source, and free to run.
- ▹You log in with a real Instagram account, and that account takes the risk: challenges, checkpoints, and bans are routine at volume.
- ▹Serious use needs residential or mobile proxies plus a pool of accounts to rotate.
- ▹Instagram changes app signatures and endpoints; you wait for a library update, then redeploy.
- ▹Best for: low-volume personal automation where you control the account.
2. DIY scraping (headless browser or GraphQL)
Driving Chrome or calling the web GraphQL endpoint directly. Anonymous access is heavily rate-limited, and logged-in access has the same ban risk as the libraries. Query IDs and page markup change with every web release.
3. A hosted unofficial API (this one)
A hosted API runs the sessions, proxies, and parsers for you and exposes stable REST endpoints. You never log in to Instagram, so there's no account to lose, and breakage gets fixed upstream without a redeploy on your side.
# instagrapi
from instagrapi import Client
cl = Client()
cl.login(USERNAME, PASSWORD) # your account, your risk
user = cl.user_info_by_username("nike")
# hosted API: no login
import requests
user = requests.get(
"https://api.profilequery.com/v1/profile",
params={"handle": "nike"},
headers={"Authorization": f"Bearer {API_KEY}"},
).json()["data"]What an unofficial API can't do
- ▹Read private accounts. Nothing legitimate can, and this API never tries.
- ▹Post, like, follow, or DM. This API is read-only public data.
- ▹Return owner-only metrics like reach, impressions, or saves. Those live in Meta's Graph API Insights.
Endpoints
Every endpoint behind this page
Get profile
1 creditFull public profile for an account.
GET /v1/profileGet posts
2 creditsRecent posts (feed) for an account.
GET /v1/profile/postsGet followers
2 creditsA page of accounts that follow this account.
GET /v1/profile/followersSearch users
1 creditSearch accounts by keyword.
GET /v1/search/usersExample response
What comes back
{
"data": {
"id": "13460080",
"username": "nike",
"full_name": "Nike",
"biography": "Just Do It.",
"is_verified": true,
"is_private": false,
"is_business": true,
"category": null,
"followers": 291952375,
"following": 264,
"posts": 1657,
"external_url": "http://empli.fi/nike",
"profile_pic_url": "https://instagram.com/.../nike.jpg",
"public_email": null,
"public_phone_number": null
}
}Response fields
Fields returned by GET /v1/profile
| Field | Description |
|---|---|
| id | Numeric account id (stable even if the username changes). |
| username | The account's @handle. |
| full_name | Display name shown on the profile. |
| biography | The profile's bio text. |
| is_verified | Whether the account has a verified badge. |
| is_private | Whether the account is private. |
| is_business | Whether this is a business/professional account. |
| category | Business category label when set (e.g. "Sportswear"); null otherwise. |
| followers | Number of accounts following this account. |
| following | Number of accounts this account follows. |
| posts | Total number of posts on the profile. |
| external_url | The clickable link in the bio, if any. |
| profile_pic_url | URL of the account's profile picture. |
| public_email | Public contact email, if the account exposes one; null otherwise. |
| public_phone_number | Public contact phone number, if exposed; null otherwise. |
No login required
Nothing to authenticate but your API key
No OAuth flow
One static API key in an Authorization: Bearer header. No redirect, no refresh tokens, no expiring session.
No Meta app review
Never touch Meta's developer platform, Business Verification, or a connected Facebook Page. Sign up directly with Instagram API.
Public data only
Every endpoint returns only what's already visible on Instagram without logging in. Private accounts are never accessible.
Pricing
1 credit per request. Credits start at $8.00 per 1,000 and drop to $6.00 per 1,000 at volume — no subscription, no minimums. New accounts get 50 free credits.
See full pricingFAQ
Instagram Unofficial API, explained
Is there an official Instagram API for public data?
Not for arbitrary accounts. Meta's Instagram Graph API covers business and creator accounts you've connected, plus limited Business Discovery and hashtag search (capped at 30 unique hashtags per 7 days). Reading any public profile at scale requires an unofficial API.
What's the difference between the Instagram private API and an unofficial API?
The "private API" is the set of endpoints Instagram's own apps use. Unofficial APIs are tools built on top of them: self-hosted libraries like instagrapi, or hosted services like this one that handle the sessions and proxies for you.
Will using this get my Instagram account banned?
No. You never give us an Instagram login, and requests don't touch your account. You authenticate with an API key only.
Is this a good instagrapi alternative?
If you're using instagrapi to read public data (profiles, posts, followers, comments, hashtags), yes: the same data without account logins or proxy management. If you need write actions like posting or DMs, instagrapi does things this API deliberately doesn't.
How much does it cost?
Most lookups are 1–2 credits. Credits start at $8.00 per 1,000 with no subscription, and new accounts get 50 free.
Related
More ways to pull Instagram data
Start pulling unofficial api data
Create a free key and make your first request in under a minute — 50 credits on us.