Instagram Profile Scraper – Followers & Engagement avatar

Instagram Profile Scraper – Followers & Engagement

Pricing

from $2.00 / 1,000 profiles

Go to Apify Store
Instagram Profile Scraper – Followers & Engagement

Instagram Profile Scraper – Followers & Engagement

Scrape Instagram profiles in bulk by username, profile URL, or user ID. Get bio, followers, public contact details, recent Posts/Reels, and optional Engagement Insights for creator research, competitor analysis, lead enrichment, and automation.

Pricing

from $2.00 / 1,000 profiles

Rating

0.0

(0)

Developer

LanceAPI

LanceAPI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Categories

Share

Instagram Profile Scraper API

Scrape Instagram profiles in bulk with bio, followers, public contact details, recent Posts/Reels, and optional Engagement Insights for creator research, competitor analysis, and automated workflows.

Submit usernames, @handles, Instagram profile URLs, or numeric user IDs. The Actor returns one Dataset row per unique profile for export, automation, databases, dashboards, or downstream AI analysis.

  • Process up to 200 profiles per run.
  • Get profile, audience, account type, category, verification, and public contact fields.
  • Include recent public Posts/Reels without a separate per-post fee.
  • Turn Profile Data into Profile Intelligence with optional Profile-level Engagement Insights: engagement rate, average interactions and views, overall posting frequency, recent activity, and activity status.
  • Normalize and deduplicate equivalent profile inputs before processing.
  • Pay for a Profile result only when a usable profile row is successfully returned.

Quick start

  1. Add one or more values to profiles.
  2. Keep includeRecentContent enabled to return recent Posts/Reels.
  3. Enable includeEngagementInsights if you want the optional paid analysis. It is disabled by default.
  4. Click Start, then open the default Dataset from Output.
{
"profiles": ["instagram", "nasa"],
"includeRecentContent": true,
"includeEngagementInsights": false
}

The input is prefilled with instagram. A run accepts up to 200 unique profiles after normalization and de-duplication.

Input

FieldTypeRequiredDefaultDescription
profilesstring[]YesPrefill: ["instagram"]Usernames, @handles, profile URLs, or numeric Instagram user IDs. Maximum 200 unique profiles.
includeRecentContentbooleanNotrueInclude usable public Posts/Reels from one healthy response. Disable to omit raw recent content.
includeEngagementInsightsbooleanNofalseCalculate optional paid engagement and activity insights. Charged only when usable analysis is delivered.

The switches are independent. You can enable Engagement Insights while disabling recent content: the Actor can collect an internal sample for analysis and returns recentContent: []. Disable both switches for metadata only.

Supported examples: instagram, @instagram, https://www.instagram.com/instagram/, and 25025320.

Equivalent username forms are processed once. When known identity data proves that a username and numeric ID refer to the same account, they are also merged. Invalid values appear in RUN_SUMMARY and do not stop other valid profiles.

Output

Each unique profile produces one Dataset row. Recent posts stay nested in recentContent[]; posts never become separate rows.

Rows can include identity, bio, images, follower/following/post counts, account flags, category, profile-published email/phone/website/WhatsApp details, and optional recent Posts/Reels. Profile-level engagement metrics, overall posting frequency and activity status are calculated only when Engagement Insights is enabled. Missing optional values are null or empty arrays rather than guesses.

Illustrative output with Engagement Insights enabled — values are examples, not a captured live result:

{
"success": true,
"status": "success",
"username": "example_creator",
"followersCount": 128000,
"accountType": "creator",
"email": "hello@example.com",
"engagementRate": 4.07,
"engagementSampleSize": 1,
"avgLikes": 5100,
"avgComments": 115,
"avgViews": null,
"postingFrequencyPerWeek": null,
"latestActivityAt": "2026-10-12T08:00:00.000Z",
"daysSinceLastActivity": 1,
"activityStatus": "occasional",
"recentContent": [{
"shortcode": "ABC123",
"url": "https://www.instagram.com/p/ABC123/",
"type": "photo",
"timestamp": "2026-10-12T08:00:00.000Z",
"likesCount": 5100,
"commentsCount": 115
}],
"dataLevel": "full",
"error": null,
"scrapedAt": "2026-10-13T08:00:00.000Z"
}

Dataset views

