Instagram Public Posts Scraper
Pricing
from $2.10 / 1,000 public instagram post delivereds
Instagram Public Posts Scraper
Scrape current public Instagram posts and reels, captions, media links, and source URLs from logged-out profile pages without login.
Pricing
from $2.10 / 1,000 public instagram post delivereds
Rating
0.0
(0)
Developer
Tim Zinin
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Instagram Public Posts & Reels Scraper

Turn a public Instagram profile into structured post and reel rows for monitoring, research, or an internal content dashboard. Submit an exact profile root such as https://www.instagram.com/instagram/; the Actor returns source-visible post IDs, post or reel URLs when exposed, captions, display-media URLs, media types, product types, and observation timestamps. It reads logged-out public profile HTML through Apify Residential Proxy. No Instagram login, cookies, browser session, or customer credential is required.
Each run observes one currently returned HTML document per requested profile and delivers at most 12 rows in total. This is a bounded current-feed observation, not a full profile archive. If the first profile fills the shared cap, later profiles are not requested. The retained real source fixture produced 12 rows from instagram, with validated post or reel URLs. likeCount and publishedAt remain null because that source did not expose verified values. A URL remains null when the source node provides neither a valid canonical URL nor a shortcode.
{"profileUrls":["https://www.instagram.com/instagram/"],"maxItems":12}
The price is $0.003 per delivered post or reel through result-found. There is no start fee or default Dataset-item fee, and source failures or diagnostics are free. Bronze pays $0.0027, Silver $0.0024, and Gold, Platinum, and Diamond $0.0021 per delivered row. Repeating a successful observation is billable again because it delivers a fresh timestamped Dataset row.
Selected fields from the retained public fixture:
{"postId":"3983211470613048091","postURL":"https://www.instagram.com/reel/DdHNbqDJusb/","username":"instagram","caption":"Every room is its own world 🖊️\n\n@draw_vengers drew this building cutaway with fineliner pens. Inside each space? Imaginary elements like a nuclear-powered rocket, an indoor shipwreck and more.\n\n“I really made the drawing up as I went along! The fun was in thinking up all sorts of ideas for what rooms I could draw in.”\n\nVideo by @draw_vengers\n\nMusic by @harrystyles","mediaType":2,"productType":"clips","likeCount":null,"publishedAt":null,"sourceURL":"https://www.instagram.com/instagram/","observedAt":"2026-09-12T11:49:47+00:00"}
What you receive
The default Dataset contains one row per delivered source node. Every row includes schemaVersion, recordType, postId, postURL, username, caption, displayUrl, mediaType, productType, likeCount, publishedAt, sourceURL, observedAt, a SHA-256 source reference, and billing metadata. Nullable fields remain null; the Actor does not manufacture missing engagement or dates.
OUTPUT records the outcome, delivery status, per-profile evidence, errors, and a compact snapshot of delivered rows. outcome: "completed" means the available rows were delivered without a source error. deliveryComplete and coverage.complete remain false at the one-page boundary because the result is not a full archive. source_failed, partial, empty, and budget_stopped stay distinct.
How the source is handled

The parser reads only application/json data-sjs Relay data found in the received logged-out page. It accepts nodes whose embedded username matches the requested profile, or whose timeline profile ID joins to that verified username. Public URLs come only from a validated Instagram canonical URL or shortcode. It leaves publishedAt null unless the received source contains a verified timestamp; it does not infer a publication date from a media ID. It does not create private GraphQL calls or follow pagination.
Requests use HTTPS with certificate validation, reject redirects, allow one attempt per profile, cap both compressed and decoded content at 5 MiB, and share a bounded run deadline. A login redirect, HTTP error, unexpected content type, malformed Relay data, oversized response, or timeout produces no paid row.
Ready-to-use Task recipes
Current profile snapshot — up to 12 source-visible nodes
{"profileUrls":["https://www.instagram.com/instagram/"],"maxItems":12}
Three-row sample from the same verified source
{"profileUrls":["https://www.instagram.com/instagram/"],"maxItems":3}
Repeat snapshot — schedule the same bounded input
{"profileUrls":["https://www.instagram.com/instagram/"],"maxItems":12}
Replace instagram with the exact root of the public profile you are authorized to observe. Inputs can contain up to 10 unique profiles, but the 12-row cap is shared and input order matters.
Costs and run budgets
| Tier | Price per delivered row | 12 delivered rows |
|---|---|---|
| Base | $0.0030 | $0.0360 |
| Bronze | $0.0027 | $0.0324 |
| Silver | $0.0024 | $0.0288 |
| Gold / Platinum / Diamond | $0.0021 | $0.0252 |
The runtime checks the run's effective charge limit before requesting the source and again before each paid write. When starting runs through the Apify API, use a positive maxTotalChargeUsd. A value of 0 can be treated by the platform as unset and replaced by its default. To verify the no-affordable-row path, use a small positive value below one result price, such as 0.0001.
Repeat observations safely
Keep the exact input, run ID, Dataset, and OUTPUT together. Compare postId values only across the same ordered profile list and maxItems. A missing ID means only that the item was not observed within that run's one-page, 12-row boundary; it does not prove deletion. Media CDN URLs can expire, so retain the post URL and source evidence rather than treating a display URL as permanent storage.
Use the data only for lawful purposes and according to Instagram's terms and applicable rights. The Actor reads public pages and does not access private profiles, messages, or account data.