Catalog / Social, content & reviews
SOCIAL, CONTENT & REVIEWS
TikTok Profile & Video
Collect public TikTok profiles and videos.
About this data
Collect public TikTok profiles and videos. Profiles return followers, following, total likes, video count, bio, link, verified status and latest videos; video links return plays, likes, comments, shares, saves, caption, hashtags, music and author. Failures are not charged.
From the actor’s Apify Store listing. The per-call endpoint may return a bounded subset; its own description is below.
Buy per call over x402
One endpoint at api.ssh.autos. Each call is one JSON POST, paid in USDC with no account or API key, and answered in the same HTTP response.
POST /v1/tiktok/profile-video
Look up a public TikTok profile, optionally with one recent video, or provide a video URL.
Profile rows include nickname, bio/link, verification, avatar and follower/like/video counts.
Video rows include caption, publication time, duration and engagement counts where TikTok supplies them.
No download or account login.
Input
Send a JSON body to POST https://api.ssh.autos/v1/tiktok/profile-video.
| Field | Type | Required | Notes |
|---|---|---|---|
profile | string | optional | 1–400 characters |
videoUrl | string | optional | 1–2048 characters |
latestVideos | integer | optional | 0–1; default 0 |
Returned fields
The answer is JSON: records, a list, and summary, the run status and counts. Each record has these 43 fields; a field the source does not publish comes back null.
43 fields per record
| Field | Type | Notes |
|---|---|---|
kind | string | profile or video. Failures live in OUTPUT.itemErrors and are never dataset rows or billed. one of profile, video |
id | string | TikTok account id (profile rows) or video id (video rows). |
url | string | Canonical profile or video link. |
username | string | Profile rows: the account's username. |
nickname | string | Profile rows: display name. |
bio | string | Profile rows: bio text. |
bioLink | string | Profile rows: the link shown in the bio. |
verified | boolean | Profile rows: verified badge. |
privateAccount | boolean | Profile rows: the account is private. |
isSeller | boolean | Profile rows: the account sells on TikTok Shop. |
commerceCategory | string | Profile rows: business category, when set. |
language | string | Profile language, or the detected caption language for videos. |
avatarUrl | string | Profile rows: profile picture link (time-limited). |
secUid | string | Profile rows: TikTok's stable secondary account id. |
accountCreatedAt | string | Profile rows: account creation time (UTC, ISO 8601) when TikTok publishes it. |
followers | integer | Profile rows: exact follower count. |
following | integer | Profile rows: accounts followed. |
totalLikes | integer | Profile rows: total likes received across all videos. |
videoCount | integer | Profile rows: number of public videos. |
friends | integer | Profile rows: mutual follows. |
embedAllowed | boolean | Profile rows: whether TikTok lists this profile's latest videos. |
createdAt | string | Video rows: publish time (UTC, ISO 8601). |
createTimeUnix | integer | Video rows: publish time as a Unix timestamp. |
postType | string | Video rows: video or photo carousel. one of video, photo |
plays | integer | — |
likes | integer | — |
comments | integer | — |
shares | integer | — |
saves | integer | Video rows: times the video was saved to favourites. |
reposts | integer | — |
hashtags | array of strings | Video rows: hashtags in the caption, without #. |
mentions | array of strings | Video rows: usernames mentioned in the caption. |
durationSeconds | integer | — |
width | integer | — |
height | integer | — |
coverUrl | string | Video rows: cover image link (time-limited). |
locationCreated | string | Video rows: country code where the video was posted, when published. |
isAd | boolean | Video rows: marked as an ad. |
music | object | — |
author | object | — |
input | string | The input value this row came from. |
source | string | profile and video rows from your inputs; profileLatest for a profile's latest videos. one of profile, video, profileLatest |
scrapedAt | string | Collection time (UTC, ISO 8601). |
Example call
npx agentcash@latest fetch https://api.ssh.autos/v1/tiktok/profile-video -m POST -b '{"profile": "nike", "latestVideos": 1}'
The example values come from the API spec or the actor’s own sample input. Running it is a paid call.
What is and isn’t charged
You pay the call price for
- An answer, including a definitive “not found” or an empty result.
- Confirmed no matches returns records: [] (charged: it is an answer).
Free
- Invalid input (422), busy (503), source failure (502), timeout (504) and calls whose client hung up are never charged.
- Invalid input and source failures are not charged.
Prefer a subscription? Run it on Apify
This data source is a public actor on the Apify Store: TikTok Profile & Video Scraper. Run it with your Apify account and plan for larger, scheduled or exported runs; it may offer more input options than the per-call endpoint.
How x402 payment works
- Your client sends the request. The API answers
402 Payment Requiredwith the price and where to pay. - The client pays from its own wallet: USDC on Base or Solana over x402, or over MPP on Tempo. No account, sign-up or API key.
- The client retries with the payment attached and gets the JSON answer in the same call. You are only charged for answers.
The AgentCash CLI in the example does all three steps for you and pays from your AgentCash wallet. Any x402 or MPP client works the same way.
Machine-readable: openapi.json · llms.txt