Instagram Scraper - Profiles, Reels, Hashtags and Trends
Pricing
$1.40 / 1,000 results
Instagram Scraper - Profiles, Reels, Hashtags and Trends
Scrape public Instagram profiles, posts and reels with exact likes, views and comments, plus keyword search volume, related keywords and the trending page. No login needed. For social media teams, marketers and researchers who plan content or track creators.
Pricing
$1.40 / 1,000 results
Rating
0.0
(0)
Developer
SR
Maintained by CommunityActor stats
0
Bookmarked
35
Total users
12
Monthly active users
a month ago
Last modified
Categories
Share
Instagram Scraper: Profiles, Reels, Hashtags and Trends
This Instagram scraper pulls public profiles, posts and reels, keyword search volume and Instagram trends into one dataset, for social media teams, marketers and researchers who want Instagram data without logging in. It covers five jobs instead of making you run five Actors:
- Profiles by username, with exact follower and post counts
- Posts and reels by URL, with likes, comments and captions
- Hashtags and keywords, with search volume and related terms
- Trending topics, what is rising on Instagram right now
- Locations by place ID, with coordinates and recent posts
Pick the job with the searchType field, or switch on includeTrending for
the trending page. It reads only Instagram's public
pages and never signs in, so there is no login, no session cookie and no
account to get restricted.
Most Instagram scrapers hand you posts. This one also tells you what people are actually searching for on Instagram, how much volume a term carries, and which terms sit next to it, which is the part that usually requires guesswork.
Removed posts and misspelled usernames are reported as errors rather than returned as rows of empty numbers: Instagram answers HTTP 200 for both, and a scraper that does not check turns a deleted post into an account that looks like it has no engagement.
What this Instagram scraper returns
- Profile lookups by username: exact follower count (268,480,747 for
natgeo, not "268M"), exact post count, verified badge, profile picture, whether a public story is live, and the account's posts back through its full history with full engagement, plus its Reels tab. Biography, link-in-bio URLs and related profiles are filled when Instagram exposes them publicly. - Keyword search volume per term, as Instagram reports it (
37M reelsforlaptop), returned both as displayed text and as a parsed integer. - Up to 30 related keywords per term, taken from Instagram's own related links rather than inferred. Each one is itself a valid term you can crawl.
- Automatic keyword expansion up to three levels deep, so one seed can produce hundreds of real Instagram search terms.
- Up to 12 reels per keyword, each returned complete with views, caption, owner and download links, at no extra request.
- Reel engagement: exact like counts (not the rounded
592Kthe page shows), total comment count, view counts, caption, hashtags, mentions and post date. - Comments on each reel: author, user id, verified badge, text, like count, reply linkage and timestamp. No login involved.
- Direct download URLs: MP4 video links in every available quality, plus full-size images, thumbnails and the creator's profile picture.
- Reel metadata: duration, dimensions, audio flag, music title and artist, tagged users and location when published.
- 72 trending terms with EXACT volumes from Instagram's trending page
(
new month= 15,273,919, not "15M"), each with rank, thumbnail and a featured reel. Plus 12 ranked trending creators and Instagram's own 12-category browse taxonomy. - Creator follower counts and engagement rate on every reel, so you can rank creators by performance rather than raw audience size.
- Audio track title, artist, and whether it is original audio.
- Profile stats for any username: followers, following, post count, display name.
- Location data for any Instagram location ID: name, latitude, longitude and total tagged posts.
Why scrape Instagram keywords instead of hashtags
Hashtag tools tell you how many posts carry a tag. That is a supply number: how many people published something. It says nothing about how many people went looking. Instagram's own popular-search pages expose the demand side, which is why the same term can look enormous as a hashtag and thin as a search.
The related-keyword links are the more valuable half. Instagram publishes, for
each term, the terms it considers adjacent, in real user phrasing rather than
compressed hashtag form. laptop leads to how to screenshot on a laptop,
crochet laptop sleeve for men and como dividir pantalla en laptop. Those are
content briefs and ad-targeting seeds, and they are phrases no hashtag
generator would produce because nobody tags a post #comodividirpantallaenlaptop.
Because every related term is a real page, the graph can be walked. Set the expansion depth and one seed becomes a map of a niche as Instagram itself organises it, with a volume figure attached to each node.
Input
Pick what kind of input you have, then paste it. Instagram URLs are always detected automatically, whatever type is selected.
| Search type | What you give it | What you get back |
|---|---|---|
| Keyword | laptop | Search volume, 30 related keywords, up to 12 reels |
| Profile | natgeo or @natgeo | Exact follower / post counts, plus the account's recent posts |
| URL | any post, reel or profile link | The item behind the link, fully enriched |
| Location | 212988663 | Name, coordinates, total tagged posts |
| Trending | set includeTrending to true | 72 trending terms with exact volumes, 12 creators, 12 categories |
Trending is switched on with includeTrending, next to any search type;
selecting the Trending search type on its own does not turn it on.
With the URL search type you can mix kinds in one run: @natgeo is read
as a profile, a number of six digits or more as a location ID, a link as the
item behind it, and anything else as a keyword. Passing
["laptop", "@natgeo", "https://www.instagram.com/reel/DVdFk_9jCan/", "212988663"]All fields
| Field | Type | Default | Description |
|---|---|---|---|
searchType | select | keyword | Which of the five input kinds you are giving. |
search | array | ["laptop"] | Required. The terms, usernames, URLs or IDs. |
mode | select | both | keywords, reels, or both. |
expandRelated | integer 0–3 | 1 | Levels of related-keyword expansion. |
maxKeywords | integer | 25 | Cap on keyword pages fetched. |
maxReels | integer | 50 | Cap on reel rows. |
maxPostsPerProfile | integer | 12 | Posts per profile, newest first, back through the full history (up to 1000). |
maxReelsPerProfile | integer | 0 | Reels from each profile's Reels tab (up to 1000). |
enrichReels | boolean | true | Fetch each reel's page for exact counts and comments. |
includeCreatorStats | boolean | true | Add follower count, engagement rate, audio and duration. |
includeComments | boolean | true | Attach comments to each reel row. |
maxComments | integer | 30 | Cap on comments per reel. |
expandRelatedTopics | boolean | true | Also follow per-reel related-topic links. |
includeTrending | boolean | false | Also return Instagram's trending page. |
seedFromTrending | boolean | false | Also crawl Instagram's trending terms. |
maxSeedTerms | integer | 10 | How many trending terms to seed from. |
concurrency | integer 1–16 | 8 | Parallel requests. |
The older queries, profiles and locationIds fields still work for saved
tasks, and now auto-detect what you put in them.
Output
Rows are mixed and discriminated by record_type. The examples below are real
rows from runs of this Actor; long lists are cut to their first items and the
signed media URLs (video_url, video_urls, image_url, thumbnail_url,
profile pictures) are left out for length.
A keyword row for sneakers:
{"record_type": "keyword","keyword": "sneakers","keyword_slug": "sneakers","display_name": "Sneakers","url": "https://www.instagram.com/popular/sneakers/","reels_volume_text": "243M","reels_volume": 243000000,"related_keywords": ["2026 sneaker trends women","adidas leo sneaker damen deichmann","alexander mcqueen glitter sneakers","bapesta sneakers"],"related_keyword_count": 30,"top_reel_shortcodes": ["DaYhTunSIzC","DagGuj1x6Uz","DahHqojgKnR"],"top_reel_count": 12,"top_creators": ["absolute.mx","archivzsneakers_","dk_cldoris"],"top_reel_total_views": 60233490,"top_reel_median_views": 3270145,"meta_description": "Watch short videos about sneakers from people around the world.","depth": 0}
A reel row found through the keyword laptop:
{"record_type": "reel","shortcode": "DZ-697PBHzx","url": "https://www.instagram.com/reel/DZ-697PBHzx/","source_keyword": "laptop","owner_username": "kimmyruth_","owner_full_name": "Kimberly Hoff","owner_id": "17841468010245770","owner_is_verified": false,"owner_is_private": false,"owner_followers": 83980,"engagement_rate": 119.5142,"caption": "Some laptop cleaning asmr for your feed 🤗💻\n\n#cleaningasmr #asmrsounds #cleanwithme #cleaningmotivation","hashtags": ["cleaningasmr","asmrsounds","cleanwithme","cleaningmotivation"],"mentions": [],"likes": 100368,"comments_count": 341,"views": 1334585,"posted_at": "2026-06-24T21:08:37Z","posted_at_timestamp": 1782335317,"duration_seconds": 51.337,"width": 1080,"height": 1920,"has_audio": true,"product_type": "clips","is_video": true,"music_artist": "kimmyruth_","music_is_original_audio": true,"accessibility_caption": null,"carousel_media_count": null,"is_paid_partnership": null,"coauthors": [],"source_profile": null,"music_title": "Original audio","audio_id": null,"location_name": "Austin, Texas","location_id": "103023564486265","location_lat": 30.205879846457,"location_lng": -97.807801152261,"tagged_users": [],"related_topics": ["macbook deep clean","satisfying cleaning","how to clean laptop screen"],"comments": [{"id": "18110203955594859","username": "shakeelhaider159","user_id": "27306307418","user_is_verified": false,"text": "I like it ❤️","likes": 0,"reply_count": null,"is_reply": false,"parent_comment_id": null,"created_at": "2026-09-23T05:41:42Z","created_at_timestamp": 1790142102}],"enriched": true,"went_viral": true,"like_to_view_rate": 7.5205,"comments_returned": 15}
Reel rows also include owner_profile_pic_url, the creator's profile picture
URL as a string, or null when it is unavailable.
A profile row for natgeo:
{"record_type": "profile","username": "natgeo","url": "https://www.instagram.com/natgeo/","full_name": "National Geographic","user_id": 787132,"followers": 268480747,"posts_count": 32035,"following": null,"is_verified": true,"has_public_story": true,"pronouns": [],"recent_post_shortcodes": ["Dd8u0tIFz1F","Dd97mt9AeqL","Dd9nPU7Azb6"],"recent_post_count": 6}
Profile rows also carry followers_text, posts_count_text and, when
Instagram exposes them, biography, bio_links and related_profiles.
Location rows carry name, latitude, longitude and media_count.
Trending rows carry topic, rank, an exact media_count, thumbnail_url and
featured_reel_shortcode. Category rows carry category, keyword and
media_count.
Use cases
Content planning for social teams. Pick the topic you publish about, expand
two levels, and sort by reels_volume. You get a ranked list of what Instagram
users search in that niche, phrased the way they phrase it. The related
keywords double as video titles, because they are already questions and
qualifiers rather than compressed tags.
Instagram trends monitoring. Run the trending topics daily with a scheduled task and diff the output. Topics enter and leave Instagram's trending page faster than they enter general search trend tools, and each one links to a keyword page with its own volume and reels, so you can go from "this is spiking" to "here is who is winning it" in one run.
Influencer and creator discovery. Every keyword page returns the creators
Instagram ranks for that term, and every reel carries its creator's follower
count and engagement rate. That lets you sort a niche by performance instead of
audience size, which is how you find the 2,745-follower account whose reel did
597,000 likes. went_viral flags exactly those cases.
Ad copy and targeting research. The related-keyword graph is phrase-level demand data for a platform that does not publish a keyword planner. Paid social teams use it to write hooks in the audience's own words and to find adjacent interests worth testing, at a fraction of what a managed Instagram data API charges per record.
How this Instagram scraper compares
| This actor | apify/instagram-scraper | apify/instagram-hashtag-analytics-scraper | |
|---|---|---|---|
| Price per 1k results | $1.40 | $2.70 | $2.30 |
| Actor start fee | none | none | $0.001 |
| Search-phrase volume | yes | no | no |
| Hashtag post counts | no | no | yes |
| Related terms | search phrases | no | related hashtags |
| Multi-level expansion | yes, up to 3 | no | no |
| Trending topics | yes | no | no |
| Reels with engagement | yes | yes | top/latest posts as add-ons |
| Comments included | yes, in the reel row | separate run | no |
| Video download URLs | yes, included | $0.02/reel add-on | no |
| View counts | yes | yes | no |
| Profile stats | yes | yes | no |
| Location metadata | yes | yes | no |
| Full post history per profile | yes, up to 1000 | yes | no |
| Comment threads | no | yes | no |
Being straightforward about the overlap. If you want hashtag metrics, Apify's hashtag analytics actor gives post counts, posts per day and related hashtags, and it does that well. The difference is which namespace you are measuring: hashtags are what publishers tagged, search phrases are what users typed. This actor reports the search side, in full phrases like
how to screenshot on a laptopBoth actors read a profile's post history; this one stops at 1000 posts per profile. Note the add-on pricing though: Apify's reel scraper charges $0.02 per reel for a video download link and runs a separate actor for comments. Here both are part of the row you already paid for. At $1.40 per 1k this runs below both, with no start fee.
Pricing
$0.0014 per result, which is $1.40 per 1,000 rows. Every row bills the same regardless of type, so cost is predictable from row count alone. All pricing is pay-per-event, you only pay for results you receive. No actor-start fee, no per-compute-unit charges.
Limits and gotchas
- Volume counts reels, not all posts.
37M reelsis a reels figure. Treat it as relative demand between terms, not as a total post count. - Terms are traversed, not guessed. Instagram only builds a popular-search
page for terms it has indexed, so an invented phrase returns nothing. Seed
with a common head term and use
expandRelatedto reach the long tail, or switch onseedFromTrendingto start from terms Instagram itself is promoting. Even those are not universally live: a very fresh news term can be listed on the trending page before its own page exists. When a seed has no page, the run reports it inerrorsand continues. - Like counts are exact. They come from Instagram's embedded data
(
597018), not the rounded597Kon the page. In the rare case only the rounded figure is available, the row setslikes_are_approximate: true. - Comments are a sample, not the full thread. Instagram serves roughly 12
to 15 top-level comments per reel without a login.
comments_countgives the true total;comments_returnedtells you how many you got. RaisingmaxCommentspast what Instagram serves changes nothing. - Download URLs expire. Instagram signs its CDN links, so
video_urlandimage_urlare valid for hours, not indefinitely. Fetch the media promptly or re-run for fresh links. - Enrichment costs one request per reel. With it off you still get views, captions, owner details and download URLs, because those come inlined with the keyword page. Only exact like counts, comment totals and the comments themselves need the extra request.
- Long-tail terms return fewer related keywords. Head terms give 30, niche terms give as few as 3. That is the graph thinning out, not an error.
- Volume is mostly a head-term figure. Instagram publishes a reels count
for popular terms but usually omits it on long-tail ones, so expanded
keywords often have
reels_volume: null. Their related links and reels are unaffected. - No login means no private data. Private accounts, stories, follower lists and comment threads are all out of reach by design.
- Engagement rate is uncapped and can exceed 100%. It is likes divided by
the creator's followers. A reel that escapes its creator's audience will read
in the thousands of percent (597,018 likes against 2,745 followers is 21,749%).
That is real signal, not a bug. Use
like_to_view_ratewhen you want a measure that does not depend on audience size. - Exact volumes come from the trending page, not term pages. Term pages show
a rounded figure (
243Mforsneakers); the trending page publishes the exact integer (15,273,919 fornew month) for the terms it lists. - Profile mode goes back through the full post history, up to 1000 posts per profile. Deep runs take longer: 1000 posts are about 84 page reads.
- Free Apify plans are capped at 10 rows per run. Paid plans are uncapped.
FAQ
Can I scrape Instagram without logging in? Yes. This actor only reads pages Instagram serves publicly, so no credentials are used or stored, and nothing you own can be rate-limited or restricted.
How do I do Instagram keyword research?
Seed a term you care about, set expandRelated to 1 or 2, and sort the keyword
rows by reels_volume. You get real Instagram search terms with volume
attached, which is the closest equivalent to a keyword planner Instagram has.
Is this an Instagram hashtag generator?
Not exactly, and it is more useful for planning. It returns search phrases
rather than tags. Hashtags found in reel captions are extracted into the
hashtags field, so you get real tags in use as a by-product.
How do I find Instagram trends?
Set includeTrending to true, with any search type. You get Instagram's current trending topics with
rankings, and each topic is a keyword you can then expand for volume and reels.
How accurate are the follower and like counts?
Profile rows carry the exact follower and post counts from Instagram's own
data (natgeo: 268,480,747 followers). Like counts are exact too. Keyword
volumes are the rounded figure Instagram displays (243M becomes
243000000), except on the trending page, which publishes exact integers.
Can I download Instagram reels and videos with this?
Yes. Every reel row carries video_url with a direct MP4 link in the highest
available quality, plus video_urls for the other renditions and image_url
for the still. The links are Instagram's own signed CDN URLs, so download
promptly, they expire after a few hours.
Can I scrape Instagram comments without logging in?
Yes. Each reel row includes a comments array with author, user id, verified
badge, text, like count, reply linkage and timestamp. Instagram serves roughly
12 to 15 top-level comments per reel publicly, and comments_count tells you
the true total.
Can I scrape all posts from an Instagram account?
Yes, up to 1000 posts per profile, newest first, with exact likes, comments,
views on videos, tagged accounts, collaborators, place and download links. Set
maxPostsPerProfile to the depth you need.
Can I get an Instagram creator's follower count and engagement rate?
Yes. Every reel row includes owner_followers, engagement_rate (likes over
followers) and like_to_view_rate (likes over views), plus a went_viral flag
when a reel outperformed its creator's audience.
Do I need an Instagram account or API key to use this Instagram scraper? No. It reads public pages only. You need an Apify account to run it, nothing from Instagram.
What is an Instagram location ID and where do I find one?
It is the number in an instagram.com/explore/locations/<id>/ URL. Pass it in
locationIds to get the name, coordinates and total tagged post count.