Instagram Instagram

Instagram Scraper: extract posts, reels, profiles and comments

Apidojo Instagram Scraper is a no-login Instagram data API that collects posts, reels, profiles, hashtags, locations and audio pages from any public Instagram URL. It costs $0.49 per 1,000 posts, returns up to 199 posts per second, and exports JSON, CSV or Excel.

Free Apify plan: 5 runs a month, 10 items a run. No credit card.

Open record ↵4 queries
$0.49
per 1,000 posts
199/s
peak post rate
19K
users on Apify
99.73%
run success, 30 days

Users and run success are the five Instagram scrapers combined. Read on 21 September 2026.

What are the Instagram Scraper specifications?

Apidojo Instagram Scraper runs on the Apify platform and accepts Instagram URLs as input: profile, hashtag, location, audio, reels and tagged-posts URLs. Each post returns 12 top-level fields plus nested owner, location, image and video objects, exported as JSON, CSV or Excel.

Instagram Scraper specificationsapidojo/instagram-scraper
Data sources on InstagramProfiles, hashtags, locations, reels, audio pages and a profile’s tagged posts
InputsstartUrls, until, maxItems, customMapFunction
Price$0.49 per 1,000 posts on Bronze; $0.48 on Silver, $0.47 on Gold and above, $0.50 on the free plan
Speed199 posts/sec (hashtags) · 183 (locations) · 147 (profiles) · 115 (audio) · 94 (reels) · 85 (tagged)
Minimum per input10 posts. Smaller inputs create overhead and can trip the rate limiter
Date filteringuntil returns only posts newer than the date given
Output shapingcustomMapFunction, one synchronous JavaScript function per item
Export formatsJSON, JSONL, CSV, Excel, XML, HTML table, API
Login, proxy or API keyNone required
Free planDemo mode, 5 runs per month, 10 items per run, no API access
DeliveryApify dataset, webhooks, or an MCP connector writing straight into Notion or Todoist
IntegrationsApify REST API, Python and JavaScript clients, n8n, Make, Zapier, MCP
MaintenanceDaily, by a dedicated engineering team

What does Instagram Scraper output look like?

Instagram Scraper output is one JSON object per post. Each object carries the post ID, shortcode, URL, creation date, caption, like and comment counts, a nested owner object, and location, image and video objects where the post has them.

Choose an input type to see its output

Runs onapidojo/instagram-scraper

A profile URL with a date floor. The most common job by far.

Input

{
  "startUrls": ["https://www.instagram.com/nasa/"],
  "until": "2026-01-01",
  "maxItems": 1000
}

Output

"owner": {
  "id": "62815273217",
  "username": "nasa",
  "fullName": "NASA",
  "isPrivate": false,
  "isVerified": true,
  "followerCount": 98200000,
  "followingCount": 78,
  "postCount": 4211
}

Runs onapidojo/instagram-scraper

Posts and reels published under a tag. Same post schema as a profile run.

Input

{
  "startUrls": [
    "https://www.instagram.com/explore/tags/streetphotography/"
  ],
  "maxItems": 2000
}

Output

{
  "code": "C7xQm2NtLaK",
  "caption": "Late light on the crossing.",
  "likeCount": 4210,
  "commentCount": 88,
  "isCarousel": true,
  "createdAt": "2026-09-13T11:02:19.000Z"
}

Runs onapidojo/instagram-scraper

Geo-tagged posts. Every item carries coordinates you can map directly.

Input

{
  "startUrls": [
    "https://www.instagram.com/explore/locations/213385402/new-york-new-york/"
  ],
  "maxItems": 1000
}

Output

"location": {
  "id": "215927995",
  "name": "New York, New York",
  "slug": "new-york-new-york",
  "lat": 40.7128,
  "lng": -74.006
}

Runs onapidojo/instagram-scraper

A profile’s reels tab, or an audio page to find every reel using a sound.

Input

{
  "startUrls": [
    "https://www.instagram.com/nasa/reels",
    "https://www.instagram.com/reels/audio/271328201351336/"
  ]
}

