Instagram Stories Scraper avatar

Instagram Stories Scraper

Pricing

$1.80 / 1,000 instagram stories

Go to Apify Store
Instagram Stories Scraper

Instagram Stories Scraper

Collect active Stories from public Instagram usernames, @handles, or full profile URLs without an Instagram login. Get one row per Story with source media links, owner details, timestamps, and optional Story context.

Pricing

$1.80 / 1,000 instagram stories

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

📸 See active Instagram Stories from public profiles

Instagram teams, creators, researchers, and developers can use this Instagram story viewer to collect active Stories from public accounts. The Actor saves one dataset row per Story with source-hosted media links, owner details, the posting time, and an expiration time when available, plus extra Story context when Instagram provides it. This gives you structured data to review, archive, or use in your own workflow without an Instagram login.

🧾 Active Story rows

Each saved dataset row represents one active Instagram Story found for a submitted public account. A row includes a Story ID, an owner object, media with a source URL and available size variants, and the time the Story was posted. The row can also include an expiration time, audio status, mentions, stickers, and media shared inside the Story when Instagram provides those fields. Source-hosted media URLs can expire or change.

▶️ Check accounts and collect Stories

Run steps

  1. Add one or more public Instagram usernames, @handles, or full Instagram profile URLs.
  2. Put one account value on each line. The prefilled nasa value is a valid starting point.
  3. Start the run and open the datasetItems link to view the overview dataset.

The Actor saves each eligible Story as it finds it. If the same source Story appears again from another submitted account value, the first saved match is kept and later repeats are ignored. If one account has no active Stories or cannot be retrieved, the Actor continues with the other submitted accounts.

⚙️ Input

Input fields

FieldTypeWhat it does
instagramAccountsarray of stringsRequired. Adds one or more public Instagram usernames, @handles, or full Instagram profile URLs, with one value per line. Private accounts and login-only Stories are not supported.

The list must contain at least one non-empty value. Use a username such as nasa, an @handle such as @leomessi, or a full profile URL such as https://www.instagram.com/nasa/.

Example input

This is the public input from the successful current-beta run for nasa:

{
"instagramAccounts": [
"nasa"
]
}

🧾 Output

Output link

FieldTypeWhat it does
datasetItemsstringOpens the overview view of the run dataset with active Instagram Story rows.

Every dataset row has one active Story shape. Optional fields are present when Instagram provides them.

Dataset row fields

FieldTypeWhat it does
storyIdstringStable ID for the active Story.
ownerobjectAccount that published the Story.
owner.usernamestringUsername of the Story owner.
owner.accountIdstringStable account ID of the Story owner.
owner.profileImageUrlstring, optionalSource profile image URL when available.
owner.displayNamestring, optionalDisplay name of the Story owner when available.
owner.isVerifiedboolean, optionalWhether the source marks the owner as verified.
mediaobjectStory media and its source links.
media.typestringMedia type, either image or video.
media.urlstringMain source URL for viewing or downloading the media.
media.variantsarray of objects, optionalOther source versions of the media with their sizes.
media.variants[].urlstringSource URL for one media version.
media.variants[].widthintegerWidth of one media version in pixels.
media.variants[].heightintegerHeight of one media version in pixels.
postedAtstringSource time when the Story was posted, in date-time format.
expiresAtstring, optionalSource expiration time for the Story when available.
hasAudioboolean, optionalWhether the source says the Story has audio.
mentionsarray of objects, optionalAccounts mentioned in the Story.
mentions[].usernamestringUsername of a mentioned account.
mentions[].accountIdstring, optionalStable ID of a mentioned account when available.
mentions[].displayNamestring, optionalDisplay name of a mentioned account when available.
mentions[].placementobject, optionalPosition of the mention in the Story when available.
mentions[].placement.xnumberHorizontal position from the source.
mentions[].placement.ynumberVertical position from the source.
mentions[].placement.widthnumber, optionalWidth of the mention from the source.
mentions[].placement.heightnumber, optionalHeight of the mention from the source.
mentions[].placement.rotationnumber, optionalRotation of the mention from the source when available.
stickersarray of objects, optionalStickers detected in the Story.
stickers[].typestringSticker type from the source.
stickers[].textstring, optionalText shown by the sticker when available.
stickers[].placementobject, optionalPosition of the sticker in the Story when available.
stickers[].placement.xnumberHorizontal position from the source.
stickers[].placement.ynumberVertical position from the source.
stickers[].placement.widthnumber, optionalWidth of the sticker from the source.
stickers[].placement.heightnumber, optionalHeight of the sticker from the source.
stickers[].placement.rotationnumber, optionalRotation of the sticker from the source when available.
sharedMediaarray of objects, optionalMedia shared inside the Story.
sharedMedia[].idstringStable ID of the shared media.
sharedMedia[].mediaTypestring, optionalType of the shared media when available.
sharedMedia[].placementobject, optionalPosition of the shared media in the Story when available.
sharedMedia[].placement.xnumberHorizontal position from the source.
sharedMedia[].placement.ynumberVertical position from the source.
sharedMedia[].placement.widthnumber, optionalWidth of the shared media from the source.
sharedMedia[].placement.heightnumber, optionalHeight of the shared media from the source.
sharedMedia[].placement.rotationnumber, optionalRotation of the shared media from the source when available.

