Instagram Posts Scraper
Pricing
$19.99/month + usage
Instagram Posts Scraper
Extract Instagram posts quickly and accurately. Collect captions, images, videos, likes, comments, hashtags, timestamps, and user details. Perfect for content analysis, trend tracking, influencer research, and social media insights with clean, structured data output.
Pricing
$19.99/month + usage
Rating
0.0
(0)
Developer
ScrapeLabs
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Instagram Posts Scraper
The Instagram Posts Scraper is an Instagram post scraper tool that lets you scrape Instagram posts from public profiles at scale — fast, reliably, and in structured formats. It solves the tedious task of manual copy-paste by programmatically fetching post data (media, captions, engagement, and metadata) and preserving the original Instagram item structure for analysis. Built for marketers, developers, data analysts, and researchers, this Instagram feed scraper enables bulk extraction and downstream analytics with clean datasets.
What data / output can you get?
Below are example fields the actor outputs for each post. The actor preserves the original Instagram post item and adds minimal metadata for traceability.
| Data type | Description | Example value |
|---|---|---|
| id | Post identifier with owner suffix | "3727992219681477950_173560420" |
| pk | Primary key for the post | "3727992219681477950" |
| code | Post shortcode used in the URL | "DO8fSwLiNU-" |
| media_type | Media type (e.g., 1=photo, 8=carousel) | 8 |
| product_type | Post product type | "carousel_container" |
| taken_at | Unix timestamp when the post was published | 1758631325 |
| like_count | Total likes | 7141379 |
| comment_count | Total comments | 72516 |
| original_width | Original media width | 1440 |
| original_height | Original media height | 1839 |
| image_versions2.candidates[0].url | Direct media URL (one of many resolutions) | "https://scontent-iad3-1.cdninstagram.com/v/t51.2885-15/..." |
| caption.text | Caption text of the post | "Happy Saudi National Day to everyone in Saudi Arabia! ..." |
| user.username | Owner’s username | "cristiano" |
| post_url | Canonical post URL (added by actor) | "https://www.instagram.com/p/DO8fSwLiNU-/" |
| scraped_username | Username resolved from your input (added by actor) | "cristiano" |
| scraped_at | Unix timestamp when the item was scraped (added by actor) | 1758728197 |
Notes:
- The dataset contains the full Instagram item structure, including nested objects like image_versions2, caption, user, owner, usertags, and carousel_media where available.
- You can export results from the Apify dataset in JSON, CSV, or Excel for analysis and reporting.
Key features
-
🚦 Automatic input detection & username resolution
Paste profile URLs, plain usernames, or post shortcodes — the actor validates inputs and resolves the profile username via multiple strategies (post HTML, embed, GraphQL, and web API patterns). -
🛡️ Residential proxy always enabled
The actor sets up and uses residential proxies by default, regardless of your selection, improving stability for large-scale runs. -
🔄 Robust pagination with rate‑limit handling
Built‑in retries, exponential backoff, and proxy fallback (none → datacenter → residential) help maintain uptime and reduce failed pages. -
🧭 Sort order control
Choose whether to return posts from newest to oldest (default) or oldest to newest using the sortOrder input. -
📦 Developer‑friendly, minimally altered output
Keeps Instagram’s original item schema intact and only adds three keys for traceability: scraped_username, scraped_at, and post_url. -
📈 Batch processing & limits
Provide multiple profiles in one run and cap extraction per profile with maxPosts (1–1000). -
💾 Flexible exports for analytics
Export the dataset to JSON, CSV, or Excel to power dashboards, content research, and ETL workflows with your favorite BI tools.
How to use Instagram Posts Scraper - step by step
-
🔑 Sign in to Apify
Create a free Apify account or log in. -
🔍 Find the actor
Open “Instagram Posts Scraper” in the Apify Store. -
📥 Add input data
In “startUrls”, enter one or more Instagram profile URLs (e.g., https://www.instagram.com/username), plain usernames (e.g., username), or post shortcodes (e.g., ABC123DEF). The actor will detect the type and resolve the profile username. -
⚙️ Configure settings
- maxPosts: limit posts per profile (1–1000).
- sortOrder: choose "newest" (default) or "oldest".
- maxComments: set a number (0–100) if you plan to use comment-related workflows.
- proxyConfiguration: optional editor; note the actor always uses residential proxy regardless of selection.
-
▶️ Run the actor
Click Start. The actor resolves usernames, fetches posts with pagination and retries, and pushes each post item to the dataset. -
🗃️ Monitor progress
Check the run logs for page counts, rate‑limit handling, and proxy fallback information. -
💾 Download results
Open the run’s Dataset tab and export results to JSON, CSV, or Excel for analysis or downstream processing.
Pro Tip: Use startUrls to list many profiles at once to download Instagram posts in bulk as a structured dataset. You can then export Instagram posts to CSV and join with your analytics pipeline for trend tracking or content audits.
Use cases
| Use case name | Description |
|---|---|
| Digital marketing – competitor post analysis | Benchmark engagement by extracting like_count, comment_count, and timelines to guide content strategy. |
| Influencer research – profile content audit | Scrape Instagram posts in bulk from target creators to evaluate posting frequency, media types, and caption style. |
| Content planning – media & caption insights | Build a repository of image/video URLs and caption.text to inform creative and copywriting decisions. |
| Social analytics – trend & timeline analysis | Track taken_at and product_type across profiles to model posting patterns and format performance. |
| Data engineering – ETL feed ingestion | Use the minimally altered Instagram item as a stable schema for ingestion into data warehouses. |
| Academic & social research – public datasets | Collect public profile posts for quantitative studies on content distribution and engagement dynamics. |
Why choose Instagram Posts Scraper?
The Instagram Posts Scraper focuses on precision and resiliency at scale, preserving the native post schema with minimal additions.
- ✅ Accurate username resolution from multiple input formats (URLs, usernames, shortcodes).
- ✅ Always‑on residential proxy for reliability in production workloads.
- ✅ Built‑in retries, backoff, and proxy fallback to reduce failure rates.
- ✅ Developer‑friendly output that mirrors Instagram’s item structure.
- ✅ Flexible sorting and post limits for reproducible datasets.
- ✅ Easy data export (JSON/CSV/Excel) from Apify datasets for analytics.
- ✅ More robust than browser extensions and brittle scripts — purpose‑built for cloud runs.
In short: a production‑ready Instagram post data extractor that balances scale, stability, and clean output for downstream analytics.
Is it legal / ethical to use Instagram Posts Scraper?
Yes — when used responsibly. This actor is designed to collect publicly available post data from Instagram profiles.
Guidelines:
- Scrape only public content; do not target private accounts or gated resources.
- Respect platform policies and terms of service.
- Use the data for lawful purposes and comply with applicable regulations (e.g., GDPR/CCPA) in your jurisdiction.
- Do not attempt to access private or authenticated data with this tool.
- Consult your legal team for edge cases or specific compliance requirements.
Input parameters & output format
Example JSON input
{"startUrls": ["https://www.instagram.com/cristiano/","neymarjr"],"maxPosts": 10,"sortOrder": "newest","maxComments": 0,"proxyConfiguration": {"useApifyProxy": false}}
Parameters
- startUrls (array of string, required): List one or more Instagram profile URLs (e.g., https://www.instagram.com/username), usernames (e.g., username), or post shortcodes (e.g., ABC123DEF). The actor will automatically detect the input type and extract the profile username. Default: none.
- maxPosts (integer, optional): Maximum number of posts to scrape per profile (1–1000). Default: 10.
- sortOrder (string, optional): Order in which to sort the posts. Allowed: "newest", "oldest". Default: "newest".
- maxComments (integer, optional): Maximum number of comments to extract per post (0–100). Default: 0.
- proxyConfiguration (object, optional): Proxy settings editor. Note: This actor always uses residential proxy regardless of your selection. Default: { "useApifyProxy": false }.
Example JSON output
{"id": "3727992219681477950_173560420","pk": "3727992219681477950","code": "DO8fSwLiNU-","media_type": 8,"product_type": "carousel_container","taken_at": 1758631325,"like_count": 7141379,"comment_count": 72516,"original_width": 1440,"original_height": 1839,"image_versions2": {"candidates": [{"url": "https://scontent-iad3-1.cdninstagram.com/v/t51.2885-15/552825156_18648550693056421_6760424445129157822_n.jpg","width": 1440,"height": 1839}]},"caption": {"text": "Happy Saudi National Day to everyone in Saudi Arabia! 🇸🇦 Wishing you a day filled with pride, unity, and celebration with your loved ones.","created_at": 1758631327,"user": {"id": "173560420","username": "cristiano"}},"user": {"id": "173560420","username": "cristiano","is_private": false,"is_verified": true},"scraped_username": "cristiano","scraped_at": 1758728197,"post_url": "https://www.instagram.com/p/DO8fSwLiNU-/"}
Notes:
- The actor pushes each post item individually. Structure and field names come directly from Instagram’s response.
- The actor adds three fields to each item: scraped_username, scraped_at, and post_url.
- Individual comments are not included in the output; use comment_count for engagement metrics. If you need full comment threads, pair this with a dedicated Instagram comments scraper in your pipeline.
FAQ
Does this scrape Instagram posts from public profiles?
Yes. This Instagram profile posts scraper targets publicly available posts from the profiles you provide via URLs, usernames, or post shortcodes.
What inputs are supported?
You can paste Instagram profile URLs (e.g., https://www.instagram.com/username), plain usernames (e.g., username), or post shortcodes (e.g., ABC123DEF). The actor detects the type and resolves the profile username automatically.
Can I export results to CSV or Excel?
Yes. After the run, open the Apify dataset and export Instagram posts to CSV, JSON, or Excel for analysis and reporting.
How many posts can I collect per profile?
You control this with the maxPosts parameter (1–1000). The actor paginates through the user’s feed until it reaches your limit or there is no more data.
Does it collect comments?
The output includes comment_count for each post. Individual comment threads are not extracted by this actor.
How are posts sorted?
Use sortOrder to return posts in "newest" (default) or "oldest" order. Sorting happens after items are collected.
What about proxies?
Residential proxy is always enabled by this actor, regardless of your proxyConfiguration selection. The scraper also employs retry and fallback strategies to improve reliability.
Can I use this to scrape by hashtag or location?
This actor targets profiles. If you need hashtag or location workflows, you can process caption.text for hashtags after export or combine this with a dedicated Instagram hashtag scraper in your tooling.
Closing CTA / Final thoughts
The Instagram Posts Scraper is built to scrape Instagram posts at scale with clean, minimally altered post items ready for analytics. With automatic input detection, stable proxy management, robust pagination, and export-ready datasets, it’s ideal for marketers, developers, analysts, and researchers who need an Instagram post data extractor that just works. Run it on multiple profiles to download Instagram posts in bulk, export to CSV/JSON/Excel, and plug the data into your analytics or ETL pipeline. Start extracting smarter Instagram media and metadata today.