TikTok Profile Videos Scraper – No Login
Pricing
$1.00 / 1,000 saved videos
TikTok Profile Videos Scraper – No Login
Scrape public videos from one or more TikTok profiles. Export video URLs, captions, dates, authors, music and engagement stats to one Dataset row per video. No TikTok account, login or API key is required.
Pricing
$1.00 / 1,000 saved videos
Rating
0.0
(0)
Developer
DataScraperES
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract public videos from one or more TikTok profiles and receive clean, structured results in an Apify Dataset. This Actor is suitable for collecting a few videos from one profile, building a content inventory, or processing large lists of public creators.
Enter one or more TikTok usernames, with or without the @ prefix, or paste a public TikTok profile URL. Each video is saved as a separate Dataset item with its URL, caption, author, publication date, engagement metrics, music information and available video metadata.
No TikTok account, password, official TikTok API key, browser session or cookies are required. The Actor works with publicly available profile content only. Private, deleted, unavailable or access-restricted videos cannot be returned.
Important: This is an independent, unofficial third-party Actor. It is not affiliated with, sponsored by, endorsed by or approved by TikTok. You are responsible for using the results lawfully and respecting the terms and privacy rights that apply to the source data.
At a glance
- Scrape one or many public TikTok profiles.
- Accepts usernames,
@handlesand public TikTok profile URLs. - Save one Dataset row per video.
- Request a fixed number of videos or all public items available during the run.
- Process profiles in batches and resume from the next profile when needed.
- Export results from Apify as JSON, CSV, Excel or other Dataset formats.
- Use the Actor without configuring a TikTok login or an external scraping service.
- Pay per saved video, with no video charge for diagnostic/error rows.
What data is extracted?
Each successful Dataset item represents one public TikTok video and can contain:
| Field | Description |
|---|---|
videoId | TikTok's public identifier for the video. |
videoUrl | Canonical URL of the TikTok video. |
description | Caption or description published with the video. |
createdAt | Publication date in ISO date-time format, when available. |
createTime | Original Unix timestamp, when available. |
profileInput | The profile value used in the input. |
profileUrl | Normalized public profile URL. |
username | Normalized TikTok username. |
author | Author ID, username and display name when available. |
stats | Public play, like, comment, share and collect counts when available. |
video | Duration and available cover-image URLs. |
music | Music ID, title and author name when available. |
retrievedAt | Time at which the item was collected. |
Public counters and metadata are snapshots. They can change after the run, and some fields may be empty when TikTok does not expose them for a particular video.
The Actor returns metadata and public URLs. It does not download MP4 video files, private media, comments, followers, following lists or account credentials.
Quick start
- In Input, add one or more values to
profiles. - For a test, set
maxVideosPerProfileto a small number such as5. - Click Start.
- Open the Dataset tab to review the video rows.
- Export the Dataset in the format you need, or connect it to another Apify workflow.
Quick test input
{"profiles": ["@corgibobaa"],"maxVideosPerProfile": 5,"maxTotalVideos": 5}
Input reference
profiles — required
List of public TikTok profiles to process. Use a username, an @username, or a direct public profile URL:
["@creatorname","creatorname","https://www.tiktok.com/@anothercreator"]
Profile URLs must point directly to a TikTok user profile. Video, hashtag, sound, shortened and other TikTok URLs are rejected. Repeated profiles are deduplicated before processing. The input accepts up to 1,000 profile values.
startIndex
Zero-based position from which to start in the deduplicated profile list. Leave it at 0 for a new run.
For a large batch, use the nextStartIndex value from the previous run's SUMMARY record. This lets you continue with the next group of profiles without repeating profiles already processed.
maxProfilesPerRun
Maximum number of profiles processed in one run.
- Default:
100 - Maximum:
1,000 - Use a lower value for small, predictable runs.
- Increase it for batch collection when the input list contains more profiles.
This limit controls profiles, not videos. The video limits below control how many results are collected from those profiles.
maxVideosPerProfile
Maximum number of unique videos saved for each profile.
- Default:
5 0: continue until the public items available for that profile are exhausted or another safety limit is reached.- A positive value such as
10,100or1,000: stop after that many unique videos for each profile.
For a quick test, use 5 or 10. For a complete profile inventory, use 0 and keep maxPagesPerProfile at its default unless the SUMMARY record reports that the page limit was reached.
maxTotalVideos
Maximum number of videos saved across the entire run.
- Default:
5 0: no explicit run-wide video limit.- A positive value: stop once that many videos have been saved across all selected profiles.
This is useful when you want to control the maximum size and cost of a multi-profile run. For example, maxVideosPerProfile: 100 and maxTotalVideos: 1,000 limits each profile to 100 videos while also limiting the whole run to 1,000 videos.
maxPagesPerProfile
Safety limit for the amount of profile history requested in one run.
- Default:
1,000 - Minimum:
1 - Maximum:
5,000
The default is suitable for normal use. If a very large profile stops with MAX_PAGES, increase this value and run again, provided the run duration and budget are acceptable.
includeCoverUrls
Whether to include the public cover-image URL fields in each video item.
- Default:
true - Set to
falsefor a smaller Dataset when cover images are not needed.
Cover URLs are supplied by TikTok and may expire or change. They are links, not permanent media storage.
Examples for common goals
Collect a small sample from one profile
Use this to verify that the profile is correct and inspect the output before a larger run:
{"profiles": ["https://www.tiktok.com/@examplecreator"],"maxVideosPerProfile": 10,"maxTotalVideos": 10}
Collect all public videos available for one profile
{"profiles": ["@examplecreator"],"maxVideosPerProfile": 0,"maxTotalVideos": 0}
“All” means all public items available to the Actor during that run. It does not include private, deleted, unavailable or access-restricted videos, and TikTok may return fewer items than the count displayed in the app or on the profile.
Collect a controlled batch from many profiles
{"profiles": ["@creator1", "@creator2", "@creator3"],"maxProfilesPerRun": 3,"maxVideosPerProfile": 100,"maxTotalVideos": 250,"includeCoverUrls": true}
The run stops at the first applicable limit. In this example, no profile can contribute more than 100 videos and the complete run cannot save more than 250 videos.
Resume a large profile list
- Run the first batch with
maxProfilesPerRunset to the desired batch size. - Open the
SUMMARYrecord in the run's Key-value store. - Copy
nextStartIndexintostartIndexfor the next run. - Use the same profile list and ordering.
If nextStartIndex is null, all supplied profiles were processed. If you change the order or remove profiles between runs, the resume position will no longer refer to the same profile.
Understanding the results
Dataset items
Successful video items have success: true and normally status: "ok".
Example:
{"success": true,"status": "ok","profileInput": "@examplecreator","profileUrl": "https://www.tiktok.com/@examplecreator","username": "examplecreator","videoId": "1234567890","videoUrl": "https://www.tiktok.com/@examplecreator/video/1234567890","createdAt": "2026-08-18T10:20:30Z","description": "Public video caption","author": {"id": "author-id","uniqueId": "examplecreator","nickname": "Example Creator"},"stats": {"playCount": 1200,"diggCount": 80,"commentCount": 4,"shareCount": 6,"collectCount": 2},"video": {"duration": 18,"coverUrl": "https://example.com/cover.jpg"},"music": {"id": "music-id","title": "Sound title","authorName": "Sound creator"}}
Diagnostic items
When a profile cannot be completed, the Actor records a diagnostic item with fields such as success: false, errorCode, errorMessage, pages, itemsReceived and uniqueVideos. These rows help identify which profile needs attention and are not charged as successful video results.
SUMMARY record
Every run creates a SUMMARY record in the Key-value store. It contains:
- Number of profiles requested, selected and processed.
- Number of videos saved.
- The starting position and
nextStartIndexfor batch resumption. - A result summary for each profile.
- The profile status, pages processed, items received, unique videos and duplicates skipped.
- A stop reason when a configured limit or availability issue ends a profile early.
Useful stop reasons include:
| Stop reason | Meaning |
|---|---|
COMPLETE | No more public items were available for that profile during the run. |
MAX_VIDEOS | maxVideosPerProfile was reached. |
MAX_TOTAL_VIDEOS | maxTotalVideos was reached for the complete run. |
MAX_PAGES | maxPagesPerProfile was reached. |
| An error code | The profile or run could not be completed; inspect the diagnostic item. |
Pricing
The customer is charged only for successful video results:
- $0.001 per saved video — $1 per 1,000 video results.
- There is no separate customer charge for starting a run.
- Execution, proxy and infrastructure costs are covered by the Actor owner.
- Diagnostic/error rows are not charged as successful video results.
- A video is saved only when the platform confirms that one video charge was applied.
- If the run's spending limit is reached, the Actor stops before saving another billable video.
For example, a run that saves 100 videos costs the customer $0.10. The number of billable video results is controlled by maxVideosPerProfile and maxTotalVideos.
Limitations and important expectations
- Only publicly available profile content can be collected.
- Private, deleted, region-restricted, age-restricted or temporarily unavailable videos may be missing.
- TikTok can change public fields, ordering, pagination or availability at any time.
- A profile's displayed video count is informational and is not a guarantee of how many items will be returned.
- Cover URLs may expire; export or store the images separately if permanent access is required.
- This Actor returns metadata and public URLs, not downloaded video files.
- Large profiles can take longer and produce more Dataset items and charges.
- The Actor does not collect passwords, cookies or private account information.
Troubleshooting
The run returns no videos
Check that:
- The input is a TikTok username,
@username, or direct public profile URL. Do not enter a video, hashtag, sound or shortened URL. - The username is spelled correctly.
- The profile is public and currently has publicly available videos.
maxVideosPerProfileandmaxTotalVideosare not set to0in a context where you expected a small sample, or to an unexpectedly low value.- The
SUMMARYrecord does not report an error or an early stop reason.
The run returns fewer videos than expected
Review SUMMARY and check stopReason, uniqueVideos, duplicatesSkipped and profileVideoCount when present. The result may be limited by maxVideosPerProfile, maxTotalVideos, maxPagesPerProfile, deleted/private content or temporary TikTok availability.
The run stops at MAX_PAGES
Increase maxPagesPerProfile and run the profile again. Keep a finite maxVideosPerProfile or maxTotalVideos when you want predictable cost and duration.
A profile is reported as an error
Open the diagnostic Dataset item and inspect errorCode and errorMessage. Verify the username and try the same profile again later. Repeated failures may indicate that the profile is private, unavailable, temporarily restricted or no longer exposes the expected public data.
FAQ
Do I need a TikTok account or login?
No. The Actor is designed for public profile data and does not ask you to provide TikTok credentials.
Do I need an official TikTok API key?
No. There is no TikTok API key field in the input.
Can I scrape multiple profiles in one run?
Yes. Add multiple usernames or public profile URLs to profiles, then use maxProfilesPerRun and maxTotalVideos to control the batch.
Can I scrape all videos from a profile?
Set maxVideosPerProfile to 0. The Actor continues until the public items available during the run are exhausted or a safety limit is reached. Complete historical coverage cannot be guaranteed for content that is private, deleted, unavailable or not returned by TikTok.
Can I download the TikTok videos?
No. The Actor returns video metadata, cover URLs when enabled and canonical TikTok video URLs. It does not download MP4 files.
Will repeated runs return the same engagement numbers?
Not necessarily. Likes, views, comments, shares and other public counters are live snapshots and may change between runs.
How do I export the data?
Open the Dataset associated with the run and use Apify's export options. You can also connect the Dataset to schedules, webhooks, integrations or another workflow from Apify.
Is a proxy or special setup required?
No manual proxy setup is required for normal use. You only need to provide the usernames and the limits that match your job.
Is scraping TikTok legal?
The Actor is limited to publicly available data, but you are responsible for deciding whether your use complies with applicable law, privacy obligations, TikTok's terms and any contractual restrictions. Do not collect personal data without an appropriate lawful basis.
Support
When reporting a problem, include the Apify run ID, the username or profile URL used, the relevant SUMMARY stop reason and a small example of the affected output. Do not include passwords, tokens or private credentials.