> ## Documentation Index
> Fetch the complete documentation index at: https://docs.periphery.exposed/llms.txt
> Use this file to discover all available pages before exploring further.

# Query syntax

> How the Periphery search bar parses what you type: free text, domains, and key:value filters.

A query is a list of tokens separated by spaces. There is no quoting: a phrase with a space is two tokens. Each token is one of three things.

| Token                | Example                                  | What it does                                                                                                   |
| -------------------- | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| A domain or URL      | `acme.com`, `https://app.acme.com/login` | A [domain search](/search/domain-search) on the registrable domain, `acme.com`.                                |
| A `key:value` filter | `provider:vercel`, `status:200,301`      | Restricts results to apps matching the filter. The keys are listed in the [filter reference](/search/filters). |
| Anything else        | `netflix`, `dashboard`, `admin:panel`    | Free text. Unknown keys are not an error; they are searched as text.                                           |

## Free text

Every free-text token must match at least one of three fields: the hostname (as a substring, so `vercel` matches `myapp.vercel.app`), the page title, or the page text. Two tokens must both match, though not necessarily in the same field.

Results are ranked by relevance. A match in the hostname counts more than a match in the title, which counts more than a match in the text.

## Combining filters

* **Different keys are AND-ed.** `provider:vercel status:200` returns Vercel apps that answered 200.
* **Comma-separated values are OR-ed**, except for `domain:`. `status:200,301` returns apps that answered 200 or 301.
* **Free text is AND-ed with filters.** `netflix provider:vercel` returns Vercel apps that mention netflix.
* **Repeating a key merges its values.** `provider:vercel provider:netlify` is the same as `provider:vercel,netlify`.
* **Domains always AND.** `domain:acme.com,acme.io`, like `acme.com acme.io`, returns apps tied to both. See [Domain search](/search/domain-search).

## Ordering without free text

A query made only of filters has nothing to rank by. Its results are ordered by hostname, or by most recently seen first when the query has a `seen:` filter. The exception is `email:` with a domain value, which runs as a text search and returns its results in no particular order.

## What never appears

Only apps with a completed snapshot are searchable, so a hostname that has been discovered but not yet visited is invisible until its first snapshot. Hosts that stop resolving, or that their provider reports as no longer deployed, are marked dead and drop out of every search.
