Ready-made scraper on Apify
Instagram profile scraper
Paste Instagram usernames or profile links and get one row per profile with followers, following, bio, the email written in the bio, bio links, category and the 12 latest posts with their likes and comments. It needs no Instagram login.
- New
What you get
A few profiles as a run returns them. The CSV download has every column.
NASA
@nasa · Government Agencies
“Making the seemingly impossible, possible. ✨”
- followers
- 104.3M
- posts
- 4,963
- verified
- Yes
Real output
Who uses it
Vetting influencers
Followers, engagement rate, category and recent posts for every creator on your shortlist, before you reach out.
Lead lists
Business accounts with their category, bio email, address and website links, ready for outreach.
Competitor tracking
The same list run on a schedule, to follow follower growth and posting activity over time.
Mapping a niche
Discovery mode adds the accounts Instagram suggests as related to each profile, so a few seed accounts open up a whole niche.
What you give it
Profilesrequired
One per line: a profile link, @nasa or nasa. Post, reel and hashtag links are skipped.
Discovery modeoptional
Also scrapes the related profiles Instagram suggests for each profile in your list. Each discovered row names the profile it came from, and each one is charged like any other profile.
Off by default
Max resultsoptional
Stops the run after this many profiles. Leave it empty for no limit. Set it when Discovery mode is on, to cap what a run can cost.
Example inputs
Paste one into the JSON tab of the input form on Apify.
{
"usernames": [
"https://www.instagram.com/nasa/",
"@natgeo",
"starbucks"
],
"discoveryMode": false,
"maxResults": 10
}What it does
- Usernames, @handles or profile links, one per line
- 63 fields per profile, with the 12 latest posts and the 12 latest long videos
- Average engagement rate worked out from the latest posts
- Every link in the bio, and any email address written in it
- Discovery mode adds up to about 50 related profiles per account, one level deep
- Private profiles still come with their counters, bio and flags
Pricing
You pay Apify per result, with nothing to pay when the scraper isn’t running. The rate drops on Apify’s paid plans. Set the numbers for your run to see the cost.
Profile
Each profile the scraper saves, including the ones Discovery mode finds. Profiles that fail are free.
$1.00 per 1,000
Where the data can go
Download the results from Apify, or have each run send them on through Apify’s integrations. We can set any of these up for you.
Download
- CSV
- Excel
- JSON
- XML
- HTML table
Spreadsheets and storage
- Google Sheets
- Google Drive
- Amazon S3
Automation tools
- n8n
- Make
- Zapier
- Webhooks
CRMs and apps, through those tools
- HubSpot
- Salesforce
- Pipedrive
- Airtable
- Slack
Code and AI
- REST API
- Python client
- Node.js client
- MCP for AI agents
Run it from code
Start a run and read the results with your Apify API token, which is under Settings, then API & Integrations, in the Apify console.
curl -X POST "https://api.apify.com/v2/acts/keklik~instagram-profile-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"usernames": [
"https://www.instagram.com/nasa/",
"@natgeo",
"starbucks"
],
"discoveryMode": false,
"maxResults": 10
}'# pip install apify-client
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("keklik/instagram-profile-scraper").call(run_input={
"usernames": [
"https://www.instagram.com/nasa/",
"@natgeo",
"starbucks"
],
"discoveryMode": False,
"maxResults": 10
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)// npm install apify-client
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_APIFY_TOKEN" });
const run = await client.actor("keklik/instagram-profile-scraper").call({
"usernames": [
"https://www.instagram.com/nasa/",
"@natgeo",
"starbucks"
],
"discoveryMode": false,
"maxResults": 10
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Questions
Limits
Instagram doesn't show a business account's contact email or phone to visitors who aren't logged in, so you get the email from the bio and the links instead. For some accounts, most of them businesses, Instagram shows only part of the profile: about 4 in 10 in our tests. Those rows have no category, address, long videos or related profiles, and a rounded post count. Image and video links expire, so download any media soon after the run.
Can it read private profiles?
Partly. You get a private account's counters, bio and flags, but no posts, since Instagram shows those to approved followers only.
How do I get a business's email and phone number?
Most business profiles link to a website. Feed the bio links into a contact details scraper, which collects the emails and phone numbers published there.
How is the engagement rate worked out?
Likes plus comments on the latest posts, averaged and divided by followers. 0.003153 means 0.32%.
What happens to profiles that fail?
They aren't in the results and aren't charged. The run lists each one with its reason, such as a profile that doesn't exist or one Instagram refused. Run those again later.
Do I need an Apify account?
Yes. The scraper runs in your Apify account and Apify bills you per result. A free Apify account is enough to try it.
Can you run it for us instead?
Yes. We can run it on a schedule, clean up the results and send them to your sheet, CRM or database. Ask for a quote and we reply within one business day.
Other Instagram scrapers
The ones marked ready-made are on Apify too. We run the others for clients.
Instagram data- Instagram Post ScraperReady-madeCaption, date, likes, comment count, format and tagged accounts for every post, with the newest comments if you ask for them.In: Profile URLs, usernames, or post URLs$1.00 / 1,000 posts
- Instagram Reels ScraperReady-madeA row for each reel with plays, likes, duration, caption, music and the paid-partnership flag.In: Profile URLs, usernames, or reel URLs$1.50 / 1,000 reels
- Instagram Comments ScraperReady-madeEvery top-level comment on the posts you send, with its text, date, likes, edited flag and the commenter's username.In: Post or reel URLs$1.00 / 1,000 comments
Want us to run it for you?
We can run this scraper on a schedule and send the results to a sheet, your CRM or a database. We fix it if the site changes.