TikTok Story Viewer
Pricing
from $0.01 / 1,000 stories
TikTok Story Viewer
View and export active public TikTok stories from usernames, @handles, or public profile URLs. Get story IDs, timestamps, media links, covers, engagement, music, and author data when TikTok exposes them.
Pricing
from $0.01 / 1,000 stories
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
22
Total users
9
Monthly active users
4 days ago
Last modified
Categories
Share
🎬 TikTok Story Viewer for active public stories
Brand teams, creators, and researchers can use this TikTok story viewer to check active public stories from TikTok usernames, @handles, or profile URLs. Each saved row gives the story ID, creation time, direct media links, covers, engagement counts, music data, and author details, so you can review current stories with less manual work.
Use it as a TikTok story viewer without a TikTok login when you need public profile story data for monitoring, creator research, social reporting, content review, or archiving links. It does not discover profiles, search TikTok, scrape regular videos, or save media files in Apify storage.
- Review active public stories from a known profile without signing in with TikTok Anonymous Viewer Story.
- Check a public story from a known profile with TikTok Viewer Story Anonymous.
- Export active stories for a submitted profile with TikTok Viewer Story.
- Check current public stories from several profiles with TikTok Story Viewer Anonymous.
- Gather story links and metadata for creator research with TikTok Viewer Anonymous.
📦 Active TikTok story data
Each saved row represents one active public TikTok story. Video stories can include a direct video URL without a watermark and a separate watermarked URL. If TikTok does not provide a distinct watermarked link, watermarkedVideoUrl is null. Photo-style stories use the same row shape and can have null video links while cover data remains available.
🚀 Check public TikTok stories
- Add one or more profiles in TikTok profiles.
- Enter usernames such as
hbomax, @handles such as@tiktok, or public profile URLs such ashttps://www.tiktok.com/@tiktok. - Leave Story limit per profile empty to return all available results until the source is exhausted, or set a positive number for a per-profile cap.
- Choose Story order as
newest,oldest, orprofileOrder. - Start the Actor and open the dataset.
Stories expire quickly. A profile with no active public story when the Actor checks it produces no row.
⚙️ Input
Input fields
| Field | Type | What it does |
|---|---|---|
targets | array of strings | Required. Add up to 500 TikTok usernames, @handles, or public profile URLs. |
maxStoriesPerProfile | integer | Optional positive limit for active stories saved from each profile. Leave it empty to return all available results until the source is exhausted. |
sortStories | string | Sets the order for stories from each profile: newest, oldest, or profileOrder. |
Example input
This is the public input from a successful run:
{"targets": ["hbo","hbomax","jamescharles","tiktok","wnba"],"maxStoriesPerProfile": 10,"sortStories": "newest"}
🧾 Output
All rows use the same object shape for video and photo-style stories. Values can be null when TikTok does not provide them.
Output link
| Field | Type | What it does |
|---|---|---|
results | string | Link to the default dataset containing the active public TikTok story rows. |
Dataset row fields
| Field | Type | What it does |
|---|---|---|
storyId | string | Stable TikTok ID for the story. |
videoId | string or null | TikTok video ID for the story media when provided. |
profileUsername | string | Username of the TikTok profile that posted the story. |
createdAt | string or null | Story creation time when provided. |
durationSeconds | integer or null | Story video length in seconds when provided. |
isAd | boolean or null | Whether TikTok marks the story as an ad when the flag is provided. |
author | object | TikTok account details for the story author. |
author.id | string or null | TikTok user ID when provided. |
author.username | string or null | TikTok username for the author when provided. |
author.name | string or null | Author display name when provided. |
author.avatarUrl | string or null | Public author avatar image URL when provided. |
media | object | Direct media links and file size for the story. |
media.videoUrl | string or null | Direct story video URL without a watermark when TikTok provides it. |
media.watermarkedVideoUrl | string or null | Direct story video URL with a TikTok watermark when it differs from media.videoUrl; otherwise null. |
media.coverUrl | string or null | Story cover image URL when provided. |
media.dynamicCoverUrl | string or null | Animated story cover image URL when provided. |
media.originCoverUrl | string or null | Original story cover image URL when provided. |
media.sizeBytes | integer or null | Video file size in bytes when provided. |
media.watermarkedSizeBytes | integer or null | Watermarked video file size in bytes when provided. |
engagement | object | Engagement counts for the story when provided. |
engagement.playCount | integer or null | Number of story views when provided. |
engagement.likeCount | integer or null | Number of story likes when provided. |
engagement.commentCount | integer or null | Number of story comments when provided. |
engagement.shareCount | integer or null | Number of story shares when provided. |
engagement.collectCount | integer or null | Number of story saves when provided. |
music | object | TikTok sound or music details for the story. |
music.id | string or null | TikTok music or sound ID when provided. |
music.title | string or null | Music or sound title when provided. |
music.author | string or null | Music author or sound creator when provided. |
music.playUrl | string or null | Direct audio URL when TikTok provides it. |
music.coverUrl | string or null | Music cover image URL when provided. |
music.durationSeconds | integer or null | Music or sound length in seconds when provided. |
music.isOriginal | boolean or null | Whether TikTok marks the sound as original when the flag is provided. |
Example row
This complete row came from the newest successful run on beta build 1.0.3. The two video links are distinct.
{"storyId": "7681417871670627597","videoId": "7681417871670627597","profileUsername": "jamescharles","createdAt": "2026-09-03T21:04:36.000Z","durationSeconds": 28,"isAd": false,"author": {"id": "190068318278651904","username": "jamescharles","name": "James Charles","avatarUrl": "https://p19-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/56ac3316193300d4e8295c752415cced~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=9640&refresh_token=f9f5b8ed&x-expires=1788717600&x-signature=sx3lXTe5ohFxweBtIglBEPttnME%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=useast5"},"media": {"videoUrl": "https://www.tiktok.com/aweme/v1/play/?faid=1988&file_id=571044f0a8ce463897cb16553b3506d1&is_play_url=1&item_id=7681417871670627597&line=0&ply_type=2&pt=YXdlbWUud2ViLndlYmFwaSYvYXBpL3N0b3J5L2l0ZW1fbGlzdC8mMjAyNjA5MDQxODM1MjE4Q0JGMDdBQUIzRTNBNjIyNDczMSYxNzg4NTQ2OTIxJmJjMGQ4YWMyZjRjOQ&signaturev3=dmlkZW9faWQ7ZmlsZV9pZDtpdGVtX2lkLjg2OGJhMGZjN2YxNDVmZjIwZmZiYzFmNmFjNDM1ZmRj&tk=tt_chain_token&video_id=v12044gd0000dacu1k7og65pbl63ajl0","watermarkedVideoUrl": "https://v16-webapp-prime.us.tiktok.com/video/tos/useast5/tos-useast5-ve-0068c001-tx/oEgBuAIAUpXiaP0Bg44Ww5qUEP6EZP1ATUqni/?a=1988&bti=ODszNWYuMDE6&&bt=283&ft=aEeq8qT0mIoPD12xqZzI3wUB5zAbMeF~O5&mime_type=video_mp4&rc=PGU7ZWdlOjlnNTxpO2hkN0BpM202b3M5cm54ZDMzZzczNEAyMWBeNC0tXy4xXmA0YWI2YSNpXjNfMmQ0LmBhLS1kMS9zcw%3D%3D&expire=1788719749&l=202609041835218CBF07AAB3E3A6224731&ply_type=2&policy=2&signature=d8216587f62d75a09a92c072a5b155c0&tk=tt_chain_token&btag=e000b8000","coverUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/oAPOnEBA05A0HsnBm4gI4iUXwRZT1aUEqgpAi~tplv-tiktokx-origin.image?dr=9636&x-expires=1788717600&x-signature=%2B8lzY%2FQ%2B9HRMu%2FYzW2tL4BrVPQY%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast5","dynamicCoverUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/o8tA1qbEI7XUT5OPZpi4AwIK0EngiBag4UvyB~tplv-tiktokx-origin.image?dr=9636&x-expires=1788717600&x-signature=l0nPcErYJ5WN4PYI2is6e5o2CyU%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast5","originCoverUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/okVMeyn4QbeUCquIQQOZYHAYBjFOVkfpcAhDDE~tplv-tiktokx-origin.image?dr=9636&x-expires=1788717600&x-signature=vRRQLbNECBp3%2FFmRp8rSfG4xNdk%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast5","sizeBytes": 1106218,"watermarkedSizeBytes": 1043109},"engagement": {"playCount": 67100,"likeCount": 1776,"commentCount": 0,"shareCount": 19,"collectCount": 0},"music": {"id": "7681414456747756301","title": "original sound","author": "James Charles","playUrl": "https://v16-webapp-prime.us.tiktok.com/video/tos/useast5/tos-useast5-v-27dcd7-tx/oseZJdWIqESAUADl3BmF1C3EEtDALqCLKgfYcA/?a=1988&bti=ODszNWYuMDE6&&bt=125&ft=GcAInInz7ThZa3LGXq8Zmo&mime_type=audio_mpeg&rc=M3h0cmw5cmx3ZDMzZzU8NEBpM3h0cmw5cmx3ZDMzZzU8NEBfXy9mMmRrb2BhLS1kMS9zYSNfXy9mMmRrb2BhLS1kMS9zcw%3D%3D&expire=1788568549&l=202609041835218CBF07AAB3E3A6224731&ply_type=3&policy=3&signature=feba1e9395a35d2079fdb4a347f1a7c9&tk=0&btag=e00078000","coverUrl": "https://p19-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/56ac3316193300d4e8295c752415cced~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=9640&refresh_token=f9f5b8ed&x-expires=1788717600&x-signature=sx3lXTe5ohFxweBtIglBEPttnME%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=useast5","durationSeconds": 28,"isOriginal": true}}
💳 Pricing
This Actor uses pay-per-event pricing. You are charged once for each active public TikTok story saved to the dataset. A profile with no active public stories produces no story row or story event.
🔌 Integrations
Use it with
- Export the dataset as JSON, CSV, Excel, XML, RSS, or HTML.
- Call the Actor through the Apify API.
- Schedule repeat checks for the same profiles.
- Send completed dataset rows to webhooks or your own workflow.
❓ FAQ
What do the two video URL fields mean?
media.videoUrl is the direct story video URL without a watermark when TikTok provides it. media.watermarkedVideoUrl is a separate watermarked URL when TikTok provides one that differs from it. Otherwise, media.watermarkedVideoUrl is null.
What happens when a profile has no active story?
The Actor saves no row for that profile. Stories expire quickly, so a later run can return different results.
Why is an output field null?
TikTok does not expose every value for every story. Photo-style stories can have null video links, and music or cover fields can also be unavailable.
Can I limit stories or change their order?
Yes. Set Story limit per profile to a positive number for a per-profile cap, or leave it empty to return all available results until the source is exhausted. Story order supports newest, oldest, and profileOrder.
Are regular TikTok videos included?
No. This Actor checks active public stories from profiles. It does not scrape regular profile videos, TikTok search, comments, hashtags, or followers.
Can I use this as an anonymous TikTok story viewer?
You do not need a TikTok account, login, cookies, or API key. The Actor reads public stories only and cannot provide private or unavailable content.
Does this save video files?
No. It returns source media URLs and metadata. Media URLs can expire, so process important links soon after the run.
Can I run it on a schedule?
Yes. You can schedule the Actor on Apify, call it through the API, and send dataset rows to webhooks or other supported workflows.
📝 Changelog
v1.1 (04-09-2026)
- Story rows now include the watermarked video file size when TikTok provides it.
v1.0
- Story rows now provide a distinct watermarked video link when TikTok exposes one, or
nullwhen no distinct link is available.
v0.1
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- TikTok Video Downloader - Get direct video or audio links from known public TikTok video URLs.
- TikTok Slideshow Downloader - Save photos from public TikTok slideshow posts.
- TikTok Transcript Scraper - Extract public captions, transcripts, and subtitle text from TikTok video URLs.
- TikTok Creator Analytics Scraper - Compare public creator profiles, audience totals, and recent post metrics.
- TikTok Profile Mention Scraper - Find public TikTok videos that mention submitted profiles and review match evidence.
Made with ❤️ by Maxime Dupré