[NEW&FASTER v1.3] Instagram Posts Scraper Lowcost (0.25$/1K πŸ€‘) avatar
[NEW&FASTER v1.3] Instagram Posts Scraper Lowcost (0.25$/1K πŸ€‘)

Pricing

$0.25 / 1,000 posts

Go to Apify Store
[NEW&FASTER v1.3] Instagram Posts Scraper Lowcost (0.25$/1K πŸ€‘)

[NEW&FASTER v1.3] Instagram Posts Scraper Lowcost (0.25$/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

$0.25 / 1,000 posts

Rating

5.0

(1)

Developer

Samy

Samy

Maintained by Community

Actor stats

1

Bookmarked

7

Total users

4

Monthly active users

4 hours ago

Last modified

Share

Instagram Posts Scraper (Low-Cost)

⚑ Ultra-fast and cost-efficient Instagram scraper for extracting posts from public profiles. No Instagram account or browser required - pure HTTP API access.

πŸš€ Recently Updated (v1.3): This scraper now uses dynamic concurrency processing. When a profile finishes scraping, the next one starts immediately - no more waiting for entire batches to complete. This results in significantly faster execution times, especially when scraping multiple profiles.

What does Instagram Posts Scraper do?

Instagram Posts Scraper extracts comprehensive post data from public Instagram profiles using Instagram's native mobile APIs. It retrieves images, videos, carousels, captions, engagement metrics, tagged users, and complete user information - all without requiring any Instagram authentication.

Why choose this scraper?

  • ⚑ Lightning fast - Powered by Bun runtime (3x faster than Node.js)
  • πŸ’° Ultra cost-efficient - 512MB memory vs 4-8GB for browser scrapers
  • πŸ” No session needed - Works without Instagram login or cookies
  • πŸ“Š Complete data extraction - Posts, carousels, tagged users, co-authors, engagement metrics
  • πŸ”„ Automatic pagination - Fetch 1-500 posts per profile with smart pagination
  • πŸ›‘οΈ Smart rate limiting - Adaptive delays and exponential backoff to avoid blocks
  • 🌐 Residential proxies - Built-in Apify Proxy support with session pooling
  • πŸ’Ύ State persistence - Resume scraping after interruptions or migrations

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

  1. Create a free Apify account
  2. Open the Actor in Apify Console
  3. Add Instagram usernames - Enter one or more usernames (without @)
  4. Configure settings - Set how many posts to fetch per profile
  5. Click "Start" and wait for the scraper to finish
  6. 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 you extract (each ~12 posts = 1 API request)
  • Proxy type (residential recommended, datacenter cheaper but riskier)
  • Apify plan tier

⚑ Cost advantages over alternatives

FeatureThis ActorBrowser-based Scrapers
Memory footprint512MB4-8GB
CPU usageMinimalHigh (rendering)
Proxy efficiencyExcellentPoor (TLS handshakes)
Requests per runOptimized10x more (assets)
Cost per 1000 posts~$0.10~$2-5

🎁 Free tier

With the Apify Free plan, you get monthly compute credits to scrape thousands of Instagram posts at no cost. Perfect for testing and small-scale projects.

Estimated free tier capacity: ~5,000-10,000 posts/month depending on configuration.

Input

{
"usernames": ["natgeo", "nike", "cristiano"],
"postsPerProfile": 24,
"maxConcurrentProfiles": 3,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
},
"delayBetweenProfiles": 1000,
"delayBetweenRequests": 500,
"maxRetries": 3
}

Input parameters

FieldTypeRequiredDescription
usernamesArrayYesInstagram usernames to scrape (without @). Example: ["natgeo", "nike"]
postsPerProfileIntegerNoNumber of posts to fetch per profile (1-500). Default: 24
maxConcurrentProfilesIntegerNoHow many profiles to scrape in parallel (1-10). Default: 3
proxyObjectNoApify Proxy configuration. Default: Residential proxies enabled
delayBetweenProfilesIntegerNoDelay in milliseconds between profile batches. Default: 1000
delayBetweenRequestsIntegerNoDelay in milliseconds between pagination requests. Default: 500
maxRetriesIntegerNoMaximum retry attempts for failed requests. Default: 3

Note: Check the Input tab for the complete list of input fields with descriptions.

Output

The scraper saves all extracted data to the Apify dataset in structured JSON format. Each post includes:

Post data extracted

  • Identifiers: pk, id, code (shortcode for URL)
  • Media files: media_type, image_versions2, video_versions, original_width, original_height
  • Video data: video_duration, view_count, play_count
  • 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

Output example

{
"pk": "3284567890123456789",
"id": "3284567890123456789",
"code": "C5xYzAbCdEf",
"taken_at": 1704067200,
"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_versions2": {
"candidates": [
{
"width": 1080,
"height": 1350,
"url": "https://scontent.cdninstagram.com/..."
}
]
},
"scraped_username": "natgeo",
"scraped_at": 1704067200,
"post_url": "https://www.instagram.com/p/C5xYzAbCdEf/"
}

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

Yes, when done ethically. This scraper only accesses publicly available data that Instagram exposes for SEO, link previews, and website embeds. It 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

Our scrapers are ethical and only extract what users have chosen to share publicly. If you're unsure about your use case, consult legal counsel.

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", "nike"],
"postsPerProfile": 24
}'

Fetch results:

curl https://api.apify.com/v2/datasets/YOUR_DATASET_ID/items \
-H "Authorization: Bearer YOUR_API_TOKEN"

Client libraries

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', 'nike'],
postsPerProfile: 24,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Resources:

Integrations

Connect Instagram Posts Scraper to your favorite tools:

Learn more: Apify Integrations Documentation

Advanced configuration

Proxy settings

For best results, use residential proxies (default):

{
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Datacenter proxies (cheaper but higher block rate):

{
"proxy": {
"apifyProxyGroups": ["SHADER"]
}
}

Custom proxies:

{
"proxy": {
"useApifyProxy": false,
"proxyUrls": ["http://proxy1.com:8080", "http://proxy2.com:8080"]
}
}

Rate limiting

Adjust delays to balance speed vs reliability:

{
"delayBetweenProfiles": 2000,
"delayBetweenRequests": 1000,
"maxRetries": 5
}
  • Lower delays = Faster scraping, higher block risk
  • Higher delays = Slower but more reliable

Concurrency

Control parallel processing:

{
"maxConcurrentProfiles": 5
}
  • 1-3: Conservative (recommended for stability)
  • 4-7: Moderate (good balance)
  • 8-10: Aggressive (faster but may trigger rate limits)

FAQ

Does this scraper require an Instagram account?

No. This scraper accesses Instagram's public APIs that don't require authentication. It works without any Instagram login or session cookies.

Can I scrape private accounts?

No. Private Instagram profiles are not accessible without authentication. The scraper will return an error for private accounts.

How many posts can I scrape per profile?

You can scrape 1-500 posts per profile. Instagram's API pagination has practical limits beyond this range.

What if I get rate limited?

Increase the delayBetweenRequests and delayBetweenProfiles parameters. Use residential proxies (not datacenter) for better reliability.

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?

  1. Check the log for error messages
  2. Verify usernames are correct and profiles are public
  3. Increase delays if you see rate limit errors
  4. Try using residential proxies instead of datacenter
  5. If the issue persists, open an Issue on GitHub

You might also like


Need help? Contact Apify Support or check the Apify Documentation.