Instagram Scraper
Pricing
from $1.10 / 1,000 profile / contacts / searches
Instagram Scraper
One Instagram scraper for everything — profiles, contacts (emails & phones), posts, reels, comments, likers, followers, following, tagged, stories, highlights, hashtags, locations & search. No code: paste usernames or URLs, export to Excel, CSV, JSON or API. Public data needs no login.
Pricing
from $1.10 / 1,000 profile / contacts / searches
Rating
5.0
(2)
Developer
VortexData
Maintained by CommunityActor stats
3
Bookmarked
248
Total users
56
Monthly active users
12 hours ago
Last modified
Categories
Share
What is Instagram Scraper?
Instagram Scraper extracts data from Instagram: profiles, contacts, posts, reels, comments, followers, likers, stories, highlights, hashtags and locations. Use it to monitor competitors, research influencers, find leads and track trends. Paste usernames or links, choose what to scrape, and download the results as Excel, CSV or JSON. Profiles, contacts, posts, reels, comments and location posts work without an Instagram login.
Try it for free: press Start with the example input to get 20 recent posts each from @humansofny and @natgeo. The free plan's $5 monthly credit covers about 4,000 posts or 2,200 profiles.
What can Instagram Scraper do?
- 🧩 All Instagram data in one Actor: 15 modes, from profile details to hashtag posts.
- 🔓 No login for public data: you need an Instagram cookie only for the modes marked 🔑.
- 📅 Date filters: keep only posts, reels or stories from the last days or from a date range.
- 📇 Lead generation: get emails, phones and links from profile bios.
- ⏰ Scheduling: run it daily or weekly on the Apify platform to keep your data fresh.
- 📈 Monitoring: get alerted when a run fails or returns less data than usual.
- 🔌 API and integrations: get the data in Python or JavaScript, Google Sheets, Make, Zapier or a webhook.
What data can you extract from Instagram?
| Mode | What you get | What to paste | Login cookie |
|---|---|---|---|
| 👤 Profile details | Bio, links, follower and following counts, verified and business flags, highlights | username | not needed |
| 📇 Contacts | Emails, phones and links from the bio | username | not needed |
| 🖼️ Profile posts | Caption, likes, comments count, date, images, video, music, tagged users | username | not needed |
| 🎬 Profile reels | The same as posts, plus play counts | username | not needed |
| 📄 Post / Reel detail | One post or reel | post URL | not needed |
| 💬 Comments | Comment text, author, date, likes | post URL or username | not needed |
| ❤️ Likers | Accounts that liked a post | post URL or username | 🔑 needed |
| 👥 Followers / Following | A profile's followers or the accounts it follows | username | 🔑 needed |
| 🏷️ Tagged posts | Posts a profile is tagged in | username | 🔑 needed |
| 📸 Stories / ⭐ Highlights | Active stories or highlight items | username | 🔑 needed |
| #️⃣ Hashtag posts | Posts under a hashtag | #tag or hashtag URL | 🔑 needed |
| 📍 Location posts | Posts from a place | location URL or ID | not needed for about 70 recent and top posts; add a cookie for more |
| 🔎 Search | Profiles, hashtags or places matching a phrase | a search phrase | 🔑 needed |
If you paste a username into Comments or Likers, you get the comments or likers of that account's recent posts.
What can you do with Instagram data?
- 🔍 Competitor monitoring: see what your competitors post, how often, and which posts and reels get the most likes and views.
- 🤝 Influencer research: compare follower counts, engagement and recent posts before you contact a creator.
- 📇 Lead generation: collect emails, phones and websites of businesses in your niche.
- 💬 Audience research: read comments to learn what people like, ask for or complain about.
- #️⃣ Trend tracking: follow hashtags and places to spot popular topics and content.
- 📊 Reporting: schedule a run and send fresh numbers to Google Sheets or your dashboard every week.
How to scrape Instagram
- Create a free Apify account and open Instagram Scraper.
- Choose a mode in What do you want to scrape?
- Paste usernames or URLs, one per line.
nike,@nikeandhttps://www.instagram.com/nike/all work. - Set Results per input: how many results you want from each line.
- For a 🔑 mode, add your Instagram cookie (see How to get your Instagram cookie).
- Press Start. When the run finishes, open Output, pick the view for your data (for example Posts & reels, Profiles or Contacts) and export it.
How to get your Instagram cookie
- Log in to instagram.com in your browser.
- Export your cookies with the Cookie-Editor or EditThisCookie browser extension.
- Paste the export into Instagram login cookie.
- In Country you use Instagram from, choose the country where you usually use Instagram. If your account is suddenly used from another country, Instagram may ask you to verify it.
⚠️ Use only your own cookie and don't share it with anyone: it gives access to your Instagram account.
Ready-to-run Instagram scraping tasks
Open a task, press Try for free, and change the usernames or dates to your own:
- 📈 Track competitors' Instagram posts from the last 7 days
- 🎬 Compare Instagram reel views of tech brands
- 👗 Get follower counts and bios of fashion brands
- ⚽ Compare Instagram followers of top football clubs
- 💬 Collect comments on a brand's latest Instagram posts
- 📰 Monitor news outlets' Instagram posts from the last day
- 📇 Extract emails, phones and links from Instagram bios
- 📅 Download an Instagram account's posts for a date range
Pricing
How much does it cost to scrape Instagram?
You pay for the results you get. The price per result depends on the type of data and on your Apify plan:
| Price per 1,000 results | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
| 🖼️ Posts, reels, hashtag and location posts | $1.20 | $0.60 | $0.55 | $0.50 |
| 👤 Profiles, contacts, search results | $2.20 | $1.30 | $1.20 | $1.10 |
| 📸 Stories and highlight items | $0.80 | $0.40 | $0.35 | $0.30 |
| 💬 Comments | $0.60 | $0.30 | $0.25 | $0.20 |
| 👥 Followers, following, likers | $0.50 | $0.25 | $0.20 | $0.15 |
For example, 1,000 posts from 10 accounts cost $1.20 on the Free plan and $0.60 on the Starter plan. Results per input sets how many you get, and a maximum cost per run in the run options caps your spending.
If a line of your input leads nowhere for a reason about the input itself, such as an account that doesn't exist, a private account or a login cookie Instagram refused, you get one error row for that line instead of data. It says what happened and is charged as one result of the mode you chose. Lines that fail on our side are never charged.
Is scraping Instagram free?
You can scrape Instagram for free within Apify's free plan. It includes $5 of platform credit every month, which is enough for about 4,000 posts, 2,200 profiles or 8,000 comments.
On a paid plan, every result costs less and your monthly credit goes further. At Starter prices, $10 of credit buys about 16,600 posts or 7,700 profiles.
Input and output examples
Input
The input is simple: choose a mode and paste usernames or links. Every other field is optional. Fill the form in the Input tab, or send the same fields as JSON through the API:
- What do you want to scrape? (
resultsType): the mode, for exampleposts,reels,details,contacts,commentsorfollowers. - Instagram URLs or usernames (
directUrls): one username, profile, post, hashtag or location per line. - Results per input (
resultsLimit): how many results to get from each line. - 🔎 Search phrase, Search for and Search matches (
search,searchType,searchLimit): find profiles, hashtags or places by a phrase instead of pasting them. - 🔑 Instagram login cookie (
sessionCookies) and Country you use Instagram from (proxyCountry): needed only for the 🔑 modes. - 📅 Only newer than and Only older than (
onlyPostsNewerThan,onlyPostsOlderThan): a date like2026-01-15or a period like3 months. - Add source info (
addParentData): add columns that say where each row came from.
This input gets 20 recent reels from @apple:
{"resultsType": "reels","directUrls": ["apple"],"resultsLimit": 20}
Output
Each result is one row of your dataset. You can download it as JSON, CSV, Excel, XML or HTML, or read it through the API. The examples below are real rows, shortened.
🎬 Posts and reels
{"url": "https://www.instagram.com/p/Ddt0zGgsis6/","type": "Video","caption": "A one-of-a-kind look at the world's most iconic structure. #ShotoniPhone18Pro ...","hashtags": ["ShotoniPhone18Pro"],"likesCount": 47723,"commentsCount": 646,"videoPlayCount": 1928639,"videoDuration": 50.567,"timestamp": "2026-09-25T16:00:16.000Z","displayUrl": "https://scontent.cdninstagram.com/...","videoUrl": "https://scontent.cdninstagram.com/...mp4","ownerUsername": "apple","inputUrl": "https://www.instagram.com/apple/"}
👤 Profile details
{"username": "apple","fullName": "apple","biography": "Everyone has a story to tell.\n#ShotoniPhone","followersCount": 37993640,"followsCount": 9,"verified": true,"isBusinessAccount": true,"externalUrl": "http://apple.co/Apple-Support"}
📇 Contacts
{"username": "cafe16","biography": "• Food • Cake • Tea • Coffee • Wine •\r\n\r\nNakhon Rachasima - Thailand\r\ncontact : 044 353 116\r\ne-mail : cafe.sixteen@gmail.com ...","followersCount": 123,"emails": ["cafe.sixteen@gmail.com"],"phones": ["044353116"],"inputUrl": "https://www.instagram.com/cafe16/"}
💬 Comments
{"postUrl": "https://www.instagram.com/p/Ddt0zGgsis6/","commentUrl": "https://www.instagram.com/p/Ddt0zGgsis6/c/18108919220179128/","text": "❤️❤️❤️❤️","timestamp": "2026-09-28T15:26:18.000Z","likesCount": 0,"ownerUsername": "jamu.n792","ownerIsVerified": false}
👥 Followers, following and likers
{"username": "mr.pjane_","fullName": "PJ","isPrivate": true,"isVerified": false,"profilePicUrl": "https://scontent.cdninstagram.com/...","inputUrl": "https://www.instagram.com/natgeo/"}
⚠️ Error rows
{"inputUrl": "https://www.instagram.com/zq1_nosuchuser_7919/","error": "not_found","errorMessage": "Instagram has no such account, post or place: it was deleted, renamed or mistyped."}
📸 Stories and highlights
{"url": "https://www.instagram.com/stories/natgeo/3995540021612466512/","type": "Video","timestamp": "2026-09-27T16:12:04.000Z","dimensionsHeight": 1280,"dimensionsWidth": 720,"displayUrl": "https://scontent.cdninstagram.com/..."}
How to scrape Instagram posts from the last 7 days
Track what your competitors published this week:
{"resultsType": "posts","directUrls": ["nike", "adidas", "puma"],"resultsLimit": 100,"onlyPostsNewerThan": "7 days"}
You get each brand's posts from the last 7 days, up to 100 per brand. Relative dates like 2 weeks or 3 months work too.
How to scrape Instagram posts from a date range
{"resultsType": "posts","directUrls": ["natgeo"],"resultsLimit": 500,"onlyPostsNewerThan": "2026-01-01","onlyPostsOlderThan": "2026-03-31"}
You get up to 500 of @natgeo's posts published in the first quarter of 2026.
How to compare Instagram reel views
{"resultsType": "reels","directUrls": ["apple", "samsung"],"resultsLimit": 30}
Each reel comes with videoPlayCount, likesCount and commentsCount, so you can compare which reels performed best.
How to scrape Instagram comments from a post
{"resultsType": "comments","directUrls": ["https://www.instagram.com/p/Ddt0zGgsis6/"],"resultsLimit": 500}
You get up to 500 comments with their text, author and date. No cookie needed.
How to scrape comments from an account's recent posts
{"resultsType": "comments","directUrls": ["apple"],"resultsLimit": 300}
Paste the account instead of post URLs. The 300 results are spread over the account's recent posts, not 300 per post.
How to extract emails and phone numbers from Instagram
{"resultsType": "contacts","directUrls": ["starbucks", "https://www.instagram.com/p/Ddt0zGgsis6/"]}
You get one row per profile with the emails, phones and links from its bio. A post URL works too: you get the contacts of the account that posted it.
How to find Instagram profiles by name and get their contacts
{"resultsType": "contacts","search": "bakery","searchType": "profile","searchLimit": 50,"sessionCookies": "<your Instagram cookie>"}
The search finds up to 50 profiles and returns their contacts. Instagram matches the phrase against account names and usernames, not against the bio, so use words people put in their names.
How to scrape Instagram followers
{"resultsType": "followers","directUrls": ["natgeo"],"resultsLimit": 1000,"sessionCookies": "<your Instagram cookie>"}
You get up to 1,000 followers with username, full name, profile picture and private and verified flags. Use "following" to get the accounts a profile follows.
How to scrape Instagram posts by hashtag or location
{"resultsType": "hashtag","directUrls": ["#streetphotography"],"resultsLimit": 200,"sessionCookies": "<your Instagram cookie>"}
For a place, use "resultsType": "location" and paste the place's URL from Instagram, which looks like https://www.instagram.com/explore/locations/{id}/, or just the ID. A place works without a cookie too: you get its recent and top posts, about 70 of them. Add a cookie to go further.
How to scrape many Instagram accounts into one dataset
{"resultsType": "posts","directUrls": ["nike", "adidas", "puma", "reebok", "newbalance"],"resultsLimit": 50}
Every row has inputUrl, the line it came from, so you can filter or group one dataset by account.
Other scrapers
| Actor | What it does |
|---|---|
| 🗺️ Google Maps Scraper | Extracts businesses from Google Maps for lead generation and market research. |
| 📊 Similarweb Scraper | Gets any website's traffic, rankings, top keywords, competitors and WHOIS from Similarweb. |
FAQ
Is it legal to scrape Instagram?
The Actor collects only data that Instagram shows publicly, or that your own account can see. This data can include personal information protected by GDPR and similar laws, so use it only for legitimate purposes. If you are unsure, consult a lawyer. Read more in Is web scraping legal?
Do I need an Instagram login cookie?
Yes for the 🔑 modes: likers, followers, following, tagged, stories, highlights, hashtag and search. Instagram shows this data only to logged-in users, so these modes need your login cookie. The other modes work without it. Location posts are shown to everyone only up to about 70 posts per place; with a cookie you can get more.
Instagram Scraper or the official Instagram API?
| Instagram Scraper | Official Instagram API | |
|---|---|---|
| Whose data | Any public profile, post, hashtag or place | Mainly your own business or creator account |
| What you need | An Apify account; a cookie only for 🔑 modes | A business account, a Meta app and app review |
| Comments, followers, likers of other accounts | ✅ | ❌ |
| Export to Excel, CSV, JSON | ✅ built in | ❌ you write the code |
How to use the Instagram API in Python?
Start runs and download results with the Apify API. The API tab has ready-to-use code for Python, JavaScript and other languages. A Python example:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("vortex_data/instagram-scraper").call(run_input={"resultsType": "details","directUrls": ["apple", "nike"],})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["username"], item["followersCount"])
Can I connect Instagram Scraper to other apps?
Yes. With Apify integrations you can send results to Google Sheets, Slack, Make, Zapier, Airbyte or your own webhook after every run. Combine it with a schedule to get fresh Instagram data every day.
How do I get the most out of it?
- Set Results per input to what you need: you pay per result.
- Use Only newer than to get recent posts only. The run stops reading an account once its posts get older than the date.
- Put many accounts into one run instead of starting one run per account.
- Turn on Add source info if you mix profiles, hashtags and posts in one run and want to group the rows later.
Why are some fields empty?
Instagram doesn't show some data to visitors who aren't logged in. Without a cookie, a profile's number of posts, business email and business phone stay empty. To collect emails and phones, use Contacts mode: it finds them in the bio.
Why did I get fewer results than I asked for?
The account has fewer posts than you asked for, or Instagram limits the list. For example, Instagram shows only about 100 likers per post. To get more likers, paste a username instead of a post URL: the results come from several of the account's recent posts.
Can I scrape private accounts?
You can get their public profile information. Their posts are visible only to approved followers.
Can I download photos and videos?
Each post, reel and story contains links to its images and videos. The links expire after a few days, so download the files you want to keep.
Does it collect replies to comments?
No. Comments mode collects top-level comments.
A run returned no results. What should I do?
Look for error rows in the dataset: the error and errorMessage columns say why a line gave nothing, for example that the account doesn't exist or is private. The end of the run's log says the same. If it looks like a bug, let us know on the Issues tab.
Need help or a custom solution?
Open an issue on the Issues tab and include the link to your run. You can also ask there if you need a custom version of this Actor.