All-in-One Instagram Scraper avatar

All-in-One Instagram Scraper

Pricing

from $1.56 / 1,000 profile results

Go to Apify Store
All-in-One Instagram Scraper

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

Japi Cricket

Maintained by Community

Actor stats

0

Bookmarked

35

Total users

19

Monthly active users

16 hours ago

Last modified

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

  1. Click "Try for free" at the top of this page
  2. Choose a scraping mode from the dropdown
  3. Add your input — usernames, URLs, hashtags, or search queries
  4. Click Start — results appear in the Dataset tab within seconds
  5. Download as JSON, CSV, or Excel — or connect via API, n8n, Make, or Zapier

No login required. Just paste and scrape.

11 Scraping Modes

ModeDescriptionBest ForCookies needed?
Profile ScraperFull profile + up to 12 latest posts with engagementLead enrichment, influencer researchNo
Post ScraperIndividual posts by URL: caption, likes, media URLsContent monitoringNo (limited)
Reels ScraperReels with play counts, audio info, engagementTrend analysisNo (limited)
Comments ScraperComments with author info, likes, threaded repliesSentiment analysisYes
Hashtag ScraperHashtag metadata: ID, description, profile pictureHashtag researchNo
Tagged PostsProfile + latest posts for tagged/mentioned usersInfluencer discoveryNo
Search ScraperSearch for users, hashtags, or placesProspectingYes
Followers CountLightweight follower/following/post countsMonitoring, trackingNo
All-in-OneCombine profiles + posts + hashtags + search in one runMulti-type extractionNo
Data ExtractorLightweight bulk profile extractionLarge-scale data collectionNo
MonitorCookie health check + run failure analysisAutomated alertingNo (reads from KV store)

Standard vs Enhanced Mode (Cookies)

Without cookies, most modes work great. With cookies, you unlock exact metrics and additional fields:

ModeWithout cookiesWith cookies
Profile ScraperFull data (all fields)+ Business email & phone via mobile API
Post ScraperCaption, owner, image, likes (rounded), dateExact likes/comments, postId, tagged users, location, carousel images
Reels ScraperCaption, owner, thumbnail, likes (rounded), dateExact metrics, plays, shares, saves, audio info, video URL
Comments ScraperEmpty resultsFull comments with author info, likes, threaded replies
Hashtag ScraperName, ID, description only+ Top posts
Tagged PostsProfile + latest posts+ Actual tagged media feed
Search ScraperNo resultsFull results with follower counts
Followers CountFull dataSame — no cookies needed

Pricing — Pay Per Result

ModePrice / 1,000Competitor PriceSavings
Profile Scraper$1.56$2.6040% cheaper
Post Scraper$1.62$2.7040% cheaper
Reels Scraper$1.62$2.7040% cheaper
Comments Scraper$1.38$2.3040% cheaper
Hashtag Scraper$1.56$2.6040% cheaper
Tagged Posts$1.62$2.7040% cheaper
Search Scraper$0.90$1.5040% cheaper
Followers Count$0.78$1.3040% cheaper
All-in-One$1.62$2.7040% cheaper
Data Extractor$1.00N/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

ParameterTypeRequiredDescription
scrapeModestringYes"instagram-profile-scraper"
profilesstring[]YesInstagram usernames (with or without @)
maxPostsPerProfileintegerNoLatest posts to include per profile (0-100, default: 12)
loginCookiesstringNoAll browser cookies for business email enrichment

Input Example

{
"scrapeMode": "instagram-profile-scraper",
"profiles": ["cristiano", "instagram", "leomessi"],
"maxPostsPerProfile": 3
}

Output Fields

