Get Instagram profile engagement audit

Get an engagement audit of an Instagram profile's recent posts by handle, profile URL or user id.

GET/v2/instagram/profiles/{profile}/engagement
x-api-keystringheader

API key (`sfk_...`)

Parameters
1
profilestringrequiredpath

Handle, profile URL or numeric user id.

Response fields
146

Endpoint-specific response payload.

datalookupStatus
string

`found` (an audited profile, 5 credits); `private` or `not_found` (nothing to audit, 1 credit).

one of: found, private, not_found

The profile. Null when not found.

dataprofileid
stringnullable

Instagram user id.

pattern: ^\d+$

dataprofilehandle
stringnullable

Username, without @.

dataprofiledisplayName
stringnullable

Display name.

dataprofileavatarUrl
stringnullable

Profile picture. Instagram CDN URL; it expires after a while.

dataprofileverified
booleannullable

Whether the account is verified.

dataprofileprivateAccount
booleannullable

Whether the account is private.

The engagement-rate audit.

dataauditcanCalculateEngagement
boolean

False for a private or missing profile, and when the follower count isn't available.

dataauditmetricsfollowers
numbernullable
dataauditmetricsaverageEngagementRatePercent
numbernullable
dataauditmetricsmedianEngagementRatePercent
numbernullable
dataauditmetricsaverageLikesPerPost
numbernullable
dataauditmetricsaverageCommentsPerPost
numbernullable
dataauditmetricscommentToLikeRatio
numbernullable
dataauditmetricsengagementVolatilityPercent
numbernullable
dataauditmetricsbestPostShortcode
stringnullable
dataauditmetricsworstPostShortcode
stringnullable
dataauditmetricsqualityLabel
stringnullable

Rough directional band by follower size — not an industry benchmark.

one of: excellent, strong, moderate, low, directional, null

dataauditmetricsqualityLabelNote
stringnullable

The latest posts the audit sampled (up to 12), newest first. Empty when engagement can't be calculated.

The post. Its like, comment and play counts are the ones the rate is computed from.

dataauditposts[]mediaid
string

Media id.

pattern: ^\d+$

dataauditposts[]mediashortcode
stringnullable

Shortcode used in the media URL. Null for stories.

dataauditposts[]mediaurl
stringnullable

Public URL: `/reel/` for Reels, `/p/` otherwise. Null for stories.

dataauditposts[]mediakind
string

`post`, `reel` or `story`.

one of: post, reel, story

dataauditposts[]mediamediaType
stringnullable

`image`, `video` or `carousel`. Null when unknown.

one of: image, video, carousel, null

dataauditposts[]mediacaption
stringnullable

Caption text.

dataauditposts[]mediaaltText
stringnullable

Alt text Instagram generated or the owner wrote. Null when none or not reported.

dataauditposts[]mediacreatedAt
stringnullable

When it was posted.

The account that posted it. Null when unknown.

dataauditposts[]mediaownerid
stringnullable

Instagram user id.

pattern: ^\d+$

dataauditposts[]mediaownerhandle
stringnullable

Username, without @.

dataauditposts[]mediaownerdisplayName
stringnullable

Display name.

dataauditposts[]mediaowneravatarUrl
stringnullable

Profile picture. Instagram CDN URL; it expires after a while.

dataauditposts[]mediaownerverified
booleannullable

Whether the account is verified.

dataauditposts[]mediaownerprivateAccount
booleannullable

Whether the account is private.

Engagement counts. Null when this view doesn't report one.

dataauditposts[]mediametricslikeCount
integernullable

Likes. Null when hidden or not reported.

≥ 0

dataauditposts[]mediametricscommentCount
integernullable

Comments.

≥ 0

dataauditposts[]mediametricsplayCount
integernullable

Plays, for videos. Counts Instagram plays only, not plays of a cross-posted copy on other apps.

≥ 0

dataauditposts[]mediametricsshareCount
integernullable

Shares.

≥ 0

dataauditposts[]mediametricssaveCount
integernullable

Saves.

≥ 0

dataauditposts[]mediametricslikesHidden
booleannullable

Whether the owner hides the like count.

dataauditposts[]mediaimageUrl
stringnullable

Image, or a video's cover image. Instagram CDN URL; it expires after a while.

