Instagram Metrics Scraper - Posts, Reels & Profiles
Pricing
from $2.00 / 1,000 instagram post metrics
Instagram Metrics Scraper - Posts, Reels & Profiles
Collect clean metric rows for public Instagram posts, reels, carousels, and recent profile content. Get views, plays, likes, comments, collaborators, captions, IDs, media links, and status fields without fake zeroes.
Pricing
from $2.00 / 1,000 instagram post metrics
Rating
5.0
(1)
Developer
Chronometrica
Maintained by CommunityActor stats
2
Bookmarked
27
Total users
23
Monthly active users
3 days ago
Last modified
Categories
Share
Instagram Metrics Scraper
๐ What does Instagram Metrics Scraper do?
Instagram Metrics Scraper collects public metrics from Instagram post URLs,
reel URLs, carousel URLs, shortcodes, profile URLs, and @handles.
Use it when you need clean Instagram rows for creator research, influencer reporting, campaign tracking, competitor monitoring, social analytics, dashboards, warehouse loads, and scheduled metric snapshots.
The Actor returns flat CSV/API-friendly rows with Instagram views, plays, likes, comments, public owner/collaborator context, IDs, captions, media links, duration, status fields, and count availability details.
This Actor does not log in, use cookies, scrape private Instagram content, collect comment text, scrape stories, scrape follower lists, or bypass Instagram access controls. It only returns data available from public Instagram content at run time.
With Instagram Metrics Scraper, you can:
- ๐ Track public Instagram post, reel, carousel, and image performance.
- ๐ค Discover recent public content from Instagram profile URLs and
@handles. - ๐ Collect public views, plays, Instagram plays, likes, and comments when available.
- ๐ค Capture public owner and collaborator profiles in one clean collaboration field.
- ๐ Extract useful IDs such as
postId,shortCode,profileId,fbPostId,fbOwnerId, andcarouselIds. - ๐ฌ Save captions, publish time, media type, media links, video duration, and audio presence when available.
- ๐ฏ Check metric availability instead of treating every blank count as zero.
- ๐ฆ Export results as JSON, JSONL, CSV, Excel, XML, RSS, or HTML.
๐ฆ What Instagram metric data can I extract?
Each dataset row represents one public Instagram content item with at least one public post metric.
| Data group | Example fields |
|---|---|
| ๐ Source | platform, inputUrl, postUrl, status, statusReason, scrapedAt |
| ๐ Post identity | postId, fbPostId, shortCode, mediaType, publishedAt |
| ๐งพ Post content | title, caption, downloadUrl, carouselIds, videoDurationSeconds, hasAudio |
| ๐ค Creator | profileId, fbOwnerId, profileHandle, profileUrl, profileVerified, profileAvatarUrl |
| ๐ Metrics | views, plays, playsInstagram, likes, comments |
| ๐ฏ Count quality | postMetricStatus, profileMetricStatus |
| ๐ค Collaboration | collaborationCount, collaborationProfiles |
Metric availability depends on what Instagram exposes publicly for each URL or profile. If a public count is unavailable, the Actor keeps it unavailable instead of filling it with a fake zero.
For reels and video posts, views, plays, and playsInstagram are kept as
separate public counters. Some URLs expose one count but not the others, so
missing values stay missing instead of being guessed or mixed.
collaborationProfiles contains the public owner and confirmed collaborators
when available. Tagged accounts are not treated as collaborators by default.
โ๏ธ Can I use this Actor through an API?
Yes. You can run Instagram Metrics Scraper manually in Apify Console or use it through:
- Apify API
- Python SDK
- Node.js SDK
- Webhooks
- Scheduled runs
- Apify integrations
This makes it useful for social media dashboards, influencer lists, competitive intelligence, creator databases, campaign reporting, data warehouses, and automated market research workflows.
๐ฏ Why scrape Instagram post and reel metrics?
Instagram public metrics help you understand which creators, posts, reels, campaigns, products, and competitors are gaining traction.
| Use case | How Instagram metric data helps |
|---|---|
| ๐ Track creator performance | Monitor public engagement across known creator post and reel URLs. |
| ๐งโ๐ค Research influencers | Compare recent content performance, captions, collaborators, and profile context. |
| ๐ฃ Measure campaigns | Collect repeatable snapshots for campaign posts, reels, and creator deliverables. |
| ๐ต๏ธ Monitor competitors | Track public metrics for competing brands, products, and creator accounts. |
| ๐ค Audit collaborations | See public owner and collaborator profiles in a single normalized field. |
| ๐ Build reporting workflows | Feed normalized Instagram metrics into dashboards, spreadsheets, APIs, and BI tools. |
| ๐ Audit availability | Separate available, unavailable, blocked, invalid, and failed rows cleanly. |
๐ต How much does scraping Instagram metrics cost?
Instagram Metrics Scraper uses Pay Per Event pricing. One billable event is one Instagram metric row written to the default dataset.
Use maxItems and maxItemsPerProfile to control result volume before a run.
Start with a small batch of 3 to 10 URLs when testing a new URL list or profile
set.
๐ How do I use Instagram Metrics Scraper?
- Create or log in to your Apify account.
- Open Instagram Metrics Scraper.
- Choose Auto-detect URLs, handles, and shortcodes, Post and reel URLs only, or Profile discovery only.
- Paste Instagram post URLs, reel URLs, profile URLs,
@handles, shortcodes, or a mix of them. - Set the maximum number of metric rows to collect.
- Leave the default settings for your first run.
- Click Start.
- Open the Output tab to inspect the dataset and run summary.
- Download your data in JSON, JSONL, CSV, Excel, XML, RSS, or HTML.
โฌ๏ธ Input
The main input is startUrls. Paste at least one Instagram content URL, profile
URL, @handle, or shortcode. https:// is optional for normal Instagram URLs.
In Auto-detect URLs, handles, and shortcodes mode, you can paste direct content URLs and profile inputs into the same list. The Actor combines direct content and profile-discovered content under one shared metric row cap.
{"mode": "contentUrls","startUrls": ["https://www.instagram.com/reel/DIwcCZgxVZP/"],"maxItems": 1}
๐ Instagram URLs and handles
Supported input shapes include:
https://www.instagram.com/reel/CODE1234567/https://www.instagram.com/p/CODE7654321/https://www.instagram.com/tv/CODE2222222/www.instagram.com/reel/CODE1234567/CODE1234567https://www.instagram.com/mrbeast/@mrbeast
Use direct URLs when you need exact known media. Use profile discovery when you want recent public content from a creator, brand, or competitor profile.
๐ค Profile discovery
Use profile discovery when you want the Actor to find recent public posts and reels from an Instagram profile before collecting metrics.
{"mode": "profileUrls","startUrls": ["@mrbeast"],"maxItems": 25,"maxItemsPerProfile": 10}
Use maxItemsPerProfile to control how many public content URLs are discovered
from each profile input. The shared maxItems cap still limits total output
rows for the whole run.
๐๏ธ Settings
| Option | What it does |
|---|---|
mode | auto to detect mixed inputs, contentUrls for content URLs only, or profileUrls for profiles. |
startUrls | Instagram content URLs, shortcodes, profile URLs, or @handles. |
maxItems | Maximum metric rows to save across the whole run. |
maxItemsPerProfile | Maximum public content URLs to discover from each profile input. |
โฌ๏ธ Output sample
The results are stored in the default dataset. Each result is one Instagram metric row.
{"platform": "instagram","inputUrl": "https://www.instagram.com/reel/CODE1234567/","postUrl": "https://www.instagram.com/reel/CODE1234567/","postId": "3922329444068919711","fbPostId": "18066137273686492","shortCode": "CODE1234567","mediaType": "reel","title": null,"caption": "Example campaign reel #launch","publishedAt": "2026-06-23T13:00:00.000Z","profileId": "123456789","fbOwnerId": "17841400000000000","profileHandle": "examplebrand","profileUrl": "https://www.instagram.com/examplebrand/","profileVerified": true,"profileAvatarUrl": "https://scontent.cdninstagram.com/avatar.jpg","downloadUrl": "https://scontent.cdninstagram.com/example.mp4","carouselIds": null,"videoDurationSeconds": 42.1,"hasAudio": true,"views": 1234567,"plays": 1234999,"playsInstagram": 1234888,"likes": 23456,"comments": 345,"postMetricStatus": [{"metric": "views","value": 1234567,"status": "present","precision": "exact","rawValue": 1234567}],"collaborationCount": 1,"collaborationProfiles": [{"id": "123456789","handle": "examplebrand","url": "https://www.instagram.com/examplebrand/","role": "owner"}],"profileMetricStatus": [{"metric": "profileFollowersCount","value": null,"status": "unavailable","precision": "unavailable","rawValue": null}],"status": "ok","statusReason": null,"scrapedAt": "2026-06-24T15:00:00.000Z"}
inputUrl preserves the input that produced the row. postUrl is the resolved
public Instagram content URL.
When a saved row has a missing public metric, that metric is returned as null,
not 0. Inputs with no public views, plays, playsInstagram, likes, or
comments are reported in OUTPUT and are not saved as dataset rows.
๐ฏ Metric status
Instagram can expose exact, rounded, delayed, hidden, or unavailable counters depending on content type and public visibility. The status fields make that visible:
present: the metric was found.unavailable: Instagram did not expose the metric publicly for that row.not_attempted: the metric was not attempted for that row.exact: the public value appeared as a full integer.display_roundedorlikely_rounded: the public value was rounded.
This lets you filter rows without guessing whether a blank value means zero.
๐ Views and plays
For reels and video posts, the Actor keeps video count families separate:
viewsplaysplaysInstagram
These fields may differ or appear independently. Keeping them separate makes the dataset safer for analytics and prevents one public count from silently filling another.
๐ค Collaborations
collaborationProfiles contains the public owner and confirmed collaborators
for a post when available. Each profile includes:
idhandleurlrole, eitherownerorcollaborator
Tagged accounts are not treated as collaborators by default.
๐ฆ Status values
Saved rows use explicit statuses, and no-metric or failed inputs are summarized
in OUTPUT:
| Status | Meaning |
|---|---|
ok | Public content was resolved and at least one useful public metric or metadata field was collected. |
resolved_no_public_metrics | The input resolved, but public metric fields were not exposed for that item. |
invalid_input | The input was not a valid Instagram URL, shortcode, or handle. |
unsupported_url | The URL is an Instagram surface this Actor does not support. |
blocked_or_challenged | Instagram returned a login, challenge, unavailable, or blocked response. |
failed | The input could not be resolved after retry. |
Runs with setup issues, zero discovered profile content, blocked responses, or
no exposed public post metrics finish with a clear OUTPUT summary instead of
ending as failed runs. Check OUTPUT.stopReason, OUTPUT.statusMessage,
OUTPUT.skippedNoPostMetricRows, and OUTPUT.validationErrors when no metric
rows are saved.
โ ๏ธ Notes and limitations
- Public metrics can be hidden, rounded, delayed, or unavailable.
- Reels and video posts may expose different view and play counters.
- Image posts and carousels do not always have video-specific metrics.
- Profile discovery returns recent public content and may return fewer rows than requested.
- Private, deleted, login-only, age-gated, or restricted content returns status rows instead of private data.
- Media links can expire or become unavailable after collection.
- This Actor is not affiliated with Instagram or Meta.