FieldTypeDescriptionExample
instagramIdstringInstagram user ID"173560420"
usernamestringInstagram handle"cristiano"
fullNamestringDisplay name"Cristiano Ronaldo"
biographystringProfile bio"My official Instagram"
followersCountintegerFollower count672883042
followsCountintegerFollowing count630
postsCountintegerTotal posts4033
isVerifiedbooleanBlue checkmarktrue
isBusinessAccountbooleanBusiness accountfalse
isProfessionalAccountbooleanCreator/professionaltrue
businessCategoryNamestringBusiness category"Athlete"
businessEmailstringPublic email (with cookies)"info@starbucks.com"
businessPhoneNumberstringPublic phone (with cookies)"8007827282"
profilePicUrlstringProfile picture (150px)URL
profilePicUrlHDstringHD profile picture (320px)URL
externalUrlstringWebsite link"https://www.cr7.com"
pronounsstringUser pronouns"he/him"
isPrivatebooleanPrivate accountfalse
profileUrlstringFull profile URL"https://www.instagram.com/cristiano/"
latestPostsarrayUp to 12 latest posts with full engagement dataSee post fields below
latestPostsCountintegerNumber of posts embedded12

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

ParameterTypeRequiredDescription
scrapeModestringYes"instagram-post-scraper"
postURLsstring[]YesPost URLs or shortcodes
loginCookiesstringNoAll 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

FieldTypeWithout cookiesWith cookies
shortCodestringYesYes
captionstringYesYes
likesCountintegerRounded (3M)Exact (3,087,331)
commentsCountintegerYesYes
mediaTypestringImage/ReelImage/Video/Carousel/Reel
displayUrlstringYesYes
videoUrlstringNoYes
timestampstringDate onlyFull ISO timestamp
ownerUsernamestringYesYes
hashtagsarrayYes (from caption)Yes
mentionsarrayYes (from caption)Yes
taggedUsersarrayNoYes
locationNamestringNoYes
dimensionsobjectNoYes
isPaidPartnershipbooleanNoYes

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

ParameterTypeRequiredDescription
scrapeModestringYes"instagram-reels-scraper"
postURLsstring[]YesReel URLs
loginCookiesstringNoAll 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:

FieldTypeWithout cookiesWith cookies
playsCountintegerNoYes
sharesCountintegerNoYes
savesCountintegerNoYes
audioTitlestringNoYes
audioAuthorstringNoYes

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

ParameterTypeRequiredDescription
scrapeModestringYes"instagram-comment-scraper"
postURLsstring[]YesPost/reel URLs to scrape comments from
maxCommentsPerPostintegerNoMax comments per post (1-1000, default: 100)
loginCookiesstringYesAll 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

FieldTypeDescriptionExample
commentIdstringUnique comment ID"17892368145442706"
textstringComment body"Great photo!"
timestampstringISO timestamp"2026-04-04T03:12:09.000Z"
likesCountintegerComment likes150
repliesCountintegerReply count3
ownerUsernamestringComment author"fan_account"
ownerIdstringAuthor's Instagram ID"8499404141"
ownerIsVerifiedbooleanAuthor verifiedfalse
ownerProfilePicUrlstringAuthor avatar URLURL
postShortCodestringParent post shortcode"DWpF10RgBRg"
isReplybooleanIs this a replyfalse
parentCommentIdstringParent 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

