Instagram Profile Post Scraper
Pricing
$19.99/month + usage
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
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 days ago
Last modified
Categories
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 type | Description | Example value |
|---|---|---|
| id | Unique post identifier (string) | "3776048697886076245_2535829435" |
| shortcode | Post shortcode used in URL | "DRnOEjME21V" |
| url / post_url | Canonical post URL | "https://www.instagram.com/p/DRnOEjME21V/" |
| type | Post type (Image, Video, Carousel) | "Video" |
| is_video | Video flag | true |
| is_carousel | Carousel flag | false |
| caption | Post caption text | "Ronaldo vs My Goalie Robot..." |
| hashtags | Hashtags parsed from caption | ["sponsored"] |
| mentions | Mentions parsed from caption | ["tmobile", "cristiano"] |
| likes_count / like_count | Total likes | 996806 |
| comments_count / comment_count | Total comments | 5024 |
| views_count / view_count | Video views when available | 1234567 |
| taken_at_timestamp | UNIX timestamp (seconds) | 1764360143 |
| posted | Human-readable timestamp | "29 Nov 2025, 07:02:23 am" |
| date | ISO timestamp with Z suffix | "2025-11-29T07:02:23Z" |
| display_url | Primary image/video thumbnail URL | "https://scontent...n.jpg" |
| image_links | All image URLs (single or carousel) | ["https://scontent...1.jpg", "..."] |
| video_links | Available video URLs | ["https://scontent...mp4"] |
| dimensions | Original width/height | {"width": 2160, "height": 3840} |
| is_pinned | Pinned post flag (when detected) | true |
| product_type | Media product type (e.g., "clips" for reels) | "clips" |
| owner.username | Account username | "cristiano" |
| user.pk | Owner user PK | "2535829435" |
| comments | Extracted comment snapshots | [{ "id": "...", "text": "...", ... }] |
| latest_comments | Latest comments subset | [{ "id": "...", "text": "...", ... }] |
| crawled_at / scraped_at | When 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
- Create or log in to your Apify account.
- Open the Instagram Profile Post Scraper in the Apify Store.
- Add input:
- Paste Instagram profile URLs (e.g., https://www.instagram.com/username), plain usernames (e.g., username), or post shortcodes (e.g., ABC123DEF) into startUrls.
- 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).
- Start the run:
- Click Start; the scraper will normalize inputs, fetch the timeline, and stream posts to the dataset in real time.
- Monitor progress:
- Logs will show per-profile progress, pagination, pinned detection, and any date filtering applied.
- 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 case | Description |
|---|---|
| Influencer research & benchmarking | Track posting cadence, format mix (reels vs images), and engagement to evaluate partnerships. |
| Competitor content analysis | Compare themes, hashtags, and media types to inform your content strategy and creative testing. |
| Campaign performance reporting | Aggregate likes, comments, and views across posts for before/after impact analysis. |
| Market & consumer research | Mine captions and comment snapshots to surface voice-of-customer insights and trending topics. |
| Brand monitoring & UGC tracking | Watch mentions and tagged content across public profiles and archive creative references. |
| Data science & modeling | Feed structured timelines into notebooks for topic modeling, forecasting, or entity extraction. |
| Bulk download Instagram posts | Export Instagram posts to CSV/JSON/Excel for downstream dashboards and BI pipelines. |
| Instagram profile data scraper for pipelines | Automate 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.