Instagram API

Public Instagram profile data with a stable, consistent schema.

Base URL: https://api.endpointry.com/v1/instagram. All endpoints require Bearer authentication and return the standard response envelope. This reference is generated from the same schemas the gateway enforces at runtime.

GET/v1/instagram/profile

Get a public profile

Returns the public profile for a username: identity, follower and post counts, verification and account type, category and avatar. Private accounts return their public header only. Unknown usernames return 404 NOT_FOUND.

Query parameters
username*string
Response fields (data)
profile*object
id*string
username*string
full_name*string
biography*string | null
external_url*string · uri | null
followers*integer
following*integer
posts*integer
is_verified*boolean
is_private*boolean
is_business*boolean
category*string | null
profile_pic_url*string · uri
highlight_reels*integer
curl "https://api.endpointry.com/v1/instagram/profile" \
  -H "Authorization: Bearer sk_live_..."
const res = await fetch("https://api.endpointry.com/v1/instagram/profile", {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});

if (!res.ok) {
  const problem = await res.json();
  throw new Error(`${problem.code}: ${problem.detail} (${problem.request_id})`);
}
const { data, meta } = await res.json();
import os, requests

res = requests.get(
    "https://api.endpointry.com/v1/instagram/profile",
    headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
    timeout=15,
)
body = res.json()
if res.status_code != 200:
    raise RuntimeError(f"{body['code']}: {body['detail']} ({body['request_id']})")
data, meta = body["data"], body["meta"]
200 · application/json
{
  "meta": {
    "request_id": "req_7729f93d3facf68ff83e5c50",
    "as_of": "2026-08-01T12:00:00.000Z"
  },
  "data": {
    "profile": {
      "id": "25025320",
      "username": "instagram",
      "full_name": "Instagram",
      "biography": "Discover what's new on Instagram 🔎✨",
      "external_url": "https://help.instagram.com/",
      "followers": 685834161,
      "following": 267,
      "posts": 8542,
      "is_verified": true,
      "is_private": false,
      "is_business": false,
      "category": null,
      "profile_pic_url": "https://scontent.cdninstagram.com/v/t51.2885-19/…jpg",
      "highlight_reels": 10
    }
  }
}

GET/v1/instagram/posts

Get recent posts

Returns a public account's most recent posts — image, video/reel and carousel — each with its permalink, caption, like and comment counts, media and thumbnail URLs, dimensions and publish time. Shares the profile snapshot, so a posts call right after a profile call is served from cache. Pagination is cursor-based; today the source serves the latest window, so next_cursor is null.

Query parameters
username*string
limit*integer
cursorstring
Response fields (data)
posts*array<object>
id*string
shortcode*string
url*string · uri
type*"image" | "video" | "carousel"
caption*string | null
likes*integer | null
comments*integer | null
media_url*string · uri
thumbnail_url*string · uri
width*integer
height*integer
taken_at*string · date-time
curl "https://api.endpointry.com/v1/instagram/posts" \
  -H "Authorization: Bearer sk_live_..."
const res = await fetch("https://api.endpointry.com/v1/instagram/posts", {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});

if (!res.ok) {
  const problem = await res.json();
  throw new Error(`${problem.code}: ${problem.detail} (${problem.request_id})`);
}
const { data, meta } = await res.json();
import os, requests

res = requests.get(
    "https://api.endpointry.com/v1/instagram/posts",
    headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
    timeout=15,
)
body = res.json()
if res.status_code != 200:
    raise RuntimeError(f"{body['code']}: {body['detail']} ({body['request_id']})")
data, meta = body["data"], body["meta"]
200 · application/json
{
  "meta": {
    "request_id": "req_7729f93d3facf68ff83e5c50",
    "as_of": "2026-08-01T12:00:00.000Z",
    "pagination": {
      "next_cursor": null,
      "limit": 12,
      "returned": 1
    }
  },
  "data": {
    "posts": [
      {
        "id": "3953558216907780078",
        "shortcode": "Dbd3EBdnW_u",
        "url": "https://www.instagram.com/p/Dbd3EBdnW_u/",
        "type": "image",
        "caption": "Are you ready for the total solar eclipse?",
        "likes": 245158,
        "comments": 385,
        "media_url": "https://scontent.cdninstagram.com/v/t51.2885-15/…jpg",
        "thumbnail_url": "https://scontent.cdninstagram.com/v/t51.2885-15/…jpg",
        "width": 1080,
        "height": 856,
        "taken_at": "2026-07-31T18:41:36.000Z"
      }
    ]
  }
}