Instagram Profile Scraper API
These operations read public Instagram identity data without an Instagram login. Get User Profile takes a username and returns the full public profile — bio, follower and following counts, post count, verified and business-account status and the profile picture URL. Get User By Id does the same lookup starting from a numeric Instagram user id instead of a handle, useful when a prior call already resolved the id and you do not want to spend a second request re-resolving the username. Check Account answers a narrower question — does a given username, email address or phone number belong to an existing Instagram account, and if so which recovery channels (email, phone, WhatsApp, Facebook) does it expose — which is the check to run before attempting a profile lookup that will otherwise come back empty. None of them needs an Instagram account, password or session cookie; every call authenticates with your upAPI key alone. Instagram serves a logged-out visitor a blank shell rather than a clean error when it refuses a read, so these operations classify that shell and raise a real error instead of quietly returning an empty profile — a change verified against production on 2026-09-10. The exact price and cache lifetime are on this page’s FAQ, generated from the same catalog the calls run against.
What data you get
Instagram Get User Profile
- success
- booleanrequired
- fullName
- stringrequired
- username
- stringrequired
- biography
- stringrequired
- elapsedMs
- integerrequired
- fetchedAt
- stringrequired
- followers
- integerrequired
- following
- integerrequired
- isPrivate
- booleanrequired
- postCount
- integerrequired
- isVerified
- booleanrequired
- externalUrl
- string
- instagramId
- stringrequired
- categoryName
- string
- profilePicUrl
- string
- isBusinessAccount
- booleanrequired
Instagram Get User By Id
- pk
- stringrequired
- fbid
- string
- success
- booleanrequired
- bioLinks
- arrayrequired
- category
- string
- fullName
- string
- username
- stringrequired
- biography
- string
- elapsedMs
- integerrequired
- fetchedAt
- stringrequired
- isPrivate
- boolean
- isBusiness
- boolean
- isVerified
- boolean
- mediaCount
- integer
- detailLevel
- stringrequired — 'stub' = identity only (what anonymous returns today); 'full' = counts and profile detail were disclosed
- externalUrl
- string
- publicEmail
- string
- businessEmail
- string
- businessPhone
- string
- followerCount
- integer — null = not disclosed by this surface, never 'zero followers'
- profilePicUrl
- string
- followingCount
- integer
- isProfessional
- boolean
Instagram Check Account
- query
- stringrequired
- exists
- booleanrequired
- success
- booleanrequired
- elapsedMs
- integerrequired
- fetchedAt
- stringrequired
- queryType
- string
- canSendEmail
- boolean
- canSendPhone
- boolean
- canUseFacebook
- boolean
- canSendWhatsapp
- boolean
Calling Instagram Get User Profile
A schema-derived request and response shape — not a captured production call, since upAPI has none to publish. Every field is real, from the operation’s own published schema.
curl -X POST https://api.upapi.io/instagram-get-user-profile.post \
-H "X-Api-Key: $UPAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"username": "torvalds"
}'{
"success": false,
"fullName": "example",
"username": "torvalds",
"biography": "example",
"elapsedMs": 1,
"fetchedAt": "example",
"followers": 1,
"following": 1,
"isPrivate": false,
"postCount": 1,
"isVerified": false,
"externalUrl": "example",
"instagramId": "example",
"categoryName": "example",
"profilePicUrl": "example",
"isBusinessAccount": false
}Pricing
Instagram Get User Profile
15 units per call
Instagram Get User By Id
15 units per call
Instagram Check Account
15 units per call
Every unit draws from one pooled monthly quota shared across the whole catalog. See upapi.io/pricing for what a unit costs on each plan.
Questions people actually ask
Do I need an Instagram account or login to use this?
No. Every operation here reads Instagram’s public surface and authenticates only with your upAPI key — there is no Instagram username, password or session cookie to provide.
What happens if the profile is private or does not exist?
Instagram answers a blocked or unknown read with a blank logged-out page rather than a clean 404, so upAPI classifies that shell and raises a real, typed error instead of returning an empty profile object that looks like a real (if boring) result.
How much does this cost?
Every operation in this cluster costs 15 weighted units per call, drawn from your plan’s pooled monthly quota — see upapi.io/pricing for what a unit costs on each tier.
Can I check if a username is available before someone signs up with it?
Instagram Check Account answers the related question — whether a username, email or phone is already linked to an account — and returns which recovery channels it has, without exposing the account’s profile data.
How fresh is the data — is it cached?
Instagram Get User Profile is cached for 10 minutes; Instagram Get User By Id is cached for 5 minutes; Instagram Check Account is cached for 1 minute. A repeat call inside a cached window returns the cached response and is billed nothing.