Instagram Posts Scraper With Creator Profiles avatar

Instagram Posts Scraper With Creator Profiles

Pricing

Pay per usage

Go to Apify Store
Instagram Posts Scraper With Creator Profiles

Instagram Posts Scraper With Creator Profiles

Instagram Posts Scraper extracts posts from Instagram profiles or URLs. It collects captions, post URLs, images, videos, likes, comments, hashtags, and publish dates. Ideal for influencer research, content analysis, competitor monitoring, and social media data collection.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

10 days ago

Last modified

Share

Instagram Post Scraper — Captions, Media and Creator Profile Data

Scrape Instagram posts by profile URL, username, or post shortcode and get typed JSON back — caption, media URLs, like_count/comment_count, and the post author's public creator profile (creatorBio, creatorFollowersCount, creatorEmail when published) attached to every row. Add a per-creator summary row with run-level averages. No login, no parsing — just structured JSON out of the box. Set your startUrls below and start a run.

What is Instagram Post Scraper With Creator Profiles?

It's an Apify Actor that scrapes public Instagram posts from a list of profile URLs, usernames, or post shortcodes, then enriches every post row with the author's public creator profile — fetched once per unique creator per run and cached, not re-fetched per post. It also writes one aggregate creatorSummary row per unique profile. No Instagram account or login is required — the Actor reads Instagram's public, logged-out surfaces only. Built for creator/influencer researchers, growth and social teams, and developers feeding post-level and profile-level Instagram data into their own tools or AI agents.

What Instagram post and profile data is publicly available to scrape?

Instagram exposes a post's caption, media, and engagement counts, plus a creator's basic public profile, to anyone without logging in — this Actor only reads that surface.

Data categoryPublicly availableRestricted (behind login)
Post caption, media, shortcode
Post engagement (like_count, comment_count, play_count)
Creator bio, external link, verified/private flags
Creator follower/following counts
Creator business category, public email/phone, media count⚠️ shown only when the account's public profile surface exposes it
Full follower/following lists✅ requires login
Stories, Reels insights, direct messages✅ requires login

Instagram Post Scraper With Creator Profiles only returns publicly visible data — what any visitor sees. Nothing behind a login wall.

What data can I extract with Instagram Post Scraper With Creator Profiles?

Every post row carries identity/content fields, opt-in engagement and video fields, and — when enabled — the full creator profile; creatorSummary rows carry run-level aggregates instead.

Post identity and content fields

FieldDescription
typeRow type: "post" for a scraped post, "creatorSummary" for the per-creator aggregate row
isChildBoolean row flag; always false in the current output
codeInstagram's shortcode for the post
post_urlDirect permalink, built as https://www.instagram.com/p/{code}/
scraped_usernameThe username (from startUrls) this post was collected under
taken_atUnix timestamp the post was published on Instagram
scraped_atUnix timestamp this row was written by the Actor
captionRaw caption object from Instagram (text, plus embedded hashtags/mentions)
image_versions2Raw object with the post's image URLs at every resolution Instagram serves

Engagement and video metadata fields (opt-in)

FieldDescription
like_countLikes on the post — only present when includeEngagement is true
comment_countComments on the post — only present when includeEngagement is true
play_count, ig_play_count, view_count, fb_play_countView/play counts on video posts — only present when includeEngagement is true
share_count, has_liked, comment_likes_enabled, max_num_visible_preview_commentsAdditional engagement and comment-settings flags — only present when includeEngagement is true
video_versionsVideo URLs at every quality Instagram serves — only present when includeVideoMetadata is true
video_duration, video_codec, number_of_qualities, is_dash_eligible, video_dash_manifest, has_audio, clips_metadata, video_sticker_localesDetailed video metadata — only present when includeVideoMetadata is true

Creator profile fields (attached when includeCreatorProfile is true)

FieldDescription
creatorUserIdCreator's numeric Instagram user ID
creatorUsernameCreator's username
creatorFullNameCreator's display name
creatorBioCreator's public biography text
creatorExternalUrlThe link in the creator's bio
creatorBusinessCategoryBusiness/creator category name — null when the public profile view doesn't expose it for that account
creatorIsBusinessAccountWhether the account is registered as a business account
creatorEmailPublic business email — null when not published or not exposed by the public view
creatorPhonePublic business phone, with country code when both are present — null when not published or not exposed
creatorFollowersCountCreator's follower count
creatorFollowingCountCreator's following count
creatorMediaCountCreator's total post count — null when not exposed by the public view
creatorIsVerifiedWhether the creator has the verified badge
creatorIsPrivateWhether the creator's account is private
creatorProfilePicUrlURL of the creator's profile picture

