Instagram Post & Reel Details Scraper — Likes, Exact Time avatar

Instagram Post & Reel Details Scraper — Likes, Exact Time

Pricing

$1.50 / 1,000 post details

Go to Apify Store
Instagram Post & Reel Details Scraper — Likes, Exact Time

Instagram Post & Reel Details Scraper — Likes, Exact Time

Instagram posts and reels by URL: likes, comments, exact publish time, caption, hashtags, carousel parts, tagged accounts, co-authors, location, the owner's follower count, engagement rate. Reels: length, music, and the play count while a reel is among its owner's 36 newest or pinned. No login.

Pricing

$1.50 / 1,000 post details

Rating

0.0

(0)

Developer

Berkan Kaplan

Berkan Kaplan

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

13 days ago

Last modified

Share

Instagram Post & Reel Details Scraper — Likes, Views, Engagement 🚀

foXLabs Instagram series: Bulk Profile · Profile Posts · Comments · Reels

🎉 Give a list of Instagram post and reel addresses; get one row per post: likes, comment count, exact publish time, caption with hashtags & mentions, the kind, carousel parts, tagged accounts, co-authors, location and topics, and the owner's exact follower count with an engagement rate. For videos/reels also length and sound; for a reel two counters — the Reels-tab play count (when it's among the first 36 tiles) and the embed-page view count.

It reads only what a signed-out visitor sees. No login, no cookies, nothing from your own Instagram account. Not affiliated with Instagram or Meta.

🔍 What is the Instagram Post & Reel Details Scraper — and when should you use it?

Give this Actor post/reel URLs and it returns one rich row each — built for campaign reports ("what did these 300 posts do?"), following the same posts day by day, and reading a post's full content.

Use it when you need: engagement + exact time for a known list of posts/reels; a campaign performance report with engagement rate; or reel play counts and video views.

Use something else when: you want a whole profile's posts → Profile Posts; profile-level metrics → Bulk Profile; the comments themselves → Comments.

🤖 Use with AI agents

Already on the Apify MCP server? Ask for this Actor by name: foxlabs/instagram-post-details-scraper. An agent can discover it, run it and read the dataset over MCP.

Real-time Standby API. The code also runs as a small API — GET /post?url=<address> returns one post per request, with includeVideoStats and includeReelPlays as optional parameters — billed with the same post-details event.

Otherwise paste this into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want Instagram post/reel details using the Apify Actor
`foxlabs/instagram-post-details-scraper`.
Input: `postUrls` is a list of post/reel URLs, short codes or ids; `includeVideoStats` adds
view count + follower count + engagement rate; `includeReelPlays` adds the Reels-tab play count.
Each row has likeCount, commentCount, takenAt, ownerFollowers, engagementRate, playCount.
Start with:
{ "postUrls": ["https://www.instagram.com/reel/DePpLegAuKI/"] }
Ask me which posts to measure, run the Actor, then summarise the engagement.

The machine-readable API, MCP config and OpenAPI definition live at apify.com/foxlabs/instagram-post-details-scraper.md.

📋 Overview

Everything you need to turn a list of Instagram post/reel links into clean, structured data — engagement, exact time, full content and follower-based engagement rate — in one Actor, with no login, cookies or account.

Why teams pick this Actor:

  • ✅ Engagement rate — likes + comments ÷ the owner's exact follower count.
  • 🎬 Two reel counters, honestly — Reels-tab playCount and embed videoViewCount are different; both given, never confused.
  • 📅 Exact time + full content — caption, carousel parts, tags, co-authors, topics, music.
  • 🎯 Honest nulls — a value Instagram didn't give is null, never 0; every …Source says where a figure came from.
  • 💰 Pay only for results — one post-details event per row; status rows and duplicates free.
  • 🤖 Agent-ready — MCP + a real-time Standby API.

✨ Features

  • 🔍 Posts & reels by URL — any address form, short code or numeric id; duplicates delivered once.
  • 📊 Engagement — likeCount (+ hidden flag), commentCount (+ disabled flag), ownerFollowers, engagementRate.
  • ▶️ Reel counters — playCount (Reels tab, first 36 tiles) and videoViewCount (embed).
  • 🧩 Full content — caption, hashtags, mentions, co-authors, tagged users, carousel media, topics, location, video URL + music.

🎬 Quick Start

curl -X POST "https://api.apify.com/v2/acts/foxlabs~instagram-post-details-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"postUrls": ["https://www.instagram.com/reel/DePpLegAuKI/"]}'

🚀 Getting Started (3 steps)

  1. Paste your posts — one per line: a post/reel URL, short code or numeric id.
  2. Pick depth — keep includeVideoStats/includeReelPlays on for views/plays/engagement, or off for one request per post.
  3. Run and export — get a clean dataset as JSON, CSV or Excel.

📥 Input