dataauditposts[]mediathumbnailUrl
stringnullable

Small preview image. Instagram CDN URL; it expires after a while.

dataauditposts[]mediavideoUrl
stringnullable

Video file. Instagram CDN URL; it expires after a while.

dataauditposts[]mediadurationSec
numbernullable

Video length in seconds, to the millisecond.

Pixel size. Null when unknown.

dataauditposts[]mediadimensionswidth
integer

Width in pixels.

≥ 0

dataauditposts[]mediadimensionsheight
integer

Height in pixels.

≥ 0

Every item of a carousel, in order. Null when not a carousel.

dataauditposts[]mediacarousel[]id
stringnullable

Media id of this item.

pattern: ^\d+$

dataauditposts[]mediacarousel[]mediaType
stringnullable

`image` or `video`. Null when unknown.

one of: image, video, null

dataauditposts[]mediacarousel[]imageUrl
stringnullable

Image, or a video's cover. Instagram CDN URL; it expires after a while.

dataauditposts[]mediacarousel[]videoUrl
stringnullable

Video file. Instagram CDN URL; it expires after a while.

dataauditposts[]mediacarousel[]durationSec
numbernullable

Video length in seconds, to the millisecond. Null for images.

Pixel size. Null when unknown.

dataauditposts[]mediacarousel[]dimensionswidth
integer

Width in pixels.

≥ 0

dataauditposts[]mediacarousel[]dimensionsheight
integer

Height in pixels.

≥ 0

dataauditposts[]mediacarousel[]altText
stringnullable

Alt text Instagram generated or the owner wrote. Null when none or not reported.

Music or original audio. On a story, the music sticker. Null when none.

dataauditposts[]mediaaudioid
stringnullable

Audio id.

pattern: ^\d+$

dataauditposts[]mediaaudiotitle
stringnullable

Song or sound title.

dataauditposts[]mediaaudioartist
stringnullable

Artist name.

dataauditposts[]mediaaudioisOriginal
booleannullable

Whether it is original audio rather than licensed music.

dataauditposts[]mediaaudioartistHandle
stringnullable

Username of the account behind original audio.

Collab co-authors. Empty when none.

dataauditposts[]mediacoauthors[]id
stringnullable

Instagram user id.

pattern: ^\d+$

dataauditposts[]mediacoauthors[]handle
stringnullable

Username, without @.

dataauditposts[]mediacoauthors[]displayName
stringnullable

Display name.

dataauditposts[]mediacoauthors[]avatarUrl
stringnullable

Profile picture. Instagram CDN URL; it expires after a while.

dataauditposts[]mediacoauthors[]verified
booleannullable

Whether the account is verified.

dataauditposts[]mediacoauthors[]privateAccount
booleannullable

Whether the account is private.

Accounts tagged in the media. Empty when none. Null when this view doesn't carry tags.

dataauditposts[]mediataggedUsers[]id
stringnullable

Instagram user id.

pattern: ^\d+$

dataauditposts[]mediataggedUsers[]handle
stringnullable

Username, without @.

dataauditposts[]mediataggedUsers[]displayName
stringnullable

Display name.

dataauditposts[]mediataggedUsers[]avatarUrl
stringnullable

Profile picture. Instagram CDN URL; it expires after a while.

dataauditposts[]mediataggedUsers[]verified
booleannullable

Whether the account is verified.

dataauditposts[]mediataggedUsers[]privateAccount
booleannullable

Whether the account is private.

Tagged location. Null when none.

dataauditposts[]medialocationid
stringnullable

Location id.

pattern: ^\d+$

dataauditposts[]medialocationname
stringnullable

Place name.

dataauditposts[]medialocationlat
numbernullable

Latitude.

dataauditposts[]medialocationlng
numbernullable

Longitude.

dataauditposts[]mediaisPaidPartnership
booleannullable

Whether it is labelled as a paid partnership.

Brands named in the paid-partnership label. Empty when it is not a partnership. Null when this view doesn't say.

dataauditposts[]mediasponsors[]id
stringnullable

Instagram user id.

pattern: ^\d+$

dataauditposts[]mediasponsors[]handle
stringnullable

Username, without @.

dataauditposts[]mediasponsors[]displayName
stringnullable

Display name.

