Fetch a user's public Instagram stories — media URLs, types and timestamps — with a single REST call. No Instagram login or access token required. Free tier, sub-second responses.
Instagram stories are ephemeral — they vanish roughly 24 hours after being posted. That makes them hard to monitor manually and impossible to revisit once they expire. The InstaGapi Stories API lets you pull a user’s currently active public stories programmatically, so you can capture, analyze or archive them while they are still live.
Send a single authenticated GET request with a username (or numeric user ID) and get back a structured JSON object with each of that user’s active stories — including the media type (image or video), thumbnail and video URLs, the poster’s profile, the taken_at timestamp, and any mentions, hashtags, locations or links attached to the story.
Real-time
Active stories, fetched on demand
Clean JSON
Predictable, easy-to-parse response
Fast
Typically returns in under a second
Just send your key in the X-Api-Key header:
curl -H "X-Api-Key: sk_live_your_key_here" \
"https://api.instagapi.com/api/v1/user/stories/by/username?username=nike"Simplified for readability — see the docs for the full schema.
{
"items": [
{
"pk": "3487563210987654321",
"id": "3487563210987654321_13460080",
"code": "DJ8kLmiProx",
"taken_at": "2026-02-27T09:14:22Z",
"media_type": 2, // 1 = image, 2 = video
"product_type": "story",
"thumbnail_url": "https://scontent.cdninstagram.com/.../thumb.jpg",
"user": {
"pk": "13460080",
"username": "nike",
"full_name": "Nike",
"is_verified": true
},
"video_url": "https://scontent.cdninstagram.com/.../story.mp4",
"video_duration": 14,
"mentions": [], "hashtags": [], "locations": [], "links": []
}
],
"count": 1,
"username": "nike",
"user_id": "13460080"
}/api/v1/user/stories/by/usernameGet a user’s active stories by username
/api/v1/user/storiesGet a user’s active stories by numeric user ID
/api/v1/story/by/idGet a single story by its ID
/api/v1/story/by/urlGet a story from its Instagram URL
Track the promos, product drops and announcements brands push through stories — before they disappear in 24 hours.
Capture ephemeral public stories for records, research or compliance workflows that need a durable copy.
Confirm that sponsored story placements actually went live and ran for the agreed window.
Pull public stories into your own dashboards, alerts or apps alongside posts, reels and profile data.
One of 60+ endpoints. Explore more in the full documentation:
Yes. You only need an InstaGapi API key sent in the X-Api-Key header — there is no Instagram login, OAuth or access token to manage.
Both. Use /api/v1/user/stories/by/username with a username, or /api/v1/user/stories with a numeric user_id if you already have it.
Only while they are live on Instagram — stories expire after about 24 hours and are no longer returned once they disappear. Fetch them in near real time if you need to capture them.
A JSON object with items, count, username and user_id. Each story in items includes its pk and id, code, media_type (1 = image, 2 = video), product_type, thumbnail_url, video_url, video_duration, the taken_at timestamp, the user profile, and any mentions, hashtags, locations and links. See the API docs for the full schema.
InstaGapi returns publicly available data only and is an independent tool, not affiliated with Instagram or Meta. You are responsible for using the data in line with Instagram’s terms and any applicable laws in your jurisdiction.
Yes. Highlights (saved stories) have their own endpoints — see the Instagram Highlights API.
Create a free account, grab your API key, and make your first request today. No credit card required.