Instagram Stories Scraper avatar

Instagram Stories Scraper

Pricing

Pay per event

Go to Apify Store
Instagram Stories Scraper

Instagram Stories Scraper

📸 Scrape Instagram Stories and Highlight Reels from any public profile. Extract photo/video URLs, timestamps, stickers, music, and links. Pay per story — no browser needed.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

📸 Scrape Instagram Stories and Highlight Reels from any public profile. Extract photo and video story URLs, timestamps, music, stickers, captions, and more — with pay-per-story pricing so you only pay for what you get.


What does it do?

Instagram Stories Scraper fetches active stories and permanent highlight reels from public Instagram accounts. Stories disappear after 24 hours, making this actor essential for anyone who needs to monitor, archive, or analyze stories systematically.

For each story, you get:

  • 📷 High-resolution media URL (image or video)
  • 🕒 Timestamp and expiration time
  • 🎵 Music/audio information
  • 🔗 Swipe-up links and CTAs
  • 🎯 Sticker types (polls, questions, countdowns, quizzes, location tags)
  • 📝 Captions and text overlays
  • 🌟 Highlight reel title (for archived highlights)

Who is it for?

🏢 Brand Monitoring Teams

Track competitor campaigns and product launches the moment they appear on Stories. Monitor brand mentions and collaborations in real time — before the 24-hour window closes.

📊 Social Media Analysts

Build datasets of story activity across industry leaders. Understand posting cadence, content formats, and engagement patterns. Feed data directly into your analytics pipeline.

📰 News & Media Organizations

Archive story coverage from journalists, news accounts, and official sources. Create a permanent record of ephemeral content for editorial research and fact-checking.

🤖 Automation Builders

Integrate story data into Zapier, Make, or custom workflows. Trigger alerts when specific accounts post new stories, automatically archive story media, or sync story data to your CMS.

📈 Influencer Marketing Agencies

Monitor influencer story activity, track sponsored content, and verify campaign deliverables without manually checking Instagram every hour.


Why use Instagram Stories Scraper?

  • No browser needed — pure API calls, fast and lightweight (256 MB memory)
  • Pay per story — only charged for stories actually extracted
  • Full story metadata — media URLs, stickers, music, links, timestamps
  • Highlight reels — access permanent story archives, not just active 24h stories
  • Batch profiles — scrape multiple accounts in a single run
  • Residential proxy — built-in proxy rotation for reliable access

Data you can extract

FieldDescriptionType
storyIdUnique story identifierString
usernameAccount usernameString
mediaTypeImage or VideoString
mediaUrlDirect URL to photo or videoString
thumbnailUrlThumbnail for video storiesString
timestampWhen the story was posted (ISO 8601)String
expiresAtWhen the story expires (ISO 8601)String
durationSecsVideo story duration in secondsNumber
captionStory caption textString
isHighlighttrue for highlights, false for active storiesBoolean
highlightTitleHighlight reel name (if highlight)String
musicArtistMusic track artistString
musicTitleMusic track titleString
hasLinkWhether story has a swipe-up linkBoolean
linkUrlSwipe-up link URLString
stickerTypesList of sticker types usedArray
viewerCountView count (own account only)Number
scrapedAtWhen the data was collectedString

How much does it cost to scrape Instagram Stories?

Pay-per-story pricing — you only pay for stories actually extracted:

ItemPrice
Run start (one-time per run)$0.005
Per story extracted$0.002

Example costs:

  • Monitor 5 brand accounts daily (avg. 5 stories each) = $0.055/day ($1.65/month)
  • Archive 10 influencer accounts with all highlights (avg. 50 stories each) = $1.005
  • Daily competitive monitoring of 20 accounts = $0.205/day (~$6/month)

Compare to the competitor at $0.01 start + $0.005/story — our pricing is up to 60% cheaper.


Instagram requires authentication to view stories. You need to provide your sessionid cookie value.

  1. Open instagram.com in your browser and log in
  2. Open DevTools: press F12 or right-click → Inspect
  3. Go to the Application tab (Chrome) or Storage tab (Firefox)
  4. Click Cookieshttps://www.instagram.com
  5. Find the cookie named sessionid
  6. Copy the value (a long string of letters and numbers)
  7. Paste it in the Session Cookie field in the actor input

⚠️ Security note: Never share your session cookie publicly. The actor uses it only to authenticate API requests — your password is never needed or stored.

💡 Tip: Use a secondary Instagram account dedicated to scraping, not your main personal account.


How to use

  1. Set usernames — enter the Instagram usernames you want to monitor (without the @)
  2. Add session cookie — required for story access (see instructions above)
  3. Configure options — choose whether to include highlights and profile metadata
  4. Run the actor — stories are extracted and saved to your dataset
  5. Schedule it — run daily via Apify Schedules to never miss a story

Input configuration

{
"usernames": ["natgeo", "nasa", "bbcnews"],
"sessionCookie": "your_sessionid_value_here",
"includeHighlights": false,
"maxHighlights": 10,
"includeProfile": false
}

Input fields

