Overview
The ScaiLabs Search API exposes a single endpoint that returns aggregated search results from dozens of upstream sources. Browser traffic to the homepage is open and anonymous; programmatic access (any request asking for a machine-readable format) requires an API key.
Base URL: https://search.scailabs.ai
Authentication
Pass your API key on every machine-readable request, either as an HTTP header or as a query parameter:
Authorization: Bearer sk-your-key-here
# or, equivalent:
GET /search?q=…&format=json&api_key=sk-your-key-here
Valid keys bypass the public rate limiter. Keys are issued by the ScaiLabs Search operator on request — get in touch via scailabs.ai.
Browser traffic to the homepage and the autocomplete endpoint stays open to anonymous visitors and does not require a key.
Search endpoint
GET https://search.scailabs.ai/search · POST also accepted.
Query parameters
| Name | Type | Description |
|---|---|---|
q | string | The search query. Required. Supports SearXNG-style operators (e.g. !bang, site:) — see the search syntax page. |
format | string | json, csv, or rss. Required for programmatic use. |
categories | string | Comma-separated list: general, images, videos, news, map, music, it, science, files, social media. |
engines | string | Comma-separated list of specific engines to query, e.g. google,bing,duckduckgo. |
language | string | Result language code (e.g. en, de-DE, all). |
pageno | int | Page number, starting at 1. |
time_range | string | day, week, month, year. |
safesearch | int | 0 (off), 1 (moderate), 2 (strict). |
Example: curl
curl -G 'https://search.scailabs.ai/search' \
-H 'Authorization: Bearer sk-your-key-here' \
--data-urlencode 'q=european ai regulation 2025' \
--data-urlencode 'format=json' \
--data-urlencode 'language=en' \
--data-urlencode 'categories=general,news'
Example: Python
import httpx
resp = httpx.get(
"https://search.scailabs.ai/search",
params={
"q": "european ai regulation 2025",
"format": "json",
"language": "en",
"categories": "general,news",
},
headers={"Authorization": "Bearer sk-your-key-here"},
timeout=30,
)
resp.raise_for_status()
for r in resp.json()["results"][:5]:
print(r["title"], "—", r["url"])
Response shape (JSON)
{
"query": "european ai regulation 2025",
"number_of_results": 0,
"results": [
{
"url": "https://…",
"title": "…",
"content": "snippet text",
"engine": "google",
"score": 4.2,
"category": "general",
"publishedDate": "2025-09-12T00:00:00"
}
],
"answers": [],
"corrections": [],
"infoboxes": [],
"suggestions": ["…"],
"unresponsive_engines": []
}
Image, video, and map results carry additional fields (e.g. thumbnail, img_src, iframe_src, length, latitude, longitude). Refer to the upstream
SearXNG result types reference
for the full schema.
Autocomplete endpoint
GET https://search.scailabs.ai/autocompleter?q=…
Returns a JSON array of suggestions for the given partial query. Open to anonymous traffic — no key required.
curl 'https://search.scailabs.ai/autocompleter?q=european%20ai'
Rate limits
Anonymous traffic is rate-limited by IP and by behavioral signals (the SearXNG bot limiter). Authenticated requests with a valid API key bypass these limits. Per-key quotas are not yet enforced — please be reasonable while we get there.
Errors
| Status | Meaning |
|---|---|
401 | Missing or invalid API key on a machine-format request. |
429 | Rate limited (anonymous traffic only). |
4xx | Malformed query parameters. |
5xx | Upstream search engine errors are reported per-engine in the unresponsive_engines field of a 200 response; a 5xx means the ScaiLabs Search backend itself failed. |
Attribution
ScaiLabs Search is an adaptation of SearXNG, the open-source metasearch engine. We have rebranded the user interface and added an authenticated API layer for use as a backend for our AI services. Source for this adaptation will be published at https://github.com/searxng/searxng. All credit for the underlying search aggregation engine belongs to the SearXNG project and its contributors.