SOCIAL MEDIA

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.

bash
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"
}'
json — example response shape
{
  "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

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.

Related