FieldTypeDescriptionDefault
usernamesArrayInstagram usernames to scrapeRequired
sessionCookieStringYour Instagram sessionid cookieRequired for stories
includeHighlightsBooleanAlso fetch highlight reelsfalse
maxHighlightsIntegerMax highlight reels per profile10
includeProfileBooleanInclude profile metadata in outputfalse

Output example

{
"type": "story",
"storyId": "3581234567890123456",
"userId": "787132",
"username": "natgeo",
"profileUrl": "https://www.instagram.com/natgeo/",
"mediaType": "Image",
"mediaUrl": "https://scontent.cdninstagram.com/v/t51.2885-15/...",
"thumbnailUrl": "https://scontent.cdninstagram.com/v/t51.2885-15/...",
"timestamp": "2026-04-06T10:30:00.000Z",
"expiresAt": "2026-04-07T10:30:00.000Z",
"durationSecs": null,
"caption": "Exploring the Amazon rainforest 🌿",
"isHighlight": false,
"highlightId": null,
"highlightTitle": null,
"musicArtist": "Rodrigo y Gabriela",
"musicTitle": "Tamacun",
"hasLink": false,
"linkUrl": null,
"stickerTypes": ["location", "music"],
"viewerCount": null,
"scrapedAt": "2026-04-06T11:00:00.000Z"
}

Tips for best results

✅ Use a dedicated account

Create a secondary Instagram account for scraping. This avoids any risk to your main account and keeps your monitoring separate.

✅ Run daily for active stories

Stories expire after 24 hours. Set up a daily schedule to reliably capture all stories before they disappear.

✅ Include highlights for full coverage

Active stories disappear in 24 hours, but highlights are permanent. Enable includeHighlights to get the full story archive.

✅ Batch multiple accounts

Add all usernames you want to monitor in a single run — the actor processes them sequentially with proper rate limiting to avoid triggering Instagram's anti-bot measures.


Integrations

📊 Google Sheets

Export story data directly to Google Sheets using the Google Sheets integration. Set up a daily scrape → auto-export to track stories over time.

🔔 Slack Alerts

Connect to Slack via Zapier or Make: trigger an alert whenever a monitored account posts a new story with a swipe-up link.

🗄️ Database Pipeline

Use the Apify API to pull results as JSON/CSV and push to your PostgreSQL, BigQuery, or Snowflake database for long-term analysis.

📧 Email Digests

Combine with Make to send a daily email digest of story activity from competitors — automatically summarizing new story counts and any stories with links.


API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('automation-lab/instagram-stories-scraper').call({
usernames: ['natgeo', 'nasa'],
sessionCookie: 'your_sessionid_here',
includeHighlights: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Scraped ${items.length} stories`);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_API_TOKEN')
run = client.actor('automation-lab/instagram-stories-scraper').call(run_input={
'usernames': ['natgeo', 'nasa'],
'sessionCookie': 'your_sessionid_here',
'includeHighlights': True,
})
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(f"@{item['username']}: {item['mediaType']} story at {item['timestamp']}")

cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~instagram-stories-scraper/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"usernames": ["natgeo", "nasa"],
"sessionCookie": "your_sessionid_here",
"includeHighlights": false
}'

Use with Claude Code (MCP)

Access Instagram Stories data directly from Claude Code or Claude Desktop with no coding required:

Claude Code setup:

$claude mcp add --transport http apify "https://mcp.apify.com"

Claude Desktop / Cursor / VS Code — add to your config:

{
"mcpServers": {
"apify": {
"type": "http",
"url": "https://mcp.apify.com?token=YOUR_API_TOKEN&tools=automation-lab/instagram-stories-scraper"
}
}
}

Example prompts:

  • "Scrape the latest stories from @natgeo and summarize the topics covered"
  • "Get all highlight reels from @nasa and list the titles"
  • "Monitor @bbcnews stories from the last 24 hours and identify any breaking news stories with links"

This actor accesses public Instagram data via the same API calls that Instagram's own apps use. You authenticate with your own account, and you can only access data that you would be able to see while logged in manually.

Best practices:

  • Only scrape accounts you have legitimate business reasons to monitor
  • Do not scrape private accounts or bypass privacy settings
  • Respect Instagram's Terms of Service
  • Store scraped data securely and in compliance with applicable privacy laws (GDPR, CCPA)

FAQ

Instagram's API requires authentication to view stories — this is a platform requirement, not a scraper limitation. You need a valid session from a logged-in account to access story content.

Will scraping hurt my Instagram account?

Using a dedicated secondary account minimizes any risk. The actor uses proper delays between requests and residential proxies to behave like a normal user. Scraping public content is significantly lower risk than automation that writes or interacts.

Instagram session cookies expire periodically (usually weeks to months). When this happens, log into Instagram in your browser again and copy the new sessionid value from DevTools.

Can I scrape private accounts?

No. The actor can only access stories from accounts that the session account follows, and public accounts. If the target account is private and the session account doesn't follow them, stories will not be accessible.

How do I scrape stories from multiple accounts in parallel?

The actor processes usernames sequentially within a single run to respect rate limits. To run faster for large lists (50+ accounts), split usernames across multiple parallel runs.

Stories are returning empty — what's wrong?

Common causes: (1) the account has no active stories right now, (2) the session cookie is expired, (3) the target account is private. Check the run logs for specific error messages.