Instagram Profile Extract By URL & Keyword
Pricing
$24.99/month + usage
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
Maintained by CommunityActor stats
0
Bookmarked
49
Total users
3
Monthly active users
3 days ago
Last modified
Categories
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=httporbrowser). - Keyword discovery (
searchKeywords): find profiles by top-search instead of only known handles (requires asessionIdโ endpoint is auth-gated). - Child rows (opt-in) โ each as its own dataset row tagged
type/isChild/parentUsername, and mirrored to a per-run datasetinstagram-profile-items-<runId>:- Extra posts beyond the embedded 12 (
maxPosts, via feed pagination) โ works anonymously - Reels (
maxReels, via the clips endpoint) โ requiressessionId - Highlights list (
includeHighlights) โ requiressessionId - Followers / following sample (
includeFollowers/includeFollowing, capped bymaxFollowersPerProfile) โ requiressessionId
- Extra posts beyond the embedded 12 (
Input
| Field | Type | Description |
|---|---|---|
startUrls | array | Profile URLs or usernames. Accepts https://www.instagram.com/nasa/, instagram.com/nasa, nasa, @nasa. Post/reel URLs are rejected with a clear error row. |
searchKeywords | array | Keywords to discover profiles via top-search. Requires a sessionId (endpoint returns 401 anonymously). |
maxProfilesPerKeyword | integer | Cap discovered profiles per keyword (default 10). |
maxItems | integer | Cap on PROFILE rows (0 = unlimited). Child rows are not counted. |
maxPosts | integer | Extra posts beyond the embedded 12 (0 = off). |
maxReels | integer | Reels to fetch (0 = off). |
includeHighlights | boolean | Fetch highlights list. |
includeFollowers / includeFollowing | boolean | Fetch a followers/following sample. |
maxFollowersPerProfile | integer | Cap on follower/following rows per profile (default 50). |
sessionId | string (secret) | Optional Instagram sessionid cookie to unlock auth-gated data. |
proxyConfiguration | object | Proxy 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
sessionIdthey return 401/403/empty and yield no rows (the run logs the exact status). Provide asessionIdcookie 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_resultper emitted row
