Instagram Profile Post Scraper avatar

Instagram Profile Post Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Instagram Profile Post Scraper

Instagram Profile Post Scraper

Scrape Instagram profile posts with ease 📸📊 Extract captions, hashtags, likes, comments, post URLs, timestamps, and media from public profiles. Perfect for competitor research, content analysis, influencer tracking, and trend discovery. Get Instagram insights fast 🚀

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

ScrapAPI

ScrapAPI

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

2

Monthly active users

13 days ago

Last modified

Share

Instagram Profile Post Scraper

Instagram Profile Post Scraper is a fast, reliable Instagram profile posts scraper that extracts public posts from any Instagram account — including images, videos, carousels, captions, hashtags, mentions, and engagement metrics — into structured datasets. It solves the painful, manual process of collecting Instagram user posts by turning profile feeds into clean records you can export or integrate. Built for marketers, developers, data analysts, and researchers, this IG profile post scraper scales from a single handle to bulk monitoring, enabling trend discovery, competitor analysis, and content intelligence at speed.

What data / output can you get?

Below are the real output fields this Instagram profile post extractor pushes to the Apify dataset. Values may vary depending on the extraction path (profile-page HTML vs. API fallback).

Data typeDescriptionExample value
idPost identifier (sometimes combined with user pk)"3776048697886076245_2535829435"
shortcodePost shortcode used in the public URL"DRnOEjME21V"
urlCanonical post URL"https://www.instagram.com/p/DRnOEjME21V/"
post_urlDuplicate of url for convenience"https://www.instagram.com/p/DRnOEjME21V/"
typeMedia type (Image, Video, Carousel)"Video"
product_typeInstagram product type (e.g., clips for reels)"clips"
is_video / is_carouselBoolean flags for mediatrue
is_pinnedWhether the post is pinned (first-page detection)false
captionPost caption text"Match day essentials. @brand #sponsored"
hashtags / mentionsArrays parsed from caption["sponsored"] / ["brand"]
likes_count / comments_countEngagement counts996806 / 5024
views_countVideo views when available1203942
taken_at_timestampUnix timestamp of posting time1764360143
posted / date / crawled_atHuman-readable, ISO dates"01 Jan 2026, 12:00:00 pm" / "2026-01-01T12:00:00Z" / "2026-01-02T08:15:30Z"
display_url / thumbnail / imageMain image URL"https://.../n.jpg"
image_links / video_linksArrays of media URLs["https://.../n.jpg"]
images / video_versionsArrays with width, height, url, type[{"url":"https://...%22,%22width%22:1080,%22height%22:1350}]
dimensionsWidth/height of the post{"width":2160,"height":3840}
carousel_media / carousel_media_countFull carousel objects and count3
usertagsUser tags object when present{"in":[...]}
ownerOwner summary (id, username){"id":"2535829435","username":"cristiano"}
userDetailed user (pk/id/username, profile_pic_url, verified/private){"pk":"2535829435","username":"cristiano",...}
account_username / account_verified / account_profile_pictureConvenience account fields"cristiano" / true / "https://...jpg"
from_urlProfile URL the post came from"https://www.instagram.com/cristiano/"
clips_metadataAudio and clips (reels) metadata when available{ "audio_type":"original_sounds", ... }
commentsArray of extracted comments when present[{ "id":"...", "text":"...", "user":{...} }]
latest_commentsTruncated subset of comments for quick reads[{...}]
accessibility_captionAlt text when availablenull

Note: You can export your dataset to CSV, JSON, or Excel directly from Apify.

Key features

  • 📌 Pinned post control (pinnedMode) Choose how pinned posts are handled per profile: include, skip, or only pinned posts. This gives precise control for benchmarking and “scrape Instagram profile posts” workflows.

  • ⏱️ Date-based filtering (recent) Filter posts by an absolute date (YYYY-MM-DD) or a relative range like “3 days”, “2 weeks”, or “1 month” to keep datasets fresh.

  • 🔗 Flexible inputs Add Instagram profile URLs, plain usernames, or post shortcodes in startUrls; the actor normalizes these into usernames automatically.

  • 🖼️ Rich media support Captures images, videos, and carousels with display URLs, variants, and dimensions — ideal for an Instagram profile media scraper or Instagram profile post downloader workflow.

  • 🔍 Structured text extraction Extracts captions with hashtags and mentions arrays for content analysis, competitor tracking, and trend discovery.

  • 📊 Engagement metrics Collect likes, comments, and views (where available) for straightforward performance benchmarking.

  • 💬 Comment snapshots (when present) Outputs comments and latest_comments arrays when available on the item, providing quick qualitative context.

  • 🧰 Built for reliability Starts with lightweight profile-page extraction and falls back to a robust API-based approach, using residential proxies by default for stability.

  • 🔌 Integration-friendly Results stream to the Apify dataset in real time, making this an Instagram profile posts export tool you can pull into pipelines (e.g., “Instagram profile posts to CSV”, BI, or warehouses).

  • 🧪 Developer-ready Trigger via Apify API, schedule, and automate from Node.js or Python scripts — perfect for an Instagram profile post scraper API or “Instagram profile post scraper Python” integration.

How to use Instagram Profile Post Scraper - step by step

  1. Sign up or log in to Apify.
  2. Open the “Instagram Profile Post Scraper” actor in the Apify Store.
  3. Add input in Start URLs:
  4. Configure limits and filters:
    • maxPosts: Set how many posts to scrape per profile (0 = unlimited, use with care).
    • pinnedMode: Choose include, skip, or only pinned posts.
    • recent: Filter by date (YYYY-MM-DD) or relative values like “2 weeks”.
  5. (Optional) Configure proxyConfiguration:
    • Residential proxies are recommended for Instagram. The actor prefers residential by default for reliability.
  6. Start the run:
    • The actor normalizes inputs, fetches posts, and streams results to the dataset in real time.
  7. Download or integrate results:
    • Export your dataset as JSON, CSV, or Excel, or connect via the Apify API for downstream automation.

Pro tip: Use Apify’s scheduling and API to keep your Instagram account posts scraper updated and feed your dashboards or analytics models automatically.

Use cases

Use caseDescription
Competitor analysis for marketersMonitor posting cadence, media mix, and engagement to benchmark performance and spot winning formats.
Influencer tracking for partnershipsCollect public posts from creator profiles to validate authenticity, content fit, and audience engagement.
Content research for editorsExtract captions, hashtags, and mentions to build topic clusters and trend analyses at scale.
Campaign reporting for agenciesExport structured posts to CSV and aggregate likes/comments/views for clear before/after impact.
Academic & social researchAnalyze public discourse by studying captions and comments across public accounts.
Data engineering pipelineRun the Instagram profile post scraper API from CI/ETL to enrich datasets programmatically.
Brand monitoring & UGCTrack mentions and relevant hashtags across public profiles to surface opportunities and risks.

Why choose Instagram Profile Post Scraper?

Precision, automation, and scalable reliability — purpose-built for structured Instagram profile feed scraping.

  • ✅ Accurate, structured fields: Clean JSON with consistent keys for analysis-ready datasets.
  • 🚀 Scales from one to many: Batch multiple profiles with post caps and date filters to control cost and volume.
  • 🧠 Developer access: Run via Apify API, integrate with Python/Node.js, and automate end-to-end.
  • 🛡️ Robust proxy strategy: Prefers residential proxies by default for dependable Instagram scraping.
  • 🔄 Resilient workflow: Starts with profile-page extraction and gracefully falls back to API-based pagination.
  • 💸 Export-ready: Use Apify dataset exports (CSV/JSON/Excel) to plug into BI tools or warehouses.
  • 🧩 Built for pipelines: Ideal for workflow automation across marketing, research, and analytics stacks.

Bottom line: a production-ready Instagram account posts scraper — not a brittle browser extension.

Is it legal / ethical to use Instagram Profile Post Scraper?

Yes — when used responsibly. This actor collects publicly available content from Instagram profiles. It does not access private profiles or authenticated/private data.

Guidelines for compliant use:

  • Collect only public data and respect platform terms.
  • Ensure a lawful basis for processing (e.g., legitimate interest) under GDPR/CCPA and applicable laws.
  • Store and handle data securely.
  • Verify edge cases with your legal team if you’re unsure.

Input parameters & output format

Example input JSON

{
"startUrls": [
"https://www.instagram.com/cristiano/",
"mrbeast",
"ABC123DEF"
],
"maxPosts": 10,
"pinnedMode": "include",
"recent": "2 weeks",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}
ParameterTypeRequiredDefaultDescription
startUrlsarrayYesList one or more Instagram profile URLs, plain usernames, or post shortcodes. Normalized into usernames automatically.
maxPostsintegerNo10How many posts to scrape per profile. Set to 0 for unlimited posts.
pinnedModestring (enum: include, skip, only)No"include"How to handle pinned posts on the first page.
recentstringNoDate filter to keep results fresh. Accepts YYYY-MM-DD or relative values like “3 days”, “2 weeks”, or “1 month”.
proxyConfigurationobjectNoConfigure proxies. Residential proxies are recommended for Instagram scraping.

Example output (profile-page extraction)

{
"id": "3776048697886076245",
"shortcode": "DRnOEjME21V",
"taken_at_timestamp": 1764360143,
"display_url": "https://scontent.cdninstagram.com/v/t51.82787-15/587802055_n.jpg",
"is_video": true,
"likes_count": 996806,
"comments_count": 5024,
"caption": "Ronaldo vs my goalie robot! #sponsored",
"accessibility_caption": null,
"dimensions": {
"height": 3840,
"width": 2160
},
"owner": {
"id": "2535829435",
"username": "cristiano"
},
"url": "https://www.instagram.com/p/DRnOEjME21V/",
"scraped_at": "2026-03-01T07:07:19.094367"
}

Example output (API-based extraction)

{
"id": "3776048697886076245_2535829435",
"pk": "3776048697886076245",
"shortcode": "DRnOEjME21V",
"url": "https://www.instagram.com/p/DRnOEjME21V/",
"post_url": "https://www.instagram.com/p/DRnOEjME21V/",
"type": "Video",
"product_type": "clips",
"is_video": true,
"is_carousel": false,
"is_pinned": false,
"has_audio": true,
"posted": "01 Jan 2026, 12:00:00 pm",
"taken_at_timestamp": 1764360143,
"date": "2026-01-01T12:00:00Z",
"crawled_at": "2026-01-02T08:15:30Z",
"caption": "Game on. @brand #sponsored",
"accessibility_caption": null,
"hashtags": ["sponsored"],
"mentions": ["brand"],
"usertags": null,
"likes_count": 996806,
"like_count": 996806,
"comments_count": 5024,
"comment_count": 5024,
"views_count": 1203942,
"view_count": 1203942,
"video_duration": 29.7,
"video_links": ["https://video.cdninstagram.com/v/t50.2886-16/vid.mp4"],
"video_versions": [
{ "width": 720, "height": 1280, "url": "https://video.cdninstagram.com/720.mp4", "type": 101 },
{ "width": 540, "height": 960, "url": "https://video.cdninstagram.com/540.mp4", "type": 102 }
],
"display_url": "https://scontent.cdninstagram.com/v/t51.2885-15/e35/12345_n.jpg",
"thumbnail": "https://scontent.cdninstagram.com/v/t51.2885-15/e35/12345_n.jpg",
"image": "https://scontent.cdninstagram.com/v/t51.2885-15/e35/12345_n.jpg",
"image_links": ["https://scontent.cdninstagram.com/v/t51.2885-15/e35/12345_n.jpg"],
"images": [
{ "url": "https://scontent.cdninstagram.com/1080.jpg", "width": 1080, "height": 1350 }
],
"dimensions": { "width": 2160, "height": 3840 },
"carousel_media_count": null,
"carousel_media": null,
"coauthor_producers": [],
"owner": {
"id": "2535829435",
"pk": "2535829435",
"username": "cristiano",
"profile_pic_url": "https://scontent.cdninstagram.com/u/2535.jpg",
"is_verified": true,
"is_private": false
},
"user": {
"pk": "2535829435",
"id": "2535829435",
"username": "cristiano",
"full_name": "Cristiano Ronaldo",
"profile_pic_url": "https://scontent.cdninstagram.com/u/2535.jpg",
"hd_profile_pic_url_info": { "url": "https://scontent.cdninstagram.com/u/2535_hd.jpg" },
"is_verified": true,
"is_private": false
},
"account_username": "cristiano",
"account_verified": true,
"account_profile_picture": "https://scontent.cdninstagram.com/u/2535.jpg",
"from_url": "https://www.instagram.com/cristiano/",
"clips_metadata": {
"audio_type": "original_sounds",
"achievements_info": { "num_earned_achievements": 0, "show_achievements": false },
"music_info": null,
"original_sound_info": {
"original_audio_title": "Original audio",
"should_mute_audio": false,
"audio_asset_id": "123456789",
"attributed_custom_audio_asset_id": null,
"formatted_clips_media_count": null,
"trend_rank": null,
"previous_trend_rank": null,
"overlap_duration_in_ms": null,
"audio_asset_start_time_in_ms": null,
"derived_content_start_time_in_composition_in_ms": null,
"audio_filter_infos": [],
"audio_parts": [],
"audio_parts_by_filter": [],
"consumption_info": {
"display_media_id": "3776048697886076245",
"is_bookmarked": false,
"is_trending_in_clips": false,
"should_mute_audio_reason": "",
"should_mute_audio_reason_type": null,
"inline_audio_label": null,
"user_notes": null
},
"ig_artist": null,
"is_explicit": false
}
},
"comments": [
{
"id": "1001",
"text": "🔥🔥🔥",
"created_at": 1764361143,
"created_at_utc": 1764361143,
"user": {
"pk": "42",
"username": "fanaccount",
"full_name": "Big Fan",
"profile_pic_url": "https://scontent.cdninstagram.com/u/42.jpg",
"is_verified": false,
"is_private": false
},
"comment_like_count": 12,
"has_liked_comment": false
}
],
"latest_comments": [
{
"id": "1001",
"text": "🔥🔥🔥",
"created_at": 1764361143,
"created_at_utc": 1764361143,
"user": {
"pk": "42",
"username": "fanaccount",
"full_name": "Big Fan",
"profile_pic_url": "https://scontent.cdninstagram.com/u/42.jpg",
"is_verified": false,
"is_private": false
},
"comment_like_count": 12,
"has_liked_comment": false
}
]
}

Tip: Some fields may be null or omitted when not present on the source item (e.g., clips_metadata, views_count, usertags).

FAQ

Is there a free Instagram profile post scraper option?

Yes. You can start on Apify’s free tier to test small runs within trial limits before upgrading. This is ideal to validate your inputs and dataset fields.

Can it scrape private Instagram accounts?

No. The actor processes public profiles only. If a profile is private or inaccessible, no posts will be returned.

Does it work as an Instagram profile post scraper API?

Yes. You can run this actor via the Apify API, pass input JSON programmatically, and fetch results from the dataset for integration into pipelines.

Can I export Instagram profile posts to CSV?

Yes. After the run, open the dataset and export to CSV, JSON, or Excel directly from Apify.

What inputs does it accept — URLs, usernames, or shortcodes?

All three. Provide profile URLs, plain usernames, or post shortcodes in startUrls; the actor normalizes them into usernames automatically.

How do pinned posts work?

Use pinnedMode to include pinned posts, skip them, or fetch only pinned posts when available. This helps focus on evergreen or recent content.

Can I filter for recent posts only?

Yes. Use the recent field with an absolute date (YYYY-MM-DD) or a relative time like “3 days”, “2 weeks”, or “1 month” to limit results.

Does it support Python automation?

Yes. Trigger runs and pull datasets using Apify’s REST API from Python or Node.js, making it easy to build a “Instagram profile post scraper Python” workflow.

Final thoughts

Instagram Profile Post Scraper is built to turn Instagram profile feeds into clean, analysis-ready records. With flexible inputs, pinned post controls, date filtering, and reliable media/engagement extraction, it fits marketers, researchers, and developers alike. Run it via the Apify API for automated pipelines, and export your Instagram user posts scraper results to CSV/JSON/Excel for immediate use. Start extracting smarter Instagram insights at scale today.