Instagram Scraper β Posts, Reels, Hashtags, Locations & Audio
Pricing
from $1.90 / 1,000 results
Instagram Scraper β Posts, Reels, Hashtags, Locations & Audio
Scrape Instagram posts and reels from profiles, reels tabs, hashtags, keywords, locations, audio pages and post URLs. Likes, comments, plays, captions, media URLs, owner, co-authors, tagged users, location and music β no login, no cookies.
Pricing
from $1.90 / 1,000 results
Rating
0.0
(0)
Developer
Yugenox Corp
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Instagram Scraper β Posts, Reels, Comments, Profiles, Hashtags & Locations
Scrape public Instagram posts, reels, comments, profiles, hashtags, locations and audio. You get likes, comments, plays, captions, media URLs, owners with follower counts, co-authors, tagged users, sponsors, music and locations. Add-ons include the latest comments, video transcripts, Instagram's AI summaries, business details, contact info and related accounts.
- π No Instagram login, no cookies. Paste URLs and run.
- β‘ Fast. About 1,000 fully detailed posts per minute.
- π° One simple price. $1.90 per 1,000 results with add-ons included; transcripts are billed per minute. No monthly fees.
- π‘οΈ Built to keep running. It rotates IPs by itself and adapts when Instagram changes its web app.
- π§ Discovery built in. Find similar accounts, expand hashtags into related keywords, and filter by followers, verified or business accounts.
What you can scrape
| Input | Example | What you get |
|---|---|---|
| π€ Profile | https://www.instagram.com/nasa/ or nasa | The profile's posts, newest first, as deep as the profile goes |
| π¬ Reels tab | https://www.instagram.com/nasa/reels/ | The profile's reels, with play counts |
| #οΈβ£ Hashtag | https://www.instagram.com/explore/tags/travel/ or #travel | Top posts for the hashtag |
| π Keyword | keywords: ["toronto"] or /explore/search/keyword/?q=toronto | Top posts for the keyword |
| π Location | https://www.instagram.com/explore/locations/213131048/ | Top and most recent posts at the place |
| π΅ Audio | https://www.instagram.com/reels/audio/271328201351336/ | Reels using that sound |
| πΌοΈ Post or reel | https://www.instagram.com/p/DRvit9Ejgel/ or a /share/ link | That post, or its comments |
| π’ User ID | 528817151 | That profile's posts |
Three result types (resultsType)
- posts (default): posts and reels, one row each.
- details: one row per source:
- Profiles: bio, all bio links, followers and following, reels count, highlights, category (e.g. "Bakery"), account type (personal, business or creator), Threads username, HD profile picture, emails and phones found in the bio, and optionally up to 50 related accounts.
- Hashtags and keywords: Instagram's topic description with sources, plus up to 100 related keywords.
- Locations: category, coordinates, address, price range, opening status, the place's Instagram account and its post count.
- comments: the comments on each post (text, author, likes, date), from post URLs or from every post a profile, hashtag or location returns.
Add-ons for posts
| Option | Adds |
|---|---|
commentsPerPost | latestComments: the newest N comments on each post |
includeTranscript | transcript and transcriptLanguage: speech-to-text for every video, in any language (up to 15 minutes; $0.004 per minute) |
includeAiSummary | aiTitle and aiSummary: Instagram's own AI description of the post |
includeVideoViews | video.viewCount: Instagram's "views" metric, alongside video.playCount |
includeDetails | The profile, keyword and place rows described above, alongside the posts |
Discovery and filters
scrapeRelatedProfiles: also scrape up to N accounts similar to each profile you give. Useful for finding competitors or lookalike creators.expandRelatedKeywords: go past Instagram's ~60 top posts per hashtag by also pulling related keywords.minFollowers,maxFollowers,verifiedOnly,businessOnly,withContactOnlyandskipPinnedPosts: rows that don't match are skipped and not billed.
Input
| Field | Type | Description |
|---|---|---|
startUrls | array | Instagram URLs, handles or #hashtags (see table above) |
keywords | array | Keywords to search. Each keyword is a separate query |
maxItems | integer | Maximum number of posts across the whole run |
resultsType | string | posts (default), details or comments |
maxItemsPerQuery | integer | Maximum number of items per URL or keyword |
until | string | Only posts created on or after this date (YYYY-MM-DD) or within a period like 7 days or 3 months. Profile scraping stops as soon as it reaches older posts, so you don't pay for them |
includeDetails | boolean | Adds profile, keyword and place rows alongside the posts |
commentsPerPost / maxComments | integer | Latest comments attached to each post / comments per post in comments mode |
includeTranscript, includeAiSummary, includeVideoViews | boolean | Post add-ons (see above) |
includeRelatedProfiles, scrapeRelatedProfiles, expandRelatedKeywords | Discovery (see above) | |
minFollowers, maxFollowers, verifiedOnly, businessOnly, withContactOnly, skipPinnedPosts | Filters | |
customMapFunction | string | JavaScript function that transforms each item (see below) |
maxConcurrency | integer | Number of parallel requests (default 20) |
{"startUrls": ["https://www.instagram.com/nasa/", "https://www.instagram.com/explore/tags/travel/"],"keywords": ["toronto"],"until": "2026-09-01","maxItems": 200}
Output
One row per post (dataType: "post"):
{"dataType": "post","id": "3991849403537918302_13460080","pk": "3991849403537918302","code": "Ddl5eH-u4le","url": "https://www.instagram.com/reel/Ddl5eH-u4le/","createdAt": "2026-09-22T14:00:04.000Z","caption": "Just a normal day for @caitlinclark22 β¦","hashtags": [],"mentions": ["caitlinclark22"],"likeCount": 25582,"commentCount": 487,"mediaType": "video","productType": "clips","isVideo": true,"isCarousel": false,"isPinned": false,"isPaidPartnership": false,"isLikeAndViewCountsDisabled": false,"commentsDisabled": false,"owner": {"id": "13460080", "username": "nike", "fullName": "Nike", "isVerified": true, "isPrivate": false,"profilePicUrl": "https://β¦", "followerCount": 291000000, "followingCount": 266,"biography": "β¦", "externalUrl": "https://β¦"},"coowners": [{ "id": "306787899", "username": "nikebasketball", "fullName": "Nike Basketball", "isVerified": true }],"taggedUsers": [{ "id": "1466972266", "username": "caitlinclark22", "fullName": "Caitlin Clark", "isVerified": true }],"location": { "id": "213131048", "name": "Berlin, Germany", "slug": "berlin-germany", "address": null, "city": null, "lat": 52.518, "lng": 13.401 },"audio": { "id": "β¦", "title": "Original audio", "artist": "nike", "isOriginal": true },"image": { "url": "https://β¦", "width": 1080, "height": 1920 },"video": { "url": "https://β¦.mp4", "duration": 30.03, "playCount": 915165, "width": 1080, "height": 1920 },"carousel": [],"carouselCount": null,"accessibilityCaption": "Video by Nike on September 22, 2026.","sponsors": [],"engagementRate": 0.0113,"latestComments": [{ "id": "18195039400344668", "text": "Nike & Caitlin have revealedβ¦", "createdAt": "2026-09-22T14:21:03.000Z", "likeCount": 12, "owner": { "username": "β¦" } }],"transcript": "Caitlyn Clark is just a normal girl from Iowaβ¦","transcriptLanguage": "en","aiTitle": "Normal Life of Iowa's Caitlin Clark","aiSummary": "β¦","source": { "type": "user", "input": "https://www.instagram.com/nike/" }}
Carousel posts list every slide in carousel (type, url, videoUrl, width, height).
Fields that are always present are id, code, url, createdAt and owner.username. Fields that can be null include:
likeCount, when the creator hid countsvideo.playCount, on some feed videos where Instagram doesn't expose playslocation,audioandvideo, when they don't apply to the postisPinnedandisPaidPartnership, when Instagram doesn't report them for that post
Pricing
One flat price: $1.90 per 1,000 results ($0.0019 each). A result is any saved row: a post, a comment, or a profile, place or keyword row.
- Add-ons are included at no extra cost: latest comments on each post, AI summaries and video view counts.
- Video transcripts (optional) cost $0.004 per started minute of audio, so a typical 30-second reel adds $0.004. Reels set to a licensed song have no speech to transcribe; they're skipped and not charged.
- You only pay for rows you get. Queries that find nothing, login-only sources and rows removed by your filters cost nothing.
Examples:
- 1,000 posts from any mix of profiles, hashtags and locations: $1.90
- 100 profiles in details mode, with bio, category, contacts and related accounts: $0.19
- 500 comments: $0.95
Free Apify plans are limited to 10 results per run.
Good to know
- Hashtags and keywords. Instagram shows logged-out visitors top posts only for popular terms (e.g.
travel,nyc,toronto), typically up to about 60 posts. For terms Instagram keeps behind a login, the run logs that the term isn't public and charges nothing. - Locations return Instagram's top and most recent posts for the place, typically about 70.
- Profiles page through the whole public feed, newest first.
- Private accounts have no public posts. They are skipped with a note in the log.
- Comments come newest first. Replies to comments are only visible to logged-in accounts.
- Stories, tagged posts, follower lists and profile search are only visible to logged-in accounts, so they aren't available. The
getStoriesandhandlesinputs are accepted for compatibility and skipped at no charge.
Custom map function
Transform each item before it is saved, e.g. to compute engagement or slim the output:
(item) => ({...item,engagementRate: item.owner?.followerCount ? +(((item.likeCount || 0) + (item.commentCount || 0)) / item.owner.followerCount * 100).toFixed(3) : null,username: item.owner?.username,video: undefined,carousel: undefined,})
- It must be a single, non-async JavaScript function that returns an object.
- It is for transformation, not filtering. Returning
{}saves{ "noResults": true }. - Date operations are rejected (
new Date,Date.now). Useuntilto filter by date instead. - If the function is unusable, the run keeps going and saves your original items. The log shows a warning starting with
Your "customMapFunction" input was rejected:that says why.
FAQ
Do I need an Instagram account or cookies? No.
How fresh is the data? It's live. Every run reads Instagram at that moment.
Can I schedule it? Yes. Use Apify schedules together with until to collect only new posts each day.
Can I use it from code or an AI agent? Yes, through the Apify API, the Python and Node.js clients, webhooks, or MCP.
Is it legal to scrape Instagram? This Actor only collects publicly available data: posts, reels and profiles from public Instagram accounts, which anyone can see without logging in. Collecting publicly available data is generally legal, but you're responsible for how you use it. Results can include usernames, profile details, captions and comments from public accounts, and that counts as personal data. You must follow privacy laws such as GDPR, PIPEDA and CCPA, as well as Instagram's terms. If you're unsure, check with a lawyer. More on this: Is web scraping legal?
Does it access any private data? No. Everything comes from pages Instagram shows to any visitor without logging in. It never uses a login, never touches private or restricted accounts, and never reaches password-protected areas. Private accounts are never accessed.