dataauditposts[]mediasponsors[]avatarUrl
stringnullable

Profile picture. Instagram CDN URL; it expires after a while.

dataauditposts[]mediasponsors[]verified
booleannullable

Whether the account is verified.

dataauditposts[]mediasponsors[]privateAccount
booleannullable

Whether the account is private.

dataauditposts[]mediacommentsDisabled
booleannullable

Whether the owner turned comments off. Null when this view doesn't say.

dataauditposts[]mediaisPinned
booleannullable

Whether the owner pinned it to their profile (to the Reels tab, when listed there). Null when this view doesn't say.

Story-only details. Null for posts and Reels.

dataauditposts[]mediastoryexpiresAt
stringnullable

When the story expires, or expired for a story kept in a highlight.

Link stickers.

dataauditposts[]mediastorylinkStickers[]url
string

Link destination: the address the sticker opens, not Instagram's redirect.

min 1 chars

dataauditposts[]mediastorylinkStickers[]displayUrl
stringnullable

Text shown on the sticker. Can be null on a profile's first lookup.

Accounts mentioned. On a profile's first lookup, an account's `id`, `avatarUrl` and `verified` can be null.

dataauditposts[]mediastorymentions[]id
stringnullable

Instagram user id.

pattern: ^\d+$

dataauditposts[]mediastorymentions[]handle
stringnullable

Username, without @.

dataauditposts[]mediastorymentions[]displayName
stringnullable

Display name.

dataauditposts[]mediastorymentions[]avatarUrl
stringnullable

Profile picture. Instagram CDN URL; it expires after a while.

dataauditposts[]mediastorymentions[]verified
booleannullable

Whether the account is verified.

dataauditposts[]mediastorymentions[]privateAccount
booleannullable

Whether the account is private.

The post or Reel the story re-shares. Null when none.

dataauditposts[]mediastorysharedMediaid
string

Media id of the shared post or Reel.

pattern: ^\d+$

dataauditposts[]mediastorysharedMediashortcode
string

Shortcode of the shared post or Reel.

min 1 chars

dataauditposts[]engagementRatePercent
numbernullable

(likes + comments) / followers * 100. Null when the post is skipped.

dataauditposts[]isOutlierHigh
boolean

Whether the rate is far above the sample's average.

dataauditposts[]isOutlierLow
boolean

Whether the rate is far below the sample's average.

dataauditposts[]skipReason
stringnullable

Why the post is left out of the averages: `likes_hidden`, `comments_hidden` or `likes_and_comments_hidden`. Null when it is counted.

Average rate by post type. Empty when engagement can't be calculated.

dataauditcontentSegments[]mediaType
stringnullable

`image`, `video` or `carousel`. Null groups posts of unknown type.

one of: image, video, carousel, null

dataauditcontentSegments[]postCount
integer

Counted posts of this type.

≥ 0

dataauditcontentSegments[]averageEngagementRatePercent
numbernullable

How many of the recent posts had usable engagement counts.

dataauditsampleCoveragetotalRecentPosts
integer

≥ 0

dataauditsampleCoverageusablePosts
integer

≥ 0

dataauditsampleCoverageskippedPosts
integer

≥ 0

dataauditsampleCoverageskippedReasonsmissingLikes
integer

≥ 0

dataauditsampleCoverageskippedReasonsmissingComments
integer

≥ 0

dataauditsampleCoverageskippedReasonsmissingBoth
integer

≥ 0

dataauditformulaDescription
string

How the rate is computed.

dataauditdataFreshnessNote
stringnullable

The dates the sample covers. Null without posts.

Best-effort AI narrative over the audit. Null for a private or missing profile, and when generation was unavailable or failed; it never blocks or fails the request.

dataauditinsightheadlineInsight
string
dataauditinsightengagementAssessment
string
dataauditinsightcontentPatternObservations[]
stringoptional
dataauditinsightrisksAndCaveats[]
stringoptional
dataauditinsightrecommendedExperiments[]
stringoptional
dataauditinsightapiUseCaseTeaser
string

Metadata about the API response.

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: v2

Code example

curl "https://api.socialfetch.dev/v2/instagram/profiles/nike/engagement" \
  -H "x-api-key: YOUR_API_KEY"

Responses

Engagement-rate audit computed from recent posts.