Search the web
Changed onPerforms a web search and returns structured results. Search effort is set automatically per query by default (searchMode=auto), with fixed modes (low-cost, fast, balanced, deep, exhaustive) available for manual control. Supports domain and date filtering, query operators, and multiple output formats.
Request
- Base URLhttps://api.andiai.com
- URLhttps://api.andiai.com/api/v1/search
- AuthAPI key in header x-api-key
Query parameters
Search query string. Supports query operators when parseOperators is enabled. You can also pass a JSON array of up to 5 queries for multi-query searches (e.g., ["query one", "query two"]).
Maximum number of results to return.
Number of results to skip for pagination.
Search effort control. auto (default) sets the effort per query automatically — simple lookups resolve fast, complex questions get deeper treatment. The fixed modes pin an effort level: low-cost caps the work done per request for budget-constrained callers. fast returns results in about 1.2 seconds. balanced is everyday web search, about 3–4 seconds. deep searches from multiple angles with spell correction, about 6.5 seconds. exhaustive is Andi's most thorough mode: more sources and more time, up to about 15 seconds; for a question with several parts or steps it searches each part. Deeper modes add query expansion, follow-up searches fanned out from initial results, and stronger reranking. Requests are billed on outcome-based pricing (see metrics.cost_dollars).
Thoroughness dial, independent of searchMode: low favors speed, medium is balanced, high searches from multiple angles with spell correction, max gives the most complete results and also searches each part of a question that has several parts or steps — the same tiers as pinning searchMode to fast, balanced, deep, and exhaustive respectively. An explicit searchMode always wins over effort. With the default auto mode, an explicit effort pins its equivalent mode. Omit for the adaptive default. Invalid values return a 400 listing the valid tiers.
Semantic reranker size hint. small is the lightest and fastest; medium and above apply stronger relevance scoring but need a deeper searchMode and may be clamped by the request's time and cost budget (for example, xl needs deep or exhaustive). auto (default) selects a tier automatically based on the query and search mode.
Force a specific search intent. When not set, the API auto-detects intent from the query. Accepts common aliases like search, news, video, images, weather, wiki, code, recipe, place, time, and others. Set none to disable intent detection entirely; auto is equivalent to omitting the parameter.
Response format. json returns a JSON object. context returns results as markdown text, suitable for passing to language models.
Level of metadata to include. basic includes standard search metrics. full includes extended metadata with content type details and reader data on results.
Include text extracts from result pages in the response. Defaults to true when format=context, content=true or content=focused; pass extracts=false to turn them off in those cases. Also returned by default with metadata=full.
Include each result's full page text, in reader.markdown (or reader.content when the page has no markdown version). true returns the head of each page. focused returns the parts of each page that answer the query, in page order under section headings; it is billed and capped like true and falls back to the normal page text when no focused text can be built. Any other value is treated as false. Also turns on extracts unless extracts=false is passed. Adds time and cost; deeper modes allow more time.
Deprecated alias of content. Retained for backward compatibility; use content instead.
Maximum number of characters of enriched content to return per result. Only applies when content (or its deprecated alias enrichContent) is true.
Target time in milliseconds for ranked results (1000–30000). It is a target, not a hard ceiling. Omit it for the mode's normal speed; a larger value (e.g. 30000) lets slower sources run longer, so deep/exhaustive searches can take close to that long. The search may run a little past it when it needs a moment more to return a useful page. Requested page text (content/extracts) is fetched afterward, on top of the target. Values below 1000 are raised to 1000; values above 30000 are lowered to 30000; 0, empty or non-numeric values are ignored. With searchMode=auto (the default), a timeout steps the resolved mode down to the richest one that fits it. An explicit searchMode is always honored.
Safe search filtering level. off disables filtering, moderate filters most explicit content, strict applies maximum filtering.
Two-letter ISO 3166-1 country code to localize results. When you name a country, its main languages also count as target languages for ranking and for languageMode=strict. It does not narrow what Andi retrieves.
Two-letter ISO 3166-1 country code to restrict results to sources from this country. Unlike country, which biases results by locale, sourceCountry excludes results from other countries.
Language tag for the search, up to 13 characters. Accepts a primary language with optional region or script subtags, for example en, de, zh-Hans or es-419; matching uses the primary subtag. Omit it and Andi detects the query language. A language you state is used for language filtering, ranking, reranking and page retrieval. The lang: query operator takes precedence. The language Andi used is returned in locale.
How strictly to hold results to the target languages. prefer ranks pages in the query language first. strict also drops pages whose known language is neither a target language nor English; pages with an unknown language are kept. It changes the response only, never what is cached. Target languages are the query language plus, when you name a country, that country's main languages.
Unit system for weather and calculation results. Defaults based on the country parameter — imperial for US, metric for all other countries.
Bypass cached results and fetch fresh data.
Relative date range filter for results.
Filter results published on or after this date. Format: YYYY-MM-DD.
Filter results published on or before this date. Format: YYYY-MM-DD.
Comma-separated list of domains to restrict results to. Supports wildcards (*.example.com).
Comma-separated list of domains to exclude from results. Supports wildcards.
Comma-separated terms that must appear in results.
Comma-separated terms to exclude from results.
Parse query operators (like site:, filetype:, intitle:) from the query string. When disabled, the query is treated as literal text.
Field name for result URLs. Use url to receive the URL field as url instead of the default link. Only affects the /search endpoint.
Field naming for image results. long (default) uses full field names. short uses abbreviated field names.
Filter results by file type.
Filter results to pages with this term in the title.
Filter results to pages with this term in the URL.
Filter results to pages with this term in the body text.
Response
Search results. JSON by default; LLM-ready markdown with YAML frontmatter when format=context.
Example response
{
"locale": {
"language": "de",
"country": "DE"
}
}Changes
- breaking
for the
queryrequest parameterlanguage, default valueenwas removed - warning
for the
queryrequest parameterlanguage, the maxLength was set to13 - info
added the new optional
queryrequest parameterlanguageMode - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status
- breaking
- info
added the optional property
to the response with the status - info
added the optional property
to the response with the status
- info