Instagram Profile Extract By URL & Keyword avatar

Instagram Profile Extract By URL & Keyword

Pricing

$24.99/month + usage

Go to Apify Store
Instagram Profile Extract By URL & Keyword

Instagram Profile Extract By URL & Keyword

Scrape detailed Instagram profiles with the Instagram Profile Scraper. Retrieve usernames, full names, bios, follower counts, following counts, posts, and engagement stats. Ideal for influencer research, audience analysis, and social media insights. Fast, accurate, and scalable for bulk scraping.

Pricing

$24.99/month + usage

Rating

0.0

(0)

Developer

Scrapier

Scrapier

Maintained by Community

Actor stats

0

Bookmarked

49

Total users

3

Monthly active users

3 days ago

Last modified

Share

๐Ÿ“ธ Instagram Profile Scraper Pro

An Apify Actor for scraping public Instagram profiles โ€” profile stats, biography, external links, embedded posts, and related accounts โ€” with optional expansion into extra posts, reels, highlights, and a followers/following sample. Also supports keyword discovery (find profiles by niche).

Built HTTP-first: it calls Instagram's public web_profile_info endpoint directly through your proxy and only falls back to a Playwright browser when the direct call fails (each profile row records which path served it in fetchPath). Values Instagram does not return are emitted as null โ€” this actor never fabricates data.

Key features

  • Profile data: username, full name, biography, followers/following/posts counts, verified & business flags, profile pictures (standard + HD), external links, fbid.
  • Embedded posts: the ~12 latest posts from the profile payload (id, type, shortcode, caption, hashtags, mentions, likes, comments, timestamp, images, tagged users).
  • Related profiles and IGTV list from the same payload (zero extra requests).
  • HTTP-first fetch with automatic browser fallback; every profile row records which path served it (fetchPath = http or browser).
  • Keyword discovery (searchKeywords): find profiles by top-search instead of only known handles (requires a sessionId โ€” endpoint is auth-gated).
  • Child rows (opt-in) โ€” each as its own dataset row tagged type / isChild / parentUsername, and mirrored to a per-run dataset instagram-profile-items-<runId>:
    • Extra posts beyond the embedded 12 (maxPosts, via feed pagination) โ€” works anonymously
    • Reels (maxReels, via the clips endpoint) โ€” requires sessionId
    • Highlights list (includeHighlights) โ€” requires sessionId
    • Followers / following sample (includeFollowers / includeFollowing, capped by maxFollowersPerProfile) โ€” requires sessionId

Input

FieldTypeDescription
startUrlsarrayProfile URLs or usernames. Accepts https://www.instagram.com/nasa/, instagram.com/nasa, nasa, @nasa. Post/reel URLs are rejected with a clear error row.
searchKeywordsarrayKeywords to discover profiles via top-search. Requires a sessionId (endpoint returns 401 anonymously).
maxProfilesPerKeywordintegerCap discovered profiles per keyword (default 10).
maxItemsintegerCap on PROFILE rows (0 = unlimited). Child rows are not counted.
maxPostsintegerExtra posts beyond the embedded 12 (0 = off).
maxReelsintegerReels to fetch (0 = off).
includeHighlightsbooleanFetch highlights list.
includeFollowers / includeFollowingbooleanFetch a followers/following sample.
maxFollowersPerProfileintegerCap on follower/following rows per profile (default 50).
sessionIdstring (secret)Optional Instagram sessionid cookie to unlock auth-gated data.
proxyConfigurationobjectProxy for all requests. Honored as configured. Residential recommended.

JSON example

{
"startUrls": ["https://www.instagram.com/nasa/"],
"maxPosts": 30,
"maxReels": 10,
"includeHighlights": true,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Output

Each dataset item is tagged with type (profile / post / reel / highlight / follower / following / error), isChild, and parentUsername for child rows. A profile row includes counts, bio, links, latestPosts (embedded), relatedProfiles, latestIgtvVideos, fetchPath, and scrapedAt. Child rows carry the fields relevant to their type. Fields Instagram does not return are null.

Child rows are also mirrored to a per-run named dataset instagram-profile-items-<runId>.

Caveats (please read)

  • Anonymous scraping depends on Instagram not blocking the IP. Residential proxy is strongly recommended. When the direct HTTP call is rate-limited (HTTP 429) the actor automatically falls back to the Playwright browser path, which is more resilient.
  • Followers/following, reels (clips), highlights, and keyword discovery endpoints require a logged-in session. Without a sessionId they return 401/403/empty and yield no rows (the run logs the exact status). Provide a sessionId cookie value (throwaway account) โ€” the actor builds the full authenticated context (sessionid + ds_user_id + csrftoken) from it. Note: reel/video content also appears in the extra-posts (maxPosts) feed, which works anonymously.
  • "About this account" was dropped: its data (joined date, country, former usernames) is unreachable โ€” the endpoints return 404/400 even with a valid session โ€” so shipping it would be a dead feature.
  • Private accounts cannot be scraped.

Compliance

  • Data is collected only from publicly available sources.
  • The end user is responsible for legal compliance (privacy, data-protection, GDPR, Instagram Terms of Service).
  • Use responsibly; do not use for spam, harassment, or illegal activity.

Technical details

  • Language: Python 3
  • Framework: Apify SDK
  • Fetch: requests (HTTP-first) + Playwright Chromium (fallback)
  • Billing: pay-per-event row_result per emitted row