ViewFocus
ProfilesIdentity, audience size, account attributes, contact summary, optional engagement, completeness.
ContactsPublic email, phone, website, and WhatsApp details.
EngagementOptional Profile-level Insights: rate, sample size, average interactions/views, overall frequency, latest activity and activity status. Metrics are empty when the add-on is disabled.
Recent ContentNested recent-post samples with their owning profiles.

Views change presentation only; they do not create additional rows.

Important fields

FieldMeaning
id, username, urlStable account identity and profile link. Large IDs remain strings.
followersCount, followingCount, postsCount, reelsCountPublic counts when available.
accountTypepersonal, creator, business, or unknown.
email, phone, externalUrl, whatsappContact details published on the profile. External websites are not crawled.
engagementRate, engagementSampleSizeOptional Insights: engagement percentage and the number of posts with valid interaction counts used for the calculation.
avgLikes, avgComments, avgViewsOptional Insights: averages of known interactions and views across the whole profile sample.
postingFrequencyPerWeekOverall weekly publishing estimate from all dated sample items.
latestActivityAt, daysSinceLastActivityLatest activity across the complete sample and complete days since that activity.
activityStatusOverall profile activity: very_active, active, occasional, inactive, or unknown.
recentContentUsable public Posts/Reels from the first healthy response; the count varies.
dataLevelfull, partial, basic, or failed.
success, status, errorRow outcome and a stable public error when resolution fails.
scrapedAtISO 8601 collection time.

Recent items can include identity, URL, media type, caption, timestamp, engagement counts, duration, media URLs, location, hashtags, mentions, and music metadata. Availability varies.

Recent-post collection

When recent content is enabled, the Actor includes usable public Posts/Reels from the first healthy recent-content response. The exact count varies by profile and available public data and is commonly around 12 items. It may contain photos, carousels, videos, and Reels; recognized Reels are marked as reel.

Items are normalized, invalid items are removed, duplicates are merged, and usable items are ordered newest first. All usable items from that response are retained. The Actor does not paginate further just to reach a fixed target. The count is not user-configurable.

Engagement Insights

Profile-level engagement and activity analysis. Engagement Insights turns a profile's available recent public content into profile-level performance metrics, including engagement rate, average interactions and views, posting frequency, recent activity, and overall activity status. It is an optional paid add-on and is disabled by default.

When enabled, it can return engagement rate, average likes/comments/views, overall posting frequency, latest activity, days since last activity, and overall activity status. Every usable sample item contributes to the profile analysis when its required data is available. This saves you from cleaning content data and building these calculations yourself before comparing creators, evaluating influencer activity, monitoring competitors, or feeding structured profile metrics into dashboards and AI workflows.

Analysis uses the same normalized sample collected during the profile lookup. It does not request extra pages to expand the sample. Exact metrics depend on the public data available: a missing engagement rate does not prevent other useful metrics from being delivered. Unknown counts stay unknown instead of becoming zero, and engagementSampleSize reflects the actual items used for the engagement calculation.

postingFrequencyPerWeek is estimated from the interval between the oldest and newest valid timestamps in the sample. It requires at least two dated items spanning one day. latestActivityAt always uses the newest timestamp across all formats. Activity is unknown without a valid timestamp and inactive after more than 30 days without activity; for more recent activity, an estimated 5+ items per week is very_active, 1+ is active, and a lower or unmeasurable frequency is occasional.

One additional Engagement Insights charge applies only when you enable the add-on and usable derived analysis is successfully delivered. Empty samples or unsuccessful calculations create no add-on fee. When disabled, derived fields keep empty placeholders (null, sample size 0, activity status unknown) to preserve the Dataset structure.

Status

dataLevelstatusMeaningProfile results charged
fullsuccessMetadata and requested enrichments are usable.1
partialpartial_successUsable metadata, but requested fields, recent content, or Insights are unavailable/incomplete.1
basicsuccessMetadata-only mode succeeded with both enrichment switches off.1
failedfailedNo usable profile metadata could be returned.0

The number of recent items does not, by itself, make a result partial. Disabling Engagement Insights does not lower the data level. An unsuccessful requested add-on leaves usable Profile metadata available and creates no Engagement Insights charge.

Pricing

Profile data from $1.60 per 1,000 successfully returned profiles, depending on your Apify plan — as low as $0.0016 per profile. Get structured account data for creator research, prospect lists, and monitoring, with recent public Posts/Reels included when enabled and no separate per-post fee.

