# solari tiktok content search

> Keyword search across TikTok captions and video transcripts.

- **CLI**: `solari tiktok content search`
- **MCP tool**: `solari_tiktok_content_search`
- **Access**: `solari:read` — Works with any signed-in SOLARI account.

Lexical keyword search over tracked TikTok posts: matches captions and video transcripts (Korean-aware analysis plus n-gram partial matching), ranked by relevance with match highlights. Each item carries post_id, video_id, url, author account_id/username, caption, transcription_text, post_type, posted_at, play/like/comment/share/collect counts, follower_count, duration_seconds, is_ad, cover_url, score, and highlight; feed post_id into solari_tiktok_content_detail or solari_tiktok_content_batch and the account reference into the solari_tiktok_account_* tools. Coverage: only regions KR, JP, US, and TW are searchable, holding roughly the most recent 6 months of posts; total is exact up to 10,000 and saturates there. Narrow with since/until (UTC dates). Works with any signed-in SOLARI account.

**When to use it** — Finding TikTok posts by topic or by what is actually said on screen.

**What comes back** — Relevance-ranked hits with highlights and transcript text.

## Parameters

- `query` (string, required) — Free-text keyword query matched against captions and video transcripts.
- `region` (enum, optional, default "KR") — Region to search. Only these four regions are indexed. Values: `KR`, `JP`, `US`, `TW`.
- `limit` (integer, optional, ≥ 1) — Maximum hits, default 20. Values above 100 are clamped to 100.
- `offset` (integer, optional, default 0, ≥ 0) — Pagination offset, default 0. Values above 9800 are clamped to 9800.
- `since` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$) — Only posts on or after this UTC date, YYYY-MM-DD inclusive. Data older than ~6 months is not indexed.
- `until` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$) — Only posts on or before this UTC date, YYYY-MM-DD inclusive.

## Response

### `Response`

- `query / region` (string) — The query and region applied.
- `total` (integer) — Total matches. Exact up to 10,000, then saturates.
- `took_ms` (integer) — Search time.
- `items` (object[]) — Hits, score descending.

### `items[]`

- `post_id / video_id / url` (string) — Post identifiers and public link.
- `account_id / username` (string) — Authoring account.
- `caption` (string) — Caption text.
- `user_bio` (string) — Author bio.
- `transcription_text` (string | null) — Speech transcript — part of the searched text.
- `transcription_language` (string | null) — Transcript language code.
- `post_type` (string) — video or carousel.
- `posted_at` (timestamp) — Publication time (UTC).
- `duration_seconds` (integer) — Video length.
- `play_count / like_count / comment_count / share_count / collect_count` (integer) — Engagement snapshot.
- `follower_count` (integer) — Author follower count.
- `is_ad` (boolean) — TikTok's own ad flag.
- `cover_url` (string) — Cover image.
- `score` (number) — Relevance score.
- `highlight` (object) — Matched fragments per field.

## Example

```console
$ solari tiktok content search query="올리브영 세일" limit=3
```

_Long strings and repeated array entries are trimmed for readability._

```json
{
  "query": "올리브영 세일",
  "region": "KR",
  "total": 4041,
  "took_ms": 29,
  "items": [
    {
      "post_id": "01a05c46-9a08-7e92-a40e-b1a039103118",
      "video_id": "7679484556189207815",
      "url": "https://www.tiktok.com/@flos_bonita/video/7679484556189207815",
      "account_id": "0196cb39-87a7-7be3-ac4a-4a80b7818a90",
      "username": "flos_bonita",
      "caption": "태닝한 산리오 키링이라니…☀️🥹💗 푸드올로지 X 산리오 콜라보 실물 너무 귀엽잖아!! 헬로키티·쿠로미·한교동·마이멜로디까지🎀 제품마다 다른 키링이라 산리오 덕후들 취향 제대로 저격💘 올영 세일 시작했으니 얼른 구경해봐요👀🛒 #푸드올로지 #태닝키티 #올리브영추천템 #올영세일",
      "user_bio": "화미 프로필 링크",
      "transcription_text": "살리오 덕후라면 절대 그냥 넘길 수 없는 영상 오늘부터 시작인 올리브영 세일과 함께 푸드올로지와 살리오 콜라보 나왔어요 이번 콜라보는 젤리 폼 앰플 젤리 3 종으로 피디아렌 앰플 젤리 글루타치원 씨 앰플 젤리 히알루론산 앰플 젤리까지 제품마다 귀여운 살리오 굿즈도 함께 만나 볼 수 있는데 헬로키티 크로미 한교동부터 마이 멜로디까지 저는 역시 헬로키티 더 쿠답게 키티 키링으로 폼구 최애 캐릭터 …",
      "transcription_language": "ko",
      "post_type": "video",
      "posted_at": "2026-08-29T16:02:22Z",
      "duration_seconds": 37,
      "play_count": 955,
      "like_count": 26,
      "comment_count": 0,
      "share_count": 0,
      "collect_count": 5,
      "follower_count": 1345,
      "is_ad": true,
      "cover_url": "https://p16-common-sign.tiktokcdn-eu.com/tos-alisg-p-0037/oEu4VAolaEBAAYjMAjBtiyCIAABiPp9TOCAME~tplv-tiktokx-origin.image?dr=10395&x-expires=1788426000&x-signature=FAP0C10M1M1gEwD4YMB03pYd0YA%3D&t=4d5b0474&ps=13740610&sh …",
      "score": 53.787056,
      "highlight": {
        "caption": [
          "헬로키티·쿠로미·한교동·마이멜로디까지🎀 제품마다 다른 키링이라 산리오 덕후들 취향 제대로 저격💘 올<mark>영</mark> <mark>세일</mark> 시작했으니 얼른 구경해봐요👀🛒 #푸드올로지 #태닝키티 #올리브영추천템 #올영세일"
        ],
        "user_bio": [],
        "transcription_text": [
          "살리오 덕후라면 절대 그냥 넘길 수 없는 영상 오늘부터 시작인 <mark>올리브</mark><mark>영</mark> <mark>세일</mark>과 함께 푸드올로지와 살리오 콜라보 나왔어요 이번 콜라보는 젤리 폼 앰플 젤리 3 종으로 피디아렌 앰플 젤리 글루타치원 씨 앰플 젤리 히알루론산 앰플 젤리까지 제품마다 귀여운 살리오 굿즈도 함께",
          "… 1 more"
        ]
      }
    },
    "… 2 more"
  ]
}
```

## As an MCP call

```json
{
  "name": "solari_tiktok_content_search",
  "arguments": {
    "query": "올리브영 세일",
    "limit": 3
  }
}
```

## Notes

- The index covers KR, JP, US, and TW over roughly the most recent 6 months.
- offset is clamped at 9,800. To go deeper, narrow the date range and search again.
- total is exact up to 10,000 and stops there.

## Related tools

- [`solari_tiktok_content_aggregate`](https://solari.sh/docs/tools/tiktok-content-aggregate.md)
- [`solari_tiktok_content_batch`](https://solari.sh/docs/tools/tiktok-content-batch.md)
- [`solari_instagram_content_search`](https://solari.sh/docs/tools/instagram-content-search.md)
