Instagram Story & Highlight Saver avatar

Instagram Story & Highlight Saver

Pricing

from $2.80 / 1,000 results

Go to Apify Store
Instagram Story & Highlight Saver

Instagram Story & Highlight Saver

Save a public Instagram account's currently-active stories and highlight media as permanent files, not just direct links that expire in about a day. Give it one or more usernames; get back every active story frame plus every highlight item, downloaded and stored. No login or cookies.

Pricing

from $2.80 / 1,000 results

Rating

0.0

(0)

Developer

The Netaji

The Netaji

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

12 days ago

Last modified

Share

The Actor downloads a public Instagram account's currently active stories and its highlight media, and stores each item as a permanent file. One or more usernames resolve to every story frame currently live on the account, together with every photo and video pinned across its highlights, each downloaded once and returned with a link that does not expire. Only public accounts are read, and no Instagram session is used.

Stories disappear after 24 hours; highlights are the durable half of an account's story activity, which is why a run against any account on any given day still has something worth returning even when no story is currently live.

Accepted input

FieldTypeDefaultDescription
profilesarray of stringsRequired. Instagram accounts to check.
saveMediabooleantrueDownloads each item and stores it permanently. When disabled, only Instagram's direct CDN URL is returned; that link stops working after approximately 34 hours.
limitinteger100Highlights processed per account (0 processes the whole tray). Does not limit stories; an account's active story set is always small.
{
"profiles": ["nasa", "natgeo"],
"saveMedia": true,
"limit": 100
}

Every account is checked for both stories and highlights within the same run; there is no mode switch. Most accounts do not have an active story at any given time, which is a normal outcome rather than a failure, and the run succeeds with whatever highlight media was found regardless.

Response fields

FieldContents
kind"story" or "highlight"
pkInstagram's internal media ID
media_type1 = photo, 2 = video
taken_atWhen the item was posted
titleHighlight name, on highlight items
highlightIdWhich highlight this item came from, on highlight items
expiresAtWhen this story stops being visible on Instagram, on story items
width / heightResolution of the file actually saved
savedFileStored file: url, bytes, sizeMb, contentType. Present when saveMedia is enabled.
directUrl / directUrlExpiresAtInstagram's own CDN link and its approximate expiry. Present only when saveMedia is disabled.
source_usernameWhich account this row came from
{
"kind": "highlight",
"pk": "3412987456123456789",
"media_type": 2,
"taken_at": 1785312000,
"title": "Artemis III",
"highlightId": "highlight:18123023338592759",
"width": 720,
"height": 1280,
"savedFile": {
"url": "https://api.apify.com/v2/key-value-stores/.../records/3412987456123456789-1280p.mp4",
"bytes": 5680112,
"sizeMb": 5.418,
"contentType": "video/mp4"
},
"source_username": "nasa"
}

Behaviour on partial results

Checking an account and finding no active story is a normal, successful outcome; it is the single most common result, not an error. A run fails only when nothing could be checked at all, or when every lookup itself failed — timed out or returned an error — with nothing to show for it. A quiet account and a broken run are distinct outcomes and are never reported as the same thing.

A run is reported successful only when every account it checked genuinely returned nothing at the time it was checked, meaning no active story and no highlights, and every one of those checks itself completed without error. A lookup that fails outright causes the run to fail rather than complete with a quiet zero.

Frequently asked questions

Why do stories and highlights share one Actor? A story-only Actor would return empty on most runs, since stories remain live for only 24 hours and most accounts do not have one active at any given moment. Highlights are what an account has chosen to keep permanently, so pairing the two means a run against an active account almost always returns something, and a quiet day for stories does not produce a quiet run.

Are photos saved, or only video? Both. Some stories and highlight items are photos with no video attached; skipping those would silently drop content. Every item is saved at its best available quality, whether that is a photo or a video.

What counts as one billed item? Every story frame and every highlight item that is saved, or, with saveMedia disabled, returned as a direct link, is one row and one charge. A saved file adds a small per-megabyte charge on top, rounded up to the next whole megabyte, covering the bandwidth the download uses; disabling saveMedia skips that charge entirely. A run against ten accounts with no active stories and modest highlight trays might return around 40 rows; a run against accounts with larger highlight collections costs more because there is more to save, not because of any per-run fee.

Can a highlightId from another system be supplied directly? That is unnecessary; the Actor walks the highlight tray and fetches every highlight's media itself. highlightId on the response is Instagram's own identifier, in its native highlight:<digits> form, provided for reference and deduplication rather than as required input.

Can a private account's stories or highlights be fetched? No. Only public accounts are read. No login or cookie input exists, and none is planned; a signed-in session would risk the account being banned or rate-limited.

ActorPurpose
Instagram Video DownloaderA specific post or reel, rather than stories or highlights
Instagram Posts & Reels ScraperThe highlight tray as lightweight metadata (id/title/cover) instead of downloaded media
Instagram Post ScraperA post's engagement details, rather than files