Instagram Stories Scraper - Live Stories, Own Cookie avatar

Instagram Stories Scraper - Live Stories, Own Cookie

Pricing

Pay per event

Go to Apify Store
Instagram Stories Scraper - Live Stories, Own Cookie

Instagram Stories Scraper - Live Stories, Own Cookie

Capture public Instagram stories before they vanish: media URLs, type, timestamp, expiry and poster. Stories are login-gated by Instagram, so bring your own authorized session cookie; the actor never asks for a password. $0.40 per 1,000 stories plus a $0.001 start fee. No-cookie runs are free.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

10 hours ago

Last modified

Share

Instagram Stories Scraper

Extract the currently available stories from public Instagram accounts. The actor uses the authenticated Instagram web endpoints with dedicated-account sessions, one sticky datacenter proxy session per account/IP attempt, and bounded account/IP rotation when Instagram classifies a block.

It returns story metadata and direct media URLs. It does not download media binaries, scrape private accounts, or attempt to access expired stories or viewer lists.

Authentication and privacy

Instagram requires a logged-in session for current stories. For genuine data, provide one or more authorized dedicated-account sessionid values through the secret sessionCookies input, or configure the private actor environment variable INSTAGRAM_SESSION_COOKIES.

The environment fallback accepts a JSON array or newline-delimited values. Input cookies take precedence. Credentials, proxy URLs, and request headers are never logged, written to the dataset, stored in this repository, or included in diagnostic rows.

Use accounts you own and are authorized to automate. Session cookies are equivalent to an active login: keep them in Apify secrets or actor environment configuration, rotate/revoke them through your normal account process, and never paste them into source files, task names, or support messages.

Input

FieldPurpose
profilesUp to five public usernames, @handles, or Instagram profile URLs.
maxStoriesPerProfile1-50 current story rows for each profile; default 25.
sessionCookiesSecret array of authorized dedicated-account sessionid cookies.
proxyConfigurationProxy configuration; the default is Apify datacenter (BUYPROXIES94952). Metered groups (RESIDENTIAL, GOOGLE_SERP) are not offered and are replaced with datacenter addresses. Your own proxyUrls are used verbatim.
maxAttempts1-12 bounded account/IP attempts; default 6.
requestTimeoutSeconds5-30 seconds for each Instagram request; default 15.
maxRunSeconds20-180 seconds hard run deadline; default 120.

With empty input, or with profile input but no usable secure account session, the actor returns exactly one clearly labeled _sample row. The sample makes no Instagram request, no proxy connection, no credential use, and no billing event.

Method and reliability

For each requested public account, the actor resolves the profile through Instagram's authenticated web profile endpoint and reads its current story tray through the authenticated feed/reels_media endpoint. One account is paired with one sticky datacenter IP. A 401, 403, 429, server error, or network failure rotates to the next configured account and a fresh sticky proxy session, up to the configured bound. If Instagram challenges datacenter addresses for your account, supply your own residential endpoints in proxyUrls — they are honoured exactly as given.

Successful story rows are written to the dataset before the story billing event is charged. Samples, private-profile records, empty story trays, blocks, and all other diagnostics are never charged.

Output

Each genuine row contains:

  • storyId, sourceUsername, sourceProfileId, and ownerUsername
  • mediaType, imageUrl, videoUrl, durationSeconds, and dimensions
  • takenAt, expiresAt, caption, paid-partnership flag, and location when present
  • A canonical storyUrl

Stories are ephemeral. NO_CURRENT_STORIES means the authorized request completed but the public account had no currently available stories at that time.

Pricing

$0.40 per 1,000 stories ($0.0004 each), plus $0.001 each time a run starts. Flat rate — no volume tiers, no plan gates — and you are charged only for stories actually returned.

The story event fires once per genuine story row, and only after that row has been written to the dataset. Samples, private-profile records, empty story trays, blocks, and every other diagnostic are never charged — a run that returns no stories costs only the $0.001 start fee.