Yes. The Instagram Graph API returns a shares metric for a single post, and Meta's reference table for media insights marks it supported on Feed posts, Reels, and Stories (Meta, IG Media metrics reference, accessed 11 September 2026, full URL in the sources below). Request it with metric=shares on the media id. The number arrives as values[0].value with period set to lifetime. That is the whole answer. The rest of this page covers why so many search results say otherwise.
The confusion has a paper trail. Meta's changelog announces views on 21 January 2025, reels_skip_rate and reposts on 3 December 2025, and three media fields (reposts_count, saved_count, shares_count) for Facebook Login apps on 22 April 2026. It has never carried a line for the shares metric itself. The metric lives only in the reference table, so a developer who reads the changelog, or an answer written before that table changed, concludes it does not exist. It does, and it has three media types behind it.
Does the Instagram Graph API provide a shares metric for media insights?
It does, under the exact name shares, all lowercase. The media reference table has 23 rows as of 11 September 2026, and shares is one of seven rows Meta lists for all three media product types, next to reach, views, total_interactions, reposts, facebook_views, and the Facebook Login only total_views. Meta's account-level page describes the same metric as "The number of shares of your posts, stories, reels, videos and live videos" (Meta, IG User metrics reference, accessed 11 September 2026).
The media object has a share count too, with a catch. like_count and comments_count are plain fields on every login flow. shares_count, saved_count, and reposts_count joined them on 22 April 2026 (changelog), but Meta lists all three as Feed and Reels only and "Available for Instagram API with Facebook Login only" (IG Media reference, accessed 11 September 2026). On Instagram Login, and for any Story, shares on the metrics edge is the only route, and it arrives with up to 48 hours of latency.
Every media metric by media type, as of September 2026
The table below is the live reference table on 11 September 2026, reordered so the three-type metrics come first. Yes means Meta lists the metric for that media product type. In development is Meta's own label, and views carries it today without that changing what the call returns.
| Metric | Feed | Reels | Stories | Note |
|---|---|---|---|---|
shares | Yes | Yes | Yes | No changelog entry, reference table only |
reach | Yes | Yes | Yes | Estimated |
views | Yes | Yes | Yes | In development; added 21 January 2025 |
total_interactions | Yes | Yes | Yes | In development |
reposts | Yes | Yes | Yes | Added 3 December 2025 |
facebook_views | Yes | Yes | Yes | Views on Facebook surfaces for crossposted media |
saved | Yes | Yes | No | Times the media was saved |
likes | Yes | Yes | No | |
comments | Yes | Yes | No | |
follows | Yes | No | Yes | |
profile_visits | Yes | No | Yes | |
profile_activity | Yes | No | Yes | breakdown=action_type |
impressions | Yes | No | Yes | Deprecated for media created on or after 2 July 2024 (changelog wording) |
ig_reels_avg_watch_time | No | Yes | No | Average play time per reel |
ig_reels_video_view_total_time | No | Yes | No | In development |
reels_skip_rate | No | Yes | No | Estimated, in development; added 3 December 2025 |
crossposted_views | No | Yes | No | |
navigation | No | No | Yes | breakdown=story_navigation_action_type |
link_clicks | No | No | Yes | Added 22 June 2026 |
replies | No | No | Yes | Returns 0 for stories created in Europe or Japan |
total_likes | Yes | Yes | No | Facebook Login only |
total_comments | Yes | Yes | No | Facebook Login only |
total_views | Yes | Yes | Yes | Facebook Login only |
Two rows in that table trip people up. Stories carry shares, reach, and views but none of likes, comments, or saved, so a metric string built for Feed posts fails with code 100 the first time it meets a story id. And plays, the Reels play count for years, was removed on every API version by 21 April 2025 in the same deprecation as impressions (changelog). Use views for both.
How to request shares on a single post
One GET, one query parameter. The example asks for four metrics at once, which is the normal shape: batch the metrics you want per post into a single comma-separated metric value rather than one call per metric, because every call draws on the same Business Use Case rate budget as the rest of the platform (see social API rate limits). On Instagram Login the host is graph.instagram.com; on Facebook Login it is graph.facebook.com. The path is the same.
curl "https://graph.instagram.com/v25.0/17932174733377207/insights?metric=shares,saved,likes,comments&access_token=$TOKEN"{
"data": [
{
"name": "shares",
"period": "lifetime",
"values": [{ "value": 4 }],
"id": "17932174733377207/insights/shares/lifetime"
},
{
"name": "saved",
"period": "lifetime",
"values": [{ "value": 12 }],
"id": "17932174733377207/insights/saved/lifetime"
}
]
}period is optional on the media edge and the answer is always the lifetime total, which is why the response says lifetime even when you pass nothing. The real payload also carries a title and a description string per row. The id is something to log, never to parse. If you add breakdown=action_type for profile_activity, the per-bucket numbers arrive under total_value.breakdowns, next to values, so a parser that only reads values[0].value silently drops the buckets for that one metric.
Why the request fails or comes back empty
The list below covers the failure modes Meta documents on the reference page, two the API returns in practice, and the one album rule that catches everyone at least once. None of them is a bug in your code, and only the first one is fixable by changing the request.
- Code 100 with an unsupported-metric message: you asked for a metric the media type does not carry, such as
savedon a Story ornavigationon a Reel. Build the metric string frommedia_product_typebefore you call. - An empty
dataarray: Meta returns no rows, not zeros, when a metric has no data yet. Treat missing as unknown, never as 0, or a post with four shares will drop to none on your dashboard while the 48-hour latency window catches up. - Nothing for a carousel child: Meta's reference states that no metrics data exists for any media inside an album. Query the album's own media id and read the totals there.
(#10) Not enough viewerson a Story: stories with fewer than 5 views return no data at all, and Meta states that Story metrics are only available for 24 hours, the story's own lifetime. Pull them while the story is live or lose them.impressionserrors on recent media: any media created on or after 2 July 2024 rejectsimpressionssince 21 April 2025, on every API version (changelog).playswent the same day. Swap both forviews.- Numbers that move: Meta keeps 2 years of history and updates with up to 48 hours of delay, so a share count read at publish time and again a week later will differ, and neither read is wrong.
Metric or media field: the login flow decides which you can read
Two routes lead to one number, and the login flow picks yours. On Facebook Login, shares_count is a field on the media object you already fetch, read with instagram_basic and pages_read_engagement, for Feed and Reels media. On Instagram Login that field does not exist, so shares comes only from the metrics edge with instagram_business_basic plus instagram_business_manage_insights (Meta, IG Media reference and metrics reference, accessed 11 September 2026). Facebook Login can take the metrics route too, with instagram_manage_insights added.
That split matters at App Review time. The metrics permission is a separate review item, and a token minted before you added it keeps answering media fields while it rejects the metrics edge with a permission error. On Facebook Login you can read shares, saves, and reposts as fields and defer the metrics review until you need reach or views. On Instagram Login there is no such shortcut for shares. Instagram and Facebook API without Meta App Review covers the review side in full.
Account-level shares with a media_product_type breakdown
If the question is how many shares the account got this week rather than how many one post got, use the user metrics edge instead. It takes period=day, metric_type=total_value, and a since/until range of Unix timestamps, and it accepts breakdown=media_product_type with the values AD, STORY, REEL, CAROUSEL_CONTAINER, and POST (Meta, IG User metrics reference, accessed 11 September 2026). Meta marks the edge as available on both login flows.
GET https://graph.instagram.com/v25.0/{ig-user-id}/insights
?metric=shares,saves,reposts
&period=day
&metric_type=total_value
&breakdown=media_product_type
&since=1788220800
&until=1788998400
&access_token={token}Note the naming drift. The account edge spells it saves; the media edge spells it saved. Both spell shares as shares. The account edge also returns reposts since 3 December 2025 and replies for story replies. Write the two spellings into one constant each and never type them inline again.
What SocialAPI.ai returns for Instagram today
SocialAPI.ai's Instagram connector ships a beta summary endpoint, GET /v1/platforms/instagram/accounts/{id}/summary, that returns live profile counts (followers, following, media) plus trailing-30-day totals for reach, views, interactions, engaged accounts, and net follower change (Instagram connector docs). It does not return per-post shares today. If you need the share count of one post, call the Meta edge above directly with your own token.
The permission is requested on every connect through SocialAPI.ai's managed Meta app, so a customer never files an App Review of their own. Accounts connected before that permission existed answer 403 with the code platform.instagram.insights_scope_missing and need one reconnect. The Instagram platform page lists everything else the connector covers.
Shares is one metric out of a wider set that differs per network, and the social media analytics API guide lays out which metrics each platform returns and which it withholds. Comments are the other half of engagement, covered in the social media comments API guide. Publishing has its own ceiling too: the Instagram publishing limit is a 24-hour rolling quota that three Meta pages describe with two different numbers.
Questions developers ask about the Instagram shares metric
- What is the exact metric name for shares in the Instagram Graph API?
shares, lowercase, passed in themetricquery parameter of the metrics edge on a media id, for example?metric=shares. The media object has a separateshares_countfield since 22 April 2026, readable with?fields=shares_counton Feed and Reels media, but Meta marks it Facebook Login only, so on Instagram Login the metric is the only route. The account-level edge uses the same spelling,shares, next tosaves(the media edge spells that onesaved). Meta's account-level description of the metric reads: "The number of shares of your posts, stories, reels, videos and live videos."- Does the shares metric work for Reels and Stories?
- Yes for both, per the reference table on 11 September 2026.
sharesis one of the metrics Meta lists for FEED, REELS, and STORY media product types, alongsidereach,views,total_interactions, andreposts. What differs per type is the rest of the metric string: Stories have nolikes,comments, orsaved, and Reels have noprofile_visits,profile_activity, orfollows. Build the metric list from the media'smedia_product_typebefore you call, or the request fails with code 100 for the whole batch, shares included. - Why does my shares request return an empty data array?
- Because Meta returns an empty dataset, not a zero, when a metric has no value yet. The common causes: the post is under 48 hours old and the count has not landed; the id is a carousel child, which never carries metrics; the media is a Story with fewer than 5 viewers, which answers
(#10) Not enough viewers; or the Story is past its 24-hour life and Meta no longer serves its metrics. Log empty as unknown, retry after the latency window, and never write it to your database as 0. - Do I need App Review to read the shares metric?
- With your own Meta app, yes:
instagram_business_manage_insights(Instagram Login) orinstagram_manage_insights(Facebook Login) is a reviewed permission, and a token without it fails the metrics call while media fields keep working. Through SocialAPI.ai the managed Meta app already holds the permission and requests it on every connect, so a customer never files a review. The trade-off is scope: SocialAPI.ai exposes account-level 30-day totals today, not per-post shares. - Is there a share count field on the media object like like_count?
- Yes, with two conditions. Meta added
shares_count,saved_count, andreposts_countto the media object on 22 April 2026, for Feed and Reels media, and the reference marks all three "Available for Instagram API with Facebook Login only". An app on Instagram Login does not get them and reads shares as a metric instead, which means a second call, the metrics permission, and up to 48 hours of latency. If your product shows a share count next to likes on Instagram Login, treat it as a lagging value and label it so.
If account-level totals are what you need, connecting an Instagram account takes one OAuth round trip and no App Review. Sign up free, or read the Instagram connector docs first. If a Meta fact on this page has drifted, tell us and it gets corrected.
Every Meta claim above traces to a Meta developer page, each accessed 11 September 2026. Where the changelog and the reference table disagree, this post says so instead of picking one silently. Meta, IG Media insights reference (per-media metrics) · Meta, IG User insights reference (account-level metrics) · Meta, Instagram Platform changelog · Meta, IG Media reference (shares_count, saved_count, reposts_count fields) · SocialAPI.ai Instagram connector docs
