Instagram hub

Instagram profile posts API

Page a creator's public Instagram feed by handle — mixed media types, captions, shortcodes, and engagement — in the shared Social Fetch JSON envelope.

GET /v1/instagram/profiles/{handle}/posts

1 credit per successful request.

About this endpoint

Competitor trackers and creator CRMs usually need the grid next, not a single permalink. You already have a username. You want recent feed items in the order Instagram shows them: stills, carousel albums, and in-feed video, each with caption text and like/comment counts you can store. Building that yourself means signed GraphQL requests that rotate the same way post parsers do.

`GET /v1/instagram/profiles/{handle}/posts` lists the public profile feed by username (with or without `@`). On a completed call, branch on `data.lookupStatus` (`found`, `private`, or `not_found`), then read `data.posts` and `data.page`. Each row can include id, shortcode, `mediaType` (`image`, `video`, `sidecar`, or `unknown`), caption, `takenAt`, public URL, display/thumbnail/video URLs when present, like and comment counts, `playCount` for video, dimensions, and `taggedUsers`. When `data.page.hasMore` is true, pass `data.page.nextCursor` as the opaque `cursor` query param. Bill from `meta.creditsCharged`.

This route is the mixed feed. The Reels tab alone is `GET /v1/instagram/profiles/{handle}/reels`. One known `/p/…` or `/reel/…` URL is `GET /v1/instagram/posts`. Resolve the profile card first with `GET /v1/instagram/profiles/{handle}` when you need identity and status before spending on feed pages.

Instagram profile posts API FAQ

How do I list Instagram feed posts for a profile via API?

Call `GET /v1/instagram/profiles/{handle}/posts` with your Social Fetch API key (`x-api-key`) and the Instagram username in the path. Read `data.lookupStatus`, then `data.posts` and `data.page`. Full parameters and examples are in the API docs.

How much does the Instagram profile posts endpoint cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth. Each paginated page is a separate billed request.

What media types appear in Instagram profile posts?

Each feed item carries `mediaType`: `image`, `video`, `sidecar` (carousel), or `unknown`. That is how you tell stills from albums and in-feed video without opening every URL. Reels-tab-only paging is a different route.

How does pagination work on Instagram profile posts?

Each response includes `data.page.nextCursor` and `data.page.hasMore`. When `hasMore` is true, pass `nextCursor` as the `cursor` query param on the next request. The cursor is opaque; do not invent or parse it.

What fields are in each Instagram feed post?

Items can include id, shortcode, mediaType, caption, takenAt (Unix seconds), public URL, display and thumbnail URLs, video URL when available, likeCount, commentCount, playCount for video, dimensions, and taggedUsers when Instagram exposes them.

When should I use profile posts instead of profile Reels?

Use this route when you need the public grid as Instagram shows it (images, sidecars, and in-feed video together). Use `GET /v1/instagram/profiles/{handle}/reels` when the job is short-form only and you want the Reels tab. Use `GET /v1/instagram/posts` when you already have one media URL.

What happens for private or missing Instagram accounts?

Branch on `data.lookupStatus`. Private handles resolve as `private`; unknown handles as `not_found`. Do not invent a feed. Keep `meta.requestId` if you need support on a failed list call.

Do I need Instagram Graph API access to list a feed?

No. Social Fetch returns publicly visible feed data for enrichment-style lookups. Meta's Instagram Graph API is for accounts you manage or that grant your app access — not arbitrary public creator timelines.