All-in-One Instagram Scraper
Pricing
from $1.56 / 1,000 profile results
All-in-One Instagram Scraper
Instagram scraper — 11 modes: profiles, posts, reels, comments, hashtags, tagged, search, followers count & more. No browser needed — HTTP-only, 256MB, fast. Premium residential proxy (~95% success rate). Pay per result: 40% cheaper. MCP-ready for AI agents.
Pricing
from $1.56 / 1,000 profile results
Rating
0.0
(0)
Developer
Japi Cricket
Actor stats
0
Bookmarked
35
Total users
19
Monthly active users
16 hours ago
Last modified
Categories
Share
Scrape Instagram profiles, posts, reels, comments, hashtags, tagged posts, search results, and follower counts — 11 modes in 1 actor (including a built-in cookie health monitor). 40% cheaper than alternatives. No login required. HTTP-only, 128MB memory. You only pay for results with actual data — empty results are never charged.
Getting Started
- Click "Try for free" at the top of this page
- Choose a scraping mode from the dropdown
- Add your input — usernames, URLs, hashtags, or search queries
- Click Start — results appear in the Dataset tab within seconds
- Download as JSON, CSV, or Excel — or connect via API, n8n, Make, or Zapier
No login required. Just paste and scrape.
11 Scraping Modes
| Mode | Description | Best For | Cookies needed? |
|---|---|---|---|
| Profile Scraper | Full profile + up to 12 latest posts with engagement | Lead enrichment, influencer research | No |
| Post Scraper | Individual posts by URL: caption, likes, media URLs | Content monitoring | No (limited) |
| Reels Scraper | Reels with play counts, audio info, engagement | Trend analysis | No (limited) |
| Comments Scraper | Comments with author info, likes, threaded replies | Sentiment analysis | Yes |
| Hashtag Scraper | Hashtag metadata: ID, description, profile picture | Hashtag research | No |
| Tagged Posts | Profile + latest posts for tagged/mentioned users | Influencer discovery | No |
| Search Scraper | Search for users, hashtags, or places | Prospecting | Yes |
| Followers Count | Lightweight follower/following/post counts | Monitoring, tracking | No |
| All-in-One | Combine profiles + posts + hashtags + search in one run | Multi-type extraction | No |
| Data Extractor | Lightweight bulk profile extraction | Large-scale data collection | No |
| Monitor | Cookie health check + run failure analysis | Automated alerting | No (reads from KV store) |
Standard vs Enhanced Mode (Cookies)
Without cookies, most modes work great. With cookies, you unlock exact metrics and additional fields:
| Mode | Without cookies | With cookies |
|---|---|---|
| Profile Scraper | Full data (all fields) | + Business email & phone via mobile API |
| Post Scraper | Caption, owner, image, likes (rounded), date | Exact likes/comments, postId, tagged users, location, carousel images |
| Reels Scraper | Caption, owner, thumbnail, likes (rounded), date | Exact metrics, plays, shares, saves, audio info, video URL |
| Comments Scraper | Empty results | Full comments with author info, likes, threaded replies |
| Hashtag Scraper | Name, ID, description only | + Top posts |
| Tagged Posts | Profile + latest posts | + Actual tagged media feed |
| Search Scraper | No results | Full results with follower counts |
| Followers Count | Full data | Same — no cookies needed |
Pricing — Pay Per Result
| Mode | Price / 1,000 | Competitor Price | Savings |
|---|---|---|---|
| Profile Scraper | $1.56 | $2.60 | 40% cheaper |
| Post Scraper | $1.62 | $2.70 | 40% cheaper |
| Reels Scraper | $1.62 | $2.70 | 40% cheaper |
| Comments Scraper | $1.38 | $2.30 | 40% cheaper |
| Hashtag Scraper | $1.56 | $2.60 | 40% cheaper |
| Tagged Posts | $1.62 | $2.70 | 40% cheaper |
| Search Scraper | $0.90 | $1.50 | 40% cheaper |
| Followers Count | $0.78 | $1.30 | 40% cheaper |
| All-in-One | $1.62 | $2.70 | 40% cheaper |
| Data Extractor | $1.00 | N/A | — |
Cost examples:
- 10 profiles with posts: ~$0.02
- 100 follower counts: ~$0.08
- 50 posts by URL: ~$0.08
- 10 search queries: ~$0.01
Mode 1: Profile Scraper
Scrape full Instagram profile data including business info, follower counts, and up to 12 latest posts embedded in each profile.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | "instagram-profile-scraper" |
profiles | string[] | Yes | Instagram usernames (with or without @) |
maxPostsPerProfile | integer | No | Latest posts to include per profile (0-100, default: 12) |
loginCookies | string | No | All browser cookies for business email enrichment |
Input Example
{"scrapeMode": "instagram-profile-scraper","profiles": ["cristiano", "instagram", "leomessi"],"maxPostsPerProfile": 3}
Output Fields
| Field | Type | Description | Example |
|---|---|---|---|
instagramId | string | Instagram user ID | "173560420" |
username | string | Instagram handle | "cristiano" |
fullName | string | Display name | "Cristiano Ronaldo" |
biography | string | Profile bio | "My official Instagram" |
followersCount | integer | Follower count | 672883042 |
followsCount | integer | Following count | 630 |
postsCount | integer | Total posts | 4033 |
isVerified | boolean | Blue checkmark | true |
isBusinessAccount | boolean | Business account | false |
isProfessionalAccount | boolean | Creator/professional | true |
businessCategoryName | string | Business category | "Athlete" |
businessEmail | string | Public email (with cookies) | "info@starbucks.com" |
businessPhoneNumber | string | Public phone (with cookies) | "8007827282" |
profilePicUrl | string | Profile picture (150px) | URL |
profilePicUrlHD | string | HD profile picture (320px) | URL |
externalUrl | string | Website link | "https://www.cr7.com" |
pronouns | string | User pronouns | "he/him" |
isPrivate | boolean | Private account | false |
profileUrl | string | Full profile URL | "https://www.instagram.com/cristiano/" |
latestPosts | array | Up to 12 latest posts with full engagement data | See post fields below |
latestPostsCount | integer | Number of posts embedded | 12 |
Business email enrichment: When cookies are provided, the scraper calls Instagram's mobile API to fetch public_email and public_phone_number — fields that the standard web API no longer returns. This works for accounts that have set public contact info in their Instagram Business settings.
Output Example
{"instagramId": "173560420","username": "cristiano","fullName": "Cristiano Ronaldo","biography": "","followersCount": 672883042,"followsCount": 630,"postsCount": 4033,"isVerified": true,"isBusinessAccount": false,"isProfessionalAccount": true,"profilePicUrl": "https://...","profilePicUrlHD": "https://...","externalUrl": "https://hrbl.me/CR7Pro2col","profileUrl": "https://www.instagram.com/cristiano/","latestPosts": [{"shortCode": "DWpF10RgBRg","caption": "Getting ready","likesCount": 3058419,"commentsCount": 22019,"mediaType": "Carousel","displayUrl": "https://...","timestamp": "2026-04-02T20:05:16.000Z","ownerUsername": "cristiano","hashtags": [],"mentions": [],"taggedUsers": ["alnassr"]}],"latestPostsCount": 3,"resultType": "profile"}
Use Cases
- Lead enrichment: Enrich CRM contacts with Instagram profile data (bio, followers, website)
- Influencer research: Analyze follower counts, engagement, and content strategy
- Competitor monitoring: Track follower growth, posting frequency, and content themes
- B2B prospecting: Find business email and phone via mobile API enrichment
How to Run
curl "https://api.apify.com/v2/acts/get-leads~all-in-one-instagram-scraper/runs" \-X POST -H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_TOKEN" \-d '{"scrapeMode":"instagram-profile-scraper","profiles":["cristiano","instagram"]}'
Mode 2: Post Scraper
Scrape individual Instagram posts by URL or shortcode. Returns caption, likes, comments, media URLs, hashtags, and mentions.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | "instagram-post-scraper" |
postURLs | string[] | Yes | Post URLs or shortcodes |
loginCookies | string | No | All browser cookies for exact metrics |
Input Example
{"scrapeMode": "instagram-post-scraper","postURLs": ["https://www.instagram.com/p/DWpF10RgBRg/","https://www.instagram.com/reel/DWmZq_Aj5-R/"]}
Output Fields
| Field | Type | Without cookies | With cookies |
|---|---|---|---|
shortCode | string | Yes | Yes |
caption | string | Yes | Yes |
likesCount | integer | Rounded (3M) | Exact (3,087,331) |
commentsCount | integer | Yes | Yes |
mediaType | string | Image/Reel | Image/Video/Carousel/Reel |
displayUrl | string | Yes | Yes |
videoUrl | string | No | Yes |
timestamp | string | Date only | Full ISO timestamp |
ownerUsername | string | Yes | Yes |
hashtags | array | Yes (from caption) | Yes |
mentions | array | Yes (from caption) | Yes |
taggedUsers | array | No | Yes |
locationName | string | No | Yes |
dimensions | object | No | Yes |
isPaidPartnership | boolean | No | Yes |
Output Example
{"shortCode": "DWpF10RgBRg","caption": "Getting ready","likesCount": 3000000,"commentsCount": 22000,"mediaType": "Image","displayUrl": "https://...","timestamp": "2026-04-02T00:00:00.000Z","ownerUsername": "cristiano","hashtags": [],"mentions": [],"resultType": "post"}
Use Cases
- Content monitoring: Track engagement on specific posts
- Campaign analysis: Measure likes, comments, and reach on branded content
- Social listening: Extract hashtags and mentions from post captions
- Media archiving: Save post images, videos, and captions
How to Run
curl "https://api.apify.com/v2/acts/get-leads~all-in-one-instagram-scraper/runs" \-X POST -H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_TOKEN" \-d '{"scrapeMode":"instagram-post-scraper","postURLs":["https://www.instagram.com/p/DWpF10RgBRg/"]}'
Mode 3: Reels Scraper
Scrape Instagram reels with play counts, audio info, and engagement metrics.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | "instagram-reels-scraper" |
postURLs | string[] | Yes | Reel URLs |
loginCookies | string | No | All browser cookies for full metrics |
Input Example
{"scrapeMode": "instagram-reels-scraper","postURLs": ["https://www.instagram.com/reel/DWmZq_Aj5-R/","https://www.instagram.com/reel/DWnBCQLj7iW/"]}
Output Fields
All Post Scraper fields, plus:
| Field | Type | Without cookies | With cookies |
|---|---|---|---|
playsCount | integer | No | Yes |
sharesCount | integer | No | Yes |
savesCount | integer | No | Yes |
audioTitle | string | No | Yes |
audioAuthor | string | No | Yes |
Output Example
{"shortCode": "DWmZq_Aj5-R","caption": "five dancers, one silhouette","likesCount": 222000,"commentsCount": 3789,"mediaType": "Reel","displayUrl": "https://...","timestamp": "2026-04-01T00:00:00.000Z","ownerUsername": "instagram","hashtags": ["InTheMoment"],"mentions": ["mj5_official"],"resultType": "reel"}
Use Cases
- Trend analysis: Identify viral reels by play count and engagement
- Audio tracking: Monitor trending sounds and music usage
- Creator benchmarking: Compare reel performance across accounts
How to Run
curl "https://api.apify.com/v2/acts/get-leads~all-in-one-instagram-scraper/runs" \-X POST -H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_TOKEN" \-d '{"scrapeMode":"instagram-reels-scraper","postURLs":["https://www.instagram.com/reel/DWmZq_Aj5-R/"]}'
Mode 4: Comments Scraper
Extract comments from posts/reels with author info, likes, and threaded replies. Requires login cookies.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | "instagram-comment-scraper" |
postURLs | string[] | Yes | Post/reel URLs to scrape comments from |
maxCommentsPerPost | integer | No | Max comments per post (1-1000, default: 100) |
loginCookies | string | Yes | All browser cookies (sessionid, csrftoken, ds_user_id, ig_did, mid, datr) |
Input Example
{"scrapeMode": "instagram-comment-scraper","postURLs": ["https://www.instagram.com/p/DWpF10RgBRg/"],"maxCommentsPerPost": 10,"loginCookies": "sessionid=XXX; csrftoken=XXX; ds_user_id=XXX; ig_did=XXX; mid=XXX; datr=XXX"}
Output Fields
| Field | Type | Description | Example |
|---|---|---|---|
commentId | string | Unique comment ID | "17892368145442706" |
text | string | Comment body | "Great photo!" |
timestamp | string | ISO timestamp | "2026-04-04T03:12:09.000Z" |
likesCount | integer | Comment likes | 150 |
repliesCount | integer | Reply count | 3 |
ownerUsername | string | Comment author | "fan_account" |
ownerId | string | Author's Instagram ID | "8499404141" |
ownerIsVerified | boolean | Author verified | false |
ownerProfilePicUrl | string | Author avatar URL | URL |
postShortCode | string | Parent post shortcode | "DWpF10RgBRg" |
isReply | boolean | Is this a reply | false |
parentCommentId | string | Parent comment (for replies) | null |
Output Example
{"commentId": "17892368145442706","text": "Yo si le doy el balon","timestamp": "2026-04-04T03:13:17.000Z","likesCount": 0,"repliesCount": 0,"ownerUsername": "rosew_it7","ownerId": "71467268730","ownerIsVerified": false,"postShortCode": "DWpF10RgBRg","isReply": false,"parentCommentId": null,"resultType": "comment"}
Use Cases
- Sentiment analysis: Analyze audience reactions to posts
- Community management: Monitor and respond to comments at scale
- Engagement research: Study comment patterns and influencer interactions
- Competitive intelligence: Track audience feedback on competitor content
How to Run
curl "https://api.apify.com/v2/acts/get-leads~all-in-one-instagram-scraper/runs" \-X POST -H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_TOKEN" \-d '{"scrapeMode":"instagram-comment-scraper","postURLs":["https://www.instagram.com/p/DWpF10RgBRg/"],"maxCommentsPerPost":10,"loginCookies":"YOUR_COOKIES_HERE"}'
Mode 5: Hashtag Scraper
Get hashtag metadata: hashtag ID, description, and profile picture.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | "instagram-hashtag-scraper" |
hashtags | string[] | Yes | Hashtag names (with or without #) |
loginCookies | string | No | Cookies for top posts |
Input Example
{"scrapeMode": "instagram-hashtag-scraper","hashtags": ["travel", "photography", "#fitness"]}
Output Fields
| Field | Type | Description | Example |
|---|---|---|---|
hashtagId | string | Instagram hashtag ID | "17841404124112880" |
name | string | Hashtag name (without #) | "travel" |
profilePicUrl | string | Hashtag representative image | URL |
description | string | Editorial description | "Watch short videos about travel..." |
hashtagUrl | string | Explore page URL | "https://www.instagram.com/explore/tags/travel/" |
topPosts | array | Top posts (with cookies only) | Array of post objects |
Output Example
{"hashtagId": "17841404124112880","name": "travel","profilePicUrl": "https://...","description": "Watch short videos about travel from people around the world.","hashtagUrl": "https://www.instagram.com/explore/tags/travel/","resultType": "hashtag"}
Use Cases
- Hashtag research: Discover hashtag IDs for tracking and monitoring
- Content strategy: Identify trending hashtags for post optimization
- Brand monitoring: Track branded hashtags
How to Run
curl "https://api.apify.com/v2/acts/get-leads~all-in-one-instagram-scraper/runs" \-X POST -H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_TOKEN" \-d '{"scrapeMode":"instagram-hashtag-scraper","hashtags":["travel","fitness"]}'
Mode 6: Tagged Posts Scraper
Scrape profiles along with their latest posts. With cookies, also fetches photos the user is tagged in.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | "instagram-tagged-scraper" |
profiles | string[] | Yes | Instagram usernames |
maxPostsPerProfile | integer | No | Posts per profile (default: 12) |
loginCookies | string | No | Cookies for actual tagged media feed |
Input Example
{"scrapeMode": "instagram-tagged-scraper","profiles": ["cristiano", "instagram"],"maxPostsPerProfile": 3}
Output Fields
Same as Profile Scraper — returns 1 profile per input with latestPosts embedded.
Output Example
{"username": "cristiano","fullName": "Cristiano Ronaldo","followersCount": 672967974,"latestPosts": [{ "shortCode": "DWpF10RgBRg", "likesCount": 3058419, "caption": "Getting ready" }],"latestPostsCount": 3,"resultType": "profile"}
Use Cases
- Influencer discovery: Find profiles being tagged by brands
- UGC monitoring: Track user-generated content mentioning your brand
- Campaign tracking: Monitor tagged posts from campaign participants
How to Run
curl "https://api.apify.com/v2/acts/get-leads~all-in-one-instagram-scraper/runs" \-X POST -H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_TOKEN" \-d '{"scrapeMode":"instagram-tagged-scraper","profiles":["cristiano","instagram"]}'
Mode 7: Search Scraper
Search for users, hashtags, or places on Instagram. Requires login cookies.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | "instagram-search-scraper" |
searchQueries | string[] | Yes | Search terms |
resultsPerPage | integer | No | Results per query (default: 50) |
loginCookies | string | Yes | All browser cookies |
Input Example
{"scrapeMode": "instagram-search-scraper","searchQueries": ["fitness influencer", "vegan restaurant"],"resultsPerPage": 10,"loginCookies": "sessionid=XXX; csrftoken=XXX; ds_user_id=XXX; ig_did=XXX; mid=XXX; datr=XXX"}
Output Fields
| Field | Type | Description | Example |
|---|---|---|---|
resultType | string | user, hashtag, or place | "user" |
username | string | Username (for users) | "fitnessinfluencernavya" |
fullName | string | Display name | "Navya Singh" |
followersCount | integer | Follower count (parsed from social context) | 724000 |
profilePicUrl | string | Profile picture URL | URL |
isVerified | boolean | Verified badge | false |
isPrivate | boolean | Private account | false |
profileUrl | string | Profile URL | "https://www.instagram.com/fitnessinfluencernavya/" |
Output Example
{"resultType": "user","username": "fitnessinfluencernavya","fullName": "Navya Singh","followersCount": null,"isVerified": false,"isPrivate": false,"profileUrl": "https://www.instagram.com/fitnessinfluencernavya/","input": "fitness influencer"}
Use Cases
- Prospecting: Find potential leads or influencers by keyword
- Market research: Discover accounts in a specific niche
- Competitor discovery: Find similar accounts in your industry
How to Run
curl "https://api.apify.com/v2/acts/get-leads~all-in-one-instagram-scraper/runs" \-X POST -H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_TOKEN" \-d '{"scrapeMode":"instagram-search-scraper","searchQueries":["fitness influencer"],"loginCookies":"YOUR_COOKIES_HERE"}'
Mode 8: Followers Count
Lightweight mode returning just follower/following/post counts. Fast and cheap — ideal for monitoring.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | "instagram-followers-count-scraper" |
profiles | string[] | Yes | Instagram usernames |
Input Example
{"scrapeMode": "instagram-followers-count-scraper","profiles": ["cristiano", "instagram", "leomessi", "starbucks", "nike"]}
Output Fields
| Field | Type | Description | Example |
|---|---|---|---|
username | string | Instagram handle | "cristiano" |
fullName | string | Display name | "Cristiano Ronaldo" |
followersCount | integer | Followers | 672967974 |
followsCount | integer | Following | 630 |
postsCount | integer | Total posts | 4034 |
isVerified | boolean | Verified | true |
isPrivate | boolean | Private | false |
isBusinessAccount | boolean | Business account | false |
profilePicUrl | string | Profile picture | URL |
profileUrl | string | Full URL | "https://www.instagram.com/cristiano/" |
Output Example
{"username": "cristiano","fullName": "Cristiano Ronaldo","followersCount": 672967974,"followsCount": 630,"postsCount": 4034,"isVerified": true,"isPrivate": false,"isBusinessAccount": false,"profileUrl": "https://www.instagram.com/cristiano/","resultType": "profile"}
Use Cases
- Follower tracking: Monitor follower growth over time with scheduled runs
- Influencer vetting: Quick follower count check before outreach
- Competitive benchmarking: Compare follower counts across competitors
- Dashboard data: Feed follower metrics into analytics dashboards
How to Run
curl "https://api.apify.com/v2/acts/get-leads~all-in-one-instagram-scraper/runs" \-X POST -H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_TOKEN" \-d '{"scrapeMode":"instagram-followers-count-scraper","profiles":["cristiano","instagram","leomessi"]}'
Mode 9: All-in-One Scraper
Combine profiles + posts + hashtags + search in a single run. Routes each input to the appropriate scraping function.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | "instagram-scraper" |
profiles | string[] | No | Instagram usernames |
postURLs | string[] | No | Post/reel URLs |
hashtags | string[] | No | Hashtag names |
searchQueries | string[] | No | Search terms (requires cookies) |
Input Example
{"scrapeMode": "instagram-scraper","profiles": ["cristiano"],"postURLs": ["https://www.instagram.com/p/DWjils2FF_9/"],"hashtags": ["travel"],"maxPostsPerProfile": 2}
Output Example
Returns mixed results — each item has a resultType field ("profile", "post", "hashtag"):
[{ "resultType": "profile", "username": "cristiano", "followersCount": 672967974, "latestPosts": [...] },{ "resultType": "post", "shortCode": "DWjils2FF_9", "likesCount": 57000, "ownerUsername": "instagram" },{ "resultType": "hashtag", "name": "travel", "hashtagId": "17841404124112880" }]
Use Cases
- Multi-type data collection: Scrape profiles, posts, and hashtags in one run
- Dashboard feeds: Collect mixed data for analytics dashboards
- One-shot research: Quick exploration across multiple data types
How to Run
curl "https://api.apify.com/v2/acts/get-leads~all-in-one-instagram-scraper/runs" \-X POST -H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_TOKEN" \-d '{"scrapeMode":"instagram-scraper","profiles":["cristiano"],"postURLs":["https://www.instagram.com/p/DWjils2FF_9/"],"hashtags":["travel"]}'
Mode 10: Data Extractor
Lightweight extraction mode for bulk profile data at lower cost. Same as Profile Scraper but billed at $1.00/1K instead of $1.56/1K.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | "instagram-data-extractor" |
profiles | string[] | Yes | Instagram usernames |
maxPostsPerProfile | integer | No | Posts per profile (default: 12) |
Input Example
{"scrapeMode": "instagram-data-extractor","profiles": ["cristiano", "instagram", "leomessi", "starbucks", "nike"],"maxPostsPerProfile": 1}
Output Fields
Same as Profile Scraper.
Use Cases
- Large-scale data collection: Scrape thousands of profiles at the lowest cost
- CRM enrichment: Bulk-enrich contact databases with Instagram data
- Market research: Collect profile data across an entire industry
How to Run
curl "https://api.apify.com/v2/acts/get-leads~all-in-one-instagram-scraper/runs" \-X POST -H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_TOKEN" \-d '{"scrapeMode":"instagram-data-extractor","profiles":["cristiano","instagram","leomessi"]}'
Monitor Mode & Centralized Cookie Management
What Monitor Mode Does
Monitor mode validates your Instagram cookie and analyzes recent run history before your test schedules run. It catches expired cookies and run failures early, so you get alerted before your production schedules start failing.
Run it with:
{ "scrapeMode": "instagram-monitor" }
What it checks:
- Cookie health — reads the centralized cookie from the KV store, tests it against the Instagram mobile API, and reports
valid,expired,missing_or_malformed, etc. - Run history — fetches the last 20 runs and categorizes them as successes, failures, or empty results
- Alerting — if any issues are found (including expired cookie), stores an alert in the
instagram-alertsKV store
Centralized Cookie Management
Instead of hardcoding the same cookie in every schedule, the scraper reads cookies from a centralized config in an Apify Key-Value store. When you update the cookie in one place, all schedules pick it up automatically.
How it works:
- The cookie is stored in KV store
instagram-test-schedule(record key:config) - When a run starts and no
loginCookiesare provided in the input, the actor automatically reads from the KV store - If
loginCookiesare provided in the input, they take priority (backward compatible)
Config record format:
{"loginCookies": "sessionid=XXX; csrftoken=XXX; ds_user_id=XXX; ig_did=XXX; mid=XXX; datr=XXX","cookieCountry": "MY","updatedAt": "2026-04-16T12:00:00Z"}
To update the cookie: Go to Apify Console > Storage > Key-Value Stores > instagram-test-schedule and edit the config record.
Setting Up the Monitor Schedule
Create a schedule that runs ~5 minutes before your first test schedule:
| Setting | Value |
|---|---|
| Cron | 55 6 * * * (UTC) — runs at 06:55 daily |
| Input | { "scrapeMode": "instagram-monitor" } |
| Memory | 128 MB |
The monitor will check the cookie and run history, then your test schedules start at 07:00 knowing the cookie is valid.
How to Get Your Login Cookies
Some modes (Comments, Search) require cookies. Other modes (Post, Reel) return richer data with cookies.
- Log into Instagram in your browser
- Open Developer Tools (F12) → Application → Cookies → instagram.com
- Copy ALL cookie values — you need:
sessionid,csrftoken,ds_user_id,ig_did,mid,datr - Paste into the Login Cookies field
Accepted Cookie Formats
The scraper accepts multiple cookie formats — use whichever is easiest for you:
Standard (recommended):
sessionid=YOUR_SESSION_ID; csrftoken=YOUR_CSRF; ds_user_id=YOUR_USER_ID; ig_did=YOUR_DEVICE_ID; mid=YOUR_MID; datr=YOUR_DATR
JSON object:
{"sessionid": "YOUR_SESSION_ID", "csrftoken": "YOUR_CSRF", "ds_user_id": "YOUR_USER_ID"}
JSON array (browser export format):
[{"name": "sessionid", "value": "YOUR_SESSION_ID"}, {"name": "csrftoken", "value": "YOUR_CSRF"}]
Raw sessionid value:
65432198765%3AaBcDeFgHiJkLmN%3A12
Important: The cookie must include a valid sessionid. Instagram requires this for authentication.
Download Your Data
After every run, download your results in any format:
- JSON — for developers and API integrations
- CSV — for spreadsheets and data analysis
- Excel (XLSX) — for business users
- XML — for data pipelines
- Google Sheets: Use
=IMPORTDATA()with the CSV download link for instant import
All Apify export formats available: JSON, JSONL, CSV, XLSX, XML, HTML Table, RSS.
Key Features
- No login required — Profile, Followers Count, Post, Reel, Tagged, and Hashtag modes all work without cookies
- 10 modes in one actor — profiles, posts, reels, comments, hashtags, tagged, search, followers count, all-in-one, data extractor
- Chrome TLS fingerprinting — Impit impersonates real Chrome browser fingerprints (JA3/JA4)
- Auto-proxy — residential proxy is enabled automatically when no proxy is configured, preventing failed runs
- Business email enrichment — with cookies, the mobile API fetches
public_emailandpublic_phone_numberthat the web API no longer returns - Smart proxy routing — residential proxy for Instagram requests, automatic session rotation
- Human-like behavior — randomized delays with Box-Muller normal distribution
- 128 MB memory — lightweight HTTP-only architecture, 87.5% less than competitors (1024 MB)
- No charge for empty results — you only pay when actual data is extracted
- MCP-compatible — works with Claude, GPT, Cursor, and any MCP client
- Pay per result — no subscription, no monthly fee
Error Handling
The scraper handles errors gracefully — individual failures never crash the entire run:
- Invalid usernames: Skipped with a warning in the log. Only valid usernames are processed.
- Profile not found: Profiles that return no data are skipped (not added to the dataset).
- Rate limits: Automatic delays with session rotation (up to 3 retries per request).
- Private profiles: Basic info (username, bio, follower count) is still returned. Posts are skipped.
- Partial results: If one profile fails, the rest continue unaffected.
- Login wall: If Instagram returns a login page, the scraper falls back to alternative data sources.
Check the Run Log tab in Apify Console to see warnings for any skipped or failed items.
Performance Tips
- Batch your inputs — scraping 50 profiles in one run is faster and cheaper than 50 separate runs
- Use Profile mode for posts — Profile Scraper includes up to 12 latest posts with exact engagement data. This is richer and cheaper than Post Scraper mode (which uses meta tags without cookies)
- Provide cookies for comments — Comments mode returns empty without cookies. Copy ALL browser cookies (sessionid, csrftoken, ds_user_id, ig_did, mid, datr)
- Start with small batches — test with 3-5 inputs first, then scale up
- Check the logs — the Run Log shows exactly what was scraped, skipped, or retried
- Proxy is auto-configured — residential proxy is enabled automatically if you leave it empty. Override with custom proxy settings if needed
Daily Limits
There are no Apify-side limits on how many times you can run this scraper.
Instagram-side recommendations:
- Without cookies: No practical limit — requests use Instagram's public
web_profile_infoAPI - With cookies: ~200 requests per cookie per day recommended. Exceeding this may trigger Instagram rate limits on your session
- Hashtag mode: Instagram rate-limits explore pages aggressively. The scraper uses 10-second delays between hashtags
- Profile mode: ~3-5 seconds per profile. 1,000 profiles takes ~60-90 minutes
Tip: For high-volume scraping (1,000+ profiles/day), run without cookies to avoid any Instagram session risk. Profile and Followers Count modes work fully without cookies.
Technical Details
- Runtime: Node.js 20
- HTTP library: Impit (Chrome TLS fingerprint impersonation)
- Memory: 128MB default (87.5% less than competitors)
- Speed: ~3-5 seconds per profile, ~8 seconds per post/reel
- No login required: Profile and Followers Count modes work fully without cookies
- Direct fetch: Most modes use direct HTTP (no proxy needed) for minimal cost
Limitations
- Posts/Reels by URL: Without cookies, returns rounded likes (3M instead of 3,087,331) and limited fields. Use Profile Scraper mode for full data, or provide cookies.
- Comments: Requires all browser cookies. Returns empty without cookies.
- Search: Requires cookies. Returns no results without cookies.
- Hashtag post count: Instagram removed public access to total post counts in 2025. Not available through any scraper.
- Tagged media: Without cookies, returns profile + latest posts. Actual tagged feed requires cookies.
- Private profiles: Only basic info available. Posts are not accessible.
FAQ
Do I need an Instagram account? No. Profile, Followers Count, Post, Reel, Tagged, and Hashtag modes all work without any login or cookies. Optionally provide cookies for richer data on posts/reels, and to unlock Comments and Search modes.
How do I get my cookies? Open Instagram in Chrome → F12 → Application → Cookies → instagram.com → copy ALL cookie values (sessionid, csrftoken, ds_user_id, ig_did, mid, datr) as semicolon-separated pairs.
Why do I need ALL cookies, not just sessionid?
Instagram requires the full cookie set (including ds_user_id, ig_did, mid, datr) for GraphQL authentication. With just sessionid and csrftoken, requests get redirected to the login page.
What if a profile returns empty? The scraper retries up to 3 times with different sessions. If it still fails, the profile may not exist, be suspended, or be behind a region-specific login wall. Check the Run Log for details.
How fast is it? Profiles: ~3-5 seconds each. Posts/Reels: ~8 seconds each. Followers Count: ~3 seconds each. Comments: ~2 seconds per page of 50 comments.
Can I scrape private profiles? Partially. You can get basic info (username, bio, follower count, profile picture) but NOT posts, comments, or tagged media from private accounts.
Why are post likes rounded (3M instead of 3,087,331)? Without cookies, post data comes from Instagram's HTML meta tags which show rounded numbers. With cookies, the GraphQL API returns exact counts.
Can I get business emails?
Yes — with cookies. The scraper calls Instagram's mobile API to fetch public_email and public_phone_number. These fields only appear for accounts that have enabled public contact info in their Instagram Business settings.
Is there a monthly subscription? No. Pay only for results delivered. Higher Apify plans get automatic discounts.
What's the difference between Profile Scraper and Followers Count? Profile Scraper returns full profile data + up to 12 latest posts. Followers Count returns only counts (followers, following, posts) — faster and cheaper at $0.78/1K vs $1.56/1K.
MCP Integration for AI Agents
This scraper works with AI agents via the Model Context Protocol (MCP). Connect it to Claude Desktop, Cursor, GPT, or any MCP-compatible client.
Setup:
- Go to mcp.apify.com
- Add "All-in-One Instagram Scraper" to your MCP server
- Ask your AI: "Get the Instagram profile of Cristiano Ronaldo"
Example prompts for your AI agent:
- "Scrape the Instagram profile of @starbucks and get their follower count"
- "Get the latest posts from @instagram with engagement metrics"
- "Find Instagram accounts about fitness influencers"
- "Get comments from this Instagram post: https://www.instagram.com/p/DWpF10RgBRg/"
- "Track follower counts for Nike, Adidas, and Puma on Instagram"
Works with Claude Desktop, Cursor, GPT via MCP, and any other MCP-compatible AI client.
Integrations
n8n
- Add the Apify node in your n8n workflow
- Select "All-in-One Instagram Scraper" as the actor
- Configure the scrape mode and input parameters
- Connect the output to your CRM, Google Sheets, or database
- Schedule to run daily for automated Instagram monitoring
Make.com (Integromat)
- Add the Apify module to your scenario
- Select "Run Actor" and choose this scraper
- Map the JSON output fields to your downstream modules
- Use for automated influencer tracking, content monitoring, or CRM enrichment
Zapier
- Create a new Zap with Apify as the trigger or action
- Select "Run Actor" and configure with this scraper's actor ID:
get-leads/all-in-one-instagram-scraper - Map output fields to Google Sheets, HubSpot, Salesforce, or Slack
- Trigger on schedule or from a webhook for automated data collection
REST API & SDKs
Use the Apify API, JavaScript SDK, or Python SDK for programmatic access. See examples below.
Code Examples
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("get-leads/all-in-one-instagram-scraper").call(run_input={"scrapeMode": "instagram-profile-scraper","profiles": ["instagram", "cristiano"],})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['username']}: {item.get('followersCount', 'N/A')} followers")
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('get-leads/all-in-one-instagram-scraper').call({scrapeMode: 'instagram-profile-scraper',profiles: ['instagram', 'cristiano'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(item => console.log(`${item.username}: ${item.followersCount} followers`));
Residential Proxy (Optional)
Set proxyTier to "residential" to route all requests through a residential IP. This prevents cookie sessions from being flagged by Instagram's security system and avoids rate limits on authenticated modes.
Cost: $0.003 per result (on top of regular per-result pricing) to cover proxy bandwidth.
When to use:
- Your cookies expire quickly (Instagram flagging datacenter IPs)
- You're scraping authenticated modes (comments, reels, followers) at scale
- You're getting frequent rate limits or CAPTCHAs
Alternative: Supply your own proxy via proxyConfiguration.proxyUrls (e.g. Evomi at $0.49/GB or DataImpulse at $1/GB).
Support
Found a bug? Open an issue on the actor page.
Questions? Contact us at get-leads@apify.com
Other Scrapers by Get Leads
- All-in-One TikTok Scraper — Profiles, videos, comments, search
- All-in-One LinkedIn Scraper — Profiles, companies, jobs, posts
- Real Estate Agent Scraper — Google Maps agent data with email enrichment
- Amazon Product Scraper — Products, reviews, prices across all marketplaces
Follow us on LinkedIn for updates, tips, and new scraper releases.
Proxy Tiers
The scraper supports four proxy strategies via the proxyTier input:
| Tier | Who uses residential | Best for |
|---|---|---|
auto (default) | Auth-heavy modes: profile, post, reel, comment, tagged, search, all-in-one | Most users — balances cost and success rate |
none | Nobody (datacenter only) | Testing, minimum cost |
residential | All modes | Maximum success rate, higher cost |
custom | Your own proxy via proxyConfiguration | You have your own residential proxy provider |
Why auto? Instagram rate-limits datacenter IPs aggressively on auth endpoints. Without residential proxy, cookie sessions get flagged within minutes and profile scraping success rate drops to ~40%. Residential IPs bring that back to ~95%. Lightweight modes (followers-count, hashtag, data-extractor, monitor) work fine on datacenter IPs and don't need the extra proxy cost.
Cost impact per mode (with auto + residential at $0.49/GB proxy):
| Mode | Current margin (datacenter) | Margin with auto (residential where needed) |
|---|---|---|
| profile | 92% | 87% |
| post | 90% | 82% |
| reel | 90% | 83% |
| comment | 90% | 89% |
| tagged | 91% | 86% |
| search | — | — |
| all-in-one | 85% | 80% |
| followers-count | 92% | 92% (stays datacenter) |
| hashtag | 74% | 74% (stays datacenter) |
| data-extractor | 84% | 84% (stays datacenter) |