Tiktok Search Scraper avatar

Tiktok Search Scraper

Pricing

from $0.30 / 1,000 dataset items

Go to Apify Store
Tiktok Search Scraper

Tiktok Search Scraper

Unleash the power of data extraction with our advanced TikTok Search Scraper. Gather videos, hashtags, posts, URLs, share numbers, followers, hearts, names, music-related data, and more. Download data in various formats including HTML, JSON, CSV, Excel, or XML.

Pricing

from $0.30 / 1,000 dataset items

Rating

5.0

(8)

Developer

epctex

epctex

Maintained by Apify Partner

Actor stats

62

Bookmarked

2.3K

Total users

63

Monthly active users

3 hours ago

Last modified

Share

Actor - TikTok Search Scraper

TikTok Search Scraper

Extract videos from TikTok search results by keyword or URL with transparent, event-based pricing.

The TikTok Search Scraper supports the following features:

  • Search any keyword and extract matching videos from TikTok.

  • Filter by location, date range, and sort order.

  • Extract full video data including descriptions, stats, author info, and music details.

  • Limit output by page count or total item count for cost control.

💰 Pricing

This actor uses event-based pricing — you only pay for what you use.

EventPriceNotes
Search Query$0.006 per search/URLFirst ~20 videos included FREE
Dataset Item$0.0003 per itemCharged for each video beyond the free ~20

Cost Examples

ScenarioChargesCalculationTotal
1 keyword, 20 videos1 search query$0.006$0.006
1 keyword, 100 videos1 search query + 80 items$0.006 + ($0.0003 × 80)$0.030
5 keywords, 100 videos each5 search queries + 400 items($0.006 × 5) + ($0.0003 × 400)$0.150
10 keywords, 50 videos each10 search queries + 300 items($0.006 × 10) + ($0.0003 × 300)$0.150

Demo Mode

Users on the Free plan can test this actor with 5 runs per month and 10 items per run. Demo mode does not include API access. To scrape without these limits, subscribe to a paid plan.

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 search keywords or URLs to scrape. Possible fields are:

  • search: (Optional) (Array) List of TikTok search keywords (e.g. anime, music).

  • startUrls: (Optional) (Array) List of TikTok search URLs to scrape directly.

  • endPage: (Optional) (Number) Final page number to scrape. Default is Infinite. Applies to each search/URL individually.

  • location: (Optional) (String) ISO 3166-1 alpha-2 country code to filter by region (e.g. US, GB, DE).

  • dateRange: (Optional) (String) Time filter: DEFAULT, ALL_TIME, YESTERDAY, THIS_WEEK, THIS_MONTH, LAST_THREE_MONTHS, LAST_SIX_MONTHS.

  • sortType: (Optional) (String) Sort order for results: RELEVANCE, MOST_LIKED, DATE_POSTED.

  • maxItems: (Optional) (Number) Maximum number of videos to retrieve in total.

  • customMapFunction: (Optional) (String) JavaScript function to transform each output item.

  • outputConnector: (Optional) (String) MCP connector to deliver the results to — 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) or summary (one roll-up per run). Default is perPost.

  • deliverMaxItems: (Optional) (Number) Cap on how many records perPost delivers (ignored in summary).

Input Example

{
"search": ["anime", "tiktok"],
"startUrls": [
"https://www.tiktok.com/search?q=music&t=1670685477846"
],
"maxItems": 100,
"endPage": 2,
"location": "US",
"sortType": "MOST_LIKED"
}

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 Search 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 Search actor.

Send Results to Notion, Todoist and More

Skip the manual exports — the TikTok Search Scraper can deliver its results directly into the tools you already work in, through Apify MCP Connectors:

  1. Authorize a connector (Notion, Todoist, or any service whose MCP server offers non-destructive write tools) once in Console → Settings → API & Integrations → MCP connectors.
  2. Pick it from the Send results to Notion, Todoist, … dropdown.
  3. 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 — perPost writes one record per video; summary writes a single roll-up for the run.
    • Max records to deliver (optional) — cap on how many records perPost delivers.

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, 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 Search Properties

The structure of each item in TikTok Search looks like this:

Item Detail

{
"url": "https://www.tiktok.com/@balancewithnu/video/7614464525332516118",
"id": "7614464525332516118",
"desc": "Recipe Below 👇 High protein pizza bowl meal prep 🍕 Ingredients for ONE serving: - 1/2 cup blended cottage cheese (or Greek yogurt) - 1/3 cup self raising flour (I used gluten free flour and baking powder) - 3 tbsp Tomato/pizza sauce - 100g (raw weight)/ half a cup Lean minced turkey (seasoned with Italian seasoning, garlic powder, onion powder, etc) - Bell peppers - Onion - Turkey Pepperoni Grease your container with low cal spray oil. Mix the flour and blended cottage cheese until it form a dough. Press into the container to create a base Top with sauce, toppings, cheese, and Turkey pepperoni. Bake for 20 mins at 400f/200c Enjoy!!! This is perfect for meal prep as well!! Estimated Macros: Calories: 550 Protein: 40g If you want a tasty meal prep that is high in protein and under 600 calories then this is a perfect meal for you!! When I tell you this meal is so filling! It fills you up for hours and with such great macros! This is a must try meal prep that actually tastes so delicious! It’s incredibly easy to make as well. All the veggies are raw and the only thing I cooked on the pan was the turkey mince. #mealprep #mealprepideas #healthymealprep #highproteinmeals #caloriedeficitdiet ",
"createTime": 1772880681,
"video": {
"id": "7614464525332516118",
"width": 576,
"height": 1024,
"ratio": "540p",
"duration": 18.598,
"cover": "https://p16-common-sign.tiktokcdn-eu.com/tos-no1a-p-0037-no/oAgF5KpXMAReE8PEFAA25IIDsglkrc1B67fSyj~tplv-tiktokx-cropcenter:500:800.jpeg?biz_tag=musically_video.video_cover&dr=10397&idc=no1a&ps=13740610&refresh_token=77c519ee&shcp=9b759fb9&shp=c1333099&t=4d5b0474&x-expires=1773075600&x-signature=lfUMAckEDVDktoZF%2FPWsznmb3oU%3D",
"playAddr": "https://v16m.tiktokcdn-eu.com/55c788d58a60c58684a3b74ab65e8ef6/69affeb8/video/tos/no1a/tos-no1a-ve-0068c001-no/oAI6sp1ERBACGgRXj5EAGFEFKADmerQlPf68zk/?a=1233&bti=NTY6QGo0QHM6OjZANDQuYCMucCMxNDNg&ch=0&cr=13&dr=0&er=0&lr=all&net=0&cd=0%7C0%7C0%7C&cv=1&br=2560&bt=1280&cs=0&ds=6&ft=pfur5Mk88Zmo0k34.x4jVdKD~C1rKsd.&mime_type=video_mp4&qs=0&rc=OTZmZjY3ODtoPGQ6ZjtnNkBpM3htdGs5cmkzOTMzbzczNUBhYjYtMjYwXl8xXi8yLy02YSNxaXNnMmQ0MmphLS1kMTFzcw%3D%3D&vvpl=1&l=20260309112109BF1DA2B29F7447AC59B4&btag=e000b8000",
"originCover": "https://p16-common-sign.tiktokcdn-eu.com/tos-no1a-p-0037-no/oAgF5KpXMAReE8PEFAA25IIDsglkrc1B67fSyj~tplv-tiktokx-cropcenter:500:800.jpeg?biz_tag=musically_video.video_cover&dr=10397&idc=no1a&ps=13740610&refresh_token=77c519ee&shcp=9b759fb9&shp=c1333099&t=4d5b0474&x-expires=1773075600&x-signature=lfUMAckEDVDktoZF%2FPWsznmb3oU%3D"
},
"author": "Nu 🥗 | Meal Prep + Cooking",
"music": {
"id": 7210909845497580000,
"title": "Sogni ancora",
"authorName": "Piero Piccioni",
"album": "La Parmigiana (Original Motion Picture Soundtrack)",
"duration": 60,
"coverThumb": "https://p16-sg.tiktokcdn.com/aweme/720x720/tos-alisg-v-2774/9b44b74fff65434a99ebf249889e322d.jpeg"
},
"authorStats": {
"followerCount": 49642,
"followingCount": 202,
"videoCount": null
},
"adAuthorization": true,
"nickname": "balancewithnu",
"authorId": "7455362914372191265",
"avatarThumb": "https://p16-common-sign.tiktokcdn-eu.com/tos-no1a-avt-0068c001-no/41775d616ada5ccebaf246e463bfe330~tplv-tiktokx-cropcenter-q:1080:1080:q70.heic?dr=9608&idc=no1a&ps=87d6e48a&refresh_token=e5d65357&s=SEARCH&sc=avatar&shcp=c1333099&shp=d05b14bd&t=223449c4&x-expires=1773140400&x-signature=rYrMf92XuIKS22BbyWInWP8nrNQ%3D",
"stats": {
"diggCount": 784,
"shareCount": 124,
"commentCount": 9,
"playCount": 21634
}
}

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.