Add Profile-level Engagement Insights from $0.60 per 1,000 profiles, depending on your plan — as low as $0.0006 extra per profile. Turn the available content sample into engagement and activity metrics without building those calculations yourself. This add-on is disabled by default and charged only when usable analysis is successfully delivered.

What you pay for — and what you don't

  • Delivered Profile results: one result charge per unique, usable profile in a run. A partial result with usable metadata still counts; unavailable optional fields do not make the Profile result free.
  • Recent content is included: returned Posts/Reels do not create separate content charges or another Profile charge.
  • Duplicate protection: recognized equivalent inputs are processed once per run. Retries do not create another result or Insights charge for the same profile.
  • No Profile result, no Profile fee: invalid inputs, not-found profiles, and metadata failures without a usable profile create no Profile Result charge.
  • No usable Insights, no add-on fee: leaving the add-on off, an empty sample, or an unsuccessful analysis creates no Engagement Insights charge. A usable Profile result is still charged normally.

An Actor Start charge of $0.0005 applies once per run, separately from result and Insights fees, including runs that return no usable profiles. Batch up to 200 unique profiles in one run to share that start charge across your list. Enable Engagement Insights only when you need the extra analysis.

The starting prices above reflect available plan discounts, not a rate available on every plan. See this Actor's Pricing tab for current plan-specific rates and full pricing details.

API usage

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('lance_api/instagram-profile-scraper-api').call({
profiles: ['instagram', 'nasa'], includeRecentContent: true, includeEngagementInsights: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('lance_api/instagram-profile-scraper-api').call(run_input={
'profiles': ['instagram', 'nasa'], 'includeRecentContent': True, 'includeEngagementInsights': False,
})
items = client.dataset(run['defaultDatasetId']).list_items().items

cURL

curl -X POST "https://api.apify.com/v2/acts/lance_api~instagram-profile-scraper-api/runs?waitForFinish=120" \
-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"profiles":["instagram","nasa"],"includeRecentContent":true,"includeEngagementInsights":false}'

Use cases

  • Build creator shortlists with audience size and published contacts, with optional engagement and activity Insights.
  • Compare public competitor profiles and use optional Insights to evaluate their posting patterns in your spreadsheet or dashboard.
  • Collect structured public business profile data for research and permitted outreach workflows.
  • Monitor recent public posts through scheduled runs and repeated exports.
  • Feed profile metadata and post text into your own analytics or AI pipeline.

The Actor supplies structured source data; it does not perform lead scoring, sentiment, outreach decisions, or business recommendations.

Limitations and responsible use

  • Results depend on public availability at run time. Private, deleted, restricted, or unavailable accounts may fail.
  • Optional fields may be null; the recent-post sample can be short or empty.
  • Recent content is a latest-post sample, not a complete archive; media URLs may expire.
  • Instagram can change public field availability.

Use only public or otherwise permitted data. Follow applicable law, Instagram's terms, privacy and copyright obligations, and anti-spam rules.

FAQ

Are duplicate inputs charged twice? No. Equivalent canonical profiles are processed once per run.

Can I choose the number of posts? No. Recent content commonly contains around 12 items, but the actual count varies. The Actor returns usable items from one healthy response without requesting extra pages to reach a target.

Can I collect only Reels? No. This Profile Actor uses the posts timeline. Use a dedicated Reels product for a Reels-only workflow.

Are posts billed separately? No. Recent Posts/Reels are included with the Profile Result when enabled. Engagement Insights is a separate optional paid analysis.

Can I get Insights without raw recent posts? Yes. Enable includeEngagementInsights and disable includeRecentContent. The Actor can analyze an internal sample while returning an empty recentContent array.

What if Engagement Insights cannot be generated? You pay no Engagement Insights fee. A usable Profile Result is still returned and charged normally.

Is a failed profile charged? No Profile Result charge is created without usable metadata. The Actor Start charge may still apply.

Do I need Instagram login details? No login or cookie input is exposed.

Support

Open an issue on the Actor page or email lanceapi2026@hotmail.com. Include the Run ID, a non-sensitive input, visible status/error, and expected versus actual behavior. Never send tokens, cookies, sessions, passwords, API keys, proxy credentials, or authorization headers.