# How to Download TikTok Videos in Bulk

To download TikTok videos in bulk, collect the videos with apidojo's TikTok Scraper on Apify, which returns each video's file link in its video object, then download those files with a short script.

[![apidojo](/blog/authors/apidojo.png)**Apidojo** *15+ years of experience in data retrieval.*](/blog/authors/apidojo/)

**12 October 2026** Published

**3 min** Read

![Cover card reading 'How to Download TikTok Videos in Bulk'](/blog/covers/bulk-download-videos.png)

**To download TikTok videos in bulk, collect the videos with apidojo’s [TikTok Scraper](https://apify.com/apidojo/tiktok-scraper) on Apify, which returns each video’s file link in its `video` object, then download those files with a short script.** Collection costs $0.30 per 1,000 posts. Download straight after the run, and only keep or reuse videos you have the rights to, such as your own account’s or with creators’ permission.

Bulk downloads are mostly used for archiving your own content, building research datasets, and reviewing campaign videos. This guide covers the collection run, a Python downloader, and the rules that keep it responsible. Saving a single video in the app is covered in [how to download TikTok videos](/blog/tiktok-videos/download-tiktok-videos/). Every other collection task is mapped in [how to scrape TikTok data](/blog/tiktok-scraping/how-to-scrape-tiktok/).

## How Do You Collect Video Links in Bulk?

**Run TikTok Scraper on a profile, hashtag, sound or search, and each result includes a `video` object with the file URL, cover image and duration.** Single post URLs aren’t accepted by this actor, so collect by profile, hashtag, search, sound or location (Apify).

```
{
  "startUrls": ["https://www.tiktok.com/@yourbrand"],
  "maxItems": 300
}
```

## How Do You Download the Video Files With Python?

**Read each result’s `video.url` and save the file, named by the post ID so nothing is overwritten.** Download soon after the run, because media links can expire.

```
import os, pathlib, requests
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("apidojo/tiktok-scraper").call(run_input={
    "startUrls": ["https://www.tiktok.com/@yourbrand"],
    "maxItems": 300,
})

out = pathlib.Path("tiktok_videos")
out.mkdir(exist_ok=True)
for post in client.dataset(run.default_dataset_id).iterate_items():
    url = (post.get("video") or {}).get("url")
    if not url:
        continue
    path = out / f"{post['id']}.mp4"
    if path.exists():
        continue
    r = requests.get(url, timeout=60)
    if r.ok:
        path.write_bytes(r.content)
```

The script skips files you’ve already saved, so you can rerun it safely. The Python setup is in [how to collect TikTok data with Python](/blog/tiktok-scraping/tiktok-python/).

## How Do You Keep Video Details With the Files?

**Save the post data alongside the videos, so each file keeps its caption, date, views, sound and creator.** A CSV with `id`, `postPage`, `uploadedAtFormatted`, `views`, `title` and `channel.username` next to the folder of `{id}.mp4` files is enough to find any video later. Exporting the data is covered in [how to collect TikTok data with Python](/blog/tiktok-scraping/tiktok-python/).

## What Are the Rules for Downloading TikTok Videos in Bulk?

**Videos belong to their creators, so bulk downloads should be for your own content, research, or uses the creators have agreed to.** Listed below are the 4 rules to follow.

1.  **Download your own videos freely**; for a full personal backup, also request your data from TikTok.
2.  **Keep research copies private** and use them for analysis, not republishing.
3.  **Get permission** before reposting or editing someone else’s video, and credit them.
4.  **Check TikTok’s Terms of Service and copyright law** for your use case.

Your personal export is covered in [how to download your TikTok data](/blog/tiktok-data/download-your-data/).

## What Does Bulk Downloading Cost?

**Collection costs $0.30 per 1,000 posts on TikTok Scraper, so links for 3,000 videos cost $0.90; downloading the files adds no actor fee, only your storage and bandwidth.** The free Apify plan runs the actor in demo mode, 5 runs a month with 10 items each (Apify).

## Why Do Some Videos Fail to Download?

**Downloads fail when links have expired, the video was deleted or made private after the run, or the request was interrupted.** Rerun the collection to refresh the links, then rerun the downloader; it will skip files you already have.

## The scrapers behind this

-   [TikTok Scraper Profiles, videos, hashtags, music and locations; 460 posts/sec measured $0.30 / 1K posts](/scrapers/tiktok-scraper/)

## Questions people ask

### Can you download all videos from a TikTok account?

Yes, collect the profile with `maxItems` above its video count, then download each file.

### Do bulk-downloaded TikTok videos have a watermark?

Check a sample from your run; the file served depends on how TikTok delivers the video.

### Can you bulk download TikTok videos from a hashtag?

Yes, use the hashtag page URL as the input; see [how to scrape TikTok hashtag pages](/blog/tiktok-scraping/scrape-hashtags/).

### Where do you start?

At [how to scrape TikTok data in 2026](/blog/tiktok-scraping/how-to-scrape-tiktok/).

## More on scraping TikTok data

-   [How to Scrape TikTok Data in 2026 What TikTok data you can scrape, the 3 ways to collect it, which apidojo actor fits each task, limits, costs and Python code.](/blog/tiktok-scraping/how-to-scrape-tiktok/)
-   [How to Scrape TikTok Comments and Replies Export every comment and reply on any public TikTok video with text, likes, language and commenter profile, plus Python code.](/blog/tiktok-scraping/scrape-comments/)
-   [How to Scrape TikTok Profiles and Their Videos Scrape TikTok profiles by username with apidojo's actors, get every video's stats and the creator's details, and turn them into creator benchmarks.](/blog/tiktok-scraping/scrape-profiles/)
-   [How to Scrape TikTok Followers and Following Lists Export TikTok follower and following lists with profile details, the limits on large and hidden lists, and how to use the data.](/blog/tiktok-scraping/scrape-followers/)
-   [How to Scrape TikTok Hashtag Pages Collect every video on a TikTok hashtag with views, likes and creators, measure the hashtag's daily growth, and find who drives it.](/blog/tiktok-scraping/scrape-hashtags/)
-   [How to Scrape TikTok Search Results Scrape TikTok keyword search results by country and sort order, turn video results into a creator list, and see what it costs.](/blog/tiktok-scraping/scrape-search-results/)
-   [How to Scrape TikTok Sounds and Music Data Scrape the videos using any TikTok sound, read the song fields, measure a sound's growth, and extract audio from your own videos.](/blog/tiktok-scraping/scrape-sounds/)
-   [How to Scrape Location-Tagged TikTok Videos Scrape TikTok videos tagged at a venue or landmark, target results by country, and use location data for local research.](/blog/tiktok-scraping/scrape-locations/)
-   [How to Collect TikTok Data With Python A Python script that searches TikTok videos, scrapes comments on the best ones, cleans the data and saves it, with costs and limits.](/blog/tiktok-scraping/tiktok-python/)
-   [TikTok Scraping Limits: Pagination and Rate Limits The documented limits of apidojo's TikTok actors, how pagination and maxItems work, and fixes for runs that return too few results.](/blog/tiktok-scraping/limits-pagination/)
-   [Why geotagged TikTok posts arrive without a geotag TikTok Location Scraper returns posts filed under a place, and not one field in the output names that place. Here is how to keep the provenance.](/blog/tiktok/tiktok-location-provenance/)
-   [TikTok date windows that return nothing, and why TikTok Profile Scraper's since and until mean the opposite of what almost everyone assumes. Swap them and the run returns an empty dataset.](/blog/tiktok/tiktok-since-until/)
-   [Why your TikTok user run cost three queries getFollowers and getFollowing are both on by default, and each is its own charge on top of the profile lookup. An unconfigured run bills three times.](/blog/tiktok/tiktok-user-defaults/)

![apidojo](/blog/authors/apidojo.png)

## [Apidojo](/blog/authors/apidojo/)

15+ years of experience in data retrieval.

API Dojo is always ready for you. With 15+ years of experience, data acquisition has never been that easy. Cheapest prices with high availability.

-   🏯 15+ years of experience in data retrieval.
-   💰 Cheapest prices, qualified data.
-   ⚙️ High availability, extreme maintenance.
-   🐉 Hyper communicative, excellent support.

-   [apify.com](https://apify.com/apidojo)
-   [x.com](https://x.com/apidojo_)
-   [github.com](https://github.com/apidojo-io)