ParameterTypeRequiredDescription
scrapeModestringYes"instagram-hashtag-scraper"
hashtagsstring[]YesHashtag names (with or without #)
loginCookiesstringNoCookies for top posts

Input Example

{
"scrapeMode": "instagram-hashtag-scraper",
"hashtags": ["travel", "photography", "#fitness"]
}

Output Fields

FieldTypeDescriptionExample
hashtagIdstringInstagram hashtag ID"17841404124112880"
namestringHashtag name (without #)"travel"
profilePicUrlstringHashtag representative imageURL
descriptionstringEditorial description"Watch short videos about travel..."
hashtagUrlstringExplore page URL"https://www.instagram.com/explore/tags/travel/"
topPostsarrayTop 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

ParameterTypeRequiredDescription
scrapeModestringYes"instagram-tagged-scraper"
profilesstring[]YesInstagram usernames
maxPostsPerProfileintegerNoPosts per profile (default: 12)
loginCookiesstringNoCookies 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

ParameterTypeRequiredDescription
scrapeModestringYes"instagram-search-scraper"
searchQueriesstring[]YesSearch terms
resultsPerPageintegerNoResults per query (default: 50)
loginCookiesstringYesAll 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

FieldTypeDescriptionExample
resultTypestringuser, hashtag, or place"user"
usernamestringUsername (for users)"fitnessinfluencernavya"
fullNamestringDisplay name"Navya Singh"
followersCountintegerFollower count (parsed from social context)724000
profilePicUrlstringProfile picture URLURL
isVerifiedbooleanVerified badgefalse
isPrivatebooleanPrivate accountfalse
profileUrlstringProfile 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

ParameterTypeRequiredDescription
scrapeModestringYes"instagram-followers-count-scraper"
profilesstring[]YesInstagram usernames

Input Example

{
"scrapeMode": "instagram-followers-count-scraper",
"profiles": ["cristiano", "instagram", "leomessi", "starbucks", "nike"]
}

Output Fields

FieldTypeDescriptionExample
usernamestringInstagram handle"cristiano"
fullNamestringDisplay name"Cristiano Ronaldo"
followersCountintegerFollowers672967974
followsCountintegerFollowing630
postsCountintegerTotal posts4034
isVerifiedbooleanVerifiedtrue
isPrivatebooleanPrivatefalse
isBusinessAccountbooleanBusiness accountfalse
profilePicUrlstringProfile pictureURL
profileUrlstringFull 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

ParameterTypeRequiredDescription
scrapeModestringYes"instagram-scraper"
profilesstring[]NoInstagram usernames
postURLsstring[]NoPost/reel URLs
hashtagsstring[]NoHashtag names
searchQueriesstring[]NoSearch 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

ParameterTypeRequiredDescription
scrapeModestringYes"instagram-data-extractor"
profilesstring[]YesInstagram usernames
maxPostsPerProfileintegerNoPosts 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"]}'

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:

  1. 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.
  2. Run history — fetches the last 20 runs and categorizes them as successes, failures, or empty results
  3. Alerting — if any issues are found (including expired cookie), stores an alert in the instagram-alerts KV store

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 loginCookies are provided in the input, the actor automatically reads from the KV store
  • If loginCookies are 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:

SettingValue
Cron55 6 * * * (UTC) — runs at 06:55 daily
Input{ "scrapeMode": "instagram-monitor" }
Memory128 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.

  1. Log into Instagram in your browser
  2. Open Developer Tools (F12) → Application → Cookies → instagram.com
  3. Copy ALL cookie values — you need: sessionid, csrftoken, ds_user_id, ig_did, mid, datr
  4. Paste into the Login Cookies field

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_email and public_phone_number that 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_info API
  • 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:

  1. Go to mcp.apify.com
  2. Add "All-in-One Instagram Scraper" to your MCP server
  3. 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

  1. Add the Apify node in your n8n workflow
  2. Select "All-in-One Instagram Scraper" as the actor
  3. Configure the scrape mode and input parameters
  4. Connect the output to your CRM, Google Sheets, or database
  5. Schedule to run daily for automated Instagram monitoring

Make.com (Integromat)

  1. Add the Apify module to your scenario
  2. Select "Run Actor" and choose this scraper
  3. Map the JSON output fields to your downstream modules
  4. Use for automated influencer tracking, content monitoring, or CRM enrichment

Zapier

  1. Create a new Zap with Apify as the trigger or action
  2. Select "Run Actor" and configure with this scraper's actor ID: get-leads/all-in-one-instagram-scraper
  3. Map output fields to Google Sheets, HubSpot, Salesforce, or Slack
  4. 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 ApifyClient
client = 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

Follow us on LinkedIn for updates, tips, and new scraper releases.

Proxy Tiers

The scraper supports four proxy strategies via the proxyTier input:

TierWho uses residentialBest for
auto (default)Auth-heavy modes: profile, post, reel, comment, tagged, search, all-in-oneMost users — balances cost and success rate
noneNobody (datacenter only)Testing, minimum cost
residentialAll modesMaximum success rate, higher cost
customYour own proxy via proxyConfigurationYou 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):

ModeCurrent margin (datacenter)Margin with auto (residential where needed)
profile92%87%
post90%82%
reel90%83%
comment90%89%
tagged91%86%
search
all-in-one85%80%
followers-count92%92% (stays datacenter)
hashtag74%74% (stays datacenter)
data-extractor84%84% (stays datacenter)