Instagram Latest Posts Scraper
Pricing
from $0.01 / 1,000 results
Instagram Latest Posts Scraper
Hand it a list of Instagram handles and get back each profile's newest posts — caption, likes, comments, timestamp, media URLs and video views — one clean dataset row per post. No browser, just fast public-API requests.
Pricing
from $0.01 / 1,000 results
Rating
0.0
(0)
Developer
Assia Fadli
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Feed this actor a list of Instagram handles and it hands back each profile's newest posts — captions, likes, comments, timestamps, media URLs and video view counts. You get one dataset row per post, ready to drop into a sheet, a database or the next step of your pipeline.
Under the hood it talks to Instagram's own public web_profile_info endpoint
(the same request the instagram.com website makes). There's no headless browser
involved, so runs are fast, light and cheap.
What you can do with it
- Track what your competitors or favourite creators just posted.
- Pull recent captions and engagement for content research.
- Build a lightweight feed monitor across many accounts at once.
- Grab media URLs and video view counts for reporting.
Input
| Field | Type | Required | Description |
|---|---|---|---|
usernames | array of strings | yes | Handles to scrape (with or without @, plain handle or full profile URL). |
maxPosts | integer | no | Cap on recent posts per profile. Omit to return everything available (~12). |
sessionCookie | string (secret) | no | Value of your Instagram sessionid cookie. Boosts success rate and unlocks otherwise-blocked profiles. |
proxyCountry | string | no | Two-letter country code for the residential proxy (e.g. US, GB, DE). |
The original instagramUsernames, sessionId and proxyCountryCode field names
are still accepted as aliases, so existing configs keep working unchanged.
Input example
{"usernames": ["nasa", "instagram"],"maxPosts": 12}
Output
One row per post, each prefixed with the owning username:
| Field | Description |
|---|---|
username | The profile the post belongs to. |
shortcode | Instagram post shortcode. |
url | Canonical post URL (https://www.instagram.com/p/<shortcode>/). |
caption | Post caption text. |
likes | Like count. |
comments | Comment count. |
timestamp | Post time as an ISO 8601 string. |
isVideo | Whether the post is a video. |
videoViewCount | View count (videos only, otherwise null). |
displayUrl | Full-size media URL. |
thumbnailSrc | Thumbnail media URL. |
isPinned | Whether the post is pinned on the profile. |
accessibilityCaption | Auto-generated alt-text describing the image. |
Output sample
{"username": "nasa","shortcode": "DABc123XyZ","url": "https://www.instagram.com/p/DABc123XyZ/","caption": "A stunning view of a distant galaxy captured by our telescope.","likes": 482913,"comments": 1204,"timestamp": "2026-07-15T18:30:00.000Z","isVideo": false,"videoViewCount": null,"displayUrl": "https://instagram.f...cdn.net/....jpg","thumbnailSrc": "https://instagram.f...cdn.net/....jpg","isPinned": false,"accessibilityCaption": "Photo by NASA on July 15, 2026."}
If a handle can't be fetched (invalid handle, private/empty profile, or a
block), the actor writes a single { "username": "...", "error": "..." } row for
that handle instead of crashing the whole run.
Pricing — pay per event
This actor uses Apify's pay-per-event pricing. You're charged one
post-scraped event per delivered post row. Error and empty-profile rows are
never charged, and the run stops automatically once your event budget is reached
so you're never billed beyond it.
Notes
- Proxies: Residential proxies are strongly recommended — Instagram aggressively rate-limits datacenter and cloud IPs. If proxies aren't available on your account, the actor gracefully falls back to a direct connection.
- Session cookie: Supplying your
sessionCookiemarkedly increases reliability and reaches profiles that are otherwise blocked for anonymous requests. - Post count: The
web_profile_infoendpoint returns roughly the 12 most recent posts per profile.maxPostscan only cap that set, not exceed it. - Private profiles: Posts from private accounts are not returned.