> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reportify.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# 文档搜索

> TypeScript SDK 文档搜索功能

## search.all()

搜索所有类型的文档。

```typescript theme={null}
const docs = await client.search.all('Tesla earnings', {
  num: 10,
  categories: ['news', 'reports'],
  symbols: ['US:TSLA'],
  startDatetime: '2024-01-01',
  endDatetime: '2024-12-31'
});
```

**参数：**

| 参数                      | 类型         | 必填 | 默认值  | 说明                                                                                                |
| ----------------------- | ---------- | -- | ---- | ------------------------------------------------------------------------------------------------- |
| `query`                 | `string`   | 是  | -    | 搜索关键词                                                                                             |
| `options.num`           | `number`   | 否  | `10` | 返回结果数量，最大 100                                                                                     |
| `options.categories`    | `string[]` | 否  | -    | 文档类别过滤，可选值：`news`, `reports`（国内研报）, `global_research`（外资研报）, `filings`, `transcripts`, `socials`。 |
| `options.symbols`       | `string[]` | 否  | -    | 股票代码列表，格式为 market:ticker（如 `US:AAPL`、`HK:00700`、`SH:600519`、`SZ:000001`）                          |
| `options.industries`    | `string[]` | 否  | -    | 行业过滤                                                                                              |
| `options.channelIds`    | `string[]` | 否  | -    | 渠道 ID 过滤                                                                                          |
| `options.startDatetime` | `string`   | 否  | -    | 开始时间，格式：`YYYY-MM-DD` 或 `YYYY-MM-DD HH:MM:SS`                                                      |
| `options.endDatetime`   | `string`   | 否  | -    | 结束时间，格式：`YYYY-MM-DD` 或 `YYYY-MM-DD HH:MM:SS`                                                      |

**返回值：** `Promise<Document[]>` - 文档列表

***

## search.news()

搜索新闻文章。

```typescript theme={null}
const news = await client.search.news('Apple iPhone', {
  num: 10,
  symbols: ['US:AAPL']
});
```

**参数：**

| 参数                      | 类型         | 必填 | 默认值  | 说明       |
| ----------------------- | ---------- | -- | ---- | -------- |
| `query`                 | `string`   | 是  | -    | 搜索关键词    |
| `options.num`           | `number`   | 否  | `10` | 返回结果数量   |
| `options.symbols`       | `string[]` | 否  | -    | 股票代码过滤   |
| `options.channelIds`    | `string[]` | 否  | -    | 渠道 ID 过滤 |
| `options.startDatetime` | `string`   | 否  | -    | 开始时间     |
| `options.endDatetime`   | `string`   | 否  | -    | 结束时间     |

**返回值：** `Promise<Document[]>` - 新闻文档列表

***

## search.reports()

搜索研究报告。

```typescript theme={null}
const reports = await client.search.reports('semiconductor analysis', {
  num: 10,
  symbols: ['US:NVDA'],
  startDatetime: '2024-01-01'
});
```

**参数：**

| 参数                      | 类型         | 必填 | 默认值                              | 说明                                                                   |
| ----------------------- | ---------- | -- | -------------------------------- | -------------------------------------------------------------------- |
| `query`                 | `string`   | 是  | -                                | 搜索关键词                                                                |
| `options.num`           | `number`   | 否  | `10`                             | 返回结果数量                                                               |
| `options.categories`    | `string[]` | 否  | `['reports', 'global_research']` | 研报类别，可选值：`reports`（国内研报）、`global_research`（外资研报）。默认两者全选，可单独指定其一以缩小范围 |
| `options.symbols`       | `string[]` | 否  | -                                | 股票代码过滤                                                               |
| `options.industries`    | `string[]` | 否  | -                                | 行业过滤                                                                 |
| `options.channelIds`    | `string[]` | 否  | -                                | 渠道 ID 过滤                                                             |
| `options.startDatetime` | `string`   | 否  | -                                | 开始时间                                                                 |
| `options.endDatetime`   | `string`   | 否  | -                                | 结束时间                                                                 |

**返回值：** `Promise<Document[]>` - 研究报告列表

***

## search.filings()

搜索公司公告和财报。

```typescript theme={null}
const filings = await client.search.filings('10-K annual report', ['US:AAPL'], {
  num: 20,
  startDatetime: '2024-01-01'
});
```

**参数：**

| 参数                      | 类型         | 必填 | 默认值  | 说明     |
| ----------------------- | ---------- | -- | ---- | ------ |
| `query`                 | `string`   | 是  | -    | 搜索关键词  |
| `symbols`               | `string[]` | 是  | -    | 股票代码列表 |
| `options.num`           | `number`   | 否  | `10` | 返回结果数量 |
| `options.startDatetime` | `string`   | 否  | -    | 开始时间   |
| `options.endDatetime`   | `string`   | 否  | -    | 结束时间   |

