Instagram Scraper — Profiles, Posts & Hashtags avatar

Instagram Scraper — Profiles, Posts & Hashtags

Pricing

Pay per usage

Go to Apify Store
Instagram Scraper — Profiles, Posts & Hashtags

Instagram Scraper — Profiles, Posts & Hashtags

Scrape Instagram public profiles, posts, reels, and hashtags. Extract follower counts, bios, engagement metrics, captions, likes, comments, and media URLs. Ideal for influencer marketing research, brand monitoring, competitor analysis, social listening, and trend tracking. Supports bulk username and

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Ricardo Akiyoshi

Ricardo Akiyoshi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Categories

Share

Extract data from public Instagram profiles, posts, and hashtags at scale. Built for influencer marketing, brand monitoring, competitor analysis, and social listening.

What does this scraper do?

This actor scrapes publicly available Instagram data including:

  • Profile information — username, full name, bio, follower count, following count, post count, verification status, profile picture URL, external links
  • Post data — shortcode, caption, likes, comments, timestamp, image/video URLs, location, accessibility text
  • Hashtag data — total post count, top posts with engagement metrics

Use cases

Influencer Marketing

  • Build lists of influencers by follower count and engagement rate
  • Track influencer growth over time
  • Compare engagement metrics across potential brand partners
  • Identify micro-influencers (10K-100K followers) in specific niches

Brand Monitoring

  • Track mentions of your brand's hashtag
  • Monitor competitor profiles and their posting frequency
  • Analyze engagement trends for your industry
  • Detect viral content early

Social Listening & Market Research

  • Track trending hashtags in your industry
  • Analyze post captions for sentiment and keyword patterns
  • Monitor product launch reactions
  • Research audience demographics through follower data

Competitive Intelligence

  • Compare follower growth rates across competitors
  • Analyze posting cadence and content strategies
  • Track which content types get the most engagement
  • Monitor new product announcements

Input parameters

