API Documentation
v2.0 StableExtractly menyediakan REST API publik berkinerja tinggi untuk mengunduh konten TikTok tanpa watermark, audio MP3, dan metadata lengkap. Mendukung Video HD dan Slideshow Image.
Base URL
Endpoint
GET
/ (Root Endpoint)
Mengambil data video berdasarkan URL yang diberikan.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL video TikTok (Support Short URL & Mobile URL). Contoh: https://vt.tiktok.com/ZS... |
Response Structure
Struktur JSON berikut adalah respons standar untuk status
200 OK. Field images hanya akan terisi jika konten berupa Slideshow.
{
"status": true,
"code": 200,
"message": "Success extract data",
"server": "Extractly-Engine-v2",
"data": {
"id": "740123456789...",
"title": "Video description here...",
"region": "ID",
"duration": 15,
"is_video": true,
"cover": "https://p16...", // Thumbnail Standar
"author": {
"nickname": "User Name",
"unique_id": "username123",
"avatar": "https://..."
},
"stats": {
"views": 150000,
"likes": 25000,
"comments": 1200,
"shares": 500,
"downloads": 2000
},
"media": {
"no_watermark": "https://...", // Link Download Utama
"hd_no_watermark": "https://...", // Kualitas HD (Jika ada)
"watermark": "https://...", // Video dengan WM
"audio": "https://..." // File MP3
},
"images": [] // Array string URL jika konten adalah slide foto
}
}
Implementation
const getTikTokData = async (videoUrl) => { const baseUrl = 'https://api.extractly.site/'; const url = `${baseUrl}?url=${encodeURIComponent(videoUrl)}`; try { const response = await fetch(url); const result = await response.json(); if (result.status) { console.log('Judul:', result.data.title); console.log('Download:', result.data.media.no_watermark); } else { console.error('Error:', result.message); } } catch (error) { console.error('Network Error:', error); } }; getTikTokData('https://vt.tiktok.com/ZS...');
const axios = require('axios'); async function downloadVideo(videoUrl) { try { const res = await axios.get('https://api.extractly.site/', { params: { url: videoUrl } }); if (res.data.status) { console.log("URL Ditemukan:", res.data.data.media.no_watermark); } } catch (err) { console.error("Gagal:", err.message); } }
import requests def get_tiktok_video(url): api_url = "https://api.extractly.site/" params = {"url": url} try: response = requests.get(api_url, params=params) data = response.json() if data.get("status"): print(f"Title: {data['data']['title']}") print(f"Link: {data['data']['media']['no_watermark']}") else: print(f"Error: {data.get('message')}") except Exception as e: print(f"Error: {e}") get_tiktok_video("https://vt.tiktok.com/ZS...")
<?php $videoUrl = "https://vt.tiktok.com/ZS..."; $apiUrl = "https://api.extractly.site/?url=" . urlencode($videoUrl); $response = file_get_contents($apiUrl); $data = json_decode($response, true); if ($data['status']) { echo "Download Link: " . $data['data']['media']['no_watermark']; } else { echo "Error: " . $data['message']; } ?>
package main import ( "fmt" "net/http" "io/ioutil" ) func main() { url := "https://api.extractly.site/?url=https://vt.tiktok.com/ZS..." resp, err := http.Get(url) if err != nil { fmt.Println("Error:", err) return } defer resp.Body.Close() body, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(body)) }
Status Codes
| Code | Status | Meaning |
|---|---|---|
| 200 | OK | Request berhasil dan data ditemukan. |
| 400 | Bad Request | Parameter URL tidak ada atau format salah. |
| 403 | Forbidden | Video bersifat Private atau Region Locked. |
| 404 | Not Found | Video tidak ditemukan atau telah dihapus. |
| 500 | Server Error | Kesalahan internal server (Upstream timeout). |