Prowl
0/100
prowl
Benchmarked Oct 03, 2026

Douyin Tiktok Download Api

🚀「Douyin_TikTok_Download_API」是一个开箱即用的高性能异步抖音、快手、TikTok、Bilibili数据爬取工具,支持API调用,在线批量解析及下载。

developerapi api_benchmark api_keypublic
Benchmark Your API

Score Breakdown

Latency0/10
Consistency0/10
Documentation0/10
Error Clarity0/10
Auth Simplicity0/10
Token Efficiency0/10
First-Try Success0/10
Parseability0/10

Benchmark Analysis Log

Full LLM thinking from the 4-phase benchmark pipeline.

Analyze
{
  "service_type": "rest_api",
  "base_url": null,
  "auth_method": "api_key_header",
  "auth_config": {"header": "Authorization", "prefix": "Bearer"},
  "endpoints": [],
  "pricing_model": {
    "type": "free_tier",
    "details": {
      "self_hosted": true,
      "license": "Apache-2.0",
      "hosted_tier": false,
      "notes": "Open source, free, self-hosted only. No third-party proxy."
    },
    "free_tier": null,
    "paid_tiers": []
  },
  "rate_limits": {
    "rpm": null,
    "tpm": null,
    "daily": null,
    "concurrent": null
  },
  "capabilities": [
    "douyin_post_fetch",
    "tiktok_post_fetch",
    "author_data",
    "comments",
    "mixes",
    "search",
    "watermark_free_video_download",
    "image_album_download",
    "local_archiving",
    "mcp_server",
    "web_console",
    "identity_pool_management",
    "proxy_management",
    "native_signing"
  ],
  "agent_readiness": {
    "supports_x402": false,
    "supports_streaming": false,
    "has_sandbox": false,
    "sdks": [],
    "agent_auth_methods": ["api_key", "public"]
  }
}
Plan
{
  "tests": [
    {
      "name": "root_reachability",
      "endpoint": "/",
      "method": "GET",
      "headers": {},
      "payload": {},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Service responds at root, confirming basic connectivity to the self-hosted instance.",
      "metrics": ["latency", "status_code"],
      "validation": {"field": null, "type": "any", "min_length": 0}
    },
    {
      "name": "openapi_docs_available",
      "endpoint": "/openapi.json",
      "method": "GET",
      "headers": {},
      "payload": {},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "FastAPI exposes the generated OpenAPI spec describing available read endpoints.",
      "metrics": ["latency", "status_code"],
      "validation": {"field": "paths", "type": "object", "min_length": 1}
    },
    {
      "name": "hybrid_parsing_single_video",
      "endpoint": "/api/hybrid/video_data",
      "method": "GET",
      "headers": {"Authorization": "Bearer {API_KEY}"},
      "payload": {},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Parses a known Douyin/TikTok URL and returns post metadata in the uniform envelope.",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {"field": "data", "type": "object", "min_length": 1}
    },
    {
      "name": "douyin_post_fetch",
      "endpoint": "/api/douyin/web/fetch_one_video",
      "method": "GET",
      "headers": {"Authorization": "Bearer {API_KEY}"},
      "payload": {},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Fetches a Douyin post's video data for a valid aweme id.",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {"field": "data", "type": "object", "min_length": 1}
    },
    {
      "name": "douyin_user_profile",
      "endpoint": "/api/douyin/web/fetch_user_profile",
      "method": "GET",
      "headers": {"Authorization": "Bearer {API_KEY}"},
      "payload": {},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns author profile data for a valid sec_user_id.",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {"field": "data", "type": "object", "min_length": 1}
    },
    {
      "name": "douyin_post_comments",
      "endpoint": "/api/douyin/web/fetch_video_comments",
      "method": "GET",
      "headers": {"Authorization": "Bearer {API_KEY}"},
      "payload": {},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns paginated comments for a valid aweme id.",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {"field": "data", "type": "object", "min_length": 1}
    },
    {
      "name": "search_keyword",
      "endpoint": "/api/hybrid/search",
      "method": "GET",
      "headers": {"Authorization": "Bearer {API_KEY}"},
      "payload": {},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns search results for a keyword query on the platform.",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {"field": "data", "type": "array", "min_length": 1}
    },
    {
      "name": "missing_required_param",
      "endpoint": "/api/douyin/web/fetch_one_video",
      "method": "GET",
      "headers": {"Authorization": "Bearer {API_KEY}"},
      "payload": {},
      "expected_status": 422,
      "intent": "validation",
      "expected_behavior": "Rejects the call when the required aweme_id parameter is absent, returning a structured validation error.",
      "metrics": ["status_code", "accuracy"],
      "validation": {"field": "detail", "type": "any", "min_length": 1}
    },
    {
      "name": "invalid_url_format",
      "endpoint": "/api/hybrid/video_data",
      "method": "GET",
      "headers": {"Authorization": "Bearer {API_KEY}"},
      "payload": {},
      "expected_status": 400,
      "intent": "validation",
      "expected_behavior": "Rejects a malformed/non-platform URL with a 400-class envelope rather than crashing.",
      "metrics": ["status_code", "accuracy"],
      "validation": {"field": "detail", "type": "any", "min_length": 1}
    },
    {
      "name": "missing_api_key",
      "endpoint": "/api/douyin/web/fetch_one_video",
      "method": "GET",
      "headers": {},
      "payload": {},
      "expected_status": 401,
      "intent": "auth",
      "expected_behavior": "Rejects the request when no Authorization header is supplied (when the endpoint is key-protected).",
      "metrics": ["status_code"],
      "validation": {"field": "detail", "type": "any", "min_length": 1}
    },
    {
      "name": "wrong_api_key",
      "endpoint": "/api/douyin/web/fetch_one_video",
      "method": "GET",
      "headers": {"Authorization": "Bearer invalid_key_000000"},
      "payload": {},
      "expected_status": 403,
      "intent": "auth",
  
Execute

1/12 tests passed

TestEndpointStatusLatency
root_reachabilityGET /200120ms
openapi_docs_availableGET /openapi.json40476ms
hybrid_parsing_single_videoGET /api/hybrid/video_data40477ms
douyin_post_fetchGET /api/douyin/web/fetch_one_video40480ms
douyin_user_profileGET /api/douyin/web/fetch_user_profile40477ms
douyin_post_commentsGET /api/douyin/web/fetch_video_comments40483ms
search_keywordGET /api/hybrid/search40480ms
missing_required_paramGET /api/douyin/web/fetch_one_video40479ms
invalid_url_formatGET /api/hybrid/video_data40479ms
missing_api_keyGET /api/douyin/web/fetch_one_video404131ms
Interpret
{"model": "deepseek", "data": {"overall": 0, "dimensions": {"token_efficiency": 0.0, "first_try_success": 0.0, "response_parseability": 0.0, "error_clarity": 0.0, "doc_quality": 0.0, "auth_simplicity": 0.0, "latency": 0.0, "consistency": 0.0}, "pricing_normalized": {"cost_per_1k_requests": null, "cost_per_1m_input_tokens": null, "cost_per_1m_output_tokens": null, "free_tier_requests": null, "estimated_monthly_cost_light": null, "estimated_monthly_cost_heavy": null}, "issues": [{"severity": "critical", "detail": "Benchmark used wrong base URL \u2014 got HTML instead of JSON API responses. All tests hit https://douyin.wtf/ (the Astro marketing/docs site), returning text/html with a 404 page. The actual service is an open-source, self-hosted API (Apache-2.0) with no hosted endpoint at this domain \u2014 the API would only be reachable when deployed by the user. This is a benchmark configuration error, not a service defect.", "endpoint": "/"}, {"severity": "high", "detail": "Observed endpoints (e.g. /api/douyin/web/fetch_one_video, /api/hybrid/video_data, /api/hybrid/search) returned 404 HTML from the website, indicating the API base URL and website origin differ. The correct API host/port (e.g. self-hosted localhost:80 or a deployed instance) was not used.", "endpoint": "/api/douyin/web/fetch_one_video"}, {"severity": "medium", "detail": "No /openapi.json exposed at the tested host \u2014 the OpenAPI spec is not available at the website origin. For a self-hosted service, docs must be sourced from the running instance or repo.", "endpoint": "/openapi.json"}], "recommendations": ["Re-run benchmark with correct API base URL from the vendor's guide \u2014 for a self-hosted open-source project, either deploy the container locally (docker run) and point the benchmark at that instance, or use a pinned live deployment documented in the README.", "Do not score this service against https://douyin.wtf/ \u2014 that is the documentation/marketing site, not the API host.", "In the benchmark harness, detect CONTENT_TYPE text/html on the root reachability probe and abort early with a clear 'wrong base_url' diagnostic instead of running all remaining tests against the website.", "When re-benchmarking, first fetch /openapi.json from the actual API instance to discover correct endpoint paths and auth scheme before executing capability tests."]}}

Agent Readiness

x402 Payments
Not supported
Streaming
No
Sandbox
None
Agent Auth
api_key, public
SDKs
None listed
MCP Support
No

Embed your Prowl badge

Show your live agent-readiness score on your own site. Free, no auth — it updates as your score changes.

Prowl agent-readiness badge
<a href="https://prowl.world/service/douyin-tiktok-download-api">
  <img src="https://prowl.world/badge/douyin-tiktok-download-api.svg" height="56" alt="Agent-readiness on Prowl">
</a>

Options: ?style=light|dark · ?size=sm|md · ?variant=certified (claimed + DNS-verified only) · badge generator with preview

Want the full interactive view?

See operational metrics, LLM evaluations, agent readiness, and more.

Open in Dashboard