creatorSummary rows carry the same creator fields plus postsCollectedThisRun, avgLikesThisRun, and avgCommentsThisRun — see Output for the exact shape.

⚠️ Real constraint: creatorBusinessCategory, creatorEmail, creatorPhone, and creatorMediaCount are attempted on every profile fetch, but the account's public, logged-out profile view frequently doesn't expose them — in that case they come back null. The Actor never fabricates a value for a field Instagram didn't return.

This Actor ships without a field allowlist, so every other key Instagram's private feed endpoint attaches to the raw post object also passes through unfiltered — the exact extra keys vary by post and by what Instagram's endpoint currently returns.

🤖 Add-on: Need additional Instagram data?

Pair this Actor with ../../Instagram-Profile-Post-Scraper/Instagram-Profile-Post-Scraper for pinned-post handling and latest comments, or ../../Instagram-Story-Details-Scraper/Instagram-Story-Details-Scraper for story-level data from a logged-in session.

How does Instagram Post Scraper With Creator Profiles differ from the official Instagram API?

The Instagram Graph API only lets an app read the data of the Business or Creator account it's connected to (plus limited Business Discovery lookups of other Business/Creator accounts) — it cannot read arbitrary public profiles or personal accounts the way this Actor can.

FeatureInstagram Graph APIInstagram Post Scraper With Creator Profiles
Accounts you can readYour own connected Business/Creator account, or limited Business Discovery lookups of other Business/Creator accountsAny public profile, username, or post shortcode you list
Personal (non-Business/Creator) accountsNot supported — "cannot access Instagram consumer accounts" (Meta developer docs, checked 2026-07-30)Supported
SetupFacebook Developer app, connected Business/Creator account, OAuth login flowAdd a URL/username list and run the Actor
ApprovalApp Review required for most permissions and features (Meta developer docs, checked 2026-07-30)No approval process
Rate limits4,800 calls per 24 hours × impressions for Instagram Business Use Case endpoints (Meta developer docs, checked 2026-07-30)No published Actor-side call limit; output is bounded by maxPosts (up to 1,000 per profile)
Creator profile enrichmentOnly for your own account or discoverable Business/Creator accountsAttached automatically to every post, for any username

Use the Graph API when you're building a first-party app that manages or publishes to your own connected Instagram Business account. Use this Actor when you need public post and creator data across profiles you don't control, without app review or a Business/Creator account requirement.

How to use Instagram Post Scraper With Creator Profiles

No signup flow beyond an Apify account — configure the input and run it from the Console.

  1. Open the Actor on its Apify Store listing and click Try for free (or Run, if you already have it).
  2. Add one or more profile URLs, usernames, or post shortcodes to startUrls — the only required field.
  3. Set maxPosts and, optionally, a date filter under Time Frame.
  4. Leave includeCreatorProfile and includeCreatorSummary on (both default true) for the enriched dataset, or toggle includeEngagement / includeVideoMetadata for extra per-post fields, and set proxyConfiguration.
  5. Start the run.
  6. Download results as JSON, CSV, Excel, HTML, or XML from the run's dataset, or stream them via the Apify API.

How to scale to bulk post extraction

startUrls is an array (stringList editor), so one run can hold any number of profile URLs, usernames, and post shortcodes mixed together. The Actor processes each entry in order, pausing 2 seconds between profiles; there is no separate "bulk" input mode — just add more entries to the same list.

What can you do with Instagram post and creator data?

  • 📈 Growth/social analysts tracking competitor accounts use like_count, comment_count, and taken_at to benchmark posting cadence and engagement trend across a set of profiles in one run.
  • 🤝 Creator marketing managers sourcing collaboration candidates use creatorFollowersCount and creatorBio to shortlist accounts before outreach.
  • 📇 Lead-gen and business researchers use creatorEmail and creatorPhone (when the account publishes them) alongside creatorBusinessCategory to build outreach lists from public business profiles.
  • 🔍 Content auditors compare postsCollectedThisRun and avgLikesThisRun on creatorSummary rows against individual post performance to spot outlier posts.
  • 🤖 AI engineers feed caption text and creatorBio/creatorFullName into a vector store to ground a RAG agent that answers questions about a set of creators' recent output.

Because results are typed JSON reachable over the Apify API, any agent framework that can make an HTTP call can pull this data straight into its context.

How does Instagram Post Scraper With Creator Profiles handle rate limits and blocking?

Every request — profile page, post feed, and creator-profile lookup — runs through Apify Proxy; a proxy group you select is used exactly as configured, and if none is set the Actor defaults to the RESIDENTIAL group rather than falling back to a datacenter pool. The feed-page and token requests each retry up to 3 times with a growing back-off on network errors or timeouts, and the creator-profile HTML fetch retries up to 3 times with a fixed delay. The creator-profile fetch also uses a full modern-Chrome header set (not just a user agent), because Instagram serves an anonymous login splash page to a bare header set on that endpoint. The Actor does not solve CAPTCHAs. If a profile can't be authenticated or a shortcode can't be resolved after retries, that entry is logged and skipped — the run continues with the rest of startUrls rather than failing entirely.

⬇️ Input

ParameterRequiredTypeDescriptionExample value
startUrlsYesarray (string list)Instagram profile URLs (e.g. https://www.instagram.com/username), usernames, or post shortcodes. Auto-detected; shortcodes resolve to their author's username.["https://www.instagram.com/cristiano/"]
maxPostsNointeger (min 1, max 1000, default 10)Maximum number of posts to scrape per profile.20
dateFilterTypeNostring, enum: "absolute" (Absolute date (YYYY-MM-DD)), "relative" (Relative range, e.g. 7d, 2w, 3m, 1y) — default "relative"Which date-filter mode filterDate uses."relative"
filterDateNostring, default ""With absolute, a calendar date (YYYY-MM-DD); with relative, a value like 7d, 2w, 3m, 1y. Empty skips the date filter."30d"
includeCreatorProfileNoboolean, default trueFetch each post author's public profile once per unique creator per run (cached) and attach it to every post row from that creator.true
includeCreatorSummaryNoboolean, default trueAdd one extra creatorSummary row per unique profile in this run's results, with aggregate stats.true
includeEngagementNoboolean, default falseInclude per-post engagement metrics (likes, views, comment count, share settings).true
includeVideoMetadataNoboolean, default falseInclude detailed video metadata (duration, quality variants, codec) on video/reel posts.false
proxyConfigurationNoobject (proxy editor)Proxy used for every request (profile HTML, post feed, creator-profile lookup). Residential proxy is strongly recommended. This selection is actually used by the run.{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}

Example input

{
"startUrls": ["https://www.instagram.com/nasa/", "therock"],
"maxPosts": 20,
"dateFilterType": "relative",
"filterDate": "30d",
"includeCreatorProfile": true,
"includeCreatorSummary": true,
"includeEngagement": true,
"includeVideoMetadata": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

⬆️ Output

Every post and every creatorSummary row is written to the dataset as a typed JSON object as soon as it's collected — no batching, no post-run assembly step. Download results as JSON, CSV, Excel, HTML, or XML, or pull them with the Apify API/apify_client.

Example output

[
{
"type": "post",
"isChild": false,
"code": "DO8fSwLiNU-",
"post_url": "https://www.instagram.com/p/DO8fSwLiNU-/",
"scraped_username": "nasa",
"taken_at": 1758631325,
"scraped_at": 1758631400,
"caption": { "text": "New images from the Perseverance rover. #Mars #NASA" },
"like_count": 412330,
"comment_count": 2841,
"creatorUserId": "528817151",
"creatorUsername": "nasa",
"creatorFullName": "NASA",
"creatorBio": "Explore the universe and discover our home planet.",
"creatorExternalUrl": "https://www.nasa.gov/",
"creatorBusinessCategory": null,
"creatorIsBusinessAccount": true,
"creatorEmail": null,
"creatorPhone": null,
"creatorFollowersCount": 97800000,
"creatorFollowingCount": 76,
"creatorMediaCount": 4213,
"creatorIsVerified": true,
"creatorIsPrivate": false,
"creatorProfilePicUrl": "https://instagram.example.com/nasa_profile.jpg"
},
{
"type": "creatorSummary",
"isChild": false,
"creatorUserId": "528817151",
"creatorUsername": "nasa",
"creatorFullName": "NASA",
"creatorBio": "Explore the universe and discover our home planet.",
"creatorFollowersCount": 97800000,
"creatorFollowingCount": 76,
"creatorMediaCount": 4213,
"creatorIsVerified": true,
"creatorIsPrivate": false,
"postsCollectedThisRun": 20,
"avgLikesThisRun": 305412.15,
"avgCommentsThisRun": 1893.4,
"scraped_at": 1758631400
}
]

How does it work?

Instagram Post Scraper With Creator Profiles requests Instagram's own public, logged-out surfaces — the profile page HTML and the post-feed endpoint the Instagram web app itself uses — through Apify Proxy, never the official Graph API. Each surface gets a header set matched to what that endpoint expects (a fuller modern-Chrome header set is required for the profile-page fetch, since a bare user agent gets served an anonymous login shell instead of the real page), and failed requests retry automatically with a back-off before being logged and skipped. Only publicly visible pages are read; no login or cookies are used. The fields this Actor adds itself — type, post_url, scraped_username, scraped_at, and every creator* field — stay consistent across runs regardless of Instagram UI changes; raw fields Instagram's own endpoint attaches to a post pass through as Instagram returns them.

Integrations

Instagram Post Scraper With Creator Profiles runs on the Apify platform, so it works with anything that can call the Apify API.

Calling Instagram Post Scraper With Creator Profiles programmatically

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_API_TOKEN>")
run = client.actor("instagram-posts-scraper-with-creator-profiles").call(run_input={
"startUrls": ["https://www.instagram.com/nasa/"],
"maxPosts": 20,
"includeCreatorProfile": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.

No-code tools (n8n, Make, LangChain)

In n8n, use the HTTP Request node against Apify's run-sync-get-dataset-items endpoint for this Actor to get results back in the same workflow step. In Make, use the Apify app's run-actor module, passing this Actor's ID and your input JSON. In LangChain, use the ApifyWrapper/ApifyDatasetLoader integration to run this Actor and load its dataset directly into a chain or vector store.

Scraping publicly available data — what any logged-out visitor can see — is generally permitted, and Instagram Post Scraper With Creator Profiles only returns that: post captions, media, engagement counts, and the public profile fields a creator has chosen to show. Because creator profile fields (bio, follower counts, and — when published — email/phone) can be personal data, GDPR and CCPA govern how you store and use it once collected, separately from whether the collection itself was permitted. Consult legal counsel if your use case involves bulk storage of personal data.

❓ Frequently asked questions

What Instagram post and creator profile fields does this Actor return?

It returns caption, like_count, comment_count, post_url, and the full creator* profile block (bio, follower/following counts, verified status, and more) on every post row — see What data can I extract for the complete list.

Does Instagram Post Scraper With Creator Profiles require an Instagram account or login?

No. The Actor reads Instagram's public, logged-out profile page and feed endpoints through Apify Proxy — no username, password, or session is accepted as input.

How many posts can I extract in one run?

Up to 1,000 posts per profile (the maxPosts maximum), and startUrls accepts any number of profiles in a single run — so total output scales with how many entries you list.

What happens if a profile is private or doesn't exist?

The Actor logs the entry as unresolvable (Cannot authenticate or Failed to extract tokens) and skips it — no post rows are pushed and nothing is charged for that profile, but the run continues processing the rest of startUrls. Check the run log for which usernames were skipped.

Can I scrape multiple Instagram profiles at once?

Yes. List multiple profile URLs, usernames, or shortcodes in startUrls; each is processed in turn in the same run.

Does Instagram Post Scraper With Creator Profiles work with Claude, ChatGPT, and other AI agent tools?

It's callable as an HTTP endpoint via the Apify API, so any agent framework that can make an API call — including apify_client-based tools — can trigger a run and read the resulting dataset.

What makes this different from a plain Instagram post scraper?

Most post scrapers stop at the post: caption, media, and engagement counts. This Actor additionally fetches each post author's public profile once per run and attaches it (creatorBio, creatorFollowersCount, creatorEmail/creatorPhone when published) to every post from that creator, and adds a creatorSummary row with run-level averages per profile — so you get creator context alongside the posts without a separate lookup step.

Does Instagram Post Scraper With Creator Profiles return data in a format LLMs can use directly?

Yes. Output is typed, normalized JSON with consistent field names across runs — no HTML parsing or selectors needed. Pass it directly to an LLM, index it in a vector store, or feed it to an agent tool.

What happens when Instagram changes its layout or anti-bot system?

The Actor is maintained, and the fields it adds itself keep the same names and types across runs. No specific update turnaround time is promised.

Can I use Instagram Post Scraper With Creator Profiles without managing proxies or browser infrastructure?

Yes. Apify Proxy handles IP rotation for every request the Actor makes; you only choose the proxy group in proxyConfiguration.

Which fields work best for AI training data and RAG indexing?

For RAG, index caption, creatorBio, and creatorFullName — the highest-information text fields. For training data, creatorFollowersCount, like_count, comment_count, and creatorIsVerified return as consistently typed primitives (integers/booleans) across every row.

ScraperWhat it extracts
../../Instagram-Profile-Post-Scraper/Instagram-Profile-Post-ScraperInstagram posts with pinned-post handling and latest comments
../../Instagram-Story-Details-Scraper/Instagram-Story-Details-ScraperInstagram story details via a logged-in session
../../../TikTok-User-Profile-Scraper/tiktok-user-profile-scraper-with-engagement-analyticsTikTok profile data with engagement analytics
../../../Snapchat-User-Stories-Scraper/Snapchat-User-Stories-ScraperPublic Snapchat stories and highlights

💬 Your feedback

Found a bug or missing a field? Let us know via the Issues tab on this Actor's Apify Console page — it's the fastest way to reach the maintainer directly.