Instagram Insights Explained: Every Metric, Icon, and API Field (2026)
What every Instagram Insights metric means in 2026: views vs reach, accounts engaged, interactions, profile visits, story navigation (forward, back, next story, exited), reels watch time, the icons, and the Graph API field for each.
TLDR: Instagram Insights has three levels: account, post, and story. Views counts every display, repeats included; reach (labelled “Viewers” in the app) counts unique accounts; interactions counts actions and accounts engaged counts the people who took them. Views replaced impressions and plays as the primary metric in 2024, and the API removed impressions for good on April 21, 2025. Story navigation breaks down into Forward, Back, Next story, and Exited. Every one of these has a Graph API name, listed below, and PostZen pulls the post-level set for connected Instagram accounts. Definitions are Meta’s own from the Help Center and the API reference, checked September 9, 2026.
What are Instagram Insights?
Insights is the analytics built into Instagram for professional accounts, meaning Business and Creator accounts; personal accounts do not get it. You open it from the profile’s “Professional dashboard” or the “View insights” link under any post, reel, or story, and it reports at three levels:
- Account: reach, views, engaged accounts, interactions, follower counts and demographics, profile activity, over 7, 14, 30, or 90 days.
- Post and reel: views, reach, likes, comments, saves, shares, profile activity, follows, and for reels watch time.
- Story: views, reach, interactions, navigation, profile activity, link taps.
Retention differs by surface. The Stories Insights help page says that “although stories expire after 24 hours, you can still access insights for up to two years after they’re created,” while the API’s story metrics “are only available for 24 hours.” That gap is the reason most third-party tools show nothing for stories, and it comes up again below.
What do the Instagram Insights icons mean?
Instagram publishes no legend for the row of icons under a post’s insights, which is why the question ranks. The mapping is consistent across the app and every guide we checked:
| Icon | Metric | What it counts |
|---|---|---|
| Heart | Likes | Accounts that liked the post |
| Speech bubble | Comments | Comments on the post, including replies |
| Paper plane | Shares | Times the post was sent in a DM or shared to a story |
| Bookmark | Saves | Times the post was saved to a collection |
| Bar chart (“View insights”) | Opens the full insights panel |
Below those four, the panel lists Views, Reach (labelled Viewers), Interactions, Profile activity, and Follows, each defined in the next sections.
Views vs reach: what “accounts reached” means
The two headline numbers are easy to confuse because Instagram renamed both in the last two years.
Views is now the primary metric everywhere. Meta’s Insights overview defines it as “the number of times your content was played or displayed. Content includes reels, posts, stories, live videos and ads.” For reels specifically, a view is counted when “your reel starts to play or replay,” so replays count. Views has no follower filter and no uniqueness: one account watching a reel three times is three views.
Reach is the unique count. The app labels it Viewers: “the number of unique accounts that have seen your content on screen at least once,” and the help page adds that “viewers is different from views, which may include multiple views of your reel by the same accounts.” The API’s media insights reference says the same thing with a caveat worth remembering: “Metric is estimated.”
What happened to impressions and plays. In August 2024 Instagram began replacing plays (reels) and impressions (posts and stories) with views as the single primary metric. On the API side, impressions was deprecated for media created after July 2, 2024, and removed for all versions on April 21, 2025. If a dashboard still shows “impressions” for Instagram, it is either stale or relabelled views.
A ratio worth watching: views divided by reach is the average number of times each viewer saw the content. A reel with 10,000 views and 4,000 reach was watched about two and a half times per person, which is a stronger signal than either number alone.
Interactions, accounts engaged, and engagement rate
Interactions counts actions. The Help Center: “the number of actions people take when they engage with your content, such as likes, comments, saves and shares.” At the account level the API’s total_interactions is “the total number of post interactions, story interactions, reels interactions, video interactions and live video interactions, including any interactions on boosted content.”
Accounts engaged counts people. It is “the number of unique accounts that have interacted with your content,” and the API note adds “interactions can include actions such as likes, saves, comments, shares or replies. This metric is estimated.” One account that likes, saves, and comments is three interactions and one engaged account.
Engagement rate is not an Instagram metric. Instagram shows the raw counts and leaves the ratio to you, which is why every tool computes it differently: interactions over reach, interactions over views, or interactions over followers. Pick one and label it, because the three can differ by a factor of ten on the same post. PostZen uses interactions over views, the successor to the impressions-based rate most tools used before 2025.
Profile visits, profile activity, and follows
Profile visits is “the number of times your profile was visited” from the content. Profile activity is the broader bucket: “the number of actions people take when they visit your profile after engaging with your post,” and the API breaks it down by action_type into BIO_LINK_CLICKED, CALL, DIRECTION, EMAIL, TEXT, and OTHER. Follows on a post or reel is “how many accounts started following you as a result of viewing” it.
At the account level, follows_and_unfollows reports both directions and, like follower_demographics, is “not returned if the IG User has less than 100 followers.” Small accounts see blanks here by design, not because of a bug.
Story insights: navigation, replies, and link taps explained
Stories carry the metrics people search for most, because the labels are terse.
Navigation is “the total number of actions taken from your story,” made up of four actions. The API’s story_navigation_action_type breakdown maps them exactly:
| App label | API value | Meaning |
|---|---|---|
| Forward | TAP_FORWARD |
Tapped to your next story slide |
| Back | TAP_BACK |
Tapped to see the previous slide again |
| Next story | SWIPE_FORWARD |
Swiped to another account’s story |
| Exited | TAP_EXIT |
Closed the story viewer |
Read them as a funnel. Forward taps are neutral; Back taps mean something was worth a second look; Next story and Exited are the two ways people leave. A slide with high Next story counts is where a sequence loses its audience.
Replies counts DMs sent from the story, “including text replies and quick reaction replies,” with a regional gap: the API “does not include replies made by users in some regions,” specifically Europe since December 2020 and Japan since April 2021, where the value returns zero.
Link clicks is new. Since June 22, 2026 the API exposes link_clicks, “the number of taps on links in your story (such as link stickers),” currently for apps using Facebook Login. It is distinct from the account-level profile_links_taps, which counts taps on the contact buttons (call, email, text, address), not story links.
The 24-hour problem. Story insights vanish from the API a day after posting, and values under five return error code 10, “Not enough viewers.” The documented fix is the story_insights webhook, which pushes the final numbers before expiry. Any product that reports on stories either subscribes to that webhook or shows nothing.
Reels: watch time, average watch time, and skip rate
Reels add time-based metrics. From the reels insights help page: watch time is “the total amount of time your reel was played, including any time spent replaying the reel,” and average watch time is “the watch time divided by the number of initial views,” where an initial view is “when your reel starts to play for the first time in a reel session.” In the API these are ig_reels_video_view_total_time and ig_reels_avg_watch_time.
Added December 3, 2025: reels_skip_rate, the “percentage of views from people who skipped during the first 3 seconds,” still marked as estimated and in development. Reels crossposted to Facebook also report facebook_views and crossposted_views.
Every Instagram Insights metric and its API field
For developers, the names in the app and the names in the API diverge. This is the mapping as of September 2026.
Post, reel, and story level (GET /{ig-media-id}/insights?metric=...):
| Insight in the app | API metric | Applies to | Notes |
|---|---|---|---|
| Views | views |
Feed, reels, stories | Successor to impressions and plays |
| Viewers / Reach | reach |
All | Estimated |
| Likes | likes |
Feed, reels | |
| Comments | comments |
Feed, reels | |
| Saves | saved |
Feed, reels | Note the API spelling |
| Shares | shares |
All | |
| Reposts | reposts |
All | Added December 2025 |
| Interactions | total_interactions |
All | |
| Profile visits | profile_visits |
All | |
| Profile activity | profile_activity |
All | breakdown=action_type |
| Follows | follows |
All | |
| Navigation | navigation |
Stories | breakdown=story_navigation_action_type |
| Replies | replies |
Stories | Regional gaps |
| Link taps | link_clicks |
Stories | Since June 2026 |
| Watch time | ig_reels_video_view_total_time |
Reels | Milliseconds |
| Average watch time | ig_reels_avg_watch_time |
Reels | Milliseconds |
| Skip rate | reels_skip_rate |
Reels | Since December 2025 |
Account level (GET /{ig-user-id}/insights?metric=...&period=day&metric_type=total_value):
| Insight in the app | API metric | Notes |
|---|---|---|
| Views | views |
Breakdown by follow_type or media_product_type |
| Accounts reached | reach |
|
| Accounts engaged | accounts_engaged |
Estimated |
| Interactions | total_interactions |
|
| Likes, comments, saves, shares, replies, reposts | likes, comments, saves, shares, replies, reposts |
|
| Follows and unfollows | follows_and_unfollows |
Needs 100 followers |
| Contact button taps | profile_links_taps |
Breakdown by contact_button_type |
| Follower demographics | follower_demographics |
period=lifetime with timeframe; needs 100 followers |
Two mechanics catch people. Account metrics need metric_type=total_value for a plain total (breakdowns allowed) or time_series for per-day values (no breakdowns). And since/until are Unix timestamps; omit them and “the API will look back 24 hours,” which is why a first request that seems to return nothing usually just needs a window.
Pulling Instagram Insights with the API
With a long-lived token that carries instagram_business_manage_insights (see our Instagram Graph API guide for getting one), post-level metrics are a single call:
const IG = 'https://graph.instagram.com/v26.0'
export async function getPostInsights(mediaId, token) {
const url = new URL(`${IG}/${mediaId}/insights`)
url.searchParams.set('metric', 'views,reach,likes,comments,saved,shares,total_interactions')
url.searchParams.set('access_token', token)
const response = await fetch(url)
const { data, error } = await response.json()
if (error) throw new Error(`${error.code}: ${error.message}`)
// data: [{ name: 'views', values: [{ value: 1234 }] }, ...]
return Object.fromEntries(data.map((m) => [m.name, m.values[0]?.value ?? 0]))
}
Account-level reach and engaged accounts for the last 7 days in Python:
import time
import requests
IG = 'https://graph.instagram.com/v26.0'
def account_insights(ig_user_id: str, token: str, days: int = 7) -> dict:
until = int(time.time())
since = until - days * 86400
response = requests.get(
f'{IG}/{ig_user_id}/insights',
params={
'metric': 'reach,views,accounts_engaged,total_interactions',
'period': 'day',
'metric_type': 'total_value',
'since': since,
'until': until,
'access_token': token,
},
timeout=30,
)
payload = response.json()
if 'error' in payload:
raise RuntimeError(f"{payload['error'].get('code')}: {payload['error'].get('message')}")
return {m['name']: m['total_value']['value'] for m in payload['data']}
Reads count against the Business Use Case rate limit (4,800 calls times the account’s daily impressions), so cache results rather than polling.
What changed in Instagram Insights in 2025 and 2026
From the Instagram Platform changelog:
| Date | Change |
|---|---|
| April 21, 2025 | impressions removed for all API versions; views gains total_value and breakdowns |
| December 3, 2025 | reels_skip_rate, reposts, crossposted_views, and facebook_views added |
| April 22, 2026 | saved_count, shares_count, reposts_count fields on media; aggregated total_views, total_likes, total_comments matching the Insights dashboard |
| June 22, 2026 | link_clicks for stories |
The pattern is consistent: Instagram is converging the app’s numbers and the API’s numbers, which was not always true. The April 2026 aggregated totals are the ones to use if your goal is to match what the account owner sees in the app.
The shorter path: the same numbers, already normalised
Every network defines its metrics differently, and Instagram alone has renamed its headline number twice in two years. PostZen’s analytics pulls the post-level set above (views, reach, likes, comments, saves, shares, and interactions) for connected Instagram Business and Creator accounts, along with follower counts and best-time-to-post suggestions, and returns them in the same shape its social media API uses for the other networks it covers. Stories are excluded, for the 24-hour reason above. Coverage by platform is on the analytics page; the request shapes are in the Instagram integration docs, and the publishing side is on the Instagram page. For how Instagram’s analytics access compares with the other nine networks, see the best social media APIs for developers. Whatever tool you use, the definitions in this guide are Instagram’s, and they apply on the other side of any API, including ours.
Frequently asked questions
What does "accounts reached" mean on Instagram?
The number of unique accounts that saw your content on screen at least once. The app now labels it "Viewers". It differs from views, which counts every time the content was played or displayed, including repeat views by the same account.
What is the difference between views and reach on Instagram?
Views count how many times content was displayed or played, repeats included. Reach counts how many different accounts saw it. Views replaced impressions and plays as Instagram’s primary metric in 2024, and the API removed impressions entirely on April 21, 2025.
What does navigation mean in Instagram story insights?
Navigation is the total number of actions people took from your story: Forward (tapped to the next slide), Back (tapped back), Next story (swiped to another account’s story), and Exited (closed stories). Exits and Next story are the signals that people left.
What does "accounts engaged" mean on Instagram?
The number of unique accounts that interacted with your content through likes, saves, comments, shares, or replies. Interactions counts the actions; accounts engaged counts the people, so one account liking and saving is two interactions and one engaged account.
What do the icons on Instagram post insights mean?
The heart is likes, the speech bubble is comments, the paper plane is shares (sends), and the bookmark is saves. Instagram publishes no official icon legend; those four are consistent across the app and every guide.
How long are Instagram story insights available?
In the app, up to two years after the story was created even though the story itself expired. Through the API, only 24 hours; subscribe to the story_insights webhook to capture the numbers before they disappear.



