> ## Documentation Index
> Fetch the complete documentation index at: https://api-tools.memories.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Search Public — by Transcript

> Exact keyword search across the public TikTok / YouTube / Instagram audio transcripts.

<Info>
  **Product**: Visual Search
  **Use case**: Upload videos and images, auto-index them, then search by natural language, image, or transcript phrase
  **Host**: `https://api.memories.ai/serve/api/v1`
  **Auth**: `Authorization: sk-mavi-...` (no `Bearer` prefix)
</Info>

Find video segments where a specific phrase was spoken in the public social-media library. **Exact LIKE matching**, not semantic — use it when you know the phrase verbatim. For semantic audio search use [Search Public — by Text](/visual-search/search-public-by-text) with `search_type=BY_AUDIO`.

## Prerequisites

* You have [created a memories.ai API key](/visual-search/create-your-key).

## Request Example

```python theme={null}
import requests

headers = {"Authorization": "sk-mavi-..."}
params = {
    "query": "I don't know what is",
    "page": 1,
    "page_size": 100
}

response = requests.get(
    "https://api.memories.ai/serve/api/v1/search_public_audio_transcripts",
    headers=headers,
    params=params
)
print(response.json())
```

## Parameters

<ParamField query="query" type="string" required>
  Search phrase. LIKE-style exact matching against public transcripts.
</ParamField>

<ParamField query="page" type="integer" default="1">
  One-based page number. Must be greater than 0.
</ParamField>

<ParamField query="page_size" type="integer" default="100">
  Results per page. Range: **1 – 500**.
</ParamField>

## Response

```json theme={null}
{
    "code": "0000",
    "msg": "success",
    "data": {
        "current_page": 1,
        "page_size": 100,
        "total_count": "5",
        "videos": [
            {
                "videoNo": "PI-600947902470296459",
                "videoName": "Sample public video title",
                "startTime": "23",
                "audio_ts": "... I don't know what is happening ...",
                "video_bucket": "mavi-public-video",
                "video_blob": "<scraper-id>.mp4"
            }
        ]
    },
    "success": true,
    "failed": false
}
```

<ResponseField name="data.current_page" type="integer">Page number returned.</ResponseField>
<ResponseField name="data.page_size" type="integer">Page size returned.</ResponseField>
<ResponseField name="data.total_count" type="string">Total matching segments across all pages, returned as a string (`int(total_count)` to use it).</ResponseField>
<ResponseField name="data.videos[].videoNo" type="string">Public video identifier (typically prefixed with `PI-`).</ResponseField>
<ResponseField name="data.videos[].videoName" type="string">Public video title or name.</ResponseField>
<ResponseField name="data.videos[].startTime" type="string">Segment start time in seconds (returned as string).</ResponseField>
<ResponseField name="data.videos[].audio_ts" type="string">The matched transcript text.</ResponseField>
<ResponseField name="data.videos[].video_bucket" type="string">GCS bucket of our cached copy of the public video. Omitted when the storage location cannot be resolved.</ResponseField>
<ResponseField name="data.videos[].video_blob" type="string">GCS blob (object) path of the cached video. Use it with `video_bucket` at `GET /serve/api/v2/download?bucket=&blob=` to fetch the file directly.</ResponseField>

## Notes & Limits

* **Rate limiting**: Exceeding the per-account rate limit returns an error. See [Rate limits](/visual-search/rate-limits).
* **Billing**: Each successful call deducts credits from your account balance.
