Instagram Post & Reel Scraper - Views & Engagement avatar

Instagram Post & Reel Scraper - Views & Engagement

Pricing

from $0.60 / 1,000 post scrapeds

Go to Apify Store
Instagram Post & Reel Scraper - Views & Engagement

Instagram Post & Reel Scraper - Views & Engagement

Scrape Instagram posts and reels by profile, post URL or audio: exact likes, comments and views, captions, dates, engagement rate, collaborators, sponsors, tags, location, music and media URLs. Date-range and reels-only filters. No login. From $0.70 per 1,000 posts.

Pricing

from $0.60 / 1,000 post scrapeds

Rating

0.0

(0)

Developer

Eimantas V

Eimantas V

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

6

Monthly active users

9 days ago

Last modified

Categories

Share

Instagram Post & Reel Scraper extracts public posts and reels from Instagram: captions, exact like, comment and view counts, publish dates, engagement rate, collaborators, paid-partnership sponsors, tagged users, location, music, image and video links, and optionally the latest comments. Paste usernames, profile or reels-tab URLs, post and reel URLs, or audio URLs, and get one row per post. No login, no cookies, no browser, from $0.35 per 1,000 posts ($1.00 on the Starter plan).

{
"url": "https://www.instagram.com/reel/DePpLegAuKI/",
"type": "Video",
"productType": "clips",
"ownerUsername": "natgeo",
"timestamp": "2026-10-08T19:05:31.000Z",
"likesCount": 58205,
"commentsCount": 203,
"videoPlayCount": 1310882,
"videoDuration": 9.258,
"engagementRate": 0.0218,
"musicInfo": { "songName": "Original audio", "artistName": "natgeo", "usesOriginalAudio": true }
}

Measured on Apify (2026-10-09): 3,800 posts from 20 profiles in 92 seconds; 200 posts with their latest comments in 51 seconds.

What does Instagram Post & Reel Scraper do?

It reads the posts and reels Instagram shows a visitor who is not logged in, for as many profiles, posts and sounds as you list, and returns them as clean rows you can download as JSON, CSV or Excel. It adds what Instagram does not show in one place: the engagement rate of every post, who it was made with, which brand paid for it, and which sound a reel uses.

  • Every input form. Usernames (natgeo), @handles, profile URLs, the reels tab (instagram.com/natgeo/reels/), numeric user IDs, post and reel URLs in every shape Instagram shares (/p/, /reel/, /reels/, /tv/, /<user>/p/), and audio pages (instagram.com/reels/audio/<id>/) for every reel that uses a sound.
  • Exact numbers. Likes, comments and views (plays) as exact counts, not "1.3M", with video length and publish time to the second.
  • Date ranges that cost nothing extra. "Posts newer than" stops at the first older post; "Posts older than" jumps straight to that date, so a quarter from two years ago costs a handful of requests, not thousands of skipped posts.
  • Brand and creator research. Paid-partnership label and sponsor brands, collab co-authors, tagged users, mentions, hashtags, location with coordinates, and the song and artist of every reel.
  • Engagement rate per post. (Likes + comments) / the profile's followers, with the exact follower count in each row.
  • Latest comments at no extra charge. Turn on "Add latest comments" for each post's newest comments (about 14) and Instagram's own description of the image.
  • Only pay for results. Private, empty or missing profiles, posts your filters leave out and duplicates are never charged.
  • Built for automation. Run it on a schedule, call it from the API, or connect it to Make, Zapier, n8n, Google Sheets or an AI agent through Apify's MCP server.

Why it is fast and cheap

There is no browser and no login. The Actor reads Instagram's own app feeds, the same data the Instagram app loads: one request returns 12 posts with every count, about 5 KB per post. Profiles are scraped ten at a time from Apify's own addresses, and the Actor switches to fresh IPs by itself if Instagram ever refuses one, so there is no proxy to set up and a large list does not stall.

What data can you extract from Instagram?

