Instagram Posts Scraper Lowcost (0.3$/1K 🤑)
Pricing
from $0.30 / 1,000 posts
Instagram Posts Scraper Lowcost (0.3$/1K 🤑)
Cost-optimized Instagram scraper for public profiles. Extract posts, captions, engagement metrics, coauthors, and media without authentication. HTTP-only (no browser), 10x cheaper than alternatives. Supports batch scraping with residential proxies and smart rate limiting.
Pricing
from $0.30 / 1,000 posts
Rating
4.8
(8)
Developer
Samy
Maintained by CommunityActor stats
26
Bookmarked
8.4K
Total users
1.3K
Monthly active users
3.8 days
Issues response
3 days ago
Last modified
Categories
Share
Instagram Posts Scraper (Low-Cost)
⚡ Fast and cost-efficient Instagram scraper for extracting posts from public profiles. No Instagram account required.
What does Instagram Posts Scraper do?
Instagram Posts Scraper extracts posts from public Instagram profiles: images, videos, carousels, captions, engagement metrics, tagged users and co-authors. It works without an Instagram login.
Why choose this scraper?
- 🔐 No Instagram login needed - Just enter usernames or profile URLs
- 💰 Low cost - Lightweight, no browser, small memory footprint
- 📊 Clean data - Posts, carousels, tagged users, co-authors and engagement metrics in a consistent format
- 🔄 Automatic pagination - Up to 500 posts per profile
- 🆕 Incremental scraping - Only fetch posts newer than a given date
- 🛡️ Built-in reliability - Automatic retries and rate limiting, no tuning required
- 💾 Resumable - Runs resume where they stopped after a platform migration or a restart
Why scrape Instagram posts?
Instagram post data extraction unlocks powerful business use cases:
📈 Marketing & Analytics
- Competitor analysis - Track what content performs best for rival brands
- Content strategy - Identify winning post types, captions, and hashtags
- Engagement benchmarking - Compare your performance against industry standards
- Trend forecasting - Spot emerging visual trends before competitors
🤝 Influencer Marketing
- Influencer research - Discover creators with authentic engagement for partnerships
- Campaign tracking - Monitor branded content and collaboration performance
- Audience insights - Analyze what resonates with target demographics
🎯 Business Intelligence
- Brand monitoring - Track mentions, tags, and brand sentiment
- Lead generation - Find potential customers engaging with relevant content
- Market research - Analyze visual trends and consumer preferences in your industry
- UGC collection - Gather user-generated content for marketing campaigns
How to scrape Instagram profiles
- Create a free Apify account
- Open the Actor in Apify Console
- Add Instagram profiles - Enter usernames, @usernames, or full Instagram profile URLs
- Configure settings - Set how many posts to fetch per profile
- Click "Start" and wait for the scraper to finish
- Download your data - Export as JSON, CSV, Excel, or HTML
How much does it cost to scrape Instagram?
This scraper is engineered for maximum cost efficiency using HTTP-only requests instead of browser automation.
💰 Pricing factors
- Number of profiles you scrape
- Posts per profile
- Apify plan tier
Cost expectations
Actual charges depend on the Actor's current pricing and your usage; no fixed per-post cost or free-tier capacity is guaranteed. Check the Actor's pricing and your Apify plan before starting a large run.
Input
{"usernames": ["natgeo", "@nike", "https://www.instagram.com/cristiano/"],"postsPerProfile": 50,"newerThan": "2026-01-01T00:00:00Z"}
Input parameters
| Field | Type | Required | Description |
|---|---|---|---|
usernames | Array | Yes | Instagram usernames, @usernames, or profile URLs. Example: ["natgeo", "@nike", "https://www.instagram.com/cristiano/"] |
postsPerProfile | Integer | No | Exact maximum number of posts exported per profile (1-500). The Actor stops as soon as this limit is reached. Default: 50 |
newerThan | String | No | Incremental pagination cutoff. Accepts ISO date/time, YYYY-MM-DD, Unix seconds, or Unix milliseconds. This is a pagination boundary, not a strict per-post filter. |
Proxy. Leave it as is: the Actor manages its connections to Instagram itself. To send every request through your own proxies instead, set proxy.proxyUrls ("Own proxies" in the input form).
The former advanced fields (delayBetweenProfiles, delayBetweenRequests, maxRetries, maxConcurrentProfiles) are still accepted so existing integrations keep working, but they have no effect: pacing, retries and concurrency are managed automatically.
Invalid profile entries and duplicates are skipped without stopping valid profiles in the same batch. Profile URLs can include a trailing slash, query parameters, or a fragment. URLs for posts, Reels, Stories, and other non-profile pages are skipped.
Each run writes a RUN_SUMMARY record to its key-value store: the run's status and message, posts exported, profile counts, and for every profile its result (scraped, private_or_empty, not_found, not_scraped, stopped_at_spending_limit) and number of posts.
Incremental scraping behavior
newerThanis a pagination cutoff, not a strict dataset filter.- Posts from the boundary page can include items older than the cutoff.
postsPerProfileis a hard cap. If only part of the final fetched page is needed, the Actor exports only the remaining number of posts.postsPerProfilecounts the most recent posts. Posts pinned on the profile are included at their publication date, not at the top: a pinned post is exported only if it is among the most recent posts and newer thannewerThan. Pinned posts carryis_pinned: true.
Note: Check the Input tab for the complete list of input fields with descriptions.
Output
The scraper saves posts to the Apify dataset in structured JSON format. Fields are optional and depend on what Instagram returns; profiles that could not be scraped are reported in the log and RUN_SUMMARY, not as dataset rows.
Post data extracted
- Identifiers:
pk,id,code(shortcode for URL) - Media files:
media_type,image_url,video_url,original_width,original_height - Video data:
view_countwhen supplied; see the missing-metadata note below - Content:
caption.text,caption.pk - Engagement:
like_count,comment_count - Metadata:
taken_at(timestamp),product_type,location - Author info:
user.pk,user.username,user.full_name,user.is_verified,user.profile_pic_url - Carousel posts:
carousel_media[](for multi-image/video posts with individual media items) - Tagged users:
usertags.in[](tagged users with X/Y positions) - Collaborations:
coauthor_producers[],invited_coauthor_producers[] - Scraper metadata:
scraped_username,scraped_at,post_url - Incremental metadata:
newer_than_cutoff,newer_than_cutoff_iso,is_newer_than_cutoff - Pinned posts:
is_pinned
Instagram often omits play_count and video_duration, including for carousel items. Missing values are left empty, never replaced with zero. Locations, tags, co-authors, and other metadata may also be absent.
The dataset's Overview view shows image_url, post_url, user.username, caption.text, engagement, media type, and Unix timestamps. Full JSON exports contain all fields.
Output example
{"pk": "3284567890123456789","id": "3284567890123456789","code": "C5xYzAbCdEf","taken_at": 1767312000,"media_type": 1,"product_type": "feed","caption": {"pk": "18012345678901234","text": "Exploring the beauty of nature 🌲 #wildlife #photography"},"like_count": 45892,"comment_count": 1247,"user": {"pk": "25025320","username": "natgeo","full_name": "National Geographic","is_verified": true,"profile_pic_url": "https://scontent.cdninstagram.com/..."},"image_url": "https://scontent.cdninstagram.com/example.jpg","scraped_username": "natgeo","scraped_at": 1791979200,"post_url": "https://www.instagram.com/p/C5xYzAbCdEf/","newer_than_cutoff": 1767225600,"newer_than_cutoff_iso": "2026-01-01T00:00:00.000Z","is_newer_than_cutoff": true,"is_pinned": false}
Export formats
Download your data in multiple formats:
- JSON - Structured data for APIs and databases
- CSV - For Excel and data analysis tools
- Excel - Ready-to-use spreadsheets
- HTML - Human-readable tables
- XML - Legacy system integration
Is it legal to scrape Instagram?
This Actor targets publicly accessible profile posts. Public availability does not itself grant permission to collect or reuse data; legality depends on your use case and applicable rules. The Actor does not:
- ❌ Extract private user data (emails, phone numbers, private posts)
- ❌ Bypass login walls or authentication
- ❌ Access content from private accounts
- ❌ Store personal data unnecessarily
However, you should:
- ✅ Review Instagram's Terms of Service
- ✅ Respect rate limits and implement delays
- ✅ Comply with GDPR if scraping EU users
- ✅ Have a legitimate purpose for data collection
- ✅ Not use data for spam, harassment, or unauthorized contact
Results can contain personal data even when profiles are public. Collect only what you have a legitimate reason to process; consult legal counsel if you are unsure.
Learn more: Is web scraping legal? (Apify Blog)
Using Instagram Posts Scraper with the Apify API
The Apify API gives you programmatic access to the Apify platform. Run any Actor, manage runs, access datasets, and more from your applications.
Run the Actor via API:
curl -X POST https://api.apify.com/v2/acts/YOUR_USERNAME~instagram-posts-scraper-lowcost/runs \-H "Authorization: Bearer YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"usernames": ["natgeo", "https://www.instagram.com/nike/"],"postsPerProfile": 50,"newerThan": "2026-01-01T00:00:00Z"}'
Fetch results:
curl https://api.apify.com/v2/datasets/YOUR_DATASET_ID/items \-H "Authorization: Bearer YOUR_API_TOKEN"
Client libraries
- Node.js:
apify-clientNPM package - Python:
apify-clientPyPI package
Example (Node.js):
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: "YOUR_API_TOKEN" });const run = await client.actor("YOUR_USERNAME/instagram-posts-scraper-lowcost").call({usernames: ["natgeo", "https://www.instagram.com/nike/"],postsPerProfile: 50,newerThan: "2026-01-01T00:00:00Z",});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Resources:
Integrations
Connect Instagram Posts Scraper to your favorite tools:
- Make (Integromat) - No-code automation workflows
- Zapier - Connect to 5,000+ apps
- Webhooks - Get notified when runs finish
- Slack - Send scraped data to Slack channels
- Google Sheets - Export directly to spreadsheets
- Airbyte - Data pipeline integration
- Keboola - ETL and data warehousing
Learn more: Apify Integrations Documentation
FAQ
Does this scraper require an Instagram account?
No. No Instagram login or session is needed.
Can I scrape private accounts?
No. Posts of private profiles are not visible without being logged in. A private profile completes with no posts, like a public profile that has none.
How many posts can I scrape per profile?
You can request an export cap of 1-500 posts per profile. This is an Actor input limit, not a guaranteed Instagram API limit; public visibility, rate limits, or anonymous pagination restrictions may result in fewer posts.
What if I get rate limited?
Nothing to configure: the Actor paces its requests and retries automatically. Profiles that still fail are retried once more at the end of the run.
Can I scrape Stories or Highlights?
No. Stories and Highlights require authentication. This scraper only accesses public feed posts.
How do I scrape comments?
This Actor focuses on posts only. For comment scraping, check out other Apify Instagram scrapers with comment extraction features.
What data format is supported?
Data is saved to Apify datasets and can be exported as:
- JSON (for APIs)
- CSV (for Excel/analysis)
- Excel (.xlsx)
- HTML (readable tables)
- XML (legacy systems)
Can I schedule recurring scraping?
Yes! Use Apify Schedules to run the scraper automatically (hourly, daily, weekly, etc.).
The scraper failed. What do I do?
- Check the log and the
RUN_SUMMARYrecord for each profile's result - Verify usernames or profile URLs are correct; a profile that does not exist is reported as
profile not found - Resurrect the run to resume where it stopped: posts already exported are not exported or charged again
- If the issue persists, contact us through the Actor's Issues tab
You might also like
- Instagram Profile Scraper - Official Apify Instagram scraper with more features
- Instagram Hashtag Scraper - Scrape posts by hashtag
- Twitter Scraper - Extract tweets and profiles
- TikTok Scraper - Scrape TikTok videos and profiles
- YouTube Scraper - Extract YouTube video data
Need help? Contact Apify Support or check the Apify Documentation.