Submit TikTok Profile Scrape
Start an asynchronous TikTok profile scrape and return a task_id immediately.
The scrape runs in the background using a lazy yt-dlp generator with shallow extraction so it can stop early when filters are satisfied. Results are persisted in MongoDB (auto-deleted after 1 hour) and, when GCS is configured, also uploaded as a single JSON file accessible through download_url.
Billing: Each TikTok API page fetched is billed as one standard request. One page is pre-charged when the task is accepted; remaining pages are reconciled when the scrape completes. If the scrape fails after charging additional pages, all charged pages are reversed. TikTok currently returns ~15 videos per page; this is an internal estimate and may change.
Filters: All filters are applied as the scraper iterates. max_posts and after_datetime allow the scraper to stop fetching new pages early; the other filters reduce result size but do not stop pagination.
Use GET /tiktok/profile/{task_id} to poll status and retrieve paginated results, or follow download_url for the complete JSON.
task_id immediately.
Overview
This endpoint is designed for profile-level collection, not single-video analysis. It starts a background scrape job that iterates through a TikTok account, applies your filters as it goes, and stores the results temporarily so you can fetch them later. Use it when you want to:- collect recent posts from a TikTok creator
- filter videos by date or like count
- scrape large profiles without blocking on a long request
- export the full result set through a temporary
download_url
How the Async Flow Works
- Send
POST /tiktok/profilewith a public TikTokprofile_urland optional filters. - The API accepts the task and returns a
task_idwithtask_status: "processing". - Poll
GET /tiktok/profile/{task_id}until the task iscompletedorfailed. - Once completed, either page through
videosusing cursors or download the full JSON fromdownload_urlwhen available.
download_url availability.Filters You Can Apply
All filters are optional exceptprofile_url.
| Field | Type | Description |
|---|---|---|
profile_url | string | Public TikTok profile URL, such as https://www.tiktok.com/@username |
max_posts | integer | Maximum number of matching videos to return |
after_datetime | string | Include only videos published on or after this boundary. Accepts YYYY-MM-DD or an ISO datetime with timezone, such as 2024-01-01T00:00:00Z. |
before_datetime | string | Include only videos published on or before this boundary. Accepts YYYY-MM-DD or an ISO datetime with timezone, such as 2024-12-31T23:59:59+02:00. |
min_likes | integer | Include only videos with at least this many likes |
max_likes | integer | Include only videos with at most this many likes |
What You Get Back Immediately
The submit endpoint now returns more than just a task ID. The accepted response includes:task_idto identify the scrape jobtask_statusset toprocessingprofile_urlechoing the submitted profileexpires_atso you know when the task record will expirecheck_status_urlwith the relative API path to pollmessageconfirming the job was accepted
Example Request
Success Response
The endpoint returns202 Accepted because the scrape runs in the background.
Billing Notes
TikTok profile scraping is billed by pages consumed during the scrape:- each TikTok API page is billed as one
standard_requestwhen no proxy is used - each TikTok API page is billed as one
residential_requestwhen a residential proxy is used - one page is pre-charged when the task is accepted
- final usage is reconciled when the scrape completes
- if the scrape fails after extra pages were charged, those charges are reversed
Tips for Large Profiles
- use
after_datetimeto avoid crawling older history you do not need - use
max_poststo cap the result size - prefer
download_urlafter completion if you expect a large result set - poll the result endpoint while the task is processing instead of resubmitting the same scrape
Common Errors
request_body_required: the JSON body was missingmissing_parameter:profile_urlwas not sentinvalid_url: the submittedprofile_urlis malformedinvalid_parameter: one of the filters is malformed
unsupported_platform for this endpoint.
Next Step
After you receive thetask_id, poll the result endpoint. You can use either the returned task_id or the check_status_url value:
Authorizations
API key authentication. Include your VidNavigator API key in the X-API-Key header.
Body
Public TikTok profile URL (e.g. https://www.tiktok.com/@username).
"https://www.tiktok.com/@tiktok"
Maximum number of matching videos to return. The scraper stops paginating once this is reached.
x >= 1100
Only include videos published on or after this boundary. Accepts either YYYY-MM-DD or an ISO datetime with timezone (e.g. 2024-01-01T00:00:00Z). Filtering uses per-video timestamp when available (UTC), with upload-date fallback otherwise.
"2024-01-01T00:00:00Z"
Only include videos published on or before this boundary. Accepts either YYYY-MM-DD or an ISO datetime with timezone (e.g. 2024-12-31T23:59:59+02:00). Filtering uses per-video timestamp when available (UTC), with upload-date fallback otherwise.
"2024-12-31"
Only include videos with at least this many likes.
x >= 0Only include videos with at most this many likes.
x >= 0
