ParseForge Scrapers

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.

Run this scraper See the API call
Total users
429
Monthly active
36
Total runs
6.2K
Bookmarked
7
Rating
4.7 (5)
Last modified
9 days ago

Overview

ParseForge

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

  1. Create a free Apify account with $5 in credit.
  2. Open the Instagram Posts Scraper.
  3. Set your inputs and any filters, then click Start.
  4. 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

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

FieldTypeWhat it doesDefault
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 forWhat it isPrice 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.

POST ยท run and get results
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.

input.json
{
  "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.

Related scrapers

Run Instagram Posts Scraper on Apify All scrapers