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

Instagram Profile Post Scraper extracts posts from Instagram profiles. 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

$19.99/month + usage

Rating

0.0

(0)

Developer

ScrapeBase

ScrapeBase

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Share

Instagram Profile Post Scraper

Instagram Profile Post Scraper is a fast, reliable Instagram profile post scraper that extracts public posts from any Instagram account β€” captions, media URLs, engagement, timestamps, hashtags, mentions, and more. It solves the challenge of turning an Instagram timeline into structured records you can analyze and export. Built for marketers, developers, data analysts, and researchers, it helps you scrape Instagram profile posts at scale for influencer research, competitor tracking, content analysis, and reporting.

What data / output can you get?

Get structured, analysis-ready post data with consistent field names. Results are pushed per post to the Apify dataset and can be exported to CSV, JSON, or Excel.

Data typeDescriptionExample value
idUnique post identifier (string)"3776048697886076245_2535829435"
shortcodePost shortcode used in URL"DRnOEjME21V"
url / post_urlCanonical post URL"https://www.instagram.com/p/DRnOEjME21V/"
typePost type (Image, Video, Carousel)"Video"
is_videoVideo flagtrue
is_carouselCarousel flagfalse
captionPost caption text"Ronaldo vs My Goalie Robot..."
hashtagsHashtags parsed from caption["sponsored"]
mentionsMentions parsed from caption["tmobile", "cristiano"]
likes_count / like_countTotal likes996806
comments_count / comment_countTotal comments5024
views_count / view_countVideo views when available1234567
taken_at_timestampUNIX timestamp (seconds)1764360143
postedHuman-readable timestamp"29 Nov 2025, 07:02:23 am"
dateISO timestamp with Z suffix"2025-11-29T07:02:23Z"
display_urlPrimary image/video thumbnail URL"https://scontent...n.jpg"
image_linksAll image URLs (single or carousel)["https://scontent...1.jpg", "..."]
video_linksAvailable video URLs["https://scontent...mp4"]
dimensionsOriginal width/height{"width": 2160, "height": 3840}
is_pinnedPinned post flag (when detected)true
product_typeMedia product type (e.g., "clips" for reels)"clips"
owner.usernameAccount username"cristiano"
user.pkOwner user PK"2535829435"
commentsExtracted comment snapshots[{ "id": "...", "text": "...", ... }]
latest_commentsLatest comments subset[{ "id": "...", "text": "...", ... }]
crawled_at / scraped_atWhen the record was saved"2025-11-29T07:07:19.094367"

Notes:

  • Depending on the extraction path (profile-page parsing vs API fallback), items may include additional metadata such as post_url, images, video_versions, carousel_media, usertags, account profile info, and clips_metadata.
  • Exports are available directly from the Apify dataset in JSON, CSV, or Excel.

Key features

  • πŸš€ Batch scraping at scale β€” Add many profile URLs, usernames, or post shortcodes and process them in one run. Perfect for bulk download Instagram posts workflows.
  • πŸ“Œ Pinned posts control β€” Choose how to handle pinned posts with pinnedMode: include, skip, or only for precise timeline analysis.
  • πŸ—“οΈ Freshness filtering β€” Use recent to fetch only new posts by absolute date (YYYY-MM-DD) or relative ranges like β€œ3 days”, β€œ2 weeks”, or β€œ1 month”.
  • 🎞️ Media-aware extraction β€” Automatically captures images, videos, carousels, and reels (product_type "clips") with media URLs and dimensions.
  • πŸ’¬ Comment snapshots β€” Returns comments and latest_comments arrays when available to enrich sentiment and engagement analysis.
  • πŸ“Š Engagement & metadata β€” Collect likes, comments, views (for videos), hashtags, mentions, timestamps, and ownership details.
  • πŸ”Œ Developer-friendly β€” As an Apify actor, results stream to a dataset you can access via API, Webhooks, or SDKs; easily export Instagram posts to CSV/JSON/Excel.
  • πŸ›‘οΈ Proxy-ready & resilient β€” Designed for reliable Instagram public profile scraping with residential proxies recommended (and used internally).

How to use Instagram Profile Post Scraper - step by step

  1. Create or log in to your Apify account.
  2. Open the Instagram Profile Post Scraper in the Apify Store.
  3. Add input:
  4. Configure options:
    • maxPosts: How many posts to scrape per profile (set 0 for unlimited).
    • pinnedMode: include, skip, or only to control pinned posts.
    • recent: Filter by absolute date (YYYY-MM-DD) or relative time (e.g., "2 weeks").
    • proxyConfiguration: Use Apify Residential proxies for best reliability (recommended).
  5. Start the run:
    • Click Start; the scraper will normalize inputs, fetch the timeline, and stream posts to the dataset in real time.
  6. Monitor progress:
    • Logs will show per-profile progress, pagination, pinned detection, and any date filtering applied.
  7. Export results:
    • Download JSON, CSV, or Excel from the run’s Dataset tab, or access programmatically via the Apify API.

