Social & video
Instagram Scraper
instagram.com
Instagram decides what to serve based on the exit it sees, not on how convincing your browser is: from a datacenter address it answers a profile URL with its login wall, and it does so with a normal-looking 200. We detect that wall and draw a fresh exit rather than returning it, which is why this reads 100% where it used to sit in the eighties - the old figure was counting login walls as successes. Profile and post pages are both server-rendered, so no browser is involved and a call lands in about two seconds. Add `parsed_data=true` and you get the numbers as exact integers rather than the rounded prose the page paints - Instagram renders "287K likes" where the payload says 287,279. Per-post counts come from the post URL: Instagram leaves them out of what it serves on a profile page, so the profile returns the grid with a permalink for each post and no invented numbers.
What you can extract
- Public profile: username, full name, bio, follower and following counts
- Post and reel: caption, exact like and comment counts, publish date
- Profile grid: the 12 most recent posts, each with its permalink
- Post media URLs and thumbnails
- Verified badge, profile picture and the external links in the bio
How to scrape it
curl -X POST \
-H "X-ScrapeUnblocker-Key: $SU_API_KEY" \
"https://api.scrapeunblocker.com/getPageSource?url=https%3A%2F%2Fwww.instagram.com%2Fnasa&parsed_data=true"import requests
resp = requests.post(
"https://api.scrapeunblocker.com/getPageSource",
headers={"X-ScrapeUnblocker-Key": SU_API_KEY},
params={"url": "https://www.instagram.com/nasa", "parsed_data": True},
)
print(resp.text)import { ScrapeUnblockerClient } from 'scrapeunblocker';
const su = new ScrapeUnblockerClient({ apiKey: process.env.SU_API_KEY });
const results = await su.getPageSource({
url: 'https://www.instagram.com/nasa',
parsedData: true,
});
console.log(results); Requests are POST and take their parameters in the query string. Browser rendering always happens - there is no flag to enable.
Frequently asked questions
Is it legal to scrape Instagram?
Collecting publicly available Instagram data such as profile bios, follower counts and post captions is lawful in many jurisdictions, but the rules depend on your country, the data you collect and how you use it. Some of it can be personal data, so follow the privacy rules that apply to you. ScrapeUnblocker returns the public page; what you collect and how you use it is your responsibility.
How do I scrape Instagram without getting blocked?
Instagram is protected by in-house anti-bot systems. ScrapeUnblocker rotates residential and ISP exits and handles challenges, and returns the public profile or post page. ScrapeUnblocker's 2026 benchmark measured 86.7% real content over 6,000 calls.
What Instagram data can I get?
From a public profile: username, full name, bio, follower and following counts, verified badge, profile picture, bio links and the 12 most recent posts with their permalinks. From a post or reel URL: the caption, exact like and comment counts, publish date and media URLs. Per-post counts come from the post URL, not the profile grid.
Do I need an Instagram API or account?
No. ScrapeUnblocker returns the public Instagram page as HTML, or structured JSON with parsed_data=true, without an Instagram API account or login on your side. With parsed_data=true, counts come back as exact integers rather than the rounded figures the page displays.
Can I monitor Instagram profiles at scale?
Yes. Request each profile or post URL separately, and calls run in parallel up to your plan's concurrency limit: 20 to 100 concurrent requests on Pay as you go, Starter and Pro, and 200 to 400 on Business, Scale and Ultimate. A profile call returns the grid; fetch the post URLs when you need per-post counts.
How much does it cost to scrape Instagram?
Pricing is per request: 1 request = 1 credit, from EUR 1.00 per 1,000 on pay as you go to about EUR 0.55 per 1,000 on the Ultimate plan. Blocks, timeouts and errors on ScrapeUnblocker's side are not billed; delivered pages are, including Instagram's own 404 page. The free trial includes 500 requests with no card.
Related scrapers
Start scraping this site today
Free tier included. No credit card required to test it.