Output

"video": {
  "id": "235268832770811v",
  "url": "https://...mp4",
  "width": 1078,
  "height": 1916,
  "duration": 28.281,
  "playCount": 3321
}

What the fields are

  • Post content

    ID, shortcode, URL, caption, creation time, carousel and video flags, paid-partnership flag

  • Engagement

    Likes, comments, video play count, pinned and hidden-count flags

  • Owner profile

    Username, full name, user ID, followers, following, post count, verified and private flags, avatar

  • Media and context

    Image and video URLs with dimensions and duration, co-owners, location with coordinates

Field dictionary28 fields
FieldTypeExample valueGroup
idstring3245142029192513970_62815273217Content
codestringC0JD3tntcmyContent
urlstringhttps://www.instagram.com/p/C0JD3tntcmy/Content
createdAtstring (ISO 8601)2023-11-27T07:48:34.000ZContent
captionstringFull caption text, hashtags includedContent
isCarouselbooleanfalseContent
isVideobooleantrueContent
isPinnedbooleanfalseContent
isPaidPartnershipbooleanfalseContent
likeCountinteger114Engagement
commentCountinteger5Engagement
isLikeAndViewCountsDisabledbooleanfalseEngagement
owner.usernamestringjogi.lapki.bydgoszczOwner
owner.fullNamestringJoga z pieskamiOwner
owner.idstring62815273217Owner
owner.followerCountinteger5917Owner
owner.followingCountinteger5917Owner
owner.postCountinteger48Owner
owner.isVerifiedbooleanfalseOwner
owner.isPrivatebooleanfalseOwner
owner.profilePicUrlstringhttps://scontent.cdninstagram.com/…jpgOwner
coowners[]array of objectsCollaborators credited on the postOwner
location.namestringBydgoszcz, PolandContext
location.latfloat53.1222Context
location.lngfloat17.9986Context
video.urlstringhttps://scontent.cdninstagram.com/…mp4Context
video.durationfloat28.281Context
video.playCountinteger3321Context

Which Apidojo Instagram scraper fits your job?

Apidojo publishes 5 Instagram scrapers. Instagram Scraper collects posts and reels from any Instagram URL at $0.49 per 1,000, and the Hashtag, User, Comments and Location scrapers each handle one job, three of them billing a small fee per query with free items included.

Start here

Instagram Scraper

apidojo/instagram-scraper
9K users · 4.7 (36)

The main scraper. Collects posts and reels from profile, hashtag, location, audio, reels and tagged-posts URLs, with a date filter and a custom output map function.

  • Profiles, hashtags and locations
  • Reels, audio pages and tagged posts
  • Full post, engagement and owner fields
  • Up to 199 posts per second
  • Date filtering with until
  • Minimum 10 posts per input

$0.49 / 1,000 postsPay per result · $0.47 on Gold and above

Instagram scrapers for a single job

How much does Instagram Scraper cost?

Instagram Scraper costs $0.49 per 1,000 posts, billed per result with no per-run fee. That is 4.7 times cheaper than Apify’s own Instagram Scraper, which charges $0.0023 per result, or $2.30 per 1,000 posts.

Instagram Scraper

$0.49per 1,000 posts

  • Pay per result, no per-run fee
  • $0.48 on Silver, $0.47 on Gold and above
  • Minimum 10 posts per input
Run your first query
Query fees on the single-job scrapers
ScraperQuery feePer item
Instagram Hashtag Scraper$0.016 per hashtag (60 items free)$0.40 / 1K
Instagram Profile Scraper$0.01 per profile · $0.02 per keyword search$0.50 / 1K
Instagram Comments Scraper API$0.0075 per post (15 comments free)$0.50 / 1K
What a real job costsArithmetic shown
JobScraperCalculationCost
100,000 posts from a hashtagInstagram Scraper100,000 × $0.00049$49.00
500 profiles × 50 recent postsInstagram Scraper25,000 × $0.00049$12.25
20 campaign hashtags, 1,000 posts eachHashtag Scraper20 × $0.016 + 18,800 × $0.0004$7.84
10,000 followers of one accountUser Scraper$0.01 + 10,000 × $0.0005$5.01
5,000 comments across 50 postsComments Scraper API50 × $0.0075 + 4,250 × $0.0005$2.50
One city location, 2,000 postsLocation Scraper2,000 × $0.0005$1.00

