Web Search
Send a query and get web results: title, link, snippet and publish date. Useful for giving LLMs and agents fresh information from the web.
Request
POST https://platform.kuaisou.com/api/web-search
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | Yes | The query; may include search operators. Up to 200 characters; anything longer is cut off |
| count | int | No | How many results: one of 10, 20, 30, 40, 50, 100; default 10. Other values are treated as 10 |
| offset | int | No | The position of the first result, starting at 1; default 1. For page 2 with 10 per page, send 11 |
The freshness parameter currently has no effect. To limit the date range, use after: and before: in query.
Example
curl -X POST https://platform.kuaisou.com/api/web-search \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"DeepSeek site:github.com","count":10,"offset":1}'
Search operators
Write them directly in query; they can be combined. Operators must be lowercase (SITE: is treated as a normal word).
| Operator | Example | Effect |
|---|---|---|
site: |
DeepSeek site:github.com |
Only results from this site (including subdomains); may include a path, e.g. site:github.com/deepseek-ai; several site: mean OR |
-site: |
DeepSeek -site:example.com |
Remove results from this site (including subdomains) |
-word |
DeepSeek -ads |
Remove results whose title or snippet contains this word |
"phrase" |
DeepSeek "open model" |
The title or snippet must contain this phrase (Chinese quotes “ ” work too) |
-"phrase" |
DeepSeek -"release notes" |
Remove results whose title or snippet contains this phrase |
lang: |
DeepSeek lang:zh,en |
Only pages in these languages |
after: |
DeepSeek after:2025-01-01 |
Only pages published on or after this day; a year after:2025 or a month after:2025-06 also works |
before: |
DeepSeek before:2026 |
Only pages published before this day |
Notes:
- With
after:orbefore:, pages without a publish date are removed. - A malformed operator (for example
site:not followed by a domain, orafter:2025-13) is searched as a normal word, without an error. - A query with only operators and no words (for example just
site:github.com) returns 400 and is not charged.
Response
{
"code": 200,
"msg": "",
"data": [
{
"_type": "SearchResponse",
"queryContext": { "originalQuery": "DeepSeek site:github.com" },
"webPages": {
"webSearchUrl": "",
"totalEstimatedMatches": 36,
"value": [
{
"id": "1",
"name": "Page title",
"url": "https://github.com/...",
"displayUrl": "github.com/...",
"snippet": "Page snippet",
"summary": "Page snippet",
"siteName": "github.com",
"siteIcon": "",
"datePublished": "2025-06-01",
"dateLastCrawled": "",
"cachedPageUrl": "",
"language": "",
"isFamilyFriendly": true,
"isNavigational": false,
"deepLinks": null
}
]
}
}
],
"logId": "req_..."
}
Fields
| Field | Description |
|---|---|
| data | An array with one item |
| data[0].queryContext.originalQuery | The query you sent |
| data[0].webPages.totalEstimatedMatches | How many results were found in total (after ranking, before count and offset are applied) |
| data[0].webPages.value | The results of this page — at most count, possibly fewer |
| value[].id | Position on this page, starting at 1 |
| value[].name | Page title |
| value[].url | Page URL |
| value[].displayUrl | URL for display |
| value[].snippet | Snippet |
| value[].summary | Snippet (currently the same as snippet) |
| value[].siteName | Host name of the site |
| value[].datePublished | Publish date; an empty string when unknown |
| logId | The ID of this request |
siteIcon, dateLastCrawled, cachedPageUrl, language, isFamilyFriendly, isNavigational and deepLinks are kept for compatibility with the old version. They currently have fixed values — do not rely on them.
Billing
Each successful call is charged once, no matter how many results it returns; failed calls are free. See the price table on the platform home page.
Errors
| code | When |
|---|---|
| 400 | The body is not valid JSON, query is empty, or the query has only operators and no words |
| 401 | Invalid or disabled API key |
| 402 | Insufficient balance |
| 500 | Reading the price, checking the balance or billing failed (not charged) |
| 502 | The search service is temporarily unavailable (not charged) |
See Errors.