Instagram Scraper avatar

Instagram Scraper

Pricing

from $0.65 / 1,000 profile posts

Go to Apify Store
Instagram Scraper

Instagram Scraper

Scrape Instagram profiles, posts, and Reels at scale.

Pricing

from $0.65 / 1,000 profile posts

Rating

0.0

(0)

Developer

Hpix

Hpix

Maintained by Community

Actor stats

1

Bookmarked

76

Total users

12

Monthly active users

3.4 days

Issues response

4 hours ago

Last modified

Share

📸 Instagram Scraper

The Ultimate All-in-One Instagram Scraper

Extract high-quality data from Instagram profiles, posts, and Reels in seconds. Designed for marketers, researchers, and creators who need reliable data without the technical headache.

🚀 Why choose this Scraper?

  • Reliability by Default: No more worrying about getting blocked. This Actor uses premium residential proxies and anti-detection mechanisms to ensure your tasks finish successfully.
  • Reels, Posts & Profiles: Whether you need engagement stats on a viral Reel or the follower count of a specific influencer, we've got you covered.
  • Clear, Predictable Costs: Stop guessing how much memory or CPU you need. You only pay for the data you actually receive.
  • Beautiful Data Views: Don't get lost in code. Use the built-in output tabs to see your results in a clean, organized table with images.

✨ What can you do with it?

  • Analyze Engagement: Get play counts, likes, and comment totals for Reels and Posts.
  • Monitor Influencers: Track bio changes, follower growth, and verified status.
  • Content Research: Use the Date Filter to only see content from the last week or month.
  • Bulk Exports: Download your results instantly as Excel, CSV, or JSON.

🛠️ Getting Started is Easy

  1. Enter URLs or Usernames: Paste the Instagram profiles or specific post links you want to scrape.
  2. Pick Your Content: Toggle profile data, posts, and reels independently — or scrape them all at once.
  3. Set Your Limits: Use the "Posts per account" or "Date Range" filters to get exactly what you need.
  4. Run & Relax: Click Start and watch your data populate in the "Output" tab.

📊 Sample Output

Profile Data

UsernameFull nameProfile pictureFollowersFollowingData
zuckMark Zuckerberg<Zuck's profile picture>16,879,414623

Post Data

ThumbnailCaptionCodeTypeLike countComment countData
Two decades, many awesome projects...DTTbdGlkaWlpost158,0395,228

Reel Data

ThumbnailCaptionPlay countComment countLike countData
When @merab.dvalishvili is in town...27,979,1514,670394,756

💡 Pro Tips

  • Massive Lists: This Actor is optimized for bulk. You can input hundreds of profiles at once; it will handle the queue automatically.
  • Date Filtering: To save time and budget, use the beginDate parameter to only grab content created recently (e.g., "7 days ago").
  • Custom Logic: Advanced users can use the "Custom functions" field to automatically skip posts that don't meet specific criteria (like posts without music).
  • Cleaner Output: Disable the "Include raw data" option to strip the raw Instagram API response from the output and reduce dataset size.
  • Pin Skipping: "Skip pinned posts" and "Skip pinned reels" let you skip content pinned to specific tabs independently — useful for accounts that pin promotional content to the top of their feed.

🔧 Advanced Usage

Custom functions

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

Two hooks are available:

  • shouldSkip(item) — Return true to skip the current item (post, reel, or profile). Processing continues with the next item.
  • shouldContinue(item) — Return false to stop crawling after the current item. Useful for stopping at a specific post.

For example, skip posts that don't have music metadata:

{
shouldSkip: (item) => item.kind == "post" && !item.data.music_metadata;
}

Or stop crawling when it reaches a specific post code:

{
shouldContinue: (item) => item.data.code != "codeToStopCrawling";
}

You can see the item schema by selecting "All fields" on the output tab, and viewing as JSON.

Restricted Posts

Some Instagram posts are age-restricted or otherwise limited and can't be accessed through the standard API. Enable the "Scrape restricted posts" toggle to attempt fetching these individual posts. This is a paid feature — each restricted post scraped incurs an additional charge on top of the standard per-post fee.

Please refer to the Actor pricing for details.

📃 Changelog

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

v1.1.0

  • ✨ Added restricted posts scraping
  • ✨ Added skip_pinned_timeline and skip_pinned_reels options (deprecated skip_pinned)
  • 🔧 Improved output schema and dataset views
  • 🔧 Fixed date range filtering for pinned posts
  • 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.

What other data is available apart from the examples shown?

Each post, reel, and profile contains a data field with extensive metadata beyond what's shown in the table view. To explore all available fields, select "All fields" in the output tab and view the results as JSON.

Here are some notable fields available in the output:

FieldTypeDescription
is_pinnedbooleanWhether the post/reel is pinned by the profile
pinned_tabsstring[]Tabs where the item is pinned: ["timeline"], ["reels"], or both
music_infoobjectMusic metadata for reels (artist, song title, album art)
video_versionsarrayAll available video resolution URLs for reels
hashtagsstring[]Hashtags extracted from the caption
video_durationnumberVideo duration in seconds (for video posts and reels)
view_countnumberView count for individual reels (when scraping by post URL)
bio_linksstringExternal URL from the profile's bio

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

  • Private or age-restricted accounts cannot be scraped as they are not publicly accessible.
  • View counts for Reels are only available when scraping individual post URLs, not when scraping entire profiles. Play counts, however, are available in both scenarios.
  • Instagram does not provide view counts for some posts, as these metrics are not publicly visible for those specific posts.

👀 See also

  • Instagram Profile Monitor: Track Instagram profiles over time and monitor growth trends with historical data analysis and beautiful visualizations. Perfect for tracking competitors, influencers, or your own profile's performance.