Prices apply to Apify paid plans and step down by tier: $0.49 on Bronze, $0.48 on Silver, $0.47 on Gold and above. The free plan runs Instagram Scraper in demo mode, 5 runs a month, 10 items a run, with no API access.

How does Instagram Scraper compare with the official Instagram API?

The official Instagram Graph API returns data only for accounts that authorise your app. It cannot read another brand’s posts, a competitor’s followers or an open hashtag feed at scale. Instagram Scraper reads any public Instagram URL for $0.49 per 1,000 posts, with no Meta app, no review process and no Business account.

Side by sidePer 1,000 items
What you getApidojo Instagram ScraperInstagram Graph APIApify Instagram Scraper
Cost per 1,000 posts$0.49No per-call charge$2.30
Cost for 100,000 posts$49No per-call charge$230
Whose data you can readAny public profile, hashtag or locationOnly accounts that authorise your appAny public profile, hashtag or location
Setup before the first resultAn Apify accountProfessional account, Facebook Page, Meta app reviewAn Apify account
Hashtag searchAny hashtag, no cap30 unique hashtags per 7-day periodAny hashtag
Follower listsYes, via Instagram Profile ScraperNoYes
Rate limitsSet by your Apify plan4,800 × impressions per 24 hoursSet by your Apify plan
Personal-account accessPublic posts onlyProfessional accounts onlyPublic posts only
Post, comment or send a DMNo, read-onlyYesNo, read-only
Contractual SLANo. Maintained daily, no contract.Meta platform termsMaintained by Apify

Graph API limits from Meta’s Instagram Platform documentation read on the snapshot date: 30 unique hashtags per 7-day period, and a general rate limit of 4,800 × impressions per 24 hours. Apify’s price is the public pricing on apify/instagram-scraper, $0.0023 per result.

How to scrape Instagram with Apidojo in 4 steps

Scraping Instagram with Apidojo takes 4 steps: open the scraper, paste Instagram URLs, set the date and item limits, then run and export. No code, proxy or Instagram account is required.

  1. 01

    Open Instagram Scraper on Apify

    Sign in with a free Apify account. No credit card is needed to run it in demo mode.

  2. 02

    Paste Instagram URLs

    Profile, hashtag, location, audio, reels or tagged-posts URLs, one per row, exactly as they appear in the address bar.

  3. 03

    Set the date and item limits

    Use until as a date floor and maxItems to cap both the run and the cost. Keep each input above 10 posts.

  4. 04

    Run and export the dataset

    Download JSON, CSV or Excel, or have the run write straight into Notion through an MCP connector.

Which Instagram URLs it accepts

Which Instagram URLs it accepts6 entries
URL typeReturnsExample URL
ProfilePosts and reels published by an accountinstagram.com/nasa/
HashtagPosts published under a taginstagram.com/explore/tags/travel
LocationGeo-tagged posts at a placeinstagram.com/explore/locations/213131048/berlin-germany/
AudioReels using a soundinstagram.com/reels/audio/271328201351336/
ReelsA profile’s reels tabinstagram.com/nasa/reels
TaggedPosts other accounts tagged a profile ininstagram.com/nasa/tagged
  • until

    Returns only posts newer than the date given. Use it for monitoring runs instead of re-scraping a whole profile, but do not set it so close to now that the run returns almost nothing, because that still consumes a run.

  • customMapFunction

    One synchronous JavaScript function, one item in, one object out. Reshape or flatten items before they are stored. It cannot drop items and cannot contain date logic, filter by date with until instead.

How do you call the Instagram Scraper API?

Instagram Scraper runs through the Apify REST API and the official Python and JavaScript clients. One POST to the run-sync endpoint starts the scraper and returns the posts as JSON in the same response.

