Search API for AI
One HTTP request returns structured search results — real-time web retrieval for AI apps, RAG and agents. An alternative to Firecrawl · Exa · Tavily.
Quick start
/api/v1/searchcurl "https://tutusoo.com/api/v1/search?q=rust&limit=5"Query parameters
| Parameter | Type | Description |
|---|---|---|
| q* | string | Search query (required); multiple words default to AND (all must match) |
| limit | int | Result count, default 10, max 100 |
| offset | int | Pagination offset, default 0, max 990 |
| lang | string | Language filter, e.g. zh / en |
| time_range | string | Indexed-time range: 1d/7d/30d/1y/all (by crawled_at) |
| site | string | Restrict to a site domain |
| lang_priority | string | Language priority (soft boost, not a hard filter): e.g. zh nudges matching-language results up without hiding others; independent of lang |
Query operators (write inside q)
| site:domain | Restrict to a site, e.g. site:github.com rust |
| intitle:word | Match only titles containing the word |
| "exact phrase" | Every word in the phrase must appear |
| -exclude | Exclude results containing the word, e.g. rust -tutorial |
| A OR B | Match either term, e.g. rust OR golang |
| filetype:type | Filter by file type (pdf/doc/ppt/xls), e.g. filetype:pdf |
Response
{
"total": 586,
"took_ms": 142,
"results": [
{
"id": "a1b2c3d4-…", // page id for local results; may be empty for external fallback
"url": "https://rust-lang.org/",
"title": "Rust Programming Language",
"snippet": "A language empowering everyone to build reliable software…",
"domain": "rust-lang.org",
"site_name": "Rust Programming Language", // display name (optional; client falls back to domain)
"lang": "en",
"score": 12.4,
"source": "local", // local (our index) | brave (web fallback)
"has_llms_txt": true,
"published_at": "2010-01-25T…", // article publish time (nullable; returned when known; RAG freshness/date)
"crawled_at": "2026-07-18T…" // crawl time (freshness; time_range filters on this)
}
]
} site_name: display name; may be omitted — falls back to domain. source: local = our index / brave = web fallback when local results are insufficient. has_llms_txt: whether the target site ships an llms.txt (AI-friendly).
Fetch full text (RAG)
/api/v1/content/{id}When a search result has source=local and a non-empty id, fetch its full body text to feed an LLM. External fallback results have no local body and cannot use this endpoint.
curl "https://tutusoo.com/api/v1/content/<local_page_id>"
# Response (RAG-relevant fields only, no internal columns):
{
"id": "…",
"url": "https://rust-lang.org/",
"title": "Rust Programming Language",
"body_text": "…full article text…",
"author": "Jane Doe", // author (nullable; RAG citation/byline)
"published_at": "2026-01-…", // original publish time (nullable; freshness)
"lang": "en",
"word_count": 1200,
"crawled_at": "2026-07-18T…",
"has_llms_txt": true
}Access & rate limits
The public search and content endpoints need no login or API key — try them directly; the public tier applies fair per-client-IP rate limiting and returns 429 when exceeded. Dedicated API keys are provisioned by the operator for confirmed integrations; this site does not show a self-serve signup that doesn't exist.
Dedicated-key responses return X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. On a 429, back off per the response hints — do not retry immediately without bound.


















