Skip to main content

Unofficial TikTok API Wrapped in Python

Project description

Tikfly API

Unofficial TikTok API Wrapped in Python

GitHub Repo stars GitHub forks Vistors License

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

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

tikfly-1.1.2.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tikfly-1.1.2-py3-none-any.whl (24.5 kB view details)

Uploaded Python 3

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

Hashes for tikfly-1.1.2.tar.gz
Algorithm Hash digest
SHA256 8182c83770882a5e6ed9e0d04849a647960550c7cdc5b639b5dfb769d2ec2611
MD5 caa4ca1183c572d08ba32da45f3c100d
BLAKE2b-256 7f1fc391f3430eea2139f8f2de65c82dd2410f257fe8a84f283ccd37cf4941b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for tikfly-1.1.2.tar.gz:

Publisher: publish.yml on tikfly/tikfly-api-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for tikfly-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 666b0aed4d1807e01e36d84766b8d988f3d3b1f23c5664c8438038ab5c673908
MD5 ea61c1e341432aef86c03df614ad1803
BLAKE2b-256 931e52dce8ac1c230b29ceb650e42b30e7b33141044dd63f038a76cb9b6c7af3

See more details on using hashes here.

Provenance

The following attestation bundles were made for tikfly-1.1.2-py3-none-any.whl:

Publisher: publish.yml on tikfly/tikfly-api-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page