Self-hosted API untuk scrape & download video TikTok. Register untuk akses API key.
Langkah-langkah:
| Langkah | Deskripsi |
|---|---|
1 | Klik Login / Register di navigation bar |
2 | Register dengan username, email, dan password (minimal 6 karakter) |
3 | API Key akan muncul di halaman utama (format: mallss_xxx) |
4 | Gunakan API Key di setiap request sebagai header |
Kirim API Key di header setiap request. Dua cara:
curl -H "X-Api-Key: mallss_xxx" "https://tiktokapi.amanenime.my.id/api/videos?u=mal_oniisan"
curl "https://tiktokapi.amanenime.my.id/api/videos?u=mal_oniisan&api_key=mallss_xxx"
| Tier | Rate Limit | Harga |
|---|---|---|
Free | 10 request per jam | Gratis |
Premium | 100 request per jam | Hubungi admin |
Contoh integrasi API dalam berbagai bahasa pemrograman. Semua contoh menggunakan API key via header X-Api-Key.
import requests
API_KEY = "mallss_xxx"
BASE_URL = "https://tiktokapi.amanenime.my.id"
# Ambil video terbaru dari user
headers = {"X-Api-Key": API_KEY}
resp = requests.get(f"{BASE_URL}/api/videos", headers=headers, params={"u": "mal_oniisan", "limit": 5})
data = resp.json()
if data["status"]:
for v in data["videos"]:
print(f"{v['title']} — {v['play_count']} views")
print(f" Cover: {v['cover']}")
print(f" Link: https://tiktok.com/@{v['author']}/video/{v['video_id']}")
print()
# Download video
resp = requests.get(f"{BASE_URL}/api/download", headers=headers, params={"url": "https://www.tiktok.com/@user/video/123..."})
dl = resp.json()
if dl["status"]:
print(f"Video URL: {dl['video'][0]}")
print(f"Audio URL: {dl['audio'][0]}")
# Download file langsung
with requests.get(f"{BASE_URL}/api/download-file", headers=headers, params={"url": "...", "type": "video"}, stream=True) as r:
with open("video.mp4", "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
mallss_xxx dengan API key kamu sendiri. Dapatkan dengan register di tombol Login / Register.
Ambil daftar video terbaru dari profil TikTok. Scraping dilakukan via headless browser dengan cookies session untuk melewati WAF TikTok.
| Nama | Tipe | Wajib | Default | Deskripsi |
|---|---|---|---|---|
u | string | Ya | - | Username TikTok tanpa @ (contoh: mal_oniisan) |
limit | integer | Tidak | 10 | Jumlah video maksimal yang dikembalikan (1-50) |
| Field | Tipe | Deskripsi |
|---|---|---|
status | boolean | true jika berhasil |
count | integer | Jumlah video yang dikembalikan |
videos[].video_id | string | ID unik video TikTok |
videos[].title | string | Judul/caption video |
videos[].cover | string | URL thumbnail video |
videos[].author | string | Username pemilik video |
videos[].isVideo | boolean | true jika konten video |
videos[].play_count | integer | Jumlah views |
videos[].digg_count | integer | Jumlah likes |
videos[].create_time | integer | Unix timestamp (0 jika tidak tersedia) |
curl -H "X-Api-Key: mallss_xxx" "https://tiktokapi.amanenime.my.id/api/videos?u=mal_oniisan&limit=5"
{
"status": true,
"count": 5,
"videos": [
{
"video_id": "7668987703706307860",
"title": "presetwinxz | asik nii😜",
"cover": "https://p19-common-sign.tiktokcdn.com/tos-alisg-p-0037/...image",
"author": "winxzrawrr",
"isVideo": true,
"play_count": 16500,
"digg_count": 0,
"create_time": 0
}
]
}
Ambil direct URL untuk video dan audio dari link TikTok. Mendukung format URL: tiktok.com/@user/video/ID, vt.tiktok.com/xxx, vm.tiktok.com/xxx.
| Nama | Tipe | Wajib | Deskripsi |
|---|---|---|---|
url | string | Ya | URL video TikTok (lengkap dengan https://) |
| Field | Tipe | Deskripsi |
|---|---|---|
status | boolean | true jika berhasil |
title | string | Judul/caption video |
author | string | Username pemilik video |
cover | string | URL thumbnail video |
duration | integer | Durasi video dalam detik |
video | string[] | URL download video kualitas normal (mp4) |
video_hd | string[] | URL download video kualitas HD (mp4) |
audio | string[] | URL download audio saja (mp3) |
video_id | string | ID unik video TikTok |
curl -H "X-Api-Key: mallss_xxx" "https://tiktokapi.amanenime.my.id/api/download?url=https://www.tiktok.com/@user/video/123..."
{
"status": true,
"title": "#presetwinxz | asik nii😜 #presetalightmotion #sektegace #xyzbca #fyp",
"author": "winxzrawrr",
"cover": "https://p16-common-sign.tiktokcdn-us.com/tos-alisg-p-0037/...jpeg",
"duration": 14,
"video": ["https://v16m.tiktokcdn-us.com/.../video.mp4"],
"video_hd": [],
"audio": ["https://v16-ies-music.tiktokcdn-us.com/.../audio.mp3"],
"video_id": "7668987703706307860"
}
.mp4 atau .mp3. File di-fetch dari CDN TikTok lalu di-stream ke client. File temporary otomatis dihapus setelah download selesai.
| Nama | Tipe | Wajib | Default | Deskripsi |
|---|---|---|---|---|
url | string | Ya | - | URL video TikTok (lengkap dengan https://) |
type | string | Tidak | video | video untuk .mp4, audio untuk .mp3 |
Berhasil: Binary file stream dengan header:
| Header | Nilai |
|---|---|
Content-Type | video/mp4 atau audio/mpeg |
Content-Disposition | attachment; filename="judul.mp4" |
Content-Length | Ukuran file dalam bytes |
Gagal: JSON error response
curl -H "X-Api-Key: mallss_xxx" -O -L "https://tiktokapi.amanenime.my.id/api/download-file?url=https://www.tiktok.com/@user/video/123..."
curl -H "X-Api-Key: mallss_xxx" -O -L "https://tiktokapi.amanenime.my.id/api/download-file?url=https://www.tiktok.com/@user/video/123...&type=audio"
Cek apakah scraper API sedang aktif dan berapa lama sudah berjalan (uptime). Endpoint ini tidak membutuhkan API key.
| Field | Tipe | Deskripsi |
|---|---|---|
status | string | "ok" jika server aktif |
uptime | number | Waktu server berjalan dalam detik |
curl "https://tiktokapi.amanenime.my.id/api/health"
| HTTP Code | Error | Arti |
|---|---|---|
400 | Parameter "u" wajib diisi | Parameter username tidak diisi |
400 | Parameter "url" wajib diisi | Parameter URL tidak diisi |
401 | Unauthorized | API key tidak dikirim atau tidak valid. Login terlebih dahulu. |
404 | Not Found | Endpoint tidak ditemukan |
429 | Rate limit exceeded | Melebihi batas request per jam. Upgrade ke premium untuk limit lebih tinggi. |
500 | no_tiktok_cookies | Cookies TikTok tidak ditemukan atau expired |
500 | no_data | Halaman TikTok tidak mengandung data video |
500 | video_fetch_failed | Gagal fetch file video dari CDN TikTok |
500 | invalid_url | URL yang diberikan bukan URL TikTok yang valid |