Unofficial TikTok API Wrapped in Python
Project description
Tikfly API
Unofficial TikTok API Wrapped in Python
Available on PyPi
Installation
pip install tikfly
Usage
Get TikTok User Info
import asyncio
from tikfly import TikflyApi
API_KEY = 'YOUR_API_KEY' # How to get your api key -> https://docs.tikfly.io/getting-started/quickstart
USERNAME = 'taylorswift' # Change to the user you want to get data from
async def get_tiktok_user_info():
tikfly = TikflyApi(x_rapidapi_key=API_KEY)
res_user_info = await tikfly.get_user_info(unique_id=USERNAME)
print(res_user_info.userInfo)
asyncio.run(get_tiktok_user_info())
Get Tiktok User Videos
import asyncio
from tikfly import TikflyApi
from tikfly.schemas.UserPostSchema import VideoItem
API_KEY = 'YOUR_API_KEY' # How to get your api key -> https://docs.tikfly.io/getting-started/quickstart
USERNAME = 'taylorswift' # Change to the user you want to get data from
NUM = 50 # Max number of videos to fetch
async def get_tiktok_user_videos():
tikfly = TikflyApi(x_rapidapi_key=API_KEY)
print(f'Fetching {NUM} videos of user: {USERNAME}')
res_user_info = await tikfly.get_user_info(USERNAME)
user_sec_uid = res_user_info.userInfo.user.secUid
print('User secUid:', user_sec_uid)
results: list[VideoItem] = []
cursor = 0
count = 15
has_more = True
while has_more and len(results) < NUM:
print(f'Current cursor: {cursor}')
res_user_posts = await tikfly.get_user_posts(
user_sec_uid,
count=count,
cursor=cursor
)
itemList = getattr(res_user_posts, 'itemList', [])
if not itemList:
break
results.extend(itemList)
remaining = NUM - len(results)
results.extend(itemList[:remaining])
has_more = res_user_posts.hasMore
cursor = res_user_posts.cursor
for video in results:
print(f'- {video.id}: {video.desc}')
asyncio.run(get_tiktok_user_videos())
Download Tiktok Videos (Without Watermark)
import ssl
import asyncio
import certifi
import aiohttp
from tikfly import TikflyApi
API_KEY = 'YOUR_API_KEY' # How to get your api key -> https://docs.tikfly.io/getting-started/quickstart
VIDEO_URLS = [
'https://www.tiktok.com/@taylorswift/video/7558098574555254046'
]
async def download_video(url: str, save_path: str):
CHUNK_SIZE = 1024 * 1024
ssl_context = ssl.create_default_context(cafile=certifi.where())
async with aiohttp.ClientSession() as session:
async with session.get(url, ssl=ssl_context) as resp:
resp.raise_for_status()
with open(save_path, 'wb') as f:
async for chunk in resp.content.iter_chunked(CHUNK_SIZE):
f.write(chunk)
print(f'Saved video to: {save_path}')
async def download_tiktok_videos():
tikfly = TikflyApi(x_rapidapi_key=API_KEY)
for url in VIDEO_URLS:
res = await tikfly.download_video(url)
download_url = res.play
print(f'Download URL: {download_url}')
if download_url:
video_id = url.rstrip('/').split('/')[-1]
await download_video(download_url, f'{video_id}.mp4')
asyncio.run(download_tiktok_videos())
Examples
Go to the /tests and /examples folder to view more snippet code and example data.
Tutorials
- Tikfly API Documentation
- How to get Rapid API Key
- Working with Cursor in TikTok API for Pagination
- What is Tiktok User secUid?
- How TikTok Classifies a Video?
Contributing
Contributions are welcome! If you find this project helpful, please consider starring the repository on GitHub ⭐️
License
This project is licensed under the MIT License. See the LICENSE file for more details.
Disclaimer
This project is an independent, open-source tool and is not affiliated, endorsed, or sponsored by TikTok.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tikfly-1.1.2.tar.gz.
File metadata
- Download URL: tikfly-1.1.2.tar.gz
- Upload date:
- Size: 16.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8182c83770882a5e6ed9e0d04849a647960550c7cdc5b639b5dfb769d2ec2611
|
|
| MD5 |
caa4ca1183c572d08ba32da45f3c100d
|
|
| BLAKE2b-256 |
7f1fc391f3430eea2139f8f2de65c82dd2410f257fe8a84f283ccd37cf4941b9
|
Provenance
The following attestation bundles were made for tikfly-1.1.2.tar.gz:
Publisher:
publish.yml on tikfly/tikfly-api-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tikfly-1.1.2.tar.gz -
Subject digest:
8182c83770882a5e6ed9e0d04849a647960550c7cdc5b639b5dfb769d2ec2611 - Sigstore transparency entry: 1017840555
- Sigstore integration time:
-
Permalink:
tikfly/tikfly-api-py@bb94ca6ee5c4f4c5babbccbff6cbea96fbfbc9b5 -
Branch / Tag:
refs/tags/v1.1.2 - Owner: https://github.com/tikfly
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bb94ca6ee5c4f4c5babbccbff6cbea96fbfbc9b5 -
Trigger Event:
release
-
Statement type:
File details
Details for the file tikfly-1.1.2-py3-none-any.whl.
File metadata
- Download URL: tikfly-1.1.2-py3-none-any.whl
- Upload date:
- Size: 24.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
666b0aed4d1807e01e36d84766b8d988f3d3b1f23c5664c8438038ab5c673908
|
|
| MD5 |
ea61c1e341432aef86c03df614ad1803
|
|
| BLAKE2b-256 |
931e52dce8ac1c230b29ceb650e42b30e7b33141044dd63f038a76cb9b6c7af3
|
Provenance
The following attestation bundles were made for tikfly-1.1.2-py3-none-any.whl:
Publisher:
publish.yml on tikfly/tikfly-api-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tikfly-1.1.2-py3-none-any.whl -
Subject digest:
666b0aed4d1807e01e36d84766b8d988f3d3b1f23c5664c8438038ab5c673908 - Sigstore transparency entry: 1017840560
- Sigstore integration time:
-
Permalink:
tikfly/tikfly-api-py@bb94ca6ee5c4f4c5babbccbff6cbea96fbfbc9b5 -
Branch / Tag:
refs/tags/v1.1.2 - Owner: https://github.com/tikfly
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bb94ca6ee5c4f4c5babbccbff6cbea96fbfbc9b5 -
Trigger Event:
release
-
Statement type: