• Stars
    star
    4,712
  • Rank 8,977 (Top 0.2 %)
  • Language
    Python
  • License
    MIT License
  • Created over 5 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Unofficial TikTok API Wrapper In Python

Unofficial TikTok API in Python

This is an unofficial api wrapper for TikTok.com in python. With this api you are able to call most trending and fetch specific user information as well as much more.

DOI LinkedIn Sponsor Me GitHub release (latest by date) Build Status GitHub Downloads Support Server

This api is designed to retrieve data TikTok. It can not be used post or upload content to TikTok on the behalf of a user. It has no support any user-authenticated routes, if you can't access it while being logged out on their website you can't access it here.

Sponsors

These sponsors have paid to be placed here and beyond that I do not have any affiliation with them, the TikTokAPI package will always be free and open-source. If you wish to be a sponsor of this project check out my GitHub sponsors page.

Table of Contents

Upgrading from V4 to V5

Documentation

You can find the full documentation here, the TikTokApi Class is where you'll probably spend most of your time.

Getting Started

To get started using this api follow the instructions below.

Note: If you want to learn how to web scrape websites check my free and open-source course for learning everything web scraping

How to Support The Project

  • Star the repo 😎
  • Consider sponsoring me on GitHub
  • Send me an email or a LinkedIn message telling me what you're using the API for, I really like hearing what people are using it for.
  • Submit PRs for issues :)

Installing

If you run into an issue please check the closed issues on the github, although feel free to re-open a new issue if you find an issue that's been closed for a few months. The codebase can and does run into similar issues as it has before, because TikTok changes things up.

pip install TikTokApi
python -m playwright install

If you would prefer a video walk through of setting up this package YouTube video just for that.

If you want a quick video to listen for TikTok Live events in python.

Docker Installation

Clone this repository onto a local machine (or just the Dockerfile since it installs TikTokApi from pip) then run the following commands.

docker pull mcr.microsoft.com/playwright:focal
docker build . -t tiktokapi:latest
docker run -v TikTokApi --rm tiktokapi:latest python3 your_script.py

Note this assumes your script is named your_script.py and lives in the root of this directory.

Common Issues

Please don't open an issue if you're experiencing one of these just comment if the provided solution do not work for you.

  • Browser Has no Attribute - make sure you ran python3 -m playwright install, if your error persists try the playwright-python quickstart guide and diagnose issues from there.

Quick Start Guide

Here's a quick bit of code to get the most recent trending videos on TikTok. There's more examples in the examples directory.

Note: If you want to learn how to web scrape websites check my free and open-source course for web scraping

from TikTokApi import TikTokApi

# Watch https://www.youtube.com/watch?v=-uCt1x8kINQ for a brief setup tutorial
with TikTokApi() as api:
    for trending_video in api.trending.videos(count=50):
        # Prints the author's username of the trending video.
        print(trending_video.author.username)

Note: Jupyter (ipynb) only works on linux, see microsoft/playwright-python #178

To run the example scripts from the repository root, make sure you use the -m option on python.

python -m examples.get_trending

You can access the dictionary type of an object using .as_dict. On a video this may look like this, although TikTok changes their structure from time to time so it's worth investigating the structure of the dictionary when you use this package.

Upgrading from V4 to V5

All changes will be noted on #803 if you want more information.

Motivation

This package has been difficult to maintain due to it's structure, difficult to work with since the user of the package must write parsing methods to extract information from dictionaries, more memory intensive than it needs to be (although this can be further improved), and in general just difficult to work with for new users.

As a result, I've decided to at least attempt to remedy some of these issues, the biggest changes are that

  1. The package has shifted to using classes for different TikTok objects resulting in an easier, higher-level programming experience.
  2. All methods that used to return a list of objects have been switched to using iterators, to hopefully decrease memory utilization for most users.

Upgrading Examples

Accessing Dictionary on Objects (similar to V4)

You'll probably need to use this beyond just for legacy support, since not all attributes are parsed out and attached to the different objects.

You may want to use this as a workaround for legacy applications while you upgrade the rest of the app. I'd suggest that you do eventually upgrade to using the higher-level approach fully.

user = api.user(username='therock')
user.as_dict # -> dict of the user_object
for video in user.videos():
    video.as_dict # -> dict of TikTok's video object as found when requesting the videos endpoint

Here's a few more examples that help illustrate the differences in the flow of the usage of the package with V5.

# V4
api = TikTokApi.get_instance()
trending_videos = api.by_trending()

#V5.1
with TikTokApi() as api: # .get_instance no longer exists
    for trending_video in api.trending.videos():
        # do something

Where in V4 you had to extract information yourself, the package now handles that for you. So it's much easier to do chained related function calls.

# V4
trending_videos = api.by_trending()
for video in trending_videos:
    # The dictionary responses are also different depending on what endpoint you got them from
    # So, it's usually more painful than this to deal with
    trending_user = api.get_user(id=video['author']['id'], secUid=video['author']['secUid'])


# V5
# This is more complicated than above, but it illustrates the simplified approach
for trending_video in api.trending.videos():
    user_stats = trending_video.author.info_full['stats']
    if user_stats['followerCount'] >= 10000:
        # maybe save the user in a database

More Repositories

1

TikTokBot

A TikTokBot that downloads trending tiktok videos and compiles them using FFmpeg
Python
349
star
2

everything-web-scraping

Learn everything web scraping with David Teather Codes on YouTube
HTML
304
star
3

python-obfuscator

I got tired of writing good code so I made good code to make bad code
Python
149
star
4

chatGPT-for-applications

Generate cover letters, resumes, and more with chatGPT!
Python
87
star
5

web-scraping-with-reverse-engineering

MOVED TO https://github.com/davidteather/everything-web-scraping
JavaScript
43
star
6

Instagram-Bot

This is a commissioned instagram bot that will auto assign instagram account proxies and execute a job list to follow, like, or comment on a post.
Python
38
star
7

tinder-bot

Tinder Automation Bot
Python
31
star
8

ApplicantAtlas

An open source event management platform focused on Hackathons
TypeScript
16
star
9

BackpackTf-API

Unoffical Backpack.tf wrapper in python
Python
14
star
10

webscraping-workshop-madhacks-2023

Introduction to Static Site Web Scraping Workshop For MadHacks 2023
Jupyter Notebook
5
star
11

Hotukdeals-Discord-Notifier

A commissioned project to notify a user on discord about new deals matching specific criteria.
Python
5
star
12

Target-Stock-Discord-Bot

This is a bot that is designed to respond with Target's stock based on a DPCI code.
Python
5
star
13

copypasta-generator

Code that creates copypasta
Python
3
star
14

app-etite

Discover a new place to eat
JavaScript
3
star
15

TCGPlayer-Scraper

This is a commissioned to return the listings with images of specific cards.
Python
3
star
16

triller-api

The Unofficial Triller API Wrapper In Python
Python
3
star
17

cursed-python

Python code, but cursed
Python
2
star
18

csgo-no-hands

Playing CSGO Without Using Hands
HTML
2
star
19

conspiracy-bot

A bot that just rambles about conspiracies from r/conspiracy
Python
2
star
20

worst-stock-predictor

Predicts the worst stocks to invest in
Python
2
star
21

astro-search-optimized-image-blog-template

Astro + Page Search + Optimized Images from Markdown + TailwindCSS + DaisyUI Template
Astro
2
star
22

linkedin-profile-picture-notifier

This is a commissioned project that notifies users over email when a person's LinkedIn profile picture changes
Python
2
star
23

Wisconsin-Covid19-API

A wrapper library to get Covid-19 data from Wisconsin's Department of Health
Python
2
star
24

imc-prosperity-2024

IMC Prosperity 2024, #103 USA #381 Globally
Python
1
star
25

scrape-crossfit-gyms

Scrapes crossfit gym data
Python
1
star
26

Mini-Apis

A python wrapper for a ton of small free apis.
Python
1
star
27

COVID19-US-Chrome-Extension

Google Chrome Extension Tracking COVID-19 in the US
JavaScript
1
star
28

zoom-scheduler

Repository for our hackdavis.io project
Python
1
star
29

ewg-water-scrape

Python
1
star
30

robot-interrupter

A robot that interrupts you because that's what you need in your life.
Python
1
star
31

STEP

C++
1
star
32

photo-booth

A basic photo booth application for controlling a gphoto2 compatible camera through a nice web interface that can send the pictures out to the user over email.
Python
1
star
33

UW-Madison-Covid-19

This is a dashboard to keep track of the current cases of coronavirus in and around the University of Wisconsin Madison.
TypeScript
1
star