Pro Tip: For recurring reporting and incremental updates, schedule the actor and set recent to a rolling window (e.g., "7 days") to scrape Instagram user feed updates without reprocessing older posts.

Use cases

Use caseDescription
Influencer research & benchmarkingTrack posting cadence, format mix (reels vs images), and engagement to evaluate partnerships.
Competitor content analysisCompare themes, hashtags, and media types to inform your content strategy and creative testing.
Campaign performance reportingAggregate likes, comments, and views across posts for before/after impact analysis.
Market & consumer researchMine captions and comment snapshots to surface voice-of-customer insights and trending topics.
Brand monitoring & UGC trackingWatch mentions and tagged content across public profiles and archive creative references.
Data science & modelingFeed structured timelines into notebooks for topic modeling, forecasting, or entity extraction.
Bulk download Instagram postsExport Instagram posts to CSV/JSON/Excel for downstream dashboards and BI pipelines.
Instagram profile data scraper for pipelinesAutomate end-to-end ingestion into warehouses or CRMs using the Apify dataset API.

Why choose Instagram Profile Post Scraper?

Built for precision and scale, this Instagram posts extractor combines robust extraction with production-ready performance.

  • βœ… Accurate, structured output: Clean JSON with consistent field names and rich metadata for each post.
  • ⚑ Scale with confidence: Queue many profiles and control per-profile limits; supports unlimited mode for deep historical pulls.
  • 🧠 Media & metadata depth: Handles images, videos, carousels, reels (clips), hashtags, mentions, and engagement metrics.
  • πŸ”Œ Developer access: Stream results to the Apify dataset and integrate via API or SDKs for automated pipelines.
  • πŸ›‘οΈ Public data only: Works on public Instagram profiles; residential proxies are recommended for reliability.
  • πŸ’Ύ Flexible exports: Download Instagram profile posts to CSV, JSON, or Excel directly from the run.
  • 🧱 Reliable infrastructure: Resilient HTTP logic with pagination, proxy handling, and real-time dataset writes.

In short, it’s an Instagram account media scraper engineered for automated, repeatable workflows β€” not a fragile browser extension.

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

Yes β€” when done responsibly. This tool collects publicly available content from Instagram public profiles and does not access private accounts.

Guidelines for compliant use:

  • Collect only public data and respect platform terms.
  • Be mindful that results may include personal data; ensure a lawful basis (e.g., legitimate interest) under applicable laws like GDPR/CCPA.
  • Do not attempt to scrape private profiles or circumvent login-protected content.
  • Consult your legal team for edge cases or specific jurisdictions.

Input parameters & output format

Example JSON input

