{"id":8,"date":"2026-05-24T18:02:04","date_gmt":"2026-05-24T18:02:04","guid":{"rendered":"https:\/\/scrapios.com\/?p=8"},"modified":"2026-05-24T21:53:03","modified_gmt":"2026-05-24T21:53:03","slug":"how-to-scrape-instagram-profiles-posts","status":"publish","type":"post","link":"https:\/\/scrapios.com\/?p=8","title":{"rendered":"How to Scrape Instagram Profiles, Posts and Hashtags (Without the API Restrictions)"},"content":{"rendered":"<p>Instagram&#8217;s official API was gutted in 2018 after the Cambridge Analytica scandal. What was once a rich public API now only gives access to your own content unless you&#8217;re a verified business partner. For anyone doing competitor research, influencer analysis, or social listening \u2014 you need an alternative approach.<\/p>\n<h2>What You Can Extract from Instagram<\/h2>\n<ul>\n<li><strong>Profile data<\/strong> \u2014 username, followers, following, post count, bio, website, verified status<\/li>\n<li><strong>Posts<\/strong> \u2014 image\/video URLs, captions, likes, comments count, hashtags, mentions, location<\/li>\n<li><strong>Reels<\/strong> \u2014 view count, likes, comments, audio used<\/li>\n<li><strong>Hashtag feed<\/strong> \u2014 top and recent posts for any hashtag<\/li>\n<li><strong>Comments<\/strong> \u2014 text, author, timestamp, likes<\/li>\n<\/ul>\n<h2>Instagram&#8217;s Defence Mechanisms<\/h2>\n<p>Instagram uses Meta&#8217;s full ML-powered anti-abuse stack:<\/p>\n<ul>\n<li><strong>Login required<\/strong> for most data since 2023 \u2014 guest access is heavily restricted<\/li>\n<li><strong>Rate limiting<\/strong> per account and per IP \u2014 even logged-in accounts get rate limited<\/li>\n<li><strong>Account checkpoints<\/strong> \u2014 automated behaviour triggers phone verification<\/li>\n<li><strong>GraphQL signature verification<\/strong> \u2014 their internal API requires rotating tokens<\/li>\n<\/ul>\n<h2>Manual Approach \u2014 Instaloader (Python)<\/h2>\n<p>Instaloader is the most popular open-source tool for Instagram scraping. Here&#8217;s how to use it:<\/p>\n<p><strong>Step 1 \u2014 Install<\/strong><\/p>\n<pre><code>pip install instaloader<\/code><\/pre>\n<p><strong>Step 2 \u2014 Scrape a profile<\/strong><\/p>\n<pre><code>import instaloader\n\nL = instaloader.Instaloader()\n\n# Public profile \u2014 no login needed (for now)\nprofile = instaloader.Profile.from_username(L.context, \"natgeo\")\n\nprint(f\"Followers: {profile.followers}\")\nprint(f\"Posts: {profile.mediacount}\")\nprint(f\"Bio: {profile.biography}\")\n\n# Download recent posts\nfor post in profile.get_posts():\n    print(post.url, post.likes, post.comments)\n    break  # just the first one<\/code><\/pre>\n<p><strong>Step 3 \u2014 Handle rate limits<\/strong><\/p>\n<p>Instagram rate-limits aggressively. Even with login, pulling data on 50+ profiles in one session typically triggers a temporary block. You&#8217;ll need:<\/p>\n<ul>\n<li>Multiple Instagram accounts in rotation<\/li>\n<li>Random delays between requests (30\u2013120 seconds)<\/li>\n<li>Residential proxies \u2014 each account on a different IP<\/li>\n<li>Session persistence to avoid re-login fingerprinting<\/li>\n<\/ul>\n<p>Accounts used for scraping get suspended. Managing a pool of accounts is time-consuming and fragile.<\/p>\n<h2>Using Scrapios Instead<\/h2>\n<p>Scrapios abstracts all the session management, proxy rotation, and rate limiting. Here&#8217;s the same profile pull:<\/p>\n<pre><code>curl -X POST https:\/\/api.scrapios.com\/api\/v1\/ext\/jobs \n  -H \"X-API-Key: scr_live_YOUR_KEY\" \n  -H \"Content-Type: application\/json\" \n  -d '{\n    \"url\": \"https:\/\/www.instagram.com\/natgeo\/\",\n    \"catalog_scraper_id\": 5,\n    \"catalog_version_id\": 14\n  }'<\/code><\/pre>\n<pre><code>{\n  \"status\": \"completed\",\n  \"result\": {\n    \"preview_data\": [{\n      \"username\": \"natgeo\",\n      \"full_name\": \"National Geographic\",\n      \"followers\": 283000000,\n      \"following\": 168,\n      \"posts_count\": 27432,\n      \"bio\": \"Experience the world through the eyes of National Geographic photographers.\",\n      \"website\": \"https:\/\/www.nationalgeographic.com\",\n      \"verified\": true,\n      \"is_private\": false\n    }]\n  }\n}<\/code><\/pre>\n<h2>Influencer Vetting Checklist<\/h2>\n<p>When evaluating an Instagram influencer for a campaign, pull these data points:<\/p>\n<ol>\n<li><strong>Follower count<\/strong> \u2014 baseline reach<\/li>\n<li><strong>Engagement rate<\/strong> \u2014 aim for >3% (likes + comments \u00f7 followers)<\/li>\n<li><strong>Follower growth trend<\/strong> \u2014 scrape weekly for 4 weeks<\/li>\n<li><strong>Recent post frequency<\/strong> \u2014 active accounts post 3\u20137x per week<\/li>\n<li><strong>Comment quality<\/strong> \u2014 generic comments (&#8220;Nice!&#8221; &#8220;\ud83d\udd25\ud83d\udd25&#8221;) signal fake engagement<\/li>\n<\/ol>\n<div style=\"background:#0c1629;border:1px solid #27272a;border-radius:16px;padding:40px;text-align:center;margin:40px 0;\">\n<h3 style=\"color:#fff;margin-bottom:12px;\">Vet influencers with real data<\/h3>\n<p style=\"color:#71717a;font-size:.9rem;margin-bottom:24px;\">500 free credits every month. Pull 50 Instagram profiles per month at zero cost.<\/p>\n<p>  <a href=\"https:\/\/app.scrapios.com\/register\" style=\"background:#7c3aed;color:#fff;padding:12px 28px;border-radius:8px;font-weight:600;text-decoration:none;display:inline-block;\">Create free account \u2192<\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Instagram removed most of its public API in 2018. Here is how developers extract follower counts, post metrics, and hashtag data today.<\/p>\n","protected":false},"author":1,"featured_media":13,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-8","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials"],"_links":{"self":[{"href":"https:\/\/scrapios.com\/index.php?rest_route=\/wp\/v2\/posts\/8","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scrapios.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scrapios.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scrapios.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/scrapios.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8"}],"version-history":[{"count":1,"href":"https:\/\/scrapios.com\/index.php?rest_route=\/wp\/v2\/posts\/8\/revisions"}],"predecessor-version":[{"id":14,"href":"https:\/\/scrapios.com\/index.php?rest_route=\/wp\/v2\/posts\/8\/revisions\/14"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/scrapios.com\/index.php?rest_route=\/wp\/v2\/media\/13"}],"wp:attachment":[{"href":"https:\/\/scrapios.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scrapios.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scrapios.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}