Choose a language
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("apidojo/instagram-scraper").call(run_input={
    "startUrls": ["https://www.instagram.com/nasa/"],
    "until": "2026-01-01",
    "maxItems": 1000,
})

for post in client.dataset(run.default_dataset_id).iterate_items():
    print(post["createdAt"], post["likeCount"], post["url"])
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

const run = await client.actor('apidojo/instagram-scraper').call({
  startUrls: ['https://www.instagram.com/explore/tags/streetphotography/'],
  maxItems: 1000,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0].caption);
curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~instagram-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":["https://www.instagram.com/nasa/"],"maxItems":500}'
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=apidojo/instagram-scraper",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
  • MCP connectors

    Write results straight into Notion or Todoist, outputConnector and deliverTarget, no export step.

  • n8n, Make and Zapier

    The Apify app connects the scraper to your tools.

  • Webhooks

    POST to any URL on run success.

  • Scheduling

    Apify schedules with until set to the last run date.

How fast is Instagram Scraper?

Instagram Scraper returns 199 posts per second from hashtags, 183 from locations and 147 from profiles in Apidojo’s published benchmark. At 147 posts per second a 10,000-post profile export finishes in about 70 seconds.

Hashtags199 posts/sec
Locations183 posts/sec
Profiles147 posts/sec
Audio pages115 posts/sec
Reels94 posts/sec
Tagged posts85 posts/sec
How long a run takes
Dataset sizeAt 147/sec, profilesAt 199/sec, hashtags
1,000 posts≈ 7 s≈ 5 s
10,000 posts≈ 1 min 8 s≈ 50 s
100,000 posts≈ 11 min 20 s≈ 8 min 22 s

Benchmark published on the Instagram Scraper listing, run with identical inputs and resources per input type. Real speed varies with Instagram response times and input shape.

9K
users on Instagram Scraper
9.5M
Instagram Scraper runs, all time
4.7 / 5
from 36 Apify reviews
5
Instagram scrapers in the family

That rating is Instagram Scraper’s own, not an average across the five. Users and runs in the hero are the five combined; these four are the main scraper alone.

What can you build with Instagram Scraper data?

Instagram Scraper data powers 6 common workflows: influencer vetting, brand monitoring, campaign tracking, local and venue research, competitor benchmarking and AI training datasets. Each recipe below gives the input, the fields it uses and where the output lands.

  • 01

    Influencer vetting

    instagram.com/{handle}/ · 50 recent posts

    Fields
    likeCount, commentCount, owner.followerCount, isPaidPartnership
    Lands in
    An engagement-rate sheet
  • 02

    Brand monitoring

    explore/tags/{brand}/ + {brand}/tagged

    Fields
    caption, owner.username, createdAt
    Lands in
    Slack via n8n, daily
  • 03

    Campaign tracking

    20 campaign hashtags, until = launch date

    Fields
    caption, likeCount, commentCount
    Lands in
    Notion, through the connector
  • 04

    Local and venue research

    explore/locations/{id}/{slug}/

    Fields
    location.lat, location.lng, caption
    Lands in
    A map dashboard
  • 05

    Competitor benchmarking

    10 competitor profiles, weekly schedule

    Fields
    createdAt, likeCount, isVideo
    Lands in
    A posting-cadence report
  • 06

    AI training datasets

    Hashtags by niche, customMapFunction to flatten

    Fields
    caption, video.url, owner.username
    Lands in
    JSONL for fine-tuning or a RAG index

What are the limits of Instagram Scraper?

