TikTok Profile and Video Scraper
Collect public TikTok profile details and recent video metadata, including captions, hashtags, media links, and engagement counts.
Overview
TikTok Profile and Video Scraper turns known public profile URLs into structured records that combine account context with recent video details. Each record keeps the profile handle, display name, biography, public profile links and counts alongside the video's caption, hashtags, publication time, media links, music attribution, duration, and visible engagement counts.
This dataset helps teams compare creators and content without manually copying details from separate profile and video pages. Keeping account attributes and video-level signals in the same row makes it easier to review a creator's public positioning, study recurring content themes, and compare how visible videos performed when the data was collected.
Data notes
Records come from publicly accessible TikTok profiles and their visible videos. Each record represents one video and repeats the associated profile context so it can be analyzed independently. “Video ID” is used to identify records across retrieved result pages. Follower, following, like, comment, view, and bookmark counts are source-reported snapshots and can change after collection; they are preserved as text rather than recalculated values. “Post time” is kept in the source-reported date-time form, and the source does not state a timezone. Hashtags are preserved as source text. Cover, download, music, profile-image, and profile-website links may be empty or may stop working later. Private, deleted, restricted, login-only, and otherwise inaccessible profiles or videos are not covered.
What the results look like
Each record is one public TikTok video with its profile context:
| Account handle | Display name | Video caption | Post time | Like count | View count |
|---|---|---|---|---|---|
| mymedicalclinic | MYメディカルクリニック | 理想を予想していってしまうと気持ちが…#看護師の日常 #看護師あるある #看護師 #看護学生 #新人看護師 | 2026-09-08 10:30:00 | 60 | 1268 |
| mymedicalclinic | MYメディカルクリニック | 圧がすごい…😢#看護師の日常 #看護師あるある #看護師 #看護学生 #新人看護師 | 2025-08-21 10:30:00 | 47 | 1212 |
The output also includes “Profile URL,” “Profile bio,” “Profile website,” “Profile image URL,” “Follower count,” “Following count,” “Hashtags,” “Comment count,” “Bookmark count,” “Verified indicator,” “Private indicator,” “Cover image URL,” “Video duration,” “Download URL,” “Video ID,” “Video URL,” “Music name,” “Music author,” and “Music URL.”
Use cases
- For creator comparisons, group records by “Account handle” and compare “Follower count” with “Like count,” “Comment count,” and “View count” to understand visible audience size and per-video interaction together.
- For content-theme research, review “Video caption” and “Hashtags” across profiles to identify recurring topics, phrases, and campaign themes.
- For publishing-pattern analysis, compare “Post time” and “Video duration” to see when and in what formats each collected profile publishes.
- For media and source review, use “Video URL,” “Cover image URL,” “Download URL,” and “Music URL” to connect structured records back to the reported public assets.
Scope & Boundaries
Each run accepts 1 to 10,000 public TikTok profile URLs and can request up to 100,000 videos per profile; retrieval is capped at 10,000 returned records per run.
- Good for
- Use it when you need structured public profile and recent-video records for one or more known TikTok accounts.
- Use it for creator research, content audits, competitor monitoring, or engagement comparisons across public profiles.
- Do not use for
- Do not use it to discover accounts by keyword because it starts from known profile URLs.
- Do not use it for private, deleted, restricted, login-only, or complete historical content because only publicly accessible records are covered.
Failure Handling
Failure and retry behavior declared by the author. We recommend including it in your system prompt when integrating.
- 1If a run stops before completion, retry the same small profile list once; if it stops again, use fewer profile URLs or request fewer videos.
- 2An empty result can mean the profile URL is invalid, the profile or videos are not publicly accessible, or access was temporarily limited; verify the URL and retry later.
Input
Parameters required to call this app, generated from the input.schema in manifest.json.
| Field | Business name | Type | Required | Default | Enum / Constraints | Example | Description |
|---|---|---|---|---|---|---|---|
| profile_urls | TikTok profile URLs | array<string> | Yes | — | up to 10000 items | ["https://www.tiktok.com/@mymedicalclinic"] | Public TikTok profile URLs to collect, with one URL per item. Enter 1 to 10,000 profile URLs per run. |
| videos_per_profile | Videos per profile | integer | No | — | 1–100000 | — | Maximum number of recent videos to request for each profile, from 1 to 100,000. When omitted, the collector decides the limit; set it explicitly when a predictable depth is important. |
Output
Field structure of a single record, generated from the output.schema in manifest.json.
| Field | Business name | Type | Example | Description |
|---|---|---|---|---|
| author | Account handle | string | mymedicalclinic | TikTok handle associated with the collected profile and video. |
| author_bio | Profile bio | string | 渋谷/大手町/横浜みなとみらい/田町三田/新宿/東京駅八重洲にて開院中🩺 医療職や事務職の採用強化中🔥 詳細は下記URLをクリック👇 | Biography text publicly displayed on the profile at collection time. |
| author_iconurl | Profile image URL | string | https://p16-common-sign.tiktokcdn-us.com/tos-alisg-avt-0068/4af6e93b846016891ba01c98478ee937~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=9640&refresh_token=1b92ae83&x-expires=1789099200&x-signature=02jgWi0zRMweFi%2BcVW3IHSZ2SH4%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=useast8 | Profile-image address reported for the account. |
| author_subtitle | Display name | string | MYメディカルクリニック | Public display name shown for the TikTok account. |
| author_webpage | Profile website | string | External website reported on the profile; empty when none was returned. | |
| bookmark_num | Bookmark count | string | Bookmark count reported for the video at collection time; it may be empty when unavailable. | |
| comment_num | Comment count | string | 3 | Comment count reported for the video at collection time. |
| covers_url | Cover image URL | string | https://p16-common-sign.tiktokcdn-us.com/tos-alisg-p-0037/o4IBbi1GdAgnAAB1IPy8DqBwisviiT7ZOieAKr~tplv-tiktokx-origin.image?dr=9636&x-expires=1789099200&x-signature=GWvPGwY4LxrAkINvG31pSnSs5aI%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast8 | Cover-image address reported for the video. |
| description | Video caption | string | 理想を予想していってしまうと気持ちが…#看護師の日常 #看護師あるある #看護師 #看護学生 #新人看護師 | Caption or description text collected for the video. |
| followers | Follower count | string | 21600 | Follower count reported for the profile at collection time. |
| following | Following count | string | 2484 | Number of accounts followed by the profile at collection time. |
| hashtag | Hashtags | string | ["#看護師の日常", "#看護師あるある", "#看護師", "#看護学生", "#新人看護師"] | Hashtags reported for the video, preserved as source text. |
| is_private | Private indicator | string | False | Text indicator reporting whether the profile was identified as private. |
| is_verified | Verified indicator | string | False | Text indicator reporting whether the profile was identified as verified. |
| like_num | Like count | string | 60 | Like count reported for the video at collection time. |
| music_author | Music author | string | MYメディカルクリニック | Creator or attribution reported for the video's music. |
| music_name | Music name | string | オリジナル楽曲 - MYメディカルクリニック | Name reported for the video's music or original sound. |
| music_url | Music URL | string | TikTok address reported for the video's music; empty when unavailable. | |
| original_url | Profile URL | string | https://www.tiktok.com/@mymedicalclinic | Submitted TikTok profile address associated with the record. |
| post_date | Post time | string | 2026-09-08 10:30:00 | Publication date and time reported for the video, without a stated timezone. |
| video_download | Download URL | string | https://v19-webapp-prime.us.tiktok.com/video/tos/alisg/tos-alisg-pve-0037/ogBApZIwqiAiiidpCZKn7TPiYeBbAABEOQB1Gg/?a=1988&bti=ODszNWYuMDE6&&bt=531&ft=4KJMyMzm8Zmo0_sT-a4jVMmCQpWrKsd.&mime_type=video_mp4&rc=Nmk8ZGQ7PDc1OTc2NGhkN0BpMzozO3U5cnN1ZDMzODgzNEAxX182NTRhNjQxYzAtMTUtYSNlcWQwMmQ0cGFhLS1kLzFzcw%3D%3D&expire=1789099537&l=2026090904051585267220257DD016719E&ply_type=2&policy=2&signature=2453a31c82653533b24fb2da32450ccd&tk=tt_chain_token&btag=e000b8000 | Video media address reported at collection time; availability may change. |
| video_duration | Video duration | string | 21 | Video duration reported in seconds. |
| video_id | Video ID | string | 7681943242379775240 | TikTok video identifier used as the record identity. |
| video_url | Video URL | string | https://www.tiktok.com/@mymedicalclinic/video/7681943242379775240 | Direct TikTok address of the collected video. |
| views_num | View count | string | 1268 | View count reported for the video at collection time. |
Record Schema
Output is returned record by record. detail.output.idFieldHint
{
"type": "object",
"properties": {
"author": {
"type": "string",
"title": "Account handle",
"description": "TikTok handle associated with the collected profile and video.",
"prefill": "mymedicalclinic"
},
"author_bio": {
"type": "string",
"title": "Profile bio",
"description": "Biography text publicly displayed on the profile at collection time.",
"prefill": "渋谷/大手町/横浜みなとみらい/田町三田/新宿/東京駅八重洲にて開院中🩺\n医療職や事務職の採用強化中🔥\n詳細は下記URLをクリック👇"
},
"author_iconurl": {
"type": "string",
"title": "Profile image URL",
"description": "Profile-image address reported for the account.",
"prefill": "https://p16-common-sign.tiktokcdn-us.com/tos-alisg-avt-0068/4af6e93b846016891ba01c98478ee937~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=9640&refresh_token=1b92ae83&x-expires=1789099200&x-signature=02jgWi0zRMweFi%2BcVW3IHSZ2SH4%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=useast8"
},
"author_subtitle": {
"type": "string",
"title": "Display name",
"description": "Public display name shown for the TikTok account.",
"prefill": "MYメディカルクリニック"
},
"author_webpage": {
"type": "string",
"title": "Profile website",
"description": "External website reported on the profile; empty when none was returned.",
"prefill": ""
},
"bookmark_num": {
"type": "string",
"title": "Bookmark count",
"description": "Bookmark count reported for the video at collection time; it may be empty when unavailable.",
"prefill": ""
},
"comment_num": {
"type": "string",
"title": "Comment count",
"description": "Comment count reported for the video at collection time.",
"prefill": "3"
},
"covers_url": {
"type": "string",
"title": "Cover image URL",
"description": "Cover-image address reported for the video.",
"prefill": "https://p16-common-sign.tiktokcdn-us.com/tos-alisg-p-0037/o4IBbi1GdAgnAAB1IPy8DqBwisviiT7ZOieAKr~tplv-tiktokx-origin.image?dr=9636&x-expires=1789099200&x-signature=GWvPGwY4LxrAkINvG31pSnSs5aI%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast8"
},
"description": {
"type": "string",
"title": "Video caption",
"description": "Caption or description text collected for the video.",
"prefill": "理想を予想していってしまうと気持ちが…#看護師の日常 #看護師あるある #看護師 #看護学生 #新人看護師"
},
"followers": {
"type": "string",
"title": "Follower count",
"description": "Follower count reported for the profile at collection time.",
"prefill": "21600"
},
"following": {
"type": "string",
"title": "Following count",
"description": "Number of accounts followed by the profile at collection time.",
"prefill": "2484"
},
"hashtag": {
"type": "string",
"title": "Hashtags",
"description": "Hashtags reported for the video, preserved as source text.",
"prefill": "[\"#看護師の日常\", \"#看護師あるある\", \"#看護師\", \"#看護学生\", \"#新人看護師\"]"
},
"is_private": {
"type": "string",
"title": "Private indicator",
"description": "Text indicator reporting whether the profile was identified as private.",
"prefill": "False"
},
"is_verified": {
"type": "string",
"title": "Verified indicator",
"description": "Text indicator reporting whether the profile was identified as verified.",
"prefill": "False"
},
"like_num": {
"type": "string",
"title": "Like count",
"description": "Like count reported for the video at collection time.",
"prefill": "60"
},
"music_author": {
"type": "string",
"title": "Music author",
"description": "Creator or attribution reported for the video's music.",
"prefill": "MYメディカルクリニック"
},
"music_name": {
"type": "string",
"title": "Music name",
"description": "Name reported for the video's music or original sound.",
"prefill": "オリジナル楽曲 - MYメディカルクリニック"
},
"music_url": {
"type": "string",
"title": "Music URL",
"description": "TikTok address reported for the video's music; empty when unavailable.",
"prefill": ""
},
"original_url": {
"type": "string",
"title": "Profile URL",
"description": "Submitted TikTok profile address associated with the record.",
"prefill": "https://www.tiktok.com/@mymedicalclinic"
},
"post_date": {
"type": "string",
"title": "Post time",
"description": "Publication date and time reported for the video, without a stated timezone.",
"prefill": "2026-09-08 10:30:00"
},
"video_download": {
"type": "string",
"title": "Download URL",
"description": "Video media address reported at collection time; availability may change.",
"prefill": "https://v19-webapp-prime.us.tiktok.com/video/tos/alisg/tos-alisg-pve-0037/ogBApZIwqiAiiidpCZKn7TPiYeBbAABEOQB1Gg/?a=1988&bti=ODszNWYuMDE6&&bt=531&ft=4KJMyMzm8Zmo0_sT-a4jVMmCQpWrKsd.&mime_type=video_mp4&rc=Nmk8ZGQ7PDc1OTc2NGhkN0BpMzozO3U5cnN1ZDMzODgzNEAxX182NTRhNjQxYzAtMTUtYSNlcWQwMmQ0cGFhLS1kLzFzcw%3D%3D&expire=1789099537&l=2026090904051585267220257DD016719E&ply_type=2&policy=2&signature=2453a31c82653533b24fb2da32450ccd&tk=tt_chain_token&btag=e000b8000"
},
"video_duration": {
"type": "string",
"title": "Video duration",
"description": "Video duration reported in seconds.",
"prefill": "21"
},
"video_id": {
"type": "string",
"title": "Video ID",
"description": "TikTok video identifier used as the record identity.",
"prefill": "7681943242379775240"
},
"video_url": {
"type": "string",
"title": "Video URL",
"description": "Direct TikTok address of the collected video.",
"prefill": "https://www.tiktok.com/@mymedicalclinic/video/7681943242379775240"
},
"views_num": {
"type": "string",
"title": "View count",
"description": "View count reported for the video at collection time.",
"prefill": "1268"
}
},
"required": [],
"additionalProperties": false
}Integration
This app can be integrated via MCP, API, SDK, or file export — all channels share the same capabilities and pricing. Every request authenticates with the Authorization: Bearer header using an API Key (long-lived, created in the Open Platform console); MCP clients can also sign in with OAuth, no key required. More options such as CLI and Skill are on the way.
With the MCP (Model Context Protocol), you can call this app directly from AI clients like Claude and Cursor. Pick your client and auth mode, then copy the config below.
Client config
Replace the value after Bearer with your long-lived API Key. Works in any client, CI, or headless environment.
{
"mcpServers": {
"YiJacobJohnRaku__tiktok-profile-scraper": {
"type": "http",
"url": "https://mcp-v2.octoparse.com?pin=YiJacobJohnRaku/tiktok-profile-scraper",
"headers": { "Authorization": "Bearer <YOUR_API_KEY>" }
}
}
}Let AI set it up for you
Don't want to edit configs by hand? Copy the install prompt and paste it into any AI client — it will complete the setup its own way. (The prompt asks the AI to request your API Key from you, so credentials never end up in chat history or shared configs.)
detail.access.mcp.composeHint
Pricing
Charged by the number of records successfully returned. Failed tasks are not charged.
Multiple billing events accumulate independently — see each item for details. Failed tasks are not charged.
Try It Now
Fill in the parameters and run — results come from a real call.