**返回值：** `Promise<Document[]>` - 公告/财报列表

***

## search.conferenceCalls()

Search for earnings-related conference call transcripts and presentation slides. Query is optional - if not provided, returns documents in reverse chronological order; if provided, sorts by relevance (note sort\_by parameter).

```typescript theme={null}
// With query - results sorted by relevance
const calls = await client.search.conferenceCalls(['US:AAPL', 'US:MSFT'], {
  query: 'AI strategy',
  num: 10,
  fiscalYear: '2025',
  fiscalQuarter: 'Q4'
});

// Without query - results sorted by date descending
const latestCalls = await client.search.conferenceCalls(['US:AAPL', 'US:MSFT'], {
  fiscalYear: '2025'
});
```

**参数：**

| 参数                      | 类型         | 必填 | 默认值         | 说明                                                         |
| ----------------------- | ---------- | -- | ----------- | ---------------------------------------------------------- |
| `query`                 | `string`   | 否  | -           | 搜索关键词（可选）。不提供时按时间倒序返回；提供时默认按相关性排序。                         |
| `symbols`               | `string[]` | 是  | -           | 股票代码列表                                                     |
| `options.num`           | `number`   | 否  | `10`        | 返回结果数量                                                     |
| `options.startDatetime` | `string`   | 否  | -           | 开始时间（YYYY-MM-DD 或 YYYY-MM-DD HH:MM:SS）                     |
| `options.endDatetime`   | `string`   | 否  | -           | 结束时间（YYYY-MM-DD 或 YYYY-MM-DD HH:MM:SS）                     |
| `options.fiscalYear`    | `string`   | 否  | -           | 财年筛选，如 `2025`、`2026`                                       |
| `options.fiscalQuarter` | `string`   | 否  | -           | 财季筛选，如 `Q1`、`Q2`、`Q3`、`Q4`                                 |
| `options.sortBy`        | `string`   | 否  | `date_desc` | 排序方式：`date_desc`（时间倒序）、`relevance`（相关性排序）、`date_asc`（时间正序） |

**返回值：** `Promise<Document[]>` - 电话会议记录列表

***

## search.earningsPack()

Search for earnings-related documents submitted to exchanges, including quarterly reports, semi-annual reports, and annual reports. Query is optional - if not provided, returns documents in reverse chronological order; if provided, sorts by relevance (note sort\_by parameter).

```typescript theme={null}
// With query - results sorted by relevance
const docs = await client.search.earningsPack(['US:AAPL', 'US:TSLA'], {
  query: 'revenue growth',
  num: 10,
  fiscalYear: '2025',
  fiscalQuarter: 'Q4'
});

// Without query - results sorted by date descending
const latestDocs = await client.search.earningsPack(['US:AAPL', 'US:TSLA'], {
  fiscalYear: '2025'
});
```

**参数：**

| 参数                      | 类型         | 必填 | 默认值         | 说明                                                         |
| ----------------------- | ---------- | -- | ----------- | ---------------------------------------------------------- |
| `query`                 | `string`   | 否  | -           | 搜索关键词（可选）。不提供时按时间倒序返回；提供时默认按相关性排序。                         |
| `symbols`               | `string[]` | 是  | -           | 股票代码列表                                                     |
| `options.num`           | `number`   | 否  | `10`        | 返回结果数量                                                     |
| `options.startDatetime` | `string`   | 否  | -           | 开始时间（YYYY-MM-DD 或 YYYY-MM-DD HH:MM:SS）                     |
| `options.endDatetime`   | `string`   | 否  | -           | 结束时间（YYYY-MM-DD 或 YYYY-MM-DD HH:MM:SS）                     |
| `options.fiscalYear`    | `string`   | 否  | -           | 财年筛选，如 `2025`、`2026`                                       |
| `options.fiscalQuarter` | `string`   | 否  | -           | 财季筛选，如 `Q1`、`Q2`、`Q3`、`Q4`                                 |
| `options.sortBy`        | `string`   | 否  | `date_desc` | 排序方式：`date_desc`（时间倒序）、`relevance`（相关性排序）、`date_asc`（时间正序） |

**返回值：** `Promise<Document[]>` - 财报相关文档列表

***

## search.minutes()

搜索电话会议和投资者关系（IR）会议。

```typescript theme={null}
const minutes = await client.search.minutes('board meeting', {
  symbols: ['US:AAPL'],
  num: 10
});
```

**参数：**

