Instagram Reel Performance Tracker
Pricing
from $2.00 / 1,000 completed reel checks
Instagram Reel Performance Tracker
Monitor public Instagram Reel views, likes, and comments over time. Compare real observations and export clear deltas without turning unavailable metrics into zeros.
Pricing
from $2.00 / 1,000 completed reel checks
Rating
0.0
(0)
Developer
Data Slayer
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
5 hours ago
Last modified
Categories
Share
Track how public Instagram Reels change over time, with real observation timestamps, metric availability, and deltas you can send to a spreadsheet, dashboard, or campaign workflow.
Watch the demo
YouTube video coming soon.
What you get
Each completed Reel check produces one structured observation containing:
- The submitted and canonical Reel URL
- Reel code and stable media identity when available
- Current and previous observation timestamps
- Time elapsed between observations
- Available views, likes, and comments
- Previous values and numeric deltas when both observations contain the metric
- Per-metric availability, so missing counts are never confused with zero
- First-observation and changed/unchanged indicators
- Clear status for unavailable, private, deleted, restricted, or temporarily failed content when the public response supports that distinction
- A stable observation ID for downstream deduplication
How it works
- Add one or more public Instagram Reel URLs.
- Choose a monitor name such as
campaign-reelsorcompetitor-watch. - Run the Actor once to create the first real observation.
- Save the input as an Apify Task and attach an Apify Schedule.
- Reuse the same monitor name on later runs to receive prior/current comparisons and deltas.
The Actor performs one bounded pass and exits. Scheduling is handled by Apify, so there is no always-running process to manage.
Input
| Field | Type | Required | Default | Limits | Purpose |
|---|---|---|---|---|---|
reelUrls | array of strings | Yes | None; the form shows one example | 1–100 full https://instagram.com/reel/... URLs; 28–500 characters each | Reels to check in this run |
monitorKey | string | Yes | None; the form suggests campaign-reels | 3–64 lowercase letters, numbers, periods, underscores or hyphens; must start and end with a letter or number | Selects one isolated comparison history |
Example input:
{"reelUrls": ["https://www.instagram.com/reel/DdRf9lktEb1/"],"monitorKey": "campaign-reels"}
URLs that differ only by tracking query parameters are normalized to the same Reel and checked once. Profile URLs, post /p/ URLs, audio pages, raw shortcodes, fragments, and non-Instagram hosts are rejected before checks begin. Unknown input fields are rejected.
Reusing the same monitor name continues that monitor's history. A different name starts an independent history. You may add or remove Reel URLs between runs: matching Reels continue, newly added Reels begin with a first observation, and omitted Reels are not checked or deleted.
Output
The proposed output is designed to remain useful in JSON, CSV, Excel, Google Sheets, Make, Zapier, and n8n. Each completed unique Reel check creates one flat Dataset row. The OUTPUT key-value record contains the run summary and neutral per-input failures that produced no Dataset row.
Illustrative output shape only—the values below are examples, not a live observation:
{"schemaVersion": 1,"recordType": "reel_observation","observationId": "obs_example_01","inputPosition": 1,"monitorKey": "campaign-reels","inputReelUrl": "https://www.instagram.com/reel/EXAMPLE123/","reelUrl": "https://www.instagram.com/reel/EXAMPLE123/","reelCode": "EXAMPLE123","reelId": "1234567890123456789","ownerUsername": "examplebrand","status": "available","availabilityReason": "partially_available","firstObservation": false,"changed": true,"observedAt": "2026-09-20T12:00:00Z","previousObservedAt": "2026-09-20T06:00:00Z","elapsedSeconds": 21600,"views": 10000,"viewsAvailability": "available","viewsBasis": "public_plays","previousViews": 8500,"previousViewsAvailability": "available","previousViewsBasis": "public_plays","viewsDelta": 1500,"likes": null,"likesAvailability": "unavailable","previousLikes": null,"previousLikesAvailability": "unavailable","likesDelta": null,"comments": 42,"commentsAvailability": "available","previousComments": 39,"previousCommentsAvailability": "available","commentsDelta": 3}
On the first observation, all previous values and deltas are null and prior availability is not_observed. A missing current or previous metric produces a null delta. A genuine observed zero remains numeric zero, and a genuine count decrease produces a negative delta.
changed is null when no comparison can be made. Otherwise it is true when a comparable metric or availability state changed, and false when all comparable values and availability states stayed the same.
Run summary and failures
The OUTPUT record reports submitted and unique URLs, duplicates, completed/available/unavailable/failed checks, first observations, changed/unchanged/indeterminate comparisons, charged checks, charge-limit skips, Dataset row count, and neutral errors.
{"schemaVersion": 1,"runId": "run_example_01","monitorKey": "campaign-reels","status": "partial","startedAt": "2026-09-20T12:00:00Z","finishedAt": "2026-09-20T12:00:09Z","submittedUrls": 2,"uniqueReels": 2,"duplicateInputs": 0,"completedChecks": 1,"availableChecks": 1,"unavailableChecks": 0,"failedChecks": 1,"firstObservations": 0,"changedChecks": 1,"unchangedChecks": 0,"indeterminateChangeChecks": 0,"chargedChecks": 1,"skippedByChargeLimit": 0,"datasetItemCount": 1,"errors": [{"inputPosition": 2,"inputReelUrl": "https://www.instagram.com/reel/EXAMPLE456/","code": "REQUEST_TIMED_OUT","message": "This Reel could not be checked before the request timed out. Try again later.","retryable": true}]}
Available and definitive unavailable-content rows are completed checks. A temporary retrieval failure after bounded retries produces no Dataset row and no completed-check charge; it appears only as a neutral run-summary error.
Billing
You pay for each completed unique Reel check, including checks where nothing changed. A definitive unavailable/private/deleted/restricted diagnostic row is also a completed check. Invalid form input, an overlap stopped before checking, or a transport failure with no result row does not create a completed-check charge.
| Tier | Completed Reel check | Actor start |
|---|---|---|
| Free | $0.00350 | $0.000050 |
| Bronze | $0.00300 | $0.000045 |
| Silver | $0.00250 | $0.000040 |
| Gold | $0.00200 | $0.000035 |
| Platinum | $0.00200 | $0.000035 |
| Diamond | $0.00200 | $0.000035 |
Platinum and Diamond use exactly the Gold price for every billable event. apify-default-dataset-item is disabled, so Dataset rows are not billed a second time. There are no add-ons.
You can set a maximum charge for every run, and the Actor stops before beginning work it cannot charge within that limit. The proposed minimum permitted maximum-charge setting is $0.01; it is not a mandatory per-run charge.
Scheduling recommendations
- Active launch or campaign: every 1–3 hours
- Ongoing competitor monitoring: every 6–24 hours
- Long-tail content library: daily or weekly
Use intervals that match the decision you plan to make. This Actor reports observations made by your schedule; it cannot recreate performance from before the first run.
Metric availability
Public Reel responses do not expose every metric for every Reel. Counts may be hidden, restricted, or temporarily missing. The Actor keeps the numeric value null and returns an availability label instead of silently converting missing data to zero.
Views may be represented by different public metrics. The Actor applies a documented precedence rule and reports a neutral availability and basis label. It does not claim access to private Instagram Insights.
State and privacy
Monitor state is isolated by monitor name in storage associated with the Apify account running the Actor. State contains the observations needed for comparisons. No Instagram login or cookies are required. Customers can delete their Actor storage when they no longer need the history.
Limitations
- Public Reels only
- No observations from before the first run
- No guarantee that every metric is available for every Reel
- Private, deleted, restricted, or unavailable content may share a general unavailable status when the public response cannot distinguish the exact cause
- Instagram can revise counts or remove content; negative deltas are preserved
- Scheduling must be configured with an Apify Task/Schedule
- This is a monitoring workflow, not Instagram's private creator Insights
Common use cases
- Track campaign Reel momentum after launch
- Compare competitor creative performance over time
- Feed scheduled KPI updates into Sheets or a BI dashboard
- Detect when an older Reel starts gaining views again
- Preserve evidence of public metric changes for reporting