API Documentation

v2.0 Stable

Extractly 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).