Example row

This genuine row is from the successful current-beta run for nasa. It is shortened because the source returned many media variants. The first variant is real, and the JSON string value "..." marks the remaining variants.

{
"storyId": "3977574916672105312_528817151",
"owner": {
"username": "nasa",
"accountId": "528817151",
"displayName": "NASA",
"isVerified": true,
"profileImageUrl": "https://scontent.cdninstagram.com/v/t51.2885-19/29090066_159271188110124_1152068159029641216_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=1&ccb=7-5&_nc_sid=f7ccc5&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLnd3dy4xMDgwLkMzIn0%3D&_nc_ohc=HN7dW-2GxfIQ7kNvwEx8w7W&_nc_oc=AdrY1tDpeAwiXjAiTZvQTUNGbr-uqNBjmKvZHsvRa355NDm2GC6S97ONMBjnqurKErg&_nc_zt=24&_nc_ht=scontent.cdninstagram.com&_nc_ss=70689&oh=00_AQKqIub7VTk2pjDUNDhQHUIR33s6cKOOub_VVo3IE1T2ag&oe=6A9F8829"
},
"media": {
"type": "image",
"url": "https://scontent-ams2-1.cdninstagram.com/v/t51.82787-15/790879851_18643910530049152_4352367034286246463_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=1&ig_cache_key=Mzk3NzU3NDkxNjY3MjEwNTMxMg%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IlNUT1JZLnhwaWRzLjEyMDYuc2RyLnJlZ3VsYXJfcGhvdG8uQzMifQ%3D%3D&_nc_ohc=E8wXEei9x-UQ7kNvwFR1xdw&_nc_oc=Adpetu6Bobxo_IPipjXICgWhXK84PobPACw4CFgpr_OEsMweBVco6eCYHIx_EF6-sjA&_nc_zt=23&_nc_ht=scontent-ams2-1.cdninstagram.com&_nc_gid=FS5L5BLuYNrnEjRkLfo77Q&_nc_ss=736a8&oh=00_AQIfirr0ynGgtfIFS3_b0---ryEQv0nOcWqmgsSaiqKi3Q&oe=6A9F833B",
"variants": [
{
"url": "https://scontent-ams2-1.cdninstagram.com/v/t51.82787-15/790879851_18643910530049152_4352367034286246463_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=1&ig_cache_key=Mzk3NzU3NDkxNjY3MjEwNTMxMg%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IlNUT1JZLnhwaWRzLjEyMDYuc2RyLnJlZ3VsYXJfcGhvdG8uQzMifQ%3D%3D&_nc_ohc=E8wXEei9x-UQ7kNvwFR1xdw&_nc_oc=Adpetu6Bobxo_IPipjXICgWhXK84PobPACw4CFgpr_OEsMweBVco6eCYHIx_EF6-sjA&_nc_zt=23&_nc_ht=scontent-ams2-1.cdninstagram.com&_nc_gid=FS5L5BLuYNrnEjRkLfo77Q&_nc_ss=736a8&oh=00_AQIfirr0ynGgtfIFS3_b0---ryEQv0nOcWqmgsSaiqKi3Q&oe=6A9F833B",
"width": 1206,
"height": 2144
},
"..."
]
},
"postedAt": "2026-09-02T21:17:50.000Z",
"expiresAt": "2026-09-03T21:17:50.000Z",
"sharedMedia": [
{
"id": "18028196120853919",
"mediaType": "feed",
"placement": {
"x": 0.5,
"y": 0.5,
"width": 0.5,
"height": 0.33022388059701,
"rotation": 0
}
}
]
}

💳 Pricing

This Actor uses pay-per-event pricing. The charged event applies to each successfully retrieved active Instagram Story saved to the dataset. The current price is shown on the Pricing tab before you run.

🔌 Integrations

Open the datasetItems link in Apify or read the overview dataset through the Apify API. Use the source-hosted media URLs from each row in your own workflow. These URLs may expire, so use or store them soon after the run.

❓ FAQ

What happens if one account has no active Stories?

No row is saved for that account, and the Actor continues with the other submitted accounts.

Can I enter a username, @handle, or full profile URL?

Yes. Add a bare username, an @handle, or a full Instagram profile URL. Put one value on each line.

Does the Actor need my Instagram login or API key?

No. It reads Stories from public accounts without an Instagram login or an Instagram API key.

Can it access private accounts or login-only Stories?

No. Private accounts and login-only Stories are outside the supported public-access boundary.

What does expiresAt tell me?

It is the source expiration time for the Story when Instagram provides it. The source-hosted media links may also expire or change.

What do the optional arrays contain?

mentions lists mentioned accounts and available placement data. stickers lists Story stickers and their available placement data. sharedMedia lists media shared inside the Story with source details when available.

Can I use this like an Instagram story viewer website?

This is an Apify Actor, not an interactive Instagram page. It returns structured dataset rows and direct source-hosted media URLs that you can open or download.

Can I use it for Reels, posts, or Story Highlights?

No. This Actor is for active Stories from public accounts. Posts, Reels, Story Highlights, and standalone profile scraping are outside this product.

Is the same Story saved more than once?

When the same source Story appears again from another submitted account value, the first eligible match saved is kept and later repeats are ignored.

📝 Changelog

v0.0

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré