Search

Lite

The lowest-cost search results, built for high volume.

Open in…
Ask on Discord
What your agent reads
`POST https://api.keirolabs.cloud/api/v2/search/lite`

Cost: 0.0375 credits on plans · 1 pay as you go · Latency: ~0.3-1 s

Cost-efficient raw SERP (web, images, videos) — title, URL and snippet per result. Content mode (page text, prompt ranking, and region/date/domain filters) is temporarily unavailable; Lite is SERP-only right now. Use Search + Content for page text.

**When to use it.** Use Lite for the cheapest raw SERP — link discovery, quick result lists, and image/video feeds. Content extraction, prompt ranking, and region/date/domain filters are temporarily unavailable on this endpoint.

**When not to.** Don't use Lite when you need page text (use Search+Content), a synthesized cited answer (use Answer), or multi-iteration research (use Web Agent).

## Request

**cURL**

```bash
curl -X POST https://api.keirolabs.cloud/api/v2/search/lite \
  -H "Authorization: Bearer $KEIRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "open source llm observability", "count": 10}'
```

**Python**

```python
import os, requests

res = requests.post(
    "https://api.keirolabs.cloud/api/v2/search/lite",
    headers={"Authorization": f"Bearer {os.environ['KEIRO_API_KEY']}"},
    json={
        "query": "open source llm observability",
        "count": 10
    },
)
print(res.json())
```

**Node.js**

```js
const res = await fetch("https://api.keirolabs.cloud/api/v2/search/lite", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.KEIRO_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "query": "open source llm observability",
    "count": 10
  }),
});
console.log(await res.json());
```

## Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | string | yes | The search query (1-500 chars). |
| `type` | enum | no | Search tab: web, images, videos. |
| `count` | integer | no | Max results to return. Range: 1-30 (server-clamped). Alias: maxResults. |
| `language` | string | no | Optional language tag, e.g. "de-DE". |
| `content` | boolean | no | TEMPORARILY UNSUPPORTED — content:true returns 400 while Lite is SERP-only. Use /api/v2/search/content for page text. |
| `prompt` | string | no | TEMPORARILY UNSUPPORTED — returns 400 while Lite is SERP-only. |

## Response

```json title="200 OK"
{
  "query": "keirolabs",
  "type": "web",
  "content": false,
  "count": 2,
  "results": [
    {
      "title": "KeiroLabs \u2014 pricing",
      "url": "https://keirolabs.cloud/pricing",
      "domain": "keirolabs.cloud",
      "snippet": "Plans start at $29/mo\u2026",
      "position": 1
    },
    {
      "title": "KeiroLabs Docs",
      "url": "https://platform.keirolabs.cloud/docs",
      "domain": "platform.keirolabs.cloud",
      "snippet": "Quick start, authentication, endpoints\u2026",
      "position": 2
    }
  ],
  "creditsCharged": 0.0375,
  "creditsRemaining": 1141
}
```

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `results` | array | no | List of results in SERP order. |
| `results[].title` | string | no | Result title. |
| `results[].url` | string | no | Page URL. |
| `results[].domain` | string | no | Result domain. |
| `results[].snippet` | string | no | Short text excerpt from the search engine. |
| `results[].position` | integer | no | 1-based rank in the SERP. |
| `results[].score` | number | no | Relevance score (0-1) when the engine supplies one. |
| `query` | string | no | The query that was searched. |
| `type` | string | no | Search tab echoed back (web, images, videos). |
| `count` | integer | no | Number of results returned. |
| `content` | boolean | no | Always false while Lite is SERP-only. |
| `creditsCharged` | number | no | Credits deducted (0.0375 on a plan, 1 on signup or pack credits). |
| `creditsRemaining` | number | no | Remaining credit balance after this request. |

## Errors