FieldDefaultWhat it does
postUrlsrequiredOne post/reel per line: any address form, short code or numeric id; duplicates delivered once.
includeVideoStatstrueAdds videoViewCount, ownerFollowers, engagementRate (one embed request per video/carousel; a photo's follower count read once per owner).
includeReelPlaystrueAdds playCount for reels (reads the owner's Reels tab, 1–3 pages per owner).
maxPosts100000Stop after this many rows.
proxyConfigurationautoNothing to change for normal use.
{ "postUrls": ["https://www.instagram.com/p/DeNRLCCF4kk/", "https://www.instagram.com/reel/DdB9sMlAsb8/"] }

📤 Output

One row per post, in the order of your lines (postId unique per run). A value Instagram didn't give is null, never 0.

FieldMeaning
type, postId, shortCode, url, productTypekind, ids, address
ownerUsername, ownerUserId, ownerFullName, ownerIsVerifiedthe account
takenAtexact publish time (UTC)
likeCount, likesHidden, commentCount, commentsDisabledengagement
playCount, videoViewCountReels-tab plays (first 36 tiles) and embed views — different counters
ownerFollowers, engagementRateexact followers; (likes + comments) ÷ followers
caption, captionIsEdited, hashtags, mentions, coauthors, taggedUsers, topicscontent
locationName/Id/Lat/Lng, carouselCount, carouselMediaplace; carousel parts
durationSeconds, hasAudio, videoUrl, musicArtist, musicTitle, usesOriginalAudiovideo/sound
displayUrl, width, height, accessibilityCaption, isAiLabeledmedia
playCountSource, videoStatsSource, ownerFollowersSourcewhere each figure came from
input, scrapedAt, erroryour line; when read; reason on status rows
{
"type": "reel", "shortCode": "DePpLegAuKI", "url": "https://www.instagram.com/reel/DePpLegAuKI/",
"ownerUsername": "natgeo", "ownerFollowers": 268420490, "takenAt": "2026-10-08T19:05:31.000Z",
"likeCount": 47878, "commentCount": 163, "playCount": 983213, "videoViewCount": 228112,
"engagementRate": 0.00018, "caption": "Many orphaned giant anteater pups …",
"durationSeconds": 9.258, "musicArtist": "natgeo", "musicTitle": "Original audio",
"playCountSource": "reels-tab", "videoStatsSource": "embed", "ownerFollowersSource": "embed"
}

💼 Use cases

1. Campaign report — "what did these 300 posts do?" with engagement rate. Input: the campaign URLs, everything on. Output: likes/comments/views + rate. Use: one report table.

2. Daily tracking — follow the same posts on a schedule for fresh numbers. Input: the URLs, scheduled. Output: a row per run. Use: a performance timeline.

3. Reel benchmarking — compare plays and views across reels. Input: reel URLs. Output: playCount + videoViewCount. Use: judge true reach.

🔗 Integration

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('foxlabs/instagram-post-details-scraper').call({ postUrls: ['https://www.instagram.com/reel/DePpLegAuKI/'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('foxlabs/instagram-post-details-scraper').call(run_input={'postUrls': ['https://www.instagram.com/reel/DePpLegAuKI/']})
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item)

Written for apify-client 3 for Python, where call() returns a run object; with version 1 or 2 it returns a dict — write run['defaultDatasetId'] there.

Automation (n8n / Zapier / Make): schedule → HTTP request to the Actor API with your postUrls → handle the JSON dataset → push to a sheet, CRM or dashboard.

📊 Pricing

Pay per event, one per delivered row: post-details. Free: status rows, second addresses of the same post, and a run that could not start. View current pricing.

❓ FAQ

Do I need an Instagram login or cookies? No — only what a signed-out visitor sees.

What's the difference between playCount and videoViewCount? Two counters: the Reels-tab play figure and the embed page's views (plays ran 2.2–7.7× the views in our measurements). Never report one as the other.

Why is playCount sometimes null? It's only available while a reel is among the first 36 tiles of its owner's Reels tab; older reels show null (likes/comments/views still come).

How is engagement rate computed? (likes + comments) ÷ the owner's exact follower count; ownerFollowersSource says whether that came from the embed page or the profile.

Can I export to CSV / Excel / JSON? Yes — directly from the Apify dataset.

🐛 Troubleshooting / What it does NOT do

  • No share/save/repost counts, no comments (count only) — not in what a signed-out visitor gets.
  • No play count below tile 36 of the owner's Reels tab → playCount: null.
  • Nothing behind the login — private posts, signed-in-only posts, stories, follower lists (free status row).
  • No share links (instagram.com/share/…) — open it and use the address it leads to.
  • No media files — displayUrl/videoUrl/carouselMedia are temporary addresses.
  • No only-new memory — every run delivers every post with fresh numbers.
  • A changed Instagram query fails the run at its start-up request, before anything is read/charged.

⚠️ Trademark

Independent, third-party tool. Not affiliated with, endorsed by or connected to Instagram or Meta Platforms, Inc. "Instagram" and related marks belong to their owners and are used here for identification only.

Rows describe public posts but can hold personal data (owner name/id, tagged accounts, co-authors, location); you decide what to collect and are responsible for a lawful reason (GDPR and similar). The Actor infers nothing about a person, delivers no comments/commenters, and writes only to your own run's storage. Media belongs to its owners; addresses are temporary. See Apify's blog post on the legality of web scraping.

🤝 Support & contact

Changelog

0.1 — 2026-10-09

  • First version: one row per post or reel from a list of addresses; playCount from the owner's Reels tab (includeReelPlays), videoViewCount from the embed page beside it; ownerFollowers + engagementRate (photos too); free status rows for undeliverable lines; start-up check ends a run before anything is read if Instagram changed its query. Standby mode (GET /post?url=…) prepared; published in batch mode.