Get TikTok Profile Scrape Result
Poll an async TikTok profile scrape task and retrieve a cursor-paginated page of videos.
Cursor pagination: The cursor encodes an absolute offset, so it is safe to change limit between calls without skipping or duplicating videos. Pass the next_cursor returned from a previous response as cursor in the next request. Omit cursor to start from the beginning.
TTL: Tasks (and their download_url availability) expire ~1 hour after creation. Poll while task_status is processing, and switch to download_url for very large profiles.
This endpoint does not consume credits.
Overview
This endpoint is the second half of the TikTok profile scraping workflow. Use it after you submit a scrape withPOST /tiktok/profile.
It serves three purposes:
- check whether the task is still running
- retrieve the filtered video results page by page
- get a temporary
download_urlfor the full JSON result when available
Request Parameters
| Parameter | In | Required | Description |
|---|---|---|---|
task_id | path | Yes | Task ID returned by POST /tiktok/profile |
cursor | query | No | Opaque pagination cursor from a previous response |
limit | query | No | Maximum number of videos to return, between 1 and 500. Default is 50. |
How Pagination Works
Pagination is cursor-based, but the cursor encodes an absolute offset. That means you can safely changelimit between requests without skipping or duplicating videos.
Typical flow:
- Call the endpoint with no
cursor. - Read
data.pagination.next_cursor. - Pass that value back as the next request’s
cursor. - Stop when
has_nextisfalse.
Polling Lifecycle
Thetask_status field will be one of:
processing: the scrape is still runningcompleted: the scrape finished and results are readyfailed: the scrape ended with an error
profilemay benullvideoswill be emptydownload_urlwill usually benull
videoscontains a cursor-paginated page of matching postspaginationtells you whether more pages existdownload_urlmay contain a temporary signed URL for the full JSON result
Example Requests
Fetch the Next Page
Example Completed Response
Understanding the Response
profile
Contains profile-level metadata returned by the scraper, such as uploader information and follower counts when available.
stats
Helps you understand what happened during the scrape:
videos_scanned: total TikTok entries iterated before filteringvideos_matched: entries that passed your filterspages_consumed: estimated number of TikTok API pages fetched during the scrape
videos
This is the current page of matched TikTok videos. Each item includes public metadata such as:
idtitledescriptiontimestamp: Unix timestamp in seconds when the video was uploadedpublished_at: UTC datetime string derived fromtimestamp, in ISO 8601 format with timezoneviewslikescommentsurl
download_url
When present, this is a short-lived signed URL pointing to the full scrape result as one JSON file. It is useful for large profiles, browser downloads, and no-code integrations.
If it is null, either:
- the task has not finished yet, or
- signed URL generation is not configured and you should paginate through
videosinstead
Error Cases
400 invalid_cursor: the suppliedcursoris invalid404 task_not_found: task does not exist, expired, or does not belong to the current user
Tips
- poll every few seconds while
task_statusisprocessing - switch to
download_urlfor large completed jobs - do not assume tasks live forever; they expire after about 1 hour
- call the endpoint again later if you need a freshly minted
download_url - use the
expires_atvalue to avoid polling a task after it has already expired
Authorizations
API key authentication. Include your VidNavigator API key in the X-API-Key header.
Path Parameters
ID returned by POST /tiktok/profile.
Query Parameters
Opaque pagination cursor returned as next_cursor from the previous response. Omit to fetch the first page.
Maximum number of videos to include in the response.
1 <= x <= 500
