REST JSON over HTTPS, one API key

The Instagram API for public profiles, posts and stories

A REST API for public Instagram data: send a username or a post link with your API key and get profiles, posts, reels, stories and highlights back as JSON. We keep the Instagram sessions, logins and limits working for you.

GET /api/userinfo GET /api/feed GET /api/media GET /api/stories GET /api/highlights
request.sh
$ curl https://igapi.online/api/userinfo/nasa \ -H "X-API-Key: igapi_••••••••"
IG
@instagram
Instagram
694posts 672Mfollowers 160following

Illustrative response. Run real lookups in the Instagram viewer.

What you get

Instagram API endpoints

Six data endpoints cover what people actually need from a public account, plus an image proxy and a download endpoint for the media, all as structured JSON. Looking for an Instagram scraper API? With this API you don’t run scrapers, headless browsers, proxies or Instagram logins yourself: you send an HTTP request and read JSON.

Profile info

/api/userinfo/:username

Followers, following, posts, bio, verification, business and contact fields.

Post feed

/api/feed/:username

Paginated posts with media, captions and engagement counts via cursor paging.

Single media

/api/media?url=

Resolve any post or reel by URL or shortcode into full media details.

Stories

/api/stories/:username

Currently active stories for an account, when they are public.

Highlights

/api/highlights/:username
/api/highlight/:id

The highlight trays on a profile, and the items inside each one.

Media proxy & download

/api/proxy-image?url=
/api/download?url=

Show Instagram CDN images from your own origin, and save any photo or video as a file.

Try the Instagram API without a key

The Instagram viewer calls the same endpoints from your browser, no key needed: open a profile, page through a feed, paste a post link or save stories and highlights.

Managed for you

A managed Instagram API: no scraper to run

The hard part of Instagram data isn't the JSON — it's staying logged in. IGAPI runs a pool of real accounts so you never touch any of it.

Multi-account session pool

Requests spread across many logged-in accounts and rotate automatically under load.

Auto auth & re-login

2FA, security challenges and expired sessions are resolved and re-logged in without you.

Plan limits you can read

A key's plan can cap it per minute, day and month (UTC). A capped request gets a 429 naming the plan and the full window, with Retry-After, so clients know when to retry.

Errors you can act on

Every error from the data endpoints has a code, an HTTP status and a message; the documentation lists each one with an example.

Quickstart

Quickstart: your first Instagram API request

Create a key in the customer portal (e-mail sign-in, a Free key at once), send it in the X-API-Key header, read JSON back. Plans and credits: the pricing page.

$ curl https://igapi.online/api/userinfo/nasa \ -H "X-API-Key: igapi_your_key_here"
const res = await fetch( "https://igapi.online/api/userinfo/nasa", { headers: { "X-API-Key": "igapi_your_key_here" } });const data = await res.json();
import requestsr = requests.get( "https://igapi.online/api/userinfo/nasa", headers={"X-API-Key": "igapi_your_key_here"},)data = r.json()
<?php$ch = curl_init("https://igapi.online/api/userinfo/nasa");curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-API-Key: igapi_your_key_here"]);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$data = json_decode(curl_exec($ch), true);
req, _ := http.NewRequest("GET", "https://igapi.online/api/userinfo/nasa", nil)req.Header.Set("X-API-Key", "igapi_your_key_here")res, err := http.DefaultClient.Do(req)if err != nil { log.Fatal(err) }defer res.Body.Close()var data map[string]anyjson.NewDecoder(res.Body).Decode(&data)
Pricing

Instagram API plans

Every plan calls the same endpoints; plans differ only in how many requests a key may make, counted per key in UTC minutes, days and months. At a cap the API answers 429 with Retry-After — nothing is billed. Prefer no caps? Pay as you go with credits.

Free

Free

Try every endpoint

One free key per account · 10 days · 1,000 requests

  • Per minute 10
  • Per day No separate cap
  • Per month No separate cap
  • In total (one-time) 1,000
Get a free key

Pro

For apps and side projects

$26.99 / month
50,000 requests / month
  • Per minute 50
  • Per day No separate cap
  • Per month 50,000

Hard caps, no overage

  • All six data endpoints: profiles, feeds, posts, stories and highlights
  • Image proxy and downloads never count toward the caps
Buy Pro

Ultra

For growing products

$59.99 / month
200,000 requests / month
  • Per minute 50
  • Per day No separate cap
  • Per month 200,000

Hard caps, no overage

  • All six data endpoints: profiles, feeds, posts, stories and highlights
  • Image proxy and downloads never count toward the caps
Buy Ultra
Recommended

Mega

For high-volume services

$199.99 / month
1,000,000 requests / month
  • Per minute 350
  • Per day No separate cap
  • Per month 1,000,000

Hard caps, no overage

  • All six data endpoints: profiles, feeds, posts, stories and highlights
  • Image proxy and downloads never count toward the caps
Buy Mega
Credits

Pay as you go

No caps per minute, day or month: pay per request.

  • Per $1 1,000 credits
  • Per request 1 credit
  • Expiry 90 days
Add credits

Caps are hard limits: past a cap the API answers 429 with Retry-After until that window resets. No overage charges. A total cap is one-time: it never resets, so past it the key needs another plan (the key stays the same). How buying works: sign in to the customer portal, choose a plan or add credits, and pay with crypto (USDT‑TRC20 and others). The key is active once the payment confirms. Payment trouble? Support on Telegram.

Need more than Mega? Credits have no caps; for a custom volume, ask support.

Add credits

The full details — what counts as a request, the API at a glance and answers to common questions — are on the Instagram API pricing page.

Create your key in the portal

  1. Sign in with e-mail A six-digit code, no password
  2. Create a key The Free plan works at once
  3. Send it as X-API-Key One header, JSON back
  4. Add a plan or credits Only when you need more

Open the customer portalQuestions? Support on Telegram

Can’t use e-mail sign-in?

Request an API key

Only if you cannot use e-mail sign-in. We reply by e-mail.

A sentence or two: your product and about how many requests a day. Up to 1,000 characters.

Start with the Instagram API

Profiles, posts, stories and highlights as JSON over HTTPS. Read the reference, or try a live call in the playground first.