| Status | Code | Cause | Fix |
| --- | --- | --- | --- |
| `400` | `VALIDATION_ERROR` | Missing/invalid query, or query > 500 chars | Ensure query is a non-empty string (1-500 chars). |
| `400` | `CONTENT_MODE_DISABLED` | content:true or prompt supplied while Lite is SERP-only | Omit content/prompt, or use /api/v2/search/content for page text. |
| `401` | `UNAUTHORIZED` | Missing or invalid API key | Check your Authorization: Bearer header. |
| `402` | `INSUFFICIENT_CREDITS` | Not enough credits | Buy more credits or upgrade at /dashboard/billing. |
| `429` | `RATE_LIMIT_EXCEEDED` | Too many requests | Check X-RateLimit-Remaining. Wait for Retry-After seconds. |
| `500` | `LITE_NOT_CONFIGURED` | Server has no SE_ROUTER_TOKEN | Server-side config issue — contact support. |
| `502` | `SEARCH_UNAVAILABLE` | Search backend unreachable | Credits auto-refunded. Retry; if persistent, contact support. |

## Rate limits

| Tier | Limit |
| --- | --- |
| Free | 15/min |
| Starter | 60/min |
| Pro | 120/min |
| Startup | 240/min |
| Enterprise | 300/min |

Over the limit you get a `429`. See [Rate limits](/rate-limits) for headers and backoff.
Every page: append .md to the URL. Whole site: /llms.txt · /llms-full.txt
POSThttps://api.keirolabs.cloud/api/v2/search/lite
0.0375 credits on plans · 1 pay as you go~0.3-1 sTry it in the playground

Cost-efficient raw SERP (web, images, videos) — title, URL and snippet per result. Content mode (page text, prompt ranking, and region/date/domain filters) is temporarily unavailable; Lite is SERP-only right now. Use Search + Content for page text.

When to use it. Use Lite for the cheapest raw SERP — link discovery, quick result lists, and image/video feeds. Content extraction, prompt ranking, and region/date/domain filters are temporarily unavailable on this endpoint.

When not to. Don't use Lite when you need page text (use Search+Content), a synthesized cited answer (use Answer), or multi-iteration research (use Web Agent).

Request

curl -X POST https://api.keirolabs.cloud/api/v2/search/lite \
  -H "Authorization: Bearer $KEIRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "open source llm observability", "count": 10}'

Parameters

Prop

Type

Response

200 OK
{
  "query": "keirolabs",
  "type": "web",
  "content": false,
  "count": 2,
  "results": [
    {
      "title": "KeiroLabs \u2014 pricing",
      "url": "https://keirolabs.cloud/pricing",
      "domain": "keirolabs.cloud",
      "snippet": "Plans start at $29/mo\u2026",
      "position": 1
    },
    {
      "title": "KeiroLabs Docs",
      "url": "https://platform.keirolabs.cloud/docs",
      "domain": "platform.keirolabs.cloud",
      "snippet": "Quick start, authentication, endpoints\u2026",
      "position": 2
    }
  ],
  "creditsCharged": 0.0375,
  "creditsRemaining": 1141
}

Prop

Type

Errors

StatusCodeCauseFix
400VALIDATION_ERRORMissing/invalid query, or query > 500 charsEnsure query is a non-empty string (1-500 chars).
400CONTENT_MODE_DISABLEDcontent:true or prompt supplied while Lite is SERP-onlyOmit content/prompt, or use /api/v2/search/content for page text.
401UNAUTHORIZEDMissing or invalid API keyCheck your Authorization: Bearer header.
402INSUFFICIENT_CREDITSNot enough creditsBuy more credits or upgrade at /dashboard/billing.
429RATE_LIMIT_EXCEEDEDToo many requestsCheck X-RateLimit-Remaining. Wait for Retry-After seconds.
500LITE_NOT_CONFIGUREDServer has no SE_ROUTER_TOKENServer-side config issue — contact support.
502SEARCH_UNAVAILABLESearch backend unreachableCredits auto-refunded. Retry; if persistent, contact support.

Rate limits

TierLimit
Free15/min
Starter60/min
Pro120/min
Startup240/min
Enterprise300/min

Over the limit you get a 429. See Rate limits for headers and backoff.

Let your agent build it

Paste one prompt into Claude Code, Cursor, Codex or Windsurf. It installs Keiro MCP, reads these docs and writes the integration against the real API.

Ask on Discord

On this page