~/social/instagram-scraper

Instagram Scraper API — Profiles, Posts & Reels

Scrape Instagram profiles, posts, Reels and comments by username or URL, no login: captions, hashtags, engagement, video and audio links. API, JSON, CSV.

social TypeScript Global
proooxy/instagram-scraper — spec
categorysocial / social
languageTypeScript
stackTypeScript
marketsGlobal
outputclean, RAG-ready JSON

key features

No login and no Instagram account — public profiles, posts and Reels only

Profiles with bio, full name, follower and following counts, verified and private flags, bio links and avatar

Posts, Reels and carousels with the caption, likes and comment count; Reels read from a profile's Reels tab also carry play counts

Hashtags and mentions parsed out of the caption into clean arrays

Instagram's own topic tags, tagged users, co-authors and location on every post

Every carousel child's image and video links, plus the audio-only track of each video that has one

Optional comments with author, text, likes, reply count and timestamp — up to 500 per post

Per-profile caps and a hard request cap, so a run's size is predictable

use cases

  • Influencer and creator research — engagement, co-authors and the accounts they tag
  • Brand and competitor monitoring across the accounts you choose
  • Grouping and trend analysis by Instagram's own topic tags
  • Comment and sentiment analysis on posts and Reels
  • Feeding Reels' audio-only tracks to speech-to-text
  • Social datasets for RAG and LLM pipelines

input parameters

ParameterTypeRequiredDescription
startUrlsarrayoptionalProfile, post or Reel addresses; give these or usernames
usernamesarrayoptionalProfile names, with or without the @
maxPostsPerProfileintegeroptionalPosts and Reels to read in full per profile, each counted separately (default 24)
includeReelsbooleanoptionalAlso read each profile's Reels tab — the only read that carries play counts (default on)
includeCommentsbooleanoptionalRead each post's comments, up to the cap below (default off)
maxCommentsPerPostintegeroptionalComments stored per post or Reel, 0–500 (default 24)
postsPerPageintegeroptionalHow many posts one page asks for (default 12)
maxConcurrencyintegeroptionalRequests run at once (default 3)
maxRequestsPerCrawlintegeroptionalStop after this many requests; empty means no limit
proxyobjectoptionalApify Proxy, residential by default — Instagram answers logged-out readers far more readily from a residential address

Output Example

 1{
 2  "type": "post",
 3  "source": {
 4    "id": "instagram",
 5    "canonicalUrl": "https://www.instagram.com/reel/DdRyQxKteC1/",
 6    "username": "astro_jessica"
 7  },
 8  "kind": "reel",
 9  "id": "3986188199829823669",
10  "shortcode": "DdRyQxKteC1",
11  "owner": {
12    "id": "4092263381",
13    "username": "astro_jessica",
14    "fullName": "Jessica Meir",
15    "isVerified": true
16  },
17  "takenAt": "2026-09-14T18:58:07.000Z",
18  "caption": "Volume up and get your groove on! A bit of weekend dancing on the @iss to start your week off right. …",
19  "hashtags": [],
20  "mentions": [
21    "iss"
22  ],
23  "format": "video",
24  "productType": "clips",
25  "isVideo": true,
26  "isReel": true,
27  "hasAudio": true,
28  "likeCount": 251630,
29  "commentCount": 2690,
30  "medias": [
31    {
32      "type": "Image",
33      "url": "https://…jpg",
34      "width": 892,
35      "height": 1584
36    },
37    {
38      "type": "Video",
39      "videoUrl": "https://…mp4",
40      "width": 892,
41      "height": 1584,
42      "audioUrl": "https://…mp4"
43    }
44  ],
45  "audioTitle": "Original audio",
46  "coauthors": [
47    {
48      "username": "nasa",
49      "id": "528817151",
50      "fullName": "NASA"
51    },
52    {
53      "username": "iss",
54      "id": "953293389",
55      "fullName": "International Space Station"
56    },
57    {
58      "username": "astro_anil",
59      "id": "50101577629",
60      "fullName": "Anil | Astronaut Space Doctor"
61    }
62  ],
63  "topics": [
64    "international space station",
65    "zero gravity",
66    "samantha cristoforetti",
67    "iss life",
68    "space station interior"
69  ],
70  "location": {
71    "id": "1783641135097024",
72    "name": "International Space Station"
73  },
74  "commentsRead": 24,
75  "comments": [
76    {
77      "id": "18000000000000000",
78      "authorUsername": "example_user",
79      "authorId": "10000000000",
80      "authorIsVerified": false,
81      "text": "Microgravity jazzercise 💃",
82      "likeCount": 0,
83      "createdAt": "2026-10-20T01:38:03.000Z"
84    }
85  ],
86  "scrapedAt": "2026-10-20T01:52:17.665Z"
87}

Pricing

Pay-per-event: billed once per stored post or Reel, once per stored profile, and once per comment stored with a post. Nothing is charged for a record the Actor could not read.

Tips

Start with one profile. A low maxPostsPerProfile shows you the records before you scale up. Leave the Reels tab on. It is the only read that carries play counts; turning it off makes a run smaller at that cost. Keep comments off unless you need them. Each stored comment is one charge; maxCommentsPerPost caps how many a post brings. Want what the Reels say? The Instagram Transcript Scraper turns the same accounts’ Reels into text with timestamps.

faq

Do I need an Instagram account?
No. Nothing is logged in and no account cookies are sent — the Actor reads what Instagram shows any logged-out visitor.
Is it legal to scrape Instagram?
This Actor reads only what Instagram shows any logged-out visitor and never logs in; in Meta v. Bright Data (2024) a US court found that collecting public data while logged out did not breach Meta's terms. Whether your use is lawful depends on what you collect and how you use it — profiles and comments can be personal data under laws such as the GDPR — so check with your own counsel.
Is this an alternative to the Instagram API?
For reading public data, yes. Instagram's official API is built for managing your own professional account and needs a Meta app, a business or creator account and app review. This Actor reads any public profile, post or Reel without any of that, and you call it through the Apify API.
Can it read Stories, followers or hashtag pages?
No. Instagram serves Stories, highlights, follower lists, hashtag pages and keyword search to logged-in users only, and this Actor stays logged out. It reads the accounts and posts you point it at.
Why do some posts have no play count?
Play counts only come from a profile's Reels tab. Leave includeReels on — it is on by default — and the Reels read there carry them.
Which Instagram links work?
Profile, post, Reel and IGTV addresses (instagram.com/<user>/, /p/<code>/, /reel/<code>/, /tv/<code>/), @username, or a bare username. A share link (instagram.com/share/… or /s/…) carries a code that is not the post's own: open it and paste the address it leads to.

related in ~/social

Run Instagram Scraper API — Profiles, Posts & Reels, or get a custom build

Start extracting on Apify in minutes, or hire me to build a bespoke scraper and RAG pipeline for your exact source and schema.

run on Apify get custom data