{
"startUrls": [
"https://www.instagram.com/cristiano/",
"mrbeast",
"DRnOEjME21V"
],
"maxPosts": 25,
"pinnedMode": "include",
"recent": "2 weeks",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Input parameter details:

  • startUrls (array, required)
    • Description: Instagram profile URLs (e.g. https://www.instagram.com/username), plain usernames (e.g. username), or post shortcodes (e.g. ABC123DEF). The actor normalizes everything into usernames.
    • Default: none
  • maxPosts (integer, optional)
    • Description: How many posts to scrape per profile. Set to 0 for unlimited posts.
    • Default: 10
  • pinnedMode (string, optional)
    • Description: How to handle pinned posts. Options: "include" (default), "skip", "only".
    • Default: "include"
  • recent (string, optional)
    • Description: Filter by date. Accepts absolute date (YYYY-MM-DD) or relative values like "3 days", "2 weeks", "1 month".
    • Default: null
  • proxyConfiguration (object, optional)
    • Description: Configure proxies. Residential proxies are strongly recommended (and usually required) for reliable Instagram scraping.
    • Default prefill: {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}

Example JSON output (profile-page extraction)

{
"id": "3776048697886076245",
"shortcode": "DRnOEjME21V",
"taken_at_timestamp": 1764360143,
"display_url": "https://scontent-iad3-2.cdninstagram.com/v/t51.82787-15/587802055_18371174326085436_6013193979793540191_n.jpg",
"is_video": true,
"likes_count": 996806,
"comments_count": 5024,
"caption": "Ronaldo vs My Goalie Robot. Thanks to @tmobile for helping me get my latest invention ready to take on @cristiano at his own game! #sponsored",
"accessibility_caption": null,
"dimensions": {
"height": 3840,
"width": 2160
},
"owner": {
"id": "2535829435",
"username": "cristiano"
},
"url": "https://www.instagram.com/p/DRnOEjME21V/",
"scraped_at": "2025-11-29T07:07:19.094367"
}

Example JSON output (API fallback extraction with extended fields)

{
"id": "317654321_2535829435",
"pk": "317654321",
"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": "29 Nov 2025, 07:02:23 am",
"taken_at_timestamp": 1764360143,
"date": "2025-11-29T07:02:23Z",
"crawled_at": "2025-11-29T07:07:19Z",
"caption": "Ronaldo vs My Goalie Robot. Thanks to @tmobile ... #sponsored",
"accessibility_caption": null,
"hashtags": ["sponsored"],
"mentions": ["tmobile", "cristiano"],
"usertags": null,
"likes_count": 996806,
"like_count": 996806,
"comments_count": 5024,
"comment_count": 5024,
"views_count": 1234567,
"view_count": 1234567,
"video_duration": 17.2,
"video_links": ["https://scontent-iad3-2.cdninstagram.com/v/t50.2886-16/vid.mp4"],
"video_versions": [
{ "width": 720, "height": 1280, "url": "https://.../vid_720.mp4", "type": 101 },
{ "width": 1080, "height": 1920, "url": "https://.../vid_1080.mp4", "type": 102 }
],
"display_url": "https://scontent-iad3-2.cdninstagram.com/v/t51.82787-15/thumb.jpg",
"thumbnail": "https://scontent-iad3-2.cdninstagram.com/v/t51.82787-15/thumb.jpg",
"image": "https://scontent-iad3-2.cdninstagram.com/v/t51.82787-15/thumb.jpg",
"image_links": ["https://scontent-iad3-2.cdninstagram.com/v/t51.82787-15/thumb.jpg"],
"images": [
{ "url": "https://.../img_1.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://.../profile.jpg",
"is_verified": true,
"is_private": false
},
"user": {
"pk": "2535829435",
"id": "2535829435",
"username": "cristiano",
"full_name": "Cristiano Ronaldo",
"profile_pic_url": "https://.../profile.jpg",
"hd_profile_pic_url_info": { "url": "" },
"is_verified": true,
"is_private": false
},
"account_username": "cristiano",
"account_verified": true,
"account_profile_picture": "https://.../profile.jpg",
"from_url": "https://www.instagram.com/cristiano/",
"clips_metadata": {
"audio_type": "original_sounds",
"achievements_info": {
"num_earned_achievements": null,
"show_achievements": false
},
"music_info": null,
"original_sound_info": {
"original_audio_title": "Original audio",
"should_mute_audio": false,
"audio_asset_id": "1234567890",
"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": null,
"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": [],
"latest_comments": []
}

Note: Depending on availability and Instagram response shape, some optional fields (e.g., views_count, video_versions, usertags, clips_metadata) may be null or empty.

FAQ

Is there a free way to try it?

Yes. This listing includes trial minutes (e.g., 120 trial minutes) so you can validate results and workflows before committing to larger runs.

Do I need to log in to scrape Instagram profile posts?

No. The actor targets public Instagram profiles and does not require login. It uses HTTP requests and proxies to collect publicly available data.

Can it scrape private accounts?

No. Only public profiles are supported. If an account is private or unavailable, no posts will be returned.

Does it capture reels and carousels?

Yes. The extractor identifies videos, carousels, and reels (product_type "clips") and returns relevant media URLs and metadata.

How do I limit or filter the results?

Use maxPosts to control per-profile limits and recent to filter by absolute or relative dates (e.g., "2025-01-01", "2 weeks"). Set maxPosts to 0 for unlimited.

How are pinned posts handled?

Control this with pinnedMode: "include" (default), "skip", or "only" to include just pinned posts when present.

What formats can I export to?

All results are saved to the Apify dataset. You can export to JSON, CSV, or Excel from the run UI or programmatically via the Apify API.

What inputs are accepted for profiles?

Provide startUrls as Instagram profile URLs, plain usernames, or post shortcodes. The actor normalizes these into usernames automatically.

Final thoughts

Instagram Profile Post Scraper is built to turn Instagram timelines into structured, analysis-ready datasets. With pinned post controls, date filtering, media-aware extraction, and flexible exports, it’s ideal for marketers, analysts, and researchers who need to scrape Instagram user feed data reliably. Developers can automate end-to-end flows using the Apify dataset and API for dashboards, enrichment, or BI. Start extracting smarter Instagram insights at scale today.