# TikTok Video Search

> TikTok Video Search is a paid API for AI agents from social.duoleads.com, paid per call via x402, $0.02/call, status unknown (last checked 2026-10-29).

Search public TikTok videos by keyword or hashtag, returning per-video captions, creator details, engagement metrics, and cover images with pagination support.

## Facts

- Endpoint: GET https://social.duoleads.com/v1/tiktok/search?utm_source=zero.xyz
- Price: $0.02/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-29
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tiktok-video-search-41174bb2
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_WCsd0K_eJE2M151xE53o8

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability tiktok-video-search-41174bb2
```

Example prompt: Search TikTok for videos about 'sustainable fashion' and show me the top results with their view counts, creator handles, and captions.

## When to prefer this

Choose this endpoint when you need to search TikTok specifically by keyword or hashtag and require per-video engagement metrics alongside creator metadata. Prefer it over the multi-platform Social Search endpoint when you only need TikTok data and want the full detail available in TikTok-specific fields. Use TikTok Profile & Videos instead if you already know the creator's handle and want their video feed rather than a keyword search.

## Known failure modes

- Bad or malformed query input is free (not charged)
- No results found for query returns empty items array (not charged)
- Invalid cursor value may return an error or restart pagination
- Rate limiting or quota exhaustion may return HTTP 429
- Network or provider downtime returns HTTP 5xx

## How this service works

TikTok Video Search: search public TikTok videos by keyword or hashtag. Per video the caption, creator handle, name, verification and followers, plays, likes, comments, shares, cover image link, time and URL in the shared social schema; next_cursor gives the next page. Trend and hashtag research. Bad input is free; not found or no match is not charged.

## Output

Returns a paginated list of public TikTok videos matching the query. Each item includes: video ID, URL, language, caption text, type, author object (handle, display name, verified status, follower count), metrics (likes, views, replies, reposts), platform tag, creation timestamp, and cover image URLs. Also includes the original query echoed back, a next_cursor for pagination, a request ID, and a disclaimer about data sourcing.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "q"
     ],
     "properties": {
      "q": {
       "type": "string",
       "maxLength": 200,
       "description": "Search text (1-200 characters)."
      },
      "cursor": {
       "type": "string",
       "maxLength": 512,
       "description": "next_cursor of the previous page."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "as_of": "2026-10-15T12:00:00.000Z",
  "items": [
   {
    "id": "7000000000000000101",
    "url": "https://www.tiktok.com/@synth_unboxer/video/7000000000000000101",
    "lang": "en",
    "text": "synthwidget unboxing",
    "type": "video",
    "author": {
     "handle": "synth_unboxer",
     "verified": false,
     "followers": 1476,
     "display_name": "Synth Unboxer"
    },
    "metrics": {
     "likes": 4816,
     "views": 128264,
     "replies": 187,
     "reposts": 272
    },
    "platform": "tiktok",
    "parent_id": null,
    "created_at": "2026-10-11T06:26:40.000Z",
    "media_urls": [
     "https://p16.tiktokcdn.invalid/cover/101.jpeg"
    ]
   }
  ],
  "query": {
   "q": "synthetic widgets",
   "cursor": null
  },
  "source": "public data via third-party provider; not affiliated with the platform",
  "complete": true,
  "platform": "tiktok",
  "disclaimer": "Public data via third-party providers; not affiliated with or endorsed by any platform. Do not use to profile, target or train AI on individuals.",
  "request_id": "01KEXAMPLE0000000000000000",
  "next_cursor": "12"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tiktok-video-search-41174bb2/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from social.duoleads.com](https://www.zero.xyz/host/social.duoleads.com/llms.txt)
