{"name":"tiktok","domain":"tiktok.com","baseUrl":"https://www.tiktok.com","displayName":"TikTok","description":"Public TikTok profiles and videos, logged out: a profile's bio and counts, and one video's caption, stats, music and author, read from the data embedded in the server-rendered page.","notes":"No account is needed.\n\n- Counts (`followers`, `likes`, `plays`, ...) are exact numbers as strings (`\"2151317\"`).\n  `createTime` is seconds since the epoch (a string in `getVideo`, a number in `getProfile`).\n- There is no op for a profile's video list: TikTok loads it through signed requests. Get a\n  video id from a video link (`tiktok.com/@<username>/video/<videoId>`).\n- `getVideo` is keyed by `videoId`; TikTok ignores the `username` in the URL. `author` is the real\n  handle, so check it when the video should be someone's.\n- A username that doesn't exist comes back `auth` (\"login page instead of content\"), because\n  TikTok's not-found page carries a login form. Check the spelling before asking anyone to log in.\n- `avatar` and `cover` are signed CDN URLs that expire (`x-expires`).\n- `hashtags` lists the video's challenge tags and can be empty when the caption has none.","operations":[{"hash":"b79cd4b52f742d288632cc279aed570c1cc3c8228fa3dda949ca05283276aa3e","status":"live","confirmations":0,"registry":{"hash":"b79cd4b52f742d288632cc279aed570c1cc3c8228fa3dda949ca05283276aa3e","status":"live","confirmations":0},"operation":{"name":"getProfile","description":"Public profile by username: user id, display name, bio, bio link, verified and private flags, follower, following, like and video counts","request":{"method":"GET","url":"https://www.tiktok.com/@%7Busername%7D","headers":{"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","accept-language":"en-US,en;q=0.9","priority":"u=0, i","sec-ch-ua":"\"Not:A-Brand\";v=\"8\", \"Chromium\";v=\"156\", \"Google Chrome\";v=\"156\"","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"macOS\"","sec-fetch-dest":"document","sec-fetch-mode":"navigate","sec-fetch-site":"none","sec-fetch-user":"?1","upgrade-insecure-requests":"1","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36"}},"slots":[{"param":"username","at":["path:0"],"template":"@{username}"}],"volatile":[],"trigger":{"url":"https://www.tiktok.com/@{username}"},"match":{"method":"GET","host":"www.tiktok.com","path":"/*"},"response":{"format":"embedded","contentType":"text/html; charset=utf-8","extract":"__DEFAULT_SCOPE__[\"webapp.user-detail\"].userInfo","pick":["userId=user.id","username=user.uniqueId","nickname=user.nickname","bio=user.signature","bioLink=user.bioLink.link","verified=user.verified","privateAccount=user.privateAccount","createTime=user.createTime","avatar=user.avatarLarger","followers=statsV2.followerCount","following=statsV2.followingCount","likes=statsV2.heartCount","videos=statsV2.videoCount"],"embedded":{"regex":"id=\"__UNIVERSAL_DATA_FOR_REHYDRATION__\"[^>]*>\\s*([[{])"}},"params":[{"name":"username","type":"string","required":true,"description":"TikTok handle without the @, as in tiktok.com/@<username>: nasa, natgeo, nba","example":"nasa","pattern":"[A-Za-z0-9._]+","hint":"a handle without the @, e.g. nasa"}],"readOnly":true,"minTier":1,"learnedLoggedIn":false}},{"hash":"cf9f6ca94a320a5ece7481796eb2784a7cdc8f8e292176f45c11c1b9bad35ad4","status":"live","confirmations":0,"registry":{"hash":"cf9f6ca94a320a5ece7481796eb2784a7cdc8f8e292176f45c11c1b9bad35ad4","status":"live","confirmations":0},"operation":{"name":"getVideo","description":"One public video by its id: caption, createTime, author handle and name, duration, cover image, play, like, comment, share and save counts, hashtags, music title and author, and the region it was posted from","request":{"method":"GET","url":"https://www.tiktok.com/@%7Busername%7D/video/%7BvideoId%7D","headers":{"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","accept-language":"en-US,en;q=0.9","priority":"u=0, i","sec-ch-ua":"\"Not:A-Brand\";v=\"8\", \"Chromium\";v=\"156\", \"Google Chrome\";v=\"156\"","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"macOS\"","sec-fetch-dest":"document","sec-fetch-mode":"navigate","sec-fetch-site":"none","sec-fetch-user":"?1","upgrade-insecure-requests":"1","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36"}},"slots":[{"param":"videoId","at":["path:2"]},{"param":"username","at":["path:0"],"template":"@{username}"}],"volatile":[],"trigger":{"url":"https://www.tiktok.com/@{username}/video/{videoId}"},"match":{"method":"GET","host":"www.tiktok.com","path":"/*/video/*"},"response":{"format":"embedded","contentType":"text/html; charset=utf-8","extract":"__DEFAULT_SCOPE__[\"webapp.video-detail\"].itemInfo.itemStruct","pick":["videoId=id","caption=desc","createTime","author=author.uniqueId","authorName=author.nickname","durationSec=video.duration","cover=video.cover","plays=statsV2.playCount","likes=statsV2.diggCount","comments=statsV2.commentCount","shares=statsV2.shareCount","saves=statsV2.collectCount","hashtags=challenges[*].title","music=music.title","musicAuthor=music.authorName","location=locationCreated"],"embedded":{"regex":"id=\"__UNIVERSAL_DATA_FOR_REHYDRATION__\"[^>]*>\\s*([[{])"}},"params":[{"name":"username","type":"string","required":true,"description":"the author's handle without the @, as in tiktok.com/@<username>/video/<videoId>","example":"nasa","pattern":"[A-Za-z0-9._]+","hint":"a handle without the @, e.g. nasa"},{"name":"videoId","type":"string","required":true,"description":"the numeric video id, the last segment of tiktok.com/@<username>/video/<videoId>","example":"7679483952507276558","pattern":"\\d{15,22}","hint":"digits, e.g. 7679483952507276558"}],"readOnly":true,"minTier":1,"learnedLoggedIn":false}}]}