Instagram is the richest source of creator and brand data on the internet — and one of the hardest to get at programmatically. The official Graph API only works for accounts you own, and it demands Facebook app review before it returns anything useful. If you want a *public* account’s follower count, bio, verified status, or recent posts, there is no first-party endpoint for you.
This guide shows the simplest path: a single authenticated GET request that returns clean JSON for any public Instagram profile — no login, no cookies, no headless browser to babysit. Try it on the console above (it is a real API call), then wire it into your app in a few minutes.
What you can pull
The /v1/instagram/profile endpoint returns the canonical stored profile: username, full name, biography, follower and following counts, post count, verified and business flags, the profile picture, and AI enrichment when we have it. Pass a username, an @handle, or a full instagram.com/username URL as q. Use /v1/live/instagram/profile when you need a freshly acquired canonical account backed by an exact archived profile document.
One input, one envelope
Every endpoint takes a single q input and returns { data, meta }. The meta block tells you exactly what the request cost and your remaining balance — no surprise invoices.
Authentication
Create a free account, generate a kb_live_… key in the dashboard, and send it as a Bearer token. Keep the key server-side — never ship it in client JavaScript.
Authorization: Bearer $VIREV_API_KEYYour first request
Here is the same call the live console makes, in three languages. All you change is the q value.
curl "https://api.virev.ai/v1/instagram/profile?q=nike" \
-H "Authorization: Bearer $VIREV_API_KEY"const res = await fetch(
"https://api.virev.ai/v1/instagram/profile?q=nike",
{ headers: { Authorization: "Bearer kb_live_..." } },
);
const { data, meta } = await res.json();
console.log(data.summary.followers, "followers");
console.log("charged", meta.cost);import requests
res = requests.get(
"https://api.virev.ai/v1/instagram/profile",
params={"q": "nike"},
headers={"Authorization": "Bearer kb_live_..."},
)
body = res.json()
print(body["data"]["summary"]["followers"], "followers")The response
{
"data": {
"ok": true,
"username": "nike",
"summary": {
"followers": 302000000,
"following": 1200,
"posts_count": 1021,
"full_name": "Nike",
"is_verified": true
}
},
"meta": { "cost": "$0.0005", "balance": "$9.9995", "request_id": "req_de5f6bdc8ee143b29e5533ec34728e50" }
}Run it yourself — edit the username to see the sign-up gate
Getting a profile’s posts, paginated
Need the timeline, not just the summary? /v1/live/instagram/posts returns canonical posts parsed from exact REST pages, paginated by limit. Set limit=-1 to fetch up to 240 posts. Billing is one $0.0005 unit per 12 posts.
curl "https://api.virev.ai/v1/live/instagram/posts?q=nike&limit=24" \
-H "Authorization: Bearer $VIREV_API_KEY"Errors and billing safety
You are never charged for a failure
If Instagram is unreachable or the profile doesn’t exist, you get a 404, 502, or 504 — and no deduction. You only pay for a 200. That means a transient upstream blip never costs you money, so retry freely.
Errors are standard HTTP codes with a stable error.code: invalid_api_key (401), insufficient_balance (402), invalid_request (400), not_found (404), and rate_limit_exceeded (429). The default rate limit is 100 requests per minute, surfaced via X-RateLimit-* headers.
Pricing
| Endpoint | Returns | Cost |
|---|---|---|
/v1/instagram/profile | Canonical profile: followers, bio, verified, enrichment | $0.0005 |
/v1/live/instagram/posts | Canonical posts from exact pages | $0.0005 / 12 posts |
/v1/live/instagram/followers | One follower page + cursor | $0.002 / page |
/v1/intelligence/profile | AI niche + demographics + brand fit | $0.05 |
At $0.0005 per profile, one dollar buys 2,000 reads — and your first $1 is matched to a $5 balance, so you start with 10,000. No subscription, no minimums.
Build something with it
A common first project: a daily follower-count snapshot. Loop your watchlist, store summary.followers with a timestamp, and you have a growth chart in a day. Because reads are DB-cached upstream, repeated lookups are fast and cheap.
import requests, datetime
WATCHLIST = ["nike", "adidas", "underarmour"]
KEY = "kb_live_..."
for handle in WATCHLIST:
r = requests.get(
"https://api.virev.ai/v1/instagram/profile",
params={"q": handle},
headers={"Authorization": f"Bearer {KEY}"},
)
if r.status_code != 200:
continue # no charge on failure — safe to skip and retry later
s = r.json()["data"]["summary"]
print(datetime.date.today(), handle, s["followers"])Pull your first Instagram profile in 60 seconds
Create a free account, grab a key, and run the exact request above on any account. 10,000 profiles for $1.
Get your API key →