Instagram Scraper operates under 5 documented limits. Each one below states the workaround, and three of the five are answered by another scraper in the same family.

  • Minimum 10 posts per input

    Inputs asking for fewer create overhead and can trip the rate limiter.

    Raise maxItems, or batch several URLs into one run rather than many tiny runs.

  • Public content only

    Private accounts, their stories and direct messages are out of scope.

    Open the profile in a logged-out browser window first, if you cannot see it there, neither can the scraper.

  • A tight until date wastes runs

    Setting the date close to now returns almost nothing and still consumes a run.

    Set until to the last run’s date for monitoring, and use wider windows for backfills.

  • customMapFunction cannot filter

    Returning null to drop items is treated as abuse of pay-per-result pricing, and date logic is blocked outright.

    Reshape with the map function, filter by date with until, and cap volume with maxItems.

  • The free plan runs in demo mode

    5 runs per month, 10 items per run, and no API access.

    Any paid Apify plan removes the cap and unlocks the API.

Instagram Scraper frequently asked questions

FAQ

Everything else people ask

Fifteen questions about this scraper and its family. Anything about the wider catalogue is answered on the scrapers hub.

All 26 scrapers

Using it

Do I need an Instagram login or API key to use Instagram Scraper?

No. It collects public data without an Instagram account, cookies, proxies or API key. You need only a free Apify account.

Can Instagram Scraper extract reels?

Yes. Paste a profile’s reels tab or an audio page URL. Each reel returns its video URL, dimensions, duration and play count.

Can Instagram Scraper filter posts by date?

Yes. The until field returns only posts newer than the date you give. Use it to run daily or weekly monitoring without re-scraping a whole profile.

Can Instagram Scraper send results to Notion?

Yes. Authorise an Apify MCP connector once, then set outputConnector and a Notion page URL in the input. The scraper builds a typed database from the results, one column per field.

Which Instagram URLs does it accept?

Six types: profile, hashtag, location, audio, reels and tagged-posts URLs. Paste them exactly as they appear in the browser address bar.

Limits and results

Can Instagram Scraper scrape private accounts?

No. It reads only what a logged-out visitor can see. Private profiles, their stories and direct messages are out of scope.

How many posts can it return per profile?

As many as Instagram serves to a logged-out visitor, capped by maxItems. Each input must request at least 10 posts.

Why did my run return no results?

Runs return nothing when the input asks for fewer than 10 posts, the until date is too recent, or the account is private. Open the URL in a logged-out browser window to see what Instagram actually serves.

Can Instagram Scraper get follower lists and emails?

Follower and following lists run on Instagram Profile Scraper, which also returns public business emails where an account publishes one. Instagram Scraper itself returns follower counts inside each post’s owner object.

Can Instagram Scraper scrape comments?

Not itself. Instagram Comments Scraper returns comment text, likes, replies and commenter profiles at $0.50 per 1,000 comments, and the API variant bills $0.0075 per post with 15 comments free.

Plans and integrations

How much does it cost to scrape 10,000 Instagram posts?

Scraping 10,000 Instagram posts costs $4.90 at $0.49 per 1,000. The same job costs $23.00 on Apify’s own Instagram Scraper.

Is there a free Instagram Scraper plan?

Yes. The free Apify plan allows 5 runs per month with 10 items per run and no credit card. API access requires a paid plan.

Which formats does it export?

JSON, JSONL, CSV, Excel, XML and HTML tables, plus the Apify API for pulling results straight into your stack.

Does it work with n8n, Make and Zapier?

Yes, through the Apify app in all three, and through webhooks for anything else.

Can AI agents use Instagram Scraper through MCP?

Yes. The Apify MCP server exposes it as a tool to Claude, Cursor and other MCP clients.

Other Apidojo scrapers

Instagram is one of six sources in the catalogue. Every scraper publishes its inputs, its output fields and its price the same way this one does.

Browse all 26 scrapers

Run Instagram Scraper on your first URL

Paste a profile, hashtag or location URL. The free Apify plan runs it in demo mode with no credit card, and the output shape is the one documented on this page.

Run your first URL

Somewhere to start

  • instagram.com/nasa/One profile, newest posts first
  • instagram.com/explore/tags/streetphotography/Everything published under a tag
  • instagram.com/explore/locations/213385402/new-york-new-york/Geo-tagged posts with coordinates

Every one of these runs on Instagram Scraper at $0.49 per 1,000 posts.

Apidojo is not affiliated with Meta Platforms, Inc.