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.
| username* | string |
| 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"]{
"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.
| username* | string |
| limit* | integer |
| cursor | string |
| 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"]{
"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"
}
]
}
}