Instagram Reel Performance Tracker avatar

Instagram Reel Performance Tracker

Pricing

from $2.00 / 1,000 completed reel checks

Go to Apify Store
Instagram Reel Performance Tracker

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

Data Slayer

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

5 hours ago

Last modified

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

  1. Add one or more public Instagram Reel URLs.
  2. Choose a monitor name such as campaign-reels or competitor-watch.
  3. Run the Actor once to create the first real observation.
  4. Save the input as an Apify Task and attach an Apify Schedule.
  5. 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

FieldTypeRequiredDefaultLimitsPurpose
reelUrlsarray of stringsYesNone; the form shows one example1–100 full https://instagram.com/reel/... URLs; 28–500 characters eachReels to check in this run
monitorKeystringYesNone; the form suggests campaign-reels3–64 lowercase letters, numbers, periods, underscores or hyphens; must start and end with a letter or numberSelects 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.

TierCompleted Reel checkActor 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