| mode | No | `search` returns one row per permit. `contractors` returns one row per contractor, ranked by permit count and valuation across the matching permits.
Example values: "search" | search |
| zips | No | Restrict to these ZIP codes. | |
| scope | No | Preset classifier applied to the permit type, subtype, and description. Presets strip boilerplate (for example 'not to add a second kitchen') before matching.
Example values: "any" | any |
| dateTo | No | ISO date (YYYY-MM-DD), inclusive. Defaults to today. | |
| enrich | No | Join each permit to Metro ePermits: licensed contractor (name, license, phone), property owner, required sub-trade permits with satisfied/outstanding status, and inspection stage. About one second per permit, politely rate-limited. Billed as `enriched-permit` instead of `permit`. | |
| parcel | No | Exact Davidson County parcel ID, e.g. `08309024300`. | |
| address | No | Substring of the street address, e.g. `1234 WOODLAND ST`. Metro stores addresses upper-case without unit numbers. | |
| keyword | No | Free-text substring matched against the permit description on the server (case-insensitive). Combine with a scope or use alone. | |
| datasets | No | `issued` = permits already issued (date filter applies to issue date). `applications` = filed but not yet issued, an early signal (date filter applies to filing date). `both` merges them.
Example values: "both" | both |
| dateFrom | No | ISO date (YYYY-MM-DD). Defaults to 90 days ago when no other narrowing filter is given. | |
| waitSecs | No | Max seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget. | |
| applicant | No | Substring of the applicant / contact on the open dataset (the paperwork filer, often the contractor). | |
| maxRecords | No | Cap on rows returned (permits in search mode, contractors in contractors mode).
Example values: 200 | |
| minPermits | No | Contractors mode only: hide contractors with fewer matching permits than this.
Example values: 1 | |
| permitType | No | Substring of Metro's permit type or subtype description, e.g. `Residential - Rehab`, `Swimming Pool`, `Demolition`. | |
| maxValuation | No | Only permits with a declared construction cost at or below this amount. | |
| minValuation | No | Only permits with a declared construction cost at or above this amount. | |
| permitNumber | No | Exact permit number, e.g. `2026045225`. Use with `enrich` for a full case lookup. | |
| residentialOnly | No | Drop permits whose type or description reads as commercial. | |
| enrichMaxAgeDays | No | Enrichment fetched more recently than this is served from cache instead of re-querying ePermits. Set 0 to always refetch.
Example values: 7 | |
| maxPermitsScanned | No | Contractors mode only: how many matching permits (newest first) feed the ranking. Not billed; only the contractor rows are.
Example values: 2000 | |