Instagram Reels Scraper: Likes, Views, Comments & Followers
Pricing
from $0.40 / 1,000 results
Instagram Reels Scraper: Likes, Views, Comments & Followers
Scrape recent reels from public Instagram profile URLs into JSON: like, view/play and comment counts, shortcode and URL per reel, plus one profile row with follower, following and post counts. Bulk profile lists, no login. Blocked profiles are retried once on a residential proxy.
Pricing
from $0.40 / 1,000 results
Rating
0.0
(0)
Developer
TicTech
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Instagram Scraper: Posts, Reels, Likes & Views from Profiles
Scrape public Instagram profiles and post or reel URLs into clean JSON: likes, views, plays, comment counts, shortcodes, media type and profile follower counts. If Instagram blocks the default proxy, the run retries automatically on a residential proxy so you still get data. No login.
What you put in: public profile URLs (e.g. https://www.instagram.com/ksi/) and/or direct /p/ and /reel/ URLs. No hashtag, place, or keyword search input — this Actor is for known profiles and posts.
Note: Only public profiles and posts. Login walls, private accounts, or rate limits may yield empty rows for that URL (the run still completes).
Why Use This Tool?
- Automate Instagram reporting: Replace manual screenshots with structured data.
- Bulk creator lists: Run dozens of profile URLs in a single Apify job.
- Profile + content together: Each profile URL scrapes profile metadata once (followers, following, post count) even when there are no new reels/posts in your date window.
- Stack-friendly output: Snake_case JSON for Sheets, warehouses, n8n/Make, or internal APIs.
- Lean by design: HTTP + TLS impersonation — no heavy browser farm; Apify Proxy handles anti-block.
Why Choose This Actor?
- Instagram-focused: Profiles,
/p/, and/reel/URLs in one Actor - Always-on profile row:
media_type: "profile"so account metrics stay updated - Date filter (
until): Keep only content newer than a date for monthly monitoring - Soft-fail per URL: One blocked profile does not kill the bulk run
- Apify-native: Console, schedules, webhooks, API, Make, n8n, Zapier
- PPE pricing: Predictable start + per-result billing
Features
- Scrape Instagram profile URLs and direct post/reel URLs
- Bulk
start_urlsin one run (deduped) - Profile metadata scraped once per profile (followers, following, posts count, handle, display name)
- Post/reel fields: shortcode, likes, views/plays (when exposed), comments, author, handle, media type, product type. Captions and
posted_atare only reliably filled withenrich_details: true - Optional
untildate filter (ISO /YYYY-MM-DD) - Apify Proxy default (DATACENTER) with an automatic one-shot residential retry per blocked profile; custom
proxyUrlsOK enrich_detailsoff by default — skips redundant/p·/reelpage fetches when profile/reels HTML already has likes/views- Dataset export: JSON, CSV, Excel
Use Cases
- Brand & competitor monitoring on Instagram
- Influencer outreach — follower counts + recent reel performance
- Agency dashboards — scheduled Apify runs into Sheets / Looker
- Content archives for captions, URLs, and engagement history
- E‑commerce / DTC social proof and creator tracking
Input Example
{"start_urls": ["https://www.instagram.com/ksi/","https://www.instagram.com/reel/DdKDOY9iWFc/"],"max_items": 100,"until": "2026-09-01","enrich_details": false,"useResidential": false,"proxyConfiguration": {"useApifyProxy": true}}
| Field | What it does |
|---|---|
start_urls | Profile and/or /p/ · /reel/ URLs (required) |
max_items | Cap on dataset items (default 20; 0 = safe ceiling 5000). Free-tier tip: keep ≤ 100 |
until | Optional — keep posts newer than this date (does not force detail-page fetches) |
enrich_details | Optional — fetch each /p · /reel page for missing caption/likes/date (default false) |
useResidential | Default false — not needed for blocks: a profile blocked on datacenter is retried once on residential automatically. Set true only to use residential from the start |
proxyConfiguration | Default Apify DATACENTER with automatic residential retry when blocked. Select RESIDENTIAL only to force it from the start; custom proxyUrls OK (no automatic retry) |
Output Examples
Profile metadata (one row per profile URL):
{"id": "1234567890","media_type": "profile","platform": "instagram","handle": "ksi","author": "KSI","url": "https://www.instagram.com/ksi/","follower_count": 9500000,"following_count": 400,"posts_count": 1200}
Reel / post metadata:
{"url": "https://www.instagram.com/reel/DdKDOY9iWFc/","caption": null,"like_count": 29372,"view_count": 1325401,"play_count": 1325401,"comment_count": 144,"author": "ksi","handle": "ksi","media_type": "reel","platform": "instagram"}
Output field notes
| Field | Meaning |
|---|---|
media_type | profile for the account row; otherwise the post kind (reel, image, carousel, video, or post) |
product_type | Instagram's own product label for the post when exposed (e.g. clips for reels) |
view_count / play_count | Video/reel views or plays as exposed by Instagram; null for photos or when not shown |
caption, posted_at | Often null from profile pages — turn on enrich_details to fill them |
How to Run on Apify
- Open Instagram Scraper on Apify and click Try for free / Start.
- Paste public Instagram profile or post/reel URLs into start_urls.
- Set max_items (≤ 100 on free tier). Optionally set until.
- Keep Apify Proxy on (DATACENTER default). If Instagram blocks a profile on datacenter, the Actor retries that profile once on residential automatically. Rotate/backoff is automatic on HTTP 429.
- Run and download the Dataset — profile rows first, then posts/reels.
- Wire to schedules, webhooks, or Make / n8n / Zapier for recurring brand scrapes.
Run from your stack (API sketch)
curl -X POST "https://api.apify.com/v2/acts/tictechid~vanzi-instagram-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"start_urls":["https://www.instagram.com/ksi/"],"max_items":50,"proxyConfiguration":{"useApifyProxy":true}}'
Use the Actor id with a ~ in API paths: tictechid~vanzi-instagram-scraper.
Pricing
Pay-per-event (PPE). Residential retries add proxy cost on our side only — you pay the same per-result price:
actor-start— once per runresult— once per dataset item (including profile rows)
Current list price: $0.40 per 1,000 results plus $0.0005 per run start. Check Pricing on the Actor page for the live price.
Usage Limits
- Free tier: Run as often as you like within your monthly Apify free platform credit — there is no Actor-side run-count cap. Tip: free tier max items per run ≤ 100.
- Paid plans: Larger runs and higher volume, limited only by your Apify plan's credit and concurrency.
Need more credit or concurrency? See Apify Pricing.
FAQ
Do I need an Instagram login? No — public HTML only.
Do I need a residential proxy? You don't have to pick one. The Actor starts on Apify DATACENTER; if Instagram blocks or returns nothing for a profile, it retries that profile only, once, on residential (one log line tells you when) — profiles that work on datacenter never touch residential. If still nothing, the run finishes SUCCEEDED with whatever it found. Set useResidential (or pick RESIDENTIAL in proxyConfiguration) to use residential from the start. Custom proxyUrls are also supported.
Why was my run expensive? Older builds forced residential and fetched every /p · /reel page when until was set. Current builds use datacenter by default and skip per-shortcode enrichment unless enrich_details is true.
What if there are no new reels this month? You still get the profile metadata row so follower/post counts update.
Empty dataset? Instagram rate-limits aggressively. On HTTP 429 the Actor backs off, rotates the proxy session, and soft-fails that URL (one quiet WARN) instead of hammering. One bad URL won’t fail the whole bulk run.
Support: Open an Issue on the Actor page or email contact@tictech.id.
For more details, contact the maintainer or email us at contact@tictech.id