FieldExampleWhat it is
url, shortCode, idhttps://www.instagram.com/reel/DePpLegAuKI/Link, code and numeric media ID
type, productTypeVideo, clipsImage, Video or Sidecar (carousel); clips = a reel
caption, hashtags, mentionsMany orphaned giant anteater pups…Full caption, plus the hashtags and @mentions in it
likesCount, commentsCount58205, 203Exact counts
videoPlayCount, videoDuration1310882, 9.258Views (plays) and length in seconds of reels and videos
timestamp2026-10-08T19:05:31.000ZPublish time, UTC
engagementRate, profileFollowersCount0.0218, 268420490(Likes + comments) / followers x 100, and the follower count used
ownerUsername, ownerFullName, ownerId, ownerIsVerifiednatgeoWho posted it
coauthors["rolex"]Collab co-authors
isPaidPartnership, sponsorstrue, ["rolex"]"Paid partnership" label and the sponsoring brands
taggedUsers["nasa"]Accounts tagged in the photo or video
locationName, locationId, locationLat, locationLngInternational Space StationTagged location with coordinates
musicInfoDon't Stop Me Now, QueenSong and artist, or the creator's original audio, with the audio page ID and file
isPinnedfalsePinned to the top of the profile
displayUrl, images, videoUrlURLsCover image, every image of a carousel, the video file
childPosts3 slidesEach carousel slide with its image, video and size
dimensionsWidth, dimensionsHeight, hasAudio1080, 1920, trueOriginal size and sound
latestComments14 commentsText, author, likes and time (with "Add latest comments")
accessibilityCaptionVideo by National Geographic…Alt text (with "Add latest comments", or when the owner wrote one)

The dataset has five views: Overview, Reels and music, Collabs, sponsors and tags, Media files and Latest comments.

How to scrape Instagram posts and reels

  1. Click Try for free and paste usernames, profile, post, reel or audio URLs into Instagram profiles, posts or audio, one per line.
  2. Set Max posts per profile (20 by default) and, if you like, a date range or Reels only.
  3. Click Start. A typical list of a few profiles finishes in under ten seconds; thousands of posts take a minute or two.
  4. Open the Output tab, or download the results as JSON, CSV, Excel or HTML.

How much does it cost to scrape Instagram?

You pay per post returned, and the price drops on higher Apify plans:

Apify planPer 1,000 posts
Free$1.20
Starter$1.00
Scale$0.80
Business$0.60
  • The latest 50 posts of 20 competitor accounts (1,000 posts) on the Starter plan cost $1.00.
  • 100,000 posts a month on the Business plan cost $60.
  • Latest comments, views, music, sponsors and the engagement rate are included in that price.
  • A run also costs $0.00005 to start. A profile that fails, or matches nothing, costs nothing more.
  • The Free plan's $5 monthly credit covers about 4,000 posts.

Input

{
"targets": [
"natgeo",
"https://www.instagram.com/nike/reels/",
"https://www.instagram.com/p/DeJ28eTxo4s/",
"https://www.instagram.com/reels/audio/1584203999231664/"
],
"maxPostsPerProfile": 50,
"onlyPostsNewerThan": "30 days",
"skipPinnedPosts": true
}
FieldDefaultNotes
Instagram profiles, posts or audionasa (example)Usernames, profile or reels-tab URLs, user IDs, post or reel URLs, audio URLs; one per line
URLs (for chaining Actors)emptyThe same in the URL-list shape other Actors output
Max posts per profile20Per profile or audio page, newest first, after filters
Max posts in total100,000Your cost cap for the run
What to take from profilesPosts and reelsOr Reels only (the reels tab) or Photos and carousels only
Posts newer than / older thanempty2025-01-31, or relative such as 7 days, 3 months, 1 year; together they make a date range
Skip pinned postsoffLeave out the posts pinned to the top of a profile
Add latest commentsoffNewest comments and alt text per post; free, one extra request per post
Concurrency, timeout, retries10, 30 s, 2Tuned already; IP addresses are managed for you

Inputs written for other Instagram post scrapers (username, directUrls, resultsLimit) also work as they are.

Output

Each post or reel is one row in the dataset (shortened here; the full row has every field in the table above):

