TikTok Video Scraper Lowcost (0.3$/1K 🤑)
Pricing
from $0.10 / 1,000 videos
TikTok Video Scraper Lowcost (0.3$/1K 🤑)
Get the views, likes, shares, author, music, hashtags and comments of public TikTok videos from their links or IDs. $0.30 per 1,000 videos.
Pricing
from $0.10 / 1,000 videos
Rating
0.0
(0)
Developer
Samy
Maintained by CommunityActor stats
0
Bookmarked
33
Total users
13
Monthly active users
a day ago
Last modified
Categories
Share
TikTok Video Scraper Lowcost
Paste TikTok video links or video IDs and get one row per video: views, likes, comments, shares, the caption and its hashtags, the author's profile, the music, the cover image, and the video size and length. You can also ask for the comments under each video.
You don't need a TikTok account, cookies, or a proxy. In test runs on Apify, 210 videos without comments took under a minute.
What it costs
You pay per result. The platform usage of the run is included.
- videos: $0.30 per 1,000, down to $0.10 with Apify's Store discounts
- author profile details included at no extra cost
- comments: $0.20 per 1,000, down to $0.04 with Apify's Store discounts
You pay only for the videos and comments saved to your dataset. A deleted or private video is listed as unavailable in the run log, and you are not charged for it. A video that TikTok refuses to show after several tries is not charged either. A video you list more than once is scraped and charged once.
If you set a maximum cost for the run, the Actor stops taking new videos when the next one would go over it. It keeps everything already saved and ends with the status "Stopped at your spending limit after N videos". With comments on, it saves only the comments that fit, and the status adds "comments were cut to fit your spending limit".
What you get for each video
- The video link, ID, caption, hashtags, and the date it was posted.
- Views (
playCount), likes (diggCount), comments (commentCount), and shares (shareCount). - The author's username, display name, verified badge, bio, follower count, video count, and avatar.
- The music title, its author, whether the sound is original, and a link to the audio.
- The cover image, the width, the height, and the length in seconds.
- The comments, when you turn on Include comments. Each comment has its text, author, like count, and time.
Each row has both nested fields, such as author.uniqueId, and flat keys, such as authorMeta.name and diggCount. The flat keys have the same names as in the output of a popular TikTok scraper, which makes it easier to switch to this Actor.
How to use it
- Paste your video links or IDs into Video URLs, one per line.
- Turn on Include comments if you want them, and set Max comments per video.
- Click Start.
- Open the Output tab, or export the dataset as JSON, CSV, Excel, or another format.
The run log has one line per video, for example:
Video 7255379108241198378 (@nba): savedVideo 7523411766273903927: unavailable (deleted or private)
The status at the top of the run shows the progress, then a summary such as "Exported 200 of 210 videos; 9 unavailable; 1 could not be scraped".
Input example
{"videoUrls": ["https://www.tiktok.com/@nba/video/7255379108241198378","7512140355018476830"],"includeComments": true,"maxComments": 50,"outputFormat": "nested","omitNullFields": true}
These are all the input fields.
| Field | Default | What it does |
|---|---|---|
videoUrls | none, required | TikTok video links or numeric video IDs. |
includeProfileDetails | true | Adds more author fields to author, such as the bio, secUid, and avatars. Free. |
includeComments | false | Adds the comments under each video. Each comment is charged. |
maxComments | 200 | The most comments to collect for each video, up to 500. |
outputFormat | nested | nested gives nested fields plus flat keys. flat gives only the flat keys. |
omitNullFields | true | Leaves out empty fields. |
globalConcurrency | 50 | How many requests to TikTok run at the same time. |
requestTimeoutSecs | 30 | How long to wait for TikTok on each request. |
maxRequestRetries | 3 | How many times to try again when TikTok is busy or does not answer. |
Output example
This row is from a real run. Long image and audio links are shortened, and some fields are left out.
{"resultType": "video","videoId": "7255379108241198378","webVideoUrl": "https://www.tiktok.com/@nba/video/7255379108241198378","description": "Walker was ready to fight for his 2! 😭 #NBA #NBASummerLeague #basketball #freethrow #putback #dunk","createTimeISO": "2023-07-13T18:56:35.000Z","stats": {"playCount": 15000000,"likeCount": 1200000,"commentCount": 1463,"shareCount": 3044},"author": {"uniqueId": "nba","nickname": "NBA","verified": true,"followers": 27300000,"following": 268,"totalLikes": "1200000000","videoCount": 24600},"music": {"id": "7255379083914152747","title": "original sound","author": "NBA","original": true},"media": {"width": 576,"height": 1024,"duration": 17,"cover": "https://p16-common-sign.tiktokcdn.com/..."},"locationCreated": "US","isAd": false,"hashtags": [{ "name": "NBA" }, { "name": "NBASummerLeague" }, { "name": "basketball" }],"authorMeta.name": "nba","authorMeta.nickName": "NBA","authorMeta.verified": true,"authorMeta.fans": 27300000,"authorMeta.video": 24600,"authorMeta.id": "134941634731003904","text": "Walker was ready to fight for his 2! 😭 #NBA #NBASummerLeague #basketball #freethrow #putback #dunk","diggCount": 1200000,"shareCount": 3044,"playCount": 15000000,"commentCount": 1463,"videoMeta.duration": 17,"videoMeta.coverUrl": "https://p16-common-sign.tiktokcdn.com/...","musicMeta.musicName": "original sound","musicMeta.musicAuthor": "NBA","musicMeta.playUrl": "https://v16m.tiktokcdn.com/...","scrapedAt": "2026-10-23T11:51:00.579Z"}
With Include comments on, each row also has comments, a list of objects with cid, user, userUniqueId, text, likes, and createTime, and commentsMeta, which says how many comments were collected and charged.
The Output tab has four views of the same rows: Videos, Authors, Music, and Media.
FAQ
Which links work?
Full video links such as https://www.tiktok.com/@nba/video/7255379108241198378, with or without the part after ?, and numeric video IDs. Embed links, m.tiktok.com/v/<id>.html links, share links such as https://www.tiktokv.com/share/video/<id>/, and paths such as /@nba/video/<id> work too. Short links such as vm.tiktok.com/... don't. Open them in a browser and copy the full link. The run log tells you how many entries it skipped.
Why is a video "unavailable"?
TikTok answered twice that the video is not available to the public. It was usually deleted, made private, or removed by TikTok. You are not charged for it.
Why "could not be scraped, try it again later"?
TikTok did not return the video after several tries, usually because it was busy. You are not charged for it. Run the Actor again with those videos later. If a run exports no video and some videos could not be scraped, the run is marked as failed.
Can I scrape private videos or accounts?
No. The Actor reads only what TikTok shows to people who are not logged in.
Can I get every comment of a video?
No. The Actor collects up to Max comments per video, and at most 500 for one video, even when you ask for more. Replies to comments are not included.
Can I call it from my own code?
Yes. Start it through the Apify API or one of the Apify clients, and read the results from the dataset. The API tab of the Actor has ready-made examples.
Legal note
The Actor collects only data that TikTok shows publicly. Rows can include personal data, such as usernames, bios, and comments. Make sure you have a legal reason to collect and store that data under the laws that apply to you, such as the GDPR in the EU, and follow TikTok's terms of service. This Actor is not made by TikTok and is not endorsed by TikTok.