Documentation Index
Fetch the complete documentation index at: https://kagi.micr.dev/llms.txt
Use this file to discover all available pages before exploring further.
kagi search
Search Kagi and return structured results in JSON or human-readable format.

Synopsis
Description
kagi search is the main search command. By default it emits JSON for scripts and agents. Use --format pretty for terminal reading.
There are now two search modes:
- Base search uses your configured base-search auth preference. By default this repo prefers the subscriber session path. If you set
[auth.preferred_auth] = "api", base search uses the Search API first and can fall back to the subscriber web-product path on API auth rejection. - Filtered search uses Kagi’s authenticated HTML/session search path and requires
KAGI_SESSION_TOKEN.
--lens, --region, --time, --order, --verbatim, or --personalized, the request becomes session-only.
--snap works in either mode. It simply prefixes your query with a snap shortcut before the request is built.
Authentication
Base Search
Default:KAGI_SESSION_TOKEN
Optional API-first mode: set [auth.preferred_auth] = "api"
Plain base search keeps the existing repo behavior:
- default session-first search when a session token is available
- API-first only when you explicitly configure
[auth.preferred_auth] = "api" - session fallback only when the API path was selected first and rejected
Filtered Search
Required:KAGI_SESSION_TOKEN
Any of these flags make the request session-only:
--lens--region--time--from-date--to-date--order--verbatim--personalized--no-personalized
Options
<QUERY> (Required)
The search query string.
--format <FORMAT>
Output format.
Possible values:
json- pretty JSONcompact- minified JSONpretty- terminal-friendly outputmarkdown- markdown list outputcsv- CSV table output
--no-color
Disable ANSI colors in --format pretty.
--snap <SNAP>
Prefix the query with a snap shortcut. reddit becomes @reddit QUERY. Values may be supplied with or without the leading @.
--lens <INDEX>
Scope search to one of your enabled Kagi lenses.
--region <REGION>
Restrict results to a Kagi region code such as us, gb, jp, or no_region.
--time <WINDOW>
Restrict results to a recent update window.
Possible values:
dayweekmonthyear
--from-date <YYYY-MM-DD>
Restrict results to pages updated on or after the given date.
--to-date <YYYY-MM-DD>
Restrict results to pages updated on or before the given date.
--time cannot be combined with --from-date or --to-date.
--order <ORDER>
Reorder results using Kagi’s live HTML search sort options.
Possible values:
defaultrecencywebsitetrackers
--verbatim
Enable verbatim search for this request.
--personalized
Force personalized search on for this request.
--no-personalized
Force personalized search off for this request.
Not Supported as Runtime Flags
safe_search is currently an account setting, not a search-time flag in this CLI. Configure it in the Kagi web settings instead of expecting kagi search to override it per request.
Output Format
The search response shape is unchanged:Examples
Plain base search
Snap-prefixed search
Human-readable output
Region-aware search
Recent results
Custom date range
Verbatim plus personalization control
Lens plus filters
Processing Results
Exit Codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Error - see stderr |
Common Errors
search filters require KAGI_SESSION_TOKEN- you used runtime filters without a session tokensearch --time cannot be combined with --from-date or --to-date- choose a preset window or a custom date rangesearch --from-date must use YYYY-MM-DD format- dates must be zero-padded ISO dateslens 'foo' must be a numeric index- lens values are numeric Kagi lens indices
Related Commands
kagi batch- run multiple searches with the same search filters and optional--snapkagi lens- manage reusable search scopeskagi assistant- continue research with Kagi Assistantkagi auth- inspect which token path will be used