List Instagram profile posts

List posts from an Instagram profile by handle.

GET/v1/instagram/profiles/{handle}/posts
x-api-keystringheader

API key (`sfk_...`)

Parameters
3
handlestringrequiredpath

Instagram handle whose posts should be listed.

min 1 chars · max 2048 chars

cursorstringoptionalquery

Opaque pagination cursor from a previous response.

min 1 chars

hostMediabooleanoptional+2 / assetquery

When true, hosts source media for 90 days and returns delivery URLs in each post's `hostedMedia`.

Response fields
45

Endpoint-specific response payload.

datalookupStatus
string

Whether posts could be listed for this handle.

one of: found, private, not_found

Instagram posts for the requested profile page.

dataposts[]id
string

Instagram media id for this item (vendor-defined composite id).

min 1 chars

dataposts[]shortcode
string

Public shortcode used in the Instagram post URL.

min 1 chars

dataposts[]mediaType
string

Normalized media type.

one of: image, video, sidecar, unknown

dataposts[]caption
stringnullable

Caption text when Instagram provides one.

dataposts[]createdAt
string

When the media was taken or posted (ISO-8601).

dataposts[]url
string

Canonical public Instagram URL for this media.

min 1 chars

dataposts[]displayUrl
stringoptional

Source-platform CDN URL for the primary display image when available. It can expire or be rejected outside the original retrieval context; it is not a SocialFetch-hosted asset. Omitted when no syntactically usable URL is available.

dataposts[]thumbnailUrl
stringoptional

Source-platform CDN URL for the thumbnail or cover image when available. It can expire or be rejected outside the original retrieval context; it is not a SocialFetch-hosted asset.

dataposts[]videoUrl
stringoptional

Source-platform CDN URL for the video when this item is a video and a usable URL is available. It can expire or be rejected outside the original retrieval context; it is not a SocialFetch-hosted asset. For durable hosted copies on this list route, pass `hostMedia=true`. For a single known post URL, `GET /v1/instagram/posts?downloadMedia=true` returns provider-hosted URLs in `downloads`.

dataposts[]likeCount
integeroptional

Like count when Instagram exposes it.

≥ 0

dataposts[]commentCount
integeroptional

Comment count when Instagram exposes it.

≥ 0

dataposts[]playCount
integeroptional

Play or view count for video content when Instagram exposes it (Instagram-only views when distinguishable).

≥ 0

Width and height when available.

dataposts[]dimensionswidth
integer

Media width in pixels.

≥ 0

dataposts[]dimensionsheight
integer

Media height in pixels.

≥ 0

Users tagged in the media when Instagram exposes them.

dataposts[]taggedUsers[]handle
string

Tagged Instagram username without a leading @.

min 1 chars

dataposts[]taggedUsers[]platformUserId
stringoptional

Instagram numeric user id for the tagged account when present.

Present only when `hostMedia=true`. Hosted copies and/or per-asset failures for this post.

dataposts[]hostedMedia[]status
string

Whether SocialFetch stored a durable copy of this asset.

one of: stored, failed

dataposts[]hostedMedia[]type
string

Normalized media kind.

one of: image, video

dataposts[]hostedMedia[]role
stringoptional

Which source field this asset was derived from.

one of: display, thumbnail, video

dataposts[]hostedMedia[]originalUrl
stringoptional

Source-platform CDN URL that was requested for hosting. Still transient; prefer `url` when status is stored.

dataposts[]hostedMedia[]url
stringoptional

Time-limited SocialFetch delivery URL when status is stored. Re-request hostMedia (or a future refresh route) before this expires if you still need access; object retention may outlive the delivery URL.

dataposts[]hostedMedia[]expiresAt
stringoptional

ISO-8601 timestamp when the returned delivery URL stops working.

dataposts[]hostedMedia[]retainedUntil
stringoptional

ISO-8601 timestamp when the stored object is deleted from SocialFetch storage (90-day tier).

dataposts[]hostedMedia[]mime
stringoptional

MIME type of the stored bytes when status is stored.

min 1 chars

dataposts[]hostedMedia[]bytes
integeroptional

Stored size in bytes when status is stored.

≥ 0

dataposts[]hostedMedia[]width
integernullableoptional

Pixel width when known.

≥ 0

dataposts[]hostedMedia[]height
integernullableoptional

Pixel height when known.

≥ 0

dataposts[]hostedMedia[]entityId
stringoptional

Opaque parent entity id for this asset (post, reel, photo, or video id).

min 1 chars

dataposts[]hostedMedia[]postId
stringoptional

Legacy Instagram media id alias for `entityId`. Prefer `entityId`.

min 1 chars

dataposts[]hostedMedia[]errorCode
stringoptional

Typed failure code when status is failed.

min 1 chars

dataposts[]hostedMedia[]errorMessage
stringoptional

Short customer-safe failure message when status is failed.

min 1 chars

Pagination state for the current response.

datapagenextCursor
stringnullable

Cursor to pass as `cursor` in the next request when more posts are available.

datapagehasMore
boolean

Whether another page of posts is available from Instagram.

Metadata describing the request and billing outcome.

metarequestId
string

Unique request identifier for tracing this API call.

min 1 chars

metacreditsCharged
integer

Credits charged for this request.

≥ 0

metaversion
string

Public API version that served the response.

one of: v1

metacached
booleanoptional

True when served from shared response cache. Credits still apply (full endpoint price); Age header may be present.

Code example

curl "https://api.socialfetch.dev/v1/instagram/profiles/charlidamelio/posts" \
  -H "x-api-key: YOUR_API_KEY"

Responses

Instagram posts for the requested profile.