ParameterTypeDefaultDescription
usernamesstring[][]Instagram usernames to scrape (without @)
hashtagsstring[][]Hashtags to scrape (without #)
maxPostsinteger12Max posts to extract per profile/hashtag
includeCommentsbooleanfalseAttempt to extract top comments
sessionCookiestring""Optional session cookie for authenticated access
maxConcurrencyinteger1Max concurrent requests (keep low!)
proxyConfigurationobjectProxy settings (residential strongly recommended)

Example input

{
"usernames": ["natgeo", "nike", "cristiano"],
"hashtags": ["photography", "travel"],
"maxPosts": 12,
"includeComments": false,
"maxConcurrency": 1,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Output format

Profile data

{
"type": "profile",
"username": "natgeo",
"fullName": "National Geographic",
"bio": "Experience the world through the eyes of National Geographic photographers.",
"followerCount": 284000000,
"followingCount": 156,
"postCount": 28547,
"isVerified": true,
"isPrivate": false,
"profilePicUrl": "https://...",
"externalUrl": "https://natgeo.com",
"dataSource": "shared_data",
"scrapedAt": "2026-03-01T12:00:00.000Z",
"url": "https://www.instagram.com/natgeo/"
}

Post data

{
"type": "post",
"ownerUsername": "natgeo",
"shortcode": "ABC123def",
"caption": "A stunning view of the Northern Lights...",
"likesCount": 1250000,
"commentsCount": 4523,
"timestamp": "2026-02-28T18:30:00.000Z",
"imageUrl": "https://...",
"videoUrl": null,
"isVideo": false,
"videoViewCount": null,
"location": "Iceland",
"postUrl": "https://www.instagram.com/p/ABC123def/"
}

Hashtag data

{
"type": "hashtag",
"hashtag": "photography",
"postCount": 912000000,
"topPostCount": 12,
"scrapedAt": "2026-03-01T12:00:00.000Z",
"url": "https://www.instagram.com/explore/tags/photography/"
}

Important notes about Instagram scraping

Proxy requirements (CRITICAL)

Instagram is one of the most aggressive platforms when it comes to anti-bot detection. Residential proxies are essentially mandatory for reliable operation:

  • Datacenter IPs are blocked immediately by Instagram
  • Residential proxies work but may still face rate limits
  • Use Apify's residential proxy group: RESIDENTIAL
  • Keep concurrency at 1 (maximum 2-3 with proxies)

Without authentication

Without a session cookie, the scraper uses multiple extraction strategies:

  1. JSON-LD structured data in <script type="application/ld+json">
  2. window._sharedData / window.__additionalDataLoaded embedded JSON
  3. Meta tags (og:title, og:description) for basic profile data
  4. Script regex fallback for data embedded in React hydration

Even without authentication, you can typically extract:

  • Profile name, bio, follower/following/post counts
  • Profile picture URL
  • Verification and privacy status
  • Up to 12 recent posts (when available)

Providing a valid session cookie unlocks:

  • More reliable data extraction
  • GraphQL API access for paginating through posts
  • Comment data
  • More detailed post metadata

How to get a session cookie:

  1. Log into Instagram in your browser (use a burner account)
  2. Open DevTools (F12) > Application > Cookies > instagram.com
  3. Copy the values of ds_user_id and sessionid
  4. Format as: ds_user_id=YOUR_ID; sessionid=YOUR_SESSION

Warning: Using session cookies risks the account being suspended by Instagram. Always use a burner account, never your main account.

Rate limiting

Instagram imposes strict rate limits:

  • Without proxy: ~5-10 requests before block
  • With datacenter proxy: ~10-30 requests before block
  • With residential proxy: ~50-200 requests before block
  • With session cookie + residential proxy: ~200-500 requests

The scraper automatically:

  • Rotates through 10 User-Agent strings (desktop + mobile)
  • Adds random delays (3-8 seconds) between requests
  • Detects login walls, challenges, and rate limits
  • Falls back to meta tag extraction when blocked

Data freshness

Instagram frequently changes their page structure and API endpoints. The scraper uses multiple extraction strategies to maximize resilience, but some strategies may stop working when Instagram updates their frontend.

Pricing

This actor uses pay-per-event (PPE) pricing:

  • Profile scraped: charged per profile
  • Post scraped: charged per post
  • Hashtag scraped: charged per hashtag

Integration examples

Export to Google Sheets

Use Apify's Google Sheets integration to automatically push scraped data to a spreadsheet for team collaboration.

Webhook notifications

Set up webhooks to get notified when scraping is complete. Useful for monitoring dashboards and alerting pipelines.

Scheduled runs

Run this actor on a schedule (daily/weekly) to track profile growth and engagement trends over time.

FAQ

Q: Why am I getting no results? A: Instagram blocks datacenter IPs aggressively. Use residential proxies and keep concurrency at 1. If still blocked, provide a session cookie.

Q: Can I scrape private profiles? A: No. This actor only scrapes publicly available data. Private profiles will be detected and skipped.

Q: How many profiles can I scrape per run? A: With residential proxies, typically 10-50 profiles per run reliably. For larger volumes, split across multiple runs with different proxy sessions.

Q: Why do some profiles only have follower counts but no posts? A: Instagram often shows a login wall before displaying post data. The scraper extracts what it can from meta tags. Provide a session cookie for full access.

Q: Is this legal? A: This actor scrapes publicly available data only. Users are responsible for compliance with Instagram's Terms of Service and applicable laws in their jurisdiction.

Changelog

v1.0 (2026-03-01)

  • Initial release
  • Multi-strategy extraction (JSON-LD, shared data, meta tags, script regex)
  • Profile, post, and hashtag scraping
  • Login wall detection and graceful degradation
  • 10 rotating User-Agent strings with mobile variants
  • GraphQL pagination support (with session cookie)
  • PPE pricing via Actor.charge()