| 参数                      | 类型         | 必填 | 默认值  | 说明     |
| ----------------------- | ---------- | -- | ---- | ------ |
| `query`                 | `string`   | 是  | -    | 搜索关键词  |
| `options.num`           | `number`   | 否  | `10` | 返回结果数量 |
| `options.symbols`       | `string[]` | 否  | -    | 股票代码过滤 |
| `options.startDatetime` | `string`   | 否  | -    | 开始时间   |
| `options.endDatetime`   | `string`   | 否  | -    | 结束时间   |

**返回值：** `Promise<Document[]>` - 会议纪要列表

***

## search.socials()

搜索社交媒体内容。

```typescript theme={null}
const socials = await client.search.socials('Tesla stock', {
  symbols: ['US:TSLA'],
  num: 10
});
```

**参数：**

| 参数                      | 类型         | 必填 | 默认值  | 说明       |
| ----------------------- | ---------- | -- | ---- | -------- |
| `query`                 | `string`   | 是  | -    | 搜索关键词    |
| `options.num`           | `number`   | 否  | `10` | 返回结果数量   |
| `options.symbols`       | `string[]` | 否  | -    | 股票代码过滤   |
| `options.channelIds`    | `string[]` | 否  | -    | 渠道 ID 过滤 |
| `options.startDatetime` | `string`   | 否  | -    | 开始时间     |
| `options.endDatetime`   | `string`   | 否  | -    | 结束时间     |

**返回值：** `Promise<Document[]>` - 社交媒体文档列表

***

## search.webpages()

搜索网页内容。

```typescript theme={null}
const pages = await client.search.webpages('AI technology', {
  num: 20,
  startDatetime: '2024-01-01'
});
```

**参数：**

| 参数                      | 类型       | 必填 | 默认值  | 说明     |
| ----------------------- | -------- | -- | ---- | ------ |
| `query`                 | `string` | 是  | -    | 搜索关键词  |
| `options.num`           | `number` | 否  | `10` | 返回结果数量 |
| `options.startDatetime` | `string` | 否  | -    | 开始时间   |
| `options.endDatetime`   | `string` | 否  | -    | 结束时间   |

**返回值：** `Promise<Document[]>` - 网页内容列表

***

## search.crawl()

使用爬虫工具从指定的 URL 列表中提取网页正文、高亮片段或摘要内容。

```typescript theme={null}
const response = await client.search.crawl(
    ["https://example.com/article"],
    {
        text: { maxCharacters: 2000, includeHtmlTags: false },
        summary: { query: "核心观点" }
    }
);
```

**参数：**

| 参数                         | 类型                  | 必填 | 默认值    | 说明                                                  |
| -------------------------- | ------------------- | -- | ------ | --------------------------------------------------- |
| `urls`                     | `string[]`          | 是  | -      | 需要爬取的 URL 列表                                        |
| `options.text`             | `boolean \| object` | 否  | `true` | 是否提取网页纯文本，可以为布尔值或对象（支持配置 `maxCharacters` 等）         |
| `options.highlights`       | `object`            | 否  | -      | 提取的高亮片段配置，如 `{ query: "财务数据", maxCharacters: 500 }` |
| `options.summary`          | `object`            | 否  | -      | 提取的网页摘要配置，支持传入 `query`                              |
| `options.subpages`         | `number`            | 否  | `0`    | 额外爬取的子页面数量                                          |
| `options.subpageTarget`    | `string[]`          | 否  | -      | 子页面筛选关键词，如 `["about", "pricing"]`                   |
| `options.maxAgeHours`      | `number`            | 否  | -      | 允许的缓存最高小时数                                          |
| `options.livecrawlTimeout` | `number`            | 否  | -      | 实时抓取超时时间 (ms)                                       |

**返回值：** `Promise<any>` - 包含 `results` 数组和 `statuses` 数组，详情请参阅 API 参考。

***

## 类型定义

```typescript theme={null}
interface Document {
  docId: string;
  title: string;
  summary: string;
  category: 'news' | 'reports' | 'global_research' | 'filings' | 'transcripts' | 'socials';
  publishedAt: number;  // 毫秒时间戳
  channelName: string;
  companies: Array<{
    name: string;
    stocks: Array<{ symbol: string; market: string; ticker: string }>;
  }>;
  url?: string;
}

interface SearchOptions {
  num?: number;
  categories?: string[];
  symbols?: string[];
  industries?: string[];
  channelIds?: string[];
  startDatetime?: string;
  endDatetime?: string;
}

interface EarningsSearchOptions {
  num?: number;
  startDatetime?: string;
  endDatetime?: string;
  fiscalYear?: string;
  fiscalQuarter?: string;
}
```
