Advanced TikTok Video Scraper
Pricing
from $0.30 / 1,000 dataset items
Advanced TikTok Video Scraper
Utilize our advanced scraper to gather videos, posts, URLs, numbers of shares, followers, hearts, names, and music-related data from TikTok. Download in various formats like HTML, JSON, CSV, Excel, or XML.
Pricing
from $0.30 / 1,000 dataset items
Rating
5.0
(7)
Developer
epctex
Maintained by Apify PartnerActor stats
16
Bookmarked
326
Total users
5
Monthly active users
2 hours ago
Last modified
Categories
Share
Actor - TikTok Video Scraper
TikTok Video Scraper
Extract full data from any TikTok video by URL with transparent, event-based pricing.
The TikTok Video Scraper supports the following features:
-
Extract full video metadata from any public TikTok video and photo URLs.
-
Get video stats, music details, author info, and download URLs.
-
Optionally filter results by region using a location code.
💰 Pricing
This actor uses event-based pricing — you only pay for what you use.
| Event | Price | Notes |
|---|---|---|
| Video Query | $0.003 per URL | Charged once per video or photo URL provided |
| Dataset Item | $0.0003 per item | Charged per video returned |
Each video URL costs $0.0033 total ($0.003 query + $0.0003 item).
Cost Examples
| Scenario | Calculation | Total |
|---|---|---|
| 1 video or photo URL | $0.003 + $0.0003 | $0.0033 |
| 10 video or photo URLs | ($0.003 + $0.0003) × 10 | $0.033 |
| 100 video or photo URLs | ($0.003 + $0.0003) × 100 | $0.330 |
Demo Mode
This actor is available in demo mode on Apify's Free plan. Expect 5 runs per month, a cap of 10 items on each run, and no API access. Paid plans remove all of these restrictions: Subscribe here.
Bugs, fixes, updates, and changelog
This scraper is under active development. If you have any feature requests you can create an issue from here.
Input Parameters
The input of this scraper should be JSON containing the list of TikTok video URLs to scrape. Possible fields are:
-
startUrls: (Required) (Array) List of TikTok video or photo URLs. Each URL triggers a Video Query charge. -
maxItems: (Optional) (Number) Maximum number of videos to return. -
location: (Optional) (String) ISO 3166-1 alpha-2 country code to retrieve region-specific data (e.g.US,GB,DE). -
customMapFunction: (Optional) (String) JavaScript function to transform each output item. -
outputConnector: (Optional) (String) MCP connector to deliver the results to — pick one (see Send Results to Notion, Todoist and More). -
deliverTarget: (Optional) (String) Where the connector writes — paste the URL or ID (Notion example:https://www.notion.so/My-Posts-24f8a1b2c3d44e5f8a9b0c1d2e3f4a5b); some services need none. -
deliverMode: (Optional) (String)perPost(one record per video) orsummary(one roll-up per run). Default isperPost. -
deliverMaxItems: (Optional) (Number) Cap on how many recordsperPostdelivers (ignored insummary).
Input Example
{"startUrls": ["https://www.tiktok.com/@deborahyowa/video/7173615947603922181","https://www.tiktok.com/@argenby/video/7171782248281165058","https://www.tiktok.com/@cznburak/video/7161858444830461190"]}
During the Run
During the run, the actor will output messages letting you know what is going on. Each message always contains a short label specifying which page from the provided list is currently specified. When items are loaded from the page, you should see a message about this event with a loaded item count and total item count for each page.
If you provide incorrect input to the actor, it will immediately stop with a failure state and output an explanation of what is wrong.
Tiktok Video Export
During the run, the actor stores results into a dataset. Each item is a separate item in the dataset.
You can manage the results in any language (Python, PHP, Node JS/NPM). See the FAQ or our API reference to learn more about getting results from this Tiktok Video actor.
Send Results to Notion, Todoist and More
Skip the manual exports — the TikTok Video Scraper can deliver its results directly into the tools you already work in, through Apify MCP Connectors:
- Authorize a connector (Notion, Todoist, or any service whose MCP server offers non-destructive write tools) once in Console → Settings → API & Integrations → MCP connectors.
- Pick it from the Send results to Notion, Todoist, … dropdown.
- Fill in where and how to write:
- Destination target — paste the URL or ID (Notion example:
https://www.notion.so/My-Posts-24f8a1b2c3d44e5f8a9b0c1d2e3f4a5b); share it with your connector first via Notion's ••• → Connections menu. For structured columns use a page URL (the Actor builds the database for you) or a database that already has columns — an empty database only receives titles. (Some services need no target.) - Write mode —
perPostwrites one record per video;summarywrites a single roll-up for the run. - Max records to deliver (optional) — cap on how many records
perPostdelivers.
- Destination target — paste the URL or ID (Notion example:
Notion, structured like a spreadsheet: for a table of typed columns, point the target at a Notion page — the Actor auto-creates a database from the data, one matching, correctly-typed column per field (URL, number, date, text). Pointing at an existing database fills the columns it already has (matched by name); an empty database receives only the title, and the rest of each record goes to the row body — the connector can't add columns to an existing database without destructive access it never requests. Nested fields are flattened into columns too — an object like stats becomes stats.playCount, stats.diggCount, … columns — so everything is sortable and filterable in the grid. Fields that don't fit a column go to the row's page body, so nothing is lost.
Your credentials stay yours: the Actor talks to your services exclusively through your own authorized connector and only ever uses non-destructive write tools — it cannot delete or overwrite anything you already have. Delivery is best-effort and runs after the scrape: if a connector is misconfigured or a delivery fails, your run still finishes normally with all results intact — the failure is reported in the run log, never by failing the run. If the run is about to hit its timeout, delivery stops early so the run still succeeds, and the log tells you how many records were delivered.
Other Tiktok Scrapers
If you need different functionalities or all at once, we have solutions for each of them. You can check;
Scraped Tiktok Video Properties
The structure of each item in the TikTok Video looks like this:
Item Detail
{"url": "https://www.tiktok.com/@billieeilish/video/7576086436626189598","id": "7576086436626189598","desc": "last show of tour tonight ","createTime": "1763945103","video": {"id": "7576086436626189598","width": 576,"height": 1024,"ratio": "540p","duration": 7.638,"cover": "https://p19-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/okCjHNAkfAIELOwNEBI0BpAtqiiqiCWGHdBIB6~tplv-tiktokx-cropcenter-q:300:400:q72.heic?dr=8596&refresh_token=5f81f0cd&x-expires=1773838800&x-signature=7aMd1t3P84bIMPKkYa0tJSYZ6y4%3D&t=bacd0480&ps=933b5bde&shp=d05b14bd&shcp=1d1a97fc&idc=useast5&biz_tag=tt_video&s=AWEME_DETAIL&sc=cover","playAddr": "https://v19.tiktokcdn-us.com/0448863d3705d8d78d46f6dd09c5d343/69b9b159/video/tos/useast8/tos-useast8-ve-0068c002-tx2/ogUBiACHdC6RNUOjIQCpiftHqqkZ0EABhiGIAv/?a=1233&bti=OUBzOTg7QGo6OjZAL3AjLTAzYCMxNDNg&ch=0&cr=13&dr=0&er=0&lr=all&net=0&cd=0%7C0%7C0%7C&cv=1&br=4872&bt=2436&cs=0&ds=6&ft=arR-IqgmmklPD12kry1s3wUi2w4qjeF~O5&mime_type=video_mp4&qs=0&rc=Njw2ZWc7M2g5PGVnOGhlO0Bpamc7anQ5cjZ0NzMzaTczNEAtNDJjNGNfNS4xL14uNTItYSNqYDUwMmRzYmVhLS1kMTJzcw%3D%3D&vvpl=1&l=202603171353548F033718FA6A0B142638&btag=e000b0000","originCover": "https://p19-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/okCjHNAkfAIELOwNEBI0BpAtqiiqiCWGHdBIB6~tplv-tiktokx-cropcenter-q:300:400:q72.heic?dr=8596&refresh_token=5f81f0cd&x-expires=1773838800&x-signature=7aMd1t3P84bIMPKkYa0tJSYZ6y4%3D&t=bacd0480&ps=933b5bde&shp=d05b14bd&shcp=1d1a97fc&idc=useast5&biz_tag=tt_video&s=AWEME_DETAIL&sc=cover","downloadAddr": "https://v19.tiktokcdn-us.com/0448863d3705d8d78d46f6dd09c5d343/69b9b159/video/tos/useast8/tos-useast8-ve-0068c002-tx2/ogUBiACHdC6RNUOjIQCpiftHqqkZ0EABhiGIAv/?a=1233&bti=OUBzOTg7QGo6OjZAL3AjLTAzYCMxNDNg&ch=0&cr=13&dr=0&er=0&lr=all&net=0&cd=0%7C0%7C0%7C&cv=1&br=4872&bt=2436&cs=0&ds=6&ft=arR-IqgmmklPD12kry1s3wUi2w4qjeF~O5&mime_type=video_mp4&qs=0&rc=Njw2ZWc7M2g5PGVnOGhlO0Bpamc7anQ5cjZ0NzMzaTczNEAtNDJjNGNfNS4xL14uNTItYSNqYDUwMmRzYmVhLS1kMTJzcw%3D%3D&vvpl=1&l=202603171353548F033718FA6A0B142638&btag=e000b0000","subtitleInfos": []},"author": "billieeilish","music": {"id": 6957458921367817000,"title": "original sound - bigguccisoto300","coverThumb": "https://p16-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/7346512878343553070~tplv-tiktokx-cropcenter-q:1080:1080:q70.heic?dr=8837&idc=useast5&ps=87d6e48a&refresh_token=e5dc9ac0&s=AWEME_DETAIL&sc=avatar&shcp=1d1a97fc&shp=d05b14bd&t=223449c4&x-expires=1773838800&x-signature=ODCnxA%2FBTp8NnC3km8xegbGK6g8%3D","authorName": "PAPO","duration": 29,"album": null},"stats": {"diggCount": 5447361,"shareCount": 276332,"commentCount": 110570,"playCount": 49797142},"authorStats": {"followerCount": 74398517,"followingCount": 76,"videoCount": 74},"adAuthorization": false,"locationCreated": null,"nickname": "billieeilish","authorId": "6879693940111901701","avatarThumb": "https://p16-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/a67f9744439872cde91754ff64b8a97d~tplv-tiktokx-cropcenter-q:1080:1080:q70.heic?dr=8837&idc=useast5&ps=87d6e48a&refresh_token=a1dc7ad8&s=AWEME_DETAIL&sc=avatar&shcp=1d1a97fc&shp=d05b14bd&t=223449c4&x-expires=1773838800&x-signature=AiYZ%2BZ4GKt9NCZSXrp1zh%2FJzhaE%3D"}
Contact
Please visit us through epctex.com to see all the products that are available for you. If you are looking for any custom integration or so, please reach out to us through the chat box in epctex.com. In need of support? business@epctex.com is at your service.