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 when no proxy is used, or one residential_request when a residential proxy is used. 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_date 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.
download_urlPOST /tiktok/profile with a public TikTok profile_url and optional filters.task_id with task_status: "processing".GET /tiktok/profile/{task_id} until the task is completed or failed.videos using cursors or download the full JSON from download_url when available.download_url availability.profile_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_date | string | Include only videos on or after this date, format YYYYMMDD |
before_date | string | Include only videos on or before this date, format YYYYMMDD |
min_likes | integer | Include only videos with at least this many likes |
max_likes | integer | Include only videos with at most this many likes |
task_id to identify the scrape jobtask_status set to processingprofile_url echoing the submitted profileexpires_at so you know when the task record will expirecheck_status_url with the relative API path to pollmessage confirming the job was accepted202 Accepted because the scrape runs in the background.
standard_request when no proxy is usedresidential_request when a residential proxy is usedafter_date to avoid crawling older history you do not needmax_posts to cap the result sizedownload_url after completion if you expect a large result setrequest_body_required: the JSON body was missingmissing_parameter: profile_url was not sentinvalid_url: the submitted profile_url is malformedinvalid_parameter: one of the filters is malformedunsupported_platform for this endpoint.
task_id, poll the result endpoint. You can use either the returned task_id or the check_status_url value:
API key authentication. Include your VidNavigator API key in the X-API-Key header.
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 uploaded on or after this date. Format: YYYYMMDD. Causes the scraper to stop paginating when it encounters videos older than this date.
"20240101"
Only include videos uploaded on or before this date. Format: YYYYMMDD.
"20241231"
Only include videos with at least this many likes.
x >= 0Only include videos with at most this many likes.
x >= 0