TikTok API
TikTok APIを使用すると、ユーザープロフィールの検索、動画の一覧表示、コメントや返信の読み取り、動画やユーザーの検索、ハッシュタグの探索、ソーシャルグラフ(フォロワー/フォロー中)のトラバースが可能です。11のエンドポイントがあり、すべて1リクエストあたり1クレジットです。
エンドポイント
| エンドポイント | 説明 |
|---|---|
POST /api/v1/tiktok/profile | ユーザー名またはsec_user_idでユーザープロフィールを取得 |
POST /api/v1/tiktok/user/posts | ユーザーの動画一覧(ページネーション、並び替え可能) |
POST /api/v1/tiktok/video | 単一の動画の詳細情報を取得 |
POST /api/v1/tiktok/video/comments | 動画のコメント一覧 |
POST /api/v1/tiktok/video/comments/replies | 特定のコメントへの返信一覧 |
POST /api/v1/tiktok/search/videos | キーワードでTikTok動画を検索 |
POST /api/v1/tiktok/search/users | キーワードでTikTokユーザーを検索 |
POST /api/v1/tiktok/hashtag | ハッシュタグの詳細と統計を取得 |
POST /api/v1/tiktok/hashtag/videos | ハッシュタグの動画一覧 |
POST /api/v1/tiktok/user/followers | ユーザーのフォロワー一覧 |
POST /api/v1/tiktok/user/followings | ユーザーがフォローしているアカウント一覧 |
認証
| ヘッダー | 値 | 必須 |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | はい |
Content-Type | application/json | はい |
すべての成功レスポンスには、クレジット追跡フィールドが含まれます: credits_used、credits_remaining、 response_time(ms)。
sec_user_idの取得
ほとんどのエンドポイントでは、ユーザー名の代わりに sec_user_id が必要です。まずプロフィールエンドポイントをユーザー名で呼び出し、その後のリクエストで data.user.sec_uid を使用してください。
ユーザープロフィール
POST https://api.scavio.dev/api/v1/tiktok/profileTikTokユーザープロフィールを取得します。いずれかのusernameまたはsec_user_idを渡します。
リクエストボディ
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
username | string | -- | TikTokのハンドル(@なし)。usernameまたはsec_user_idのいずれかが必要です。 |
sec_user_id | string | -- | セキュアユーザーID。usernameまたはsec_user_idのいずれかが必要です。 |
例
curl -X POST 'https://api.scavio.dev/api/v1/tiktok/profile' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"username": "tiktok"}'レスポンスフィールド(data.user)
| フィールド | 型 | 説明 |
|---|---|---|
unique_id | string | ユーザー名(ハンドル) |
nickname | string | 表示名 |
sec_uid | string | セキュアユーザーID(他のエンドポイントで使用) |
uid | string | 数値ユーザーID |
signature | string | バイオテキスト |
bio_url | string | バイオ内のリンク |
follower_count | number | フォロワー数 |
following_count | number | フォロー中数 |
aweme_count | number | 投稿動画総数 |
total_favorited | number | 受け取ったいいねの総数 |
avatar_larger | object | アバター画像(URLは.url_list[0]) |
レスポンス例
{
"data": {
"user": {
"unique_id": "tiktok",
"nickname": "TikTok",
"sec_uid": "MS4wLjABAAAAv7iSuuXDJGDvJkmH_vz1qkDZYo1apxgzaxdBSeIuPiM",
"uid": "107955",
"signature": "One TikTok can make a big impact",
"bio_url": "linktr.ee/tiktok",
"follower_count": 94015018,
"following_count": 1,
"aweme_count": 1510,
"total_favorited": 457945663
}
},
"response_time": 1245,
"credits_used": 1,
"credits_remaining": 11753
}ユーザーの投稿
POST https://api.scavio.dev/api/v1/tiktok/user/postsユーザーの動画一覧を取得します。sec_user_idが必要です(プロフィールエンドポイントから取得)。
リクエストボディ
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
sec_user_id | string | -- | 必須。プロフィールエンドポイントからのセキュアユーザーID。 |
cursor | string | "0" | ページネーションカーソル。前回のレスポンスのdata.max_cursorを使用。 |
count | number | 20 | 1ページあたりの結果数(1-30)。 |
sort_type | string | "0" | "0" = 最新、"1" = 人気。 |
ページネーション
次のリクエストで data.max_cursor を cursor として使用します。data.has_more が 0 になったら停止します。
動画フィールド(data.aweme_list[])
| フィールド | 型 | 説明 |
|---|---|---|
aweme_id | string | 動画ID |
desc | string | 動画の説明文 |
create_time | number | Unixタイムスタンプ(秒) |
statistics.digg_count | number | いいね数 |
statistics.comment_count | number | コメント数 |
statistics.play_count | number | 再生回数 |
statistics.share_count | number | シェア数 |
statistics.collect_count | number | ブックマーク数 |
author | object | 作者情報(プロフィールのサブセット) |
music | object | 使用された音声 |
video | object | 動画URL、サイズ、再生時間 |
動画詳細
POST https://api.scavio.dev/api/v1/tiktok/video単一の動画の詳細情報を取得します。
リクエストボディ
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
video_id | string | -- | 必須。TikTok動画ID。 |
例
curl -X POST 'https://api.scavio.dev/api/v1/tiktok/video' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"video_id": "7350810998023949599"}'追加フィールド(data.aweme_detail)
上記のすべての動画フィールドに加えて:
| フィールド | 型 | 説明 |
|---|---|---|
video.play_addr | object | 動画再生URL(.url_list[0]) |
video.download_addr | object | ダウンロードURL(透かしなし) |
video.cover | object | カバー画像 |
video.duration | number | 再生時間(ミリ秒) |
cha_list | array | 使用されたハッシュタグ |
text_extra | array | 説明文内のメンションとハッシュタグ |
レスポンス例
{
"data": {
"aweme_detail": {
"aweme_id": "7350810998023949599",
"desc": "im so sick of being tired im so tired of being sick",
"create_time": 1711494099,
"statistics": {
"digg_count": 2002382,
"comment_count": 8119,
"play_count": 12171757,
"share_count": 274978,
"collect_count": 211332
}
}
},
"response_time": 1605,
"credits_used": 1,
"credits_remaining": 11752
}動画コメント
POST https://api.scavio.dev/api/v1/tiktok/video/comments動画のコメントを取得します。
リクエストボディ
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
video_id | string | -- | 必須。動画ID。 |
cursor | string | "0" | ページネーションカーソル。 |
count | number | 20 | 1ページあたりの結果数(1-50)。 |
ページネーション
data.cursor を次のカーソルとして使用します。data.has_more が 0 になったら停止します。
コメントフィールド(data.comments[])
| フィールド | 型 | 説明 |
|---|---|---|
cid | string | コメントID(返信エンドポイントで使用) |
text | string | コメントテキスト |
create_time | number | Unixタイムスタンプ(秒) |
digg_count | number | このコメントのいいね数 |
reply_comment_total | number | 返信数 |
user | object | コメント投稿者情報(ニックネーム、アバターなど) |
is_author_digged | number | 動画作成者がこのコメントにいいねした場合は1 |
コメント返信
POST https://api.scavio.dev/api/v1/tiktok/video/comments/replies特定のコメントへの返信を取得します。
リクエストボディ
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
video_id | string | -- | 必須。動画ID。 |
comment_id | string | -- | 必須。コメントID(コメントエンドポイントのcid)。 |
cursor | string | "0" | ページネーションカーソル。 |
count | number | 20 | 1ページあたりの結果数(1-50)。 |
ページネーション
コメントと同様:data.cursor を使用し、data.has_more が 0 になったら停止します。各返信はコメントオブジェクトと同じフィールドを持ちます。
動画検索
POST https://api.scavio.dev/api/v1/tiktok/search/videosキーワードでTikTok動画を検索します。
リクエストボディ
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
keyword | string | -- | 必須。検索クエリ(1-500文字)。 |
cursor | string | "0" | ページネーションオフセット。 |
count | number | 20 | 1ページあたりの結果数(1-30)。 |
sort_type | string | "0" | "0" = 関連性順、"1" = いいね数順。 |
publish_time | string | "0" | "0" = 全期間、"1" = 過去1日、 "7" = 1週間、"30" = 1ヶ月、 "90" = 3ヶ月、"180" = 6ヶ月。 |
例
curl -X POST 'https://api.scavio.dev/api/v1/tiktok/search/videos' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"keyword": "cooking recipe", "count": 10, "publish_time": "7"}'ページネーション
data.cursor を次の cursor として使用します。data.has_more が 0 になったら停止します。data.aweme_list 内の各アイテムは動画詳細と同じ構造を持ちます。
ユーザー検索
POST https://api.scavio.dev/api/v1/tiktok/search/usersキーワードでTikTokユーザーを検索します。
リクエストボディ
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
keyword | string | -- | 必須。検索クエリ(1-500文字)。 |
cursor | string | "0" | ページネーションオフセット。 |
count | number | 20 | 1ページあたりの結果数(1-30)。 |
レスポンスフィールド(data.user_list[].user_info)
| フィールド | 型 | 説明 |
|---|---|---|
uid | string | ユーザーID |
unique_id | string | ユーザー名 |
nickname | string | 表示名 |
sec_uid | string | セキュアユーザーID |
follower_count | number | フォロワー数 |
signature | string | バイオ |
ハッシュタグ情報
POST https://api.scavio.dev/api/v1/tiktok/hashtagハッシュタグの詳細と統計を取得します。いずれかのhashtag_nameまたはhashtag_idを渡します。
リクエストボディ
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
hashtag_name | string | -- | ハッシュタグテキスト(#なし)。hashtag_nameまたはhashtag_idのいずれかが必要です。 |
hashtag_id | string | -- | 数値のハッシュタグID。hashtag_nameまたはhashtag_idのいずれかが必要です。 |
レスポンスフィールド
| フィールド | 型 | 説明 |
|---|---|---|
data.challengeInfo.challenge.id | string | ハッシュタグID(ハッシュタグ動画で使用) |
data.challengeInfo.challenge.title | string | ハッシュタグ名 |
data.challengeInfo.challenge.desc | string | 説明 |
data.challengeInfo.stats.videoCount | number | 動画数 |
data.challengeInfo.stats.viewCount | number | 総再生回数 |
レスポンス例
{
"data": {
"challengeInfo": {
"challenge": {
"id": "229207",
"title": "fyp",
"desc": "",
"stats": {
"videoCount": 0,
"viewCount": 118798000000000
}
}
}
},
"response_time": 892,
"credits_used": 1,
"credits_remaining": 11751
}ハッシュタグ動画
POST https://api.scavio.dev/api/v1/tiktok/hashtag/videosハッシュタグの動画一覧を取得します。hashtag_idが必要です(ハッシュタグ情報エンドポイントから取得)。
リクエストボディ
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
hashtag_id | string | -- | 必須。ハッシュタグ情報エンドポイントから取得。 |
cursor | string | "0" | ページネーションカーソル。 |
count | number | 20 | 1ページあたりの結果数(1-30)。 |
ページネーション
data.cursor を次のカーソルとして使用します。data.has_more が 0 になったら停止します。レスポンスには data.aweme_list[] が含まれ、動画構造は検索やユーザー投稿と同じです。
ユーザーのフォロワー
POST https://api.scavio.dev/api/v1/tiktok/user/followersユーザーのフォロワー一覧を取得します。
リクエストボディ
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
sec_user_id | string | -- | 必須。プロフィールエンドポイントから取得。 |
count | number | 20 | 1ページあたりの結果数(1-20)。 |
page_token | string | -- | 前回のレスポンスのdata.next_page_tokenから。 |
min_time | number | -- | 前回のレスポンスのdata.min_timeから。 |
ページネーション
前回のレスポンスから page_token と min_time の両方を渡します。data.has_more が false になったら停止します。
フォロワーフィールド(data.followers[])
| フィールド | 型 | 説明 |
|---|---|---|
unique_id | string | ユーザー名 |
nickname | string | 表示名 |
sec_uid | string | セキュアユーザーID |
uid | string | ユーザーID |
follower_count | number | そのユーザーのフォロワー数 |
aweme_count | number | そのユーザーの動画数 |
signature | string | そのユーザーのバイオ |
avatar_thumb | object | アバター(.url_list[0]) |
ユーザーのフォロー中
POST https://api.scavio.dev/api/v1/tiktok/user/followingsユーザーがフォローしているアカウントを取得します。リクエストの形状とパラメーターはフォロワーと同じです。レスポンスでは data.followers[] の代わりに data.followings[] を使用します。
ページネーションリファレンス
| スタイル | エンドポイント | 次のページ | 停止条件 |
|---|---|---|---|
| カーソル(文字列) | user/posts | cursor = data.max_cursor | data.has_more === 0 |
| オフセット(数値) | search/*, hashtag/videos, video/comments, video/comments/replies | cursor = data.cursor | data.has_more === 0 |
| トークン+時間 | user/followers, user/followings | page_token + min_time | data.has_more === false |
注意事項
- すべての
create_timeフィールドはUnixタイムスタンプ(秒)です。JavaScriptのDateで使用するには1000を掛けてください。 - アバターや画像フィールドは
url_list配列を持つオブジェクトを返します。URLには.url_list[0]を使用してください。 401、429、502の処理については、エラーを参照してください。