Instagram Reels Scraper avatar

Instagram Reels Scraper

Try for free

3 days trial then $14.00/month - No credit card required now

Go to Store
Instagram Reels Scraper

Instagram Reels Scraper

hpix/ig-reels-scraper
Try for free

3 days trial then $14.00/month - No credit card required now

Scrape Instagram Reels and their respective profile efficiently.

ℹ️ About

An efficient and straightforward Actor for scraping Instagram posts, profiles and Reels, designed with performance in mind.

✨ Features

  • Retrieve profile stats such as followers, bio, username, and links.
  • Scrape reels, including likes, play counts, comments, captions, and music metadata.
  • Choose the number of reels to scrape per profile.
  • Scrape thousands of profiles and posts seamlessly.

⚙️ Inputs

  • tags: A list of Instagram usernames to scrape.
  • reels_count: Define the target number of reels to scrape per profile.
  • target: Choose to scrape profiles only, posts only or both.
  • post_urls: Scrape Instagram posts (or reels) using their URL or code.
  • include_raw_data: Include raw data collected from Instagram in the final results.

Example:

This input will scrape zuck's profile, 8 of the latest reels from his feed, and one post with the code DFNkPgRROOS:

1{
2  "tags": [
3    "zuck"
4  ],
5  "target": "all",
6  "reels_count": 8,
7  "post_urls": [
8    "https://www.instagram.com/p/DFNkPgRROOS"
9  ],
10  "include_raw_data": true,
11  "custom_functions": "{ shouldSkip: (data) => false, shouldContinue: (data) => true }"
12}

Custom functions

This is an advanced parameter which you can use to modify the crawler's behaviour. With custom functions, you can skip a post or profile based on its data, or stop crawling a profile's reels when a certain condition is met.

For example, you can skip posts if they don't have music metadata:

1{
2  shouldSkip: (data) => data.kind == 'post' && !data.music_metadata
3}

Or stop crawling when it reaches the shortcode of a post:

1{
2  shouldContinue: (data) => data.code != 'codeToStopCrawling'
3}

The data argument is the same of an item on the final dataset (see Outputs).

📄 Outputs

Profile

1{
2	"kind": "profile",
3	"input": "zuck",
4	"id": "314216",
5	"is_private": false,
6	"username": "zuck",
7	"full_name": "Mark Zuckerberg",
8	"biography": "",
9	"bio_links": [],
10	"followers": 15534658,
11	"following": 610,
12	"profile_pic": "https://scontent-lga3-1.cdninstagram.com/...",
13	"raw_data": {...}
14}

Reel

1{
2	"kind": "post",
3	"id": "3548364142010150900_314216",
4	"code": "DE-UmMaP6_0",
5	"post_type": "clips",
6	"owner_id": "314216",
7	"taken_at": 1737218208,
8	"caption": "Send it",
9	"play_count": 4456434,
10	"comment_count": 7776,
11	"like_count": 134906,
12	"has_privately_liked": false,
13	"thumbnail_url": "https://instagram.fagc3-2.fna.fbcdn.net/...",
14	"duration": 19.945,
15	"video_versions": [
16		{
17			"height": 852,
18			"type": 101,
19			"url": "https://scontent-iad3-1.cdninstagram.com/...",
20			"width": 480
21		},
22		{
23			"height": 852,
24			"type": 103,
25			"url": "https://scontent-iad3-1.cdninstagram.com/...",
26			"width": 480
27		},
28		{
29			"height": 852,
30			"type": 102,
31			"url": "https://scontent-iad3-1.cdninstagram.com/...",
32			"width": 480
33		}
34	],
35	"raw_data": {...}
36}

Post

1{
2	"kind": "post",
3	"input": "DFNkPgRROOS",
4	"id": "3552655076181205906",
5	"code": "DFNkPgRROOS",
6	"post_type": "post",
7	"owner_id": "314216",
8	"taken_at": 1737730421,
9	"caption": "Grateful to train with you @marcelogarciajiujitsu. Good luck and have fun vs Imanari today!",
10	"like_count": 249896,
11	"comment_count": 4627,
12	"thumbnail_url": "https://scontent-lga3-2.cdninstagram.com/...",
13	"raw_data": {..}
14}

📃 Changelog

Do you have a feature suggestion? Create an issue and let me know!

v0.2

  • [✨ New feature] Scrape Reels and posts by their URL or code
  • [✨ New feature] A new input was added (include_raw_data) to include or omit the raw data extracted from Instagram
  • [✨ New feature] You can now use custom JS functions to skip posts and profiles, or stop crawling at a specific reel
  • [✨ New feature] Profile URLs are now accepted as the input
  • [🏎️ Performance] The crawler will now gain pace quickly
  • [🔧 Fix] Minor improvements to logging

v0.1

  • Initial release

❓ FAQ

Can I export the scraped data to Excel?

Sure! Apify allows you to download the results as an Excel spreadsheet. You can also download in CSV, JSON, XML, HTML, JSONL and RSS.

I just found a bug! Can you fix it?

Oh, what a shame! Please create an Issue so I can evaluate what happened.

Can you implement X feature?

Of course! You can use the Issues tab to suggest new features.

⚠️ Disclaimer

This Actor scrapes public data from Instagram pages. Features are susceptible to changes made by Meta.

⛓️‍💥 Known issues

  • Currently, it is not possible to scrape private or age restricted accounts, since those are not public.

👀 See also

Developer
Maintained by Community

Actor Metrics

  • 30 monthly users

  • 5 bookmarks

  • >99% runs succeeded

  • 3.5 days response time

  • Created in May 2024

  • Modified 17 days ago