{
"recordType": "post",
"input": "https://www.instagram.com/natgeo/reels/",
"id": "4003599702326174344",
"shortCode": "DePpLegAuKI",
"url": "https://www.instagram.com/reel/DePpLegAuKI/",
"type": "Video",
"productType": "clips",
"caption": "Many orphaned giant anteater pups in Brazil are still nursing when their mothers are killed…",
"hashtags": [],
"mentions": ["fernando.faciole"],
"likesCount": 58205,
"commentsCount": 203,
"videoPlayCount": 1310882,
"videoDuration": 9.258,
"timestamp": "2026-10-08T19:05:31.000Z",
"engagementRate": 0.0218,
"profileFollowersCount": 268420490,
"ownerUsername": "natgeo",
"ownerFullName": "National Geographic",
"ownerId": "787132",
"ownerIsVerified": true,
"coauthors": [],
"taggedUsers": [],
"isPinned": false,
"isPaidPartnership": false,
"sponsors": [],
"locationName": null,
"musicInfo": {
"audioId": "28892386943719393",
"songName": "Original audio",
"artistName": "natgeo",
"usesOriginalAudio": true,
"isExplicit": false,
"durationSecs": 9.258,
"audioUrl": null
},
"latestComments": [
{ "id": "18135469879651603", "text": "😢❤️", "ownerUsername": "a_viewer", "ownerIsVerified": false, "likesCount": 0, "repliesCount": null, "timestamp": "2026-10-09T07:18:27.000Z" }
],
"displayUrl": "https://scontent-iad3-1.cdninstagram.com/v/t51.82787-15/…",
"videoUrl": "https://scontent-iad6-1.cdninstagram.com/o1/v/t2/f2/m86/…",
"dimensionsWidth": 1080,
"dimensionsHeight": 1920,
"accessibilityCaption": "Video by National Geographic on October 08, 2026. May be an image of …",
"hasAudio": true,
"dataLevel": "full",
"scrapedAt": "2026-10-09T07:21:13.193Z"
}

A target that cannot be read becomes a row with "recordType": "error" and an errorCode instead of failing the whole run:

errorCodeMeaning
NOT_FOUNDNo such profile, post or sound, or the account is deactivated or restricted
PRIVATEA private account: only its followers can see its posts
NO_POSTSThe profile is public but has no posts (or no reels)
BLOCKED / RATE_LIMITEDInstagram refused every address for this target; run it again later
PARSE_FAILEDInstagram answered in an unexpected shape; please report it

Error rows are never charged.

Tips and limits

  • Views are plays. videoPlayCount is the number Instagram shows as views on a reel or video. Photos and carousels have no public view count, so it is empty for them.
  • Collabs appear on every co-author's profile. A profile's grid includes posts it made together with other accounts: ownerUsername says who posted it and coauthors who else is on it, so filter on ownerUsername if you want only the profile's own posts.
  • Grid or reels tab. "Posts and reels" reads the profile grid. Creators can hide a reel from the grid; those appear only with Reels only, which reads the reels tab. With "Posts older than", reels come from the grid, because the reels tab cannot jump to a date.
  • Pinned posts come first. Instagram puts up to three pinned posts on top of a profile, whatever their age. They are flagged isPinned, kept out of the date cut-off, and can be skipped.
  • Links expire. Instagram's image, video and audio links stop working after a few days; download the media you want to keep.
  • Not available without a login: share counts, more than the newest ~14 comments, reel transcripts, the "tagged" tab of a profile, and hashtag or location searches.
  • A post URL Instagram hides from its owner's feed is still returned from the public post page, marked "dataLevel": "partial": everything except views, video length, sponsors and the pinned flag.
  • Hit your spending limit? The run stops cleanly at your maximum cost per run and keeps everything it collected. Raise the limit in the run options to get more.

FAQ

This Actor collects only data that Instagram shows publicly, without logging in. Results can still contain personal data, which laws such as the GDPR protect. Scrape personal data only for a legitimate purpose, and ask a lawyer if you are unsure. Videos, images and music belong to their creators. Instagram is a trademark of its owner; this Actor is not affiliated with or endorsed by Instagram or Meta.

Can I use it through the API or with Make, Zapier and n8n?

Yes. Every run can be started through the Apify API and returns the dataset as JSON, CSV or Excel. Schedules, webhooks and integrations for Make, Zapier, n8n and Google Sheets are on the Integrations tab. A daily schedule with "Posts newer than" set to 1 day returns each day's new posts.

Can AI agents use it?

Yes. Agents connected to Apify's MCP server can find and run this Actor as a tool, with the same per-post pricing. Give it usernames or post URLs and read back counts, captions and engagement.

How is the engagement rate calculated?

Likes plus comments of the post, divided by the followers of the profile it was scraped from (for a post URL: its owner), times 100. It is left empty when the owner hides like counts, and for audio pages, whose reels come from many different accounts.

Why did I get fewer results than I asked for?

The profile has fewer posts than your limit or in your date range, some targets do not exist or are private (they return error rows), the run reached your maximum cost per run, or it reached its timeout. The log says which, and nothing collected before that is lost.

Support

Missing a field, or found a profile or post that does not work? Open an issue on the Issues tab with the input you used, and it will be looked at quickly.