Instagram Posts Scraper
parseforge/instagram-posts-scraper
Social mediaAutomationDeveloper tools
Scrape Instagram posts from any public profile, reel, or post URL. Returns captions, timestamps, media type, and engagement metrics. No login required.
- Total users
- 429
- Monthly active
- 36
- Total runs
- 6.2K
- Bookmarked
- 7
- Rating
- 4.7 (5)
- Last modified
- 9 days ago
Overview
Instagram Posts Scraper
Scrape Instagram posts from any profile, reel, or post URL, up to a million per run. Every post comes with its caption, timestamp, media type, and engagement metrics. No login or API key. Export to CSV, JSON, Excel, or XML.
Instagram's official API requires app approval, rate limits, and OAuth tokens. This scraper reads public post feeds directly from user profiles, reels, or individual post URLs, filtered by media type and date, and returns each match in one fixed schema.
| Who uses it | What they scrape Instagram for |
|---|---|
| Social media managers | Track a brand's post performance and engagement over time. |
| Market researchers | Analyze competitor content strategies and audience reactions. |
| Influencer marketers | Evaluate potential partners by their post history and engagement rates. |
| Data analysts | Build datasets of Instagram content for trend analysis or machine learning. |
What it does
This Actor collects Instagram posts by profile username, profile URL, reel URL, or post URL, and returns each one as a flat row with caption, timestamp, media type, and engagement data.
- ๐ Media type filter: Choose images, videos, reels, or carousels only.
- ๐ Date filter: Limit results to posts from a specific date range, absolute or relative.
- ๐ข Post limits: Set max posts per profile and total across all profiles.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with Instagram data
๐ Monitor brand post performance.
A social media manager runs the scraper on their brand's profile weekly to track engagement trends and adjust content strategy.
๐ Analyze competitor content.
A market researcher scrapes competitor profiles to see what post types and captions drive the most engagement.
๐ค Evaluate influencer partners.
An influencer marketer scrapes a candidate's profile to review post history, engagement rates, and content quality before signing a deal.
๐ Build training datasets.
A data scientist collects thousands of Instagram posts with captions and media types to train a content classification model.
Why choose this scraper
| What you get | |
|---|---|
| No login required | Scrape public Instagram posts without any authentication. |
| Flexible input | Accept usernames, profile URLs, or direct post/reel URLs. |
| Media type filter | Get only images, videos, reels, or carousels. |
| Date filter | Limit results to posts from a specific date range. |
How it compares
Compared to other Instagram scrapers on Apify, this actor focuses specifically on posts with flexible media type and date filters.
| Feature | ParseForge | Instagram Scraper | Instagram Reel Scraper | Instagram Profile Scraper |
|---|---|---|---|---|
| Scrapes posts from profiles | Yes | Yes | Yes | Yes |
| Scrapes reels | Yes | Yes | Yes | Not listed |
| Media type filter (image/video/reel/carousel) | Yes | Not listed | Not listed | Not listed |
| Date filter | Yes | Not listed | Not listed | Not listed |
| Scrapes profile metadata (bio, followers) | Not listed | Not listed | Not listed | Yes |
| Downloads reel video files | Not listed | Not listed | Yes | Not listed |
| Scrapes comments | Not listed | Yes | Yes | Not listed |
Configure the run
Drive the Actor from Instagram usernames, profile URLs, or post/reel URLs, alone or together, and filters run as each post is read so only matches reach your dataset. The Input tab lists every parameter.
A first run with the defaults:
{
"startUrls": [
"https://www.instagram.com/instagram/"
],
"maxItems": 10
}
A larger pull:
{
"startUrls": [
"https://www.instagram.com/instagram/"
],
"maxItems": 200
}
Pricing
Pay-per-result: $0.1 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $10.00 |
| 1,000 results | $100.00 |
| 10,000 results | $1000.00 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the Instagram Posts Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to Instagram through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/instagram-posts-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Check that the profile is public and the username or URL is correct. Also verify that the date filter is not excluding all posts.
The scraper stops early or returns fewer posts than expected.
Check your maxItems and maxItemsTotal limits. Free accounts are capped at 10 posts per profile and 10 total.
Can I scrape posts from a hashtag or location?
No. This scraper only supports profile URLs, post URLs, and reel URLs. For hashtag or location scraping, consider a different actor.
The date filter is not working as expected.
Ensure the date is in YYYY-MM-DD format or a valid relative string like '2 months'. All times are UTC.
I get an error about invalid URL format.
Make sure your input is a valid Instagram username, profile URL (https://instagram.com/username), or post/reel URL (https://instagram.com/p/... or /reel/...).
FAQ
| Question | Answer |
|---|---|
| Do I need an Instagram account or login? | No. The scraper reads public posts without any authentication. You only need the profile username or URL. |
| Can I scrape private profiles? | No. Only public profiles are accessible. Private profiles require login, which this scraper does not support. |
| What is the difference between maxItems and maxItemsTotal? | maxItems limits posts per profile, while maxItemsTotal limits the total across all profiles. Both can be set simultaneously. |
| How do I filter by date? | Use the dateFilter field with an absolute date (e.g., 2024-01-15) or a relative one (e.g., 3 months). Only posts after that date are returned. |
| Can I scrape reels only? | Yes. Set mediaTypeFilter to 'reel' to get only reels from the profile. |
| What export formats are available? | You can export results as CSV, JSON, Excel, or XML directly from the Apify platform. |
| Is there a limit on how many posts I can scrape? | Free users are limited to 10 posts per profile and 10 total. Paid users can scrape up to 1,000,000 per profile and total. |
| Can I scrape posts from multiple profiles at once? | Yes. Provide multiple usernames or URLs in the startUrls field, and the scraper will process them all. |
| Does the scraper handle carousel posts? | Yes. Carousel posts are returned as a single post entry with the media type 'carousel'. |
| What data does each post include? | Each post includes caption, timestamp, media type, engagement metrics (likes, comments), and more. The full field list is shown in the dataset preview. |
Related actors
- instagram-reel-scraper: Use this if you only need reels and want to download the video files.
- instagram-profile-scraper: Use this if you need profile metadata (bio, follower count, etc.) rather than individual posts.
Browse the full ParseForge collection for more scrapers.
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
Input
| Field | Type | What it does | Default |
|---|---|---|---|
| startUrls | array | List of Instagram usernames, profile URLs, or post URLs to scrape. Accepts multiple formats: - Usernames: nike, @cristiano, therock - Profile URLs: https://instagram.com/nike - Post URLs: https://instagram.com/p/ABC123, https://instagram.com/reel/XYZ789 | ["https://www.instagram.com/instagram/"] |
| maxItems | integer | Maximum posts to extract per profile/user. Free users: Limited to 10 per profile. Paid users: Optional, max 1,000,000 per profile. Leave empty for unlimited (paid users only). | 10 |
| maxItemsTotal | integer | Maximum total posts to extract across all profiles (optional). Free users: Limited to 10 total. Paid users: Optional, max 1,000,000 total. If set, the scraper will stop once this limit is reached. If both maxItems and maxItemsTotal are set, both limits are respected. | not set |
| dateFilter | string | Limit how far back to the history the scraper should go. The date should be in YYYY-MM-DD or full ISO absolute format (e.g., 2024-01-15 or 2024-01-15T00:00:00Z) or in relative format (e.g., 1 days, 2 months, 3 years). All time values are taken in UTC timezone. | not set |
| mediaTypeFilter | string (5 options) | Filter posts by content type. Use 'reel' to get only Reels, 'image' for photos only, 'carousel' for multi-image posts, or 'video' for all video content. | all |
Pricing
from $2.50 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| result | Single result in the default dataset. | $0.0025 to $0.003 |
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.098 to $0.1 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
API
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~instagram-posts-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"helloWorld": 123
}' Examples
Input that runs as-is.
{
"helloWorld": 123
} Reviews
Rated 4.7 out of 5 across 5 reviews. Read them on Apify.
Issues
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
