Instagram Scraper
Pricing
from $3.50 / 1,000 instagram results
Instagram Scraper
Scrape Instagram profiles, posts, reels, comments, hashtags, and places by parsing public pages through Apify proxy. No API, no browser, no login required. Honest caps for logged-out data.
Pricing
from $3.50 / 1,000 instagram results
Rating
0.0
(0)
Developer
Admo Solutions
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a month ago
Last modified
Categories
Security
Limited permissionsShare
Scrape Instagram profiles, posts, reels, comments, hashtags, and places by parsing public pages through Apify proxy. No Instagram API, no browser, no login required.
Features
- Profiles — username/URL → details (followers, bio, verified, approximate posts count)
- Posts & Reels — captions, media, likes, comments count, date, location (nullable)
- Comments — text, author, likes, date (first embedded page per post)
- Hashtags — volume (approximate), popular media; each item detail-fetched for exact stats
- Places — name, lat/lng, category, media count (address unavailable logged-out)
- Retry ladder — full-browser headers, rate-limit-shell detection, 429 backoff, datacenter → residential
- Date filter — only posts newer than X (dropped posts not charged)
- Honest failures — explicit error rows, never fabricated data
- Any Apify output format — JSON, CSV, Excel, XML; run via REST API, schedule runs, or use webhooks and MCP
Honest caps (logged-out public pages)
| Capability | Cap |
|---|---|
| Profile post list | first grid page only (~12; no pagination without API) |
| Comments | first embedded page (~13 per post; commentsCount shows true total) |
| Hashtag feed | popular reels grid (~12), per-item stats via detail fetch |
| Hashtag / profile counts | parsed from formatted strings (3.9B, 32K) — approximate |
| Place address / place-by-name search | unavailable → address: null / honest error row |
| Mentions mode | removed (needs search API) |
Pricing
$3.50 per 1,000 results (pay-per-event). One result = one row (post, comment, profile, hashtag, place). Minimum $0.05/run.
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | [] | Profile/post/hashtag/place URLs |
searchQueries | array | [] | Keywords for discovery |
searchType | enum | hashtag | hashtag | profile | place |
contentToScrape | enum | posts | posts | reels | comments | details |
resultsLimit | int | 50 | Max results per URL (1–5000) |
onlyPostsNewerThan | string | — | ISO date or relative (7 days) |
sessionCookie | string (secret) | — | Instagram sessionid (reduces rate limiting) |
proxyConfiguration | object | datacenter | Apify standard; RESIDENTIAL recommended for stability |
maxConcurrency | int | 4 | 1–10 |
maxRequestRetries | int | 4 | 0–10 |
Output
One row per result. type ∈ profile, post, comment, hashtag, place, error. Error rows are pushed but never charged.
profile — details of a profile
| Field | Meaning |
|---|---|
type | always profile |
id | Instagram user ID |
username | handle |
full_name | display name |
bio | biography text |
external_url | website link |
followers, following | exact counts from embedded JSON |
posts_count | approximate (parsed from formatted 32K) |
is_verified, is_private, is_business | account flags |
profile_pic_url | avatar URL |
url | canonical profile URL |
fetched_at | ISO 8601 fetch timestamp |
post — post or reel
| Field | Meaning |
|---|---|
type | always post |
id | media ID |
short_code, url | shortcode and canonical /p/ URL |
post_type | image, video, carousel or reel |
caption | caption text |
media_urls | media URLs; carousel includes every slide |
likes | like count (exact) |
comments_count | true total comments on the post |
posted_at | ISO 8601 publish time (UTC) |
location | geotag name; null when ungeotagged |
tagged_users | tagged usernames; null when absent |
fetched_at | ISO 8601 fetch timestamp |
comment — first embedded page per post (~13)
| Field | Meaning |
|---|---|
type | always comment |
id | comment ID |
post_id, post_url | post the comment belongs to |
text | comment body |
author, author_username | display name and handle |
likes | comment like count |
created_at | ISO 8601 time (UTC) |
fetched_at | ISO 8601 fetch timestamp |
hashtag — details mode
| Field | Meaning |
|---|---|
type | always hashtag |
name | tag name without # |
media_count | approximate (parsed from formatted 3.9B) |
related_hashtags | always null when logged out |
url | canonical tag URL |
fetched_at | ISO 8601 fetch timestamp |
place — details mode
| Field | Meaning |
|---|---|
type | always place |
id | location ID |
name, slug | place name and URL slug |
address, city | always null when logged out |
lat, lng | coordinates (exact) |
category | place category |
media_count | media count (exact) |
fetched_at | ISO 8601 fetch timestamp |
error — honest failure, never charged
| Field | Meaning |
|---|---|
type | always error |
error_code | rate_limited, login_required, private_account, not_found, http_error, invalid_input |
message | human-readable detail |
input | target URL/query that failed |
fetched_at | ISO 8601 fetch timestamp |
Usage
$apify run -a admo-solutions/instagram-scraper
Or via API with {"startUrls": [{"url": "https://www.instagram.com/natgeo/"}], "contentToScrape": "posts"}.
