Return the exact number of companies matching the given filters. Accepts the same request body as listCompanies (pagination and sort are ignored). Use this when you only need a total; to get the matching companies themselves, send the same request body to listCompanies.
Scope the result to the caller's CRM. Resolved against the caller's ACTIVE WORKSPACE at query time — list membership is read server-side, so the request never carries member ids. Only company members count; people, branches, offices and manual (unlinked) records on the same list are ignored. mode: "in" with no matching members returns an empty page (not an unfiltered one). Errors: 400 crm_list_requires_workspace when the caller has no active workspace (API-key / OAuth callers must select an organization), 403 / 404 when a named list is not visible to the caller or does not exist, and 400 crm_list_too_large when the selected lists hold more than 50,000 companies in total — narrow the selection rather than get a silently partial answer.
excludeBrokerPartners?boolean
true: hide the companies your workspace already partners with — a confidential partner roster your organization supplied to Model Match, attached to the workspace (today: Rocket Pro TPO partners). The roster is never returned; it is applied only as an exclusion. Errors: 400 partner_set_requires_workspace when the request has no active workspace, 403 partner_set_unavailable when the workspace has no partner roster. false or absent: no effect.
filters?|||
flatFilters?
footprint?|array<>
Scoped lender filter(s). Each entry names ONE lender relationship and the metric bounds that must hold INSIDE it — {lender:'<id>', volume:{gte:50000000}} means '$50M funded by that lender', not '$50M somewhere and one loan with them'. Several entries AND together. Geographic market filters are not available on companies: that rollup is not written for these records, so use POST /companies/{nmlsId}/markets (live-aggregated) for a company's geography.
lenderFilters?array<>
lenderMatchMode?LenderMatchMode
Value in"and" | "or"
locationBasis?string
What the geographic filters (city/county/msa/region/state/zip/zipCode/geoPoint) select. registeredAddress (the default) matches companies whose REGISTERED BUSINESS ADDRESS is in the place — a company registered elsewhere is excluded no matter how much it lends there. production matches companies that PRODUCED loans in the place, whatever address they are registered at, which is usually what a geographic search means. It changes only WHICH companies are returned: every non-geographic filter applies identically either way, scopedVolume/scopedUnits report in-geography production under both, and countCompanies honors this field, so a count and a list built from the same body always describe the same set. Measured on an 8-state Southeast search: under registeredAddress the largest actual producer in the region is absent at any depth, because it is registered in Michigan.
Value in"registeredAddress" | "production"
pagination?
period?Period
Pre-aggregated period block. Rolling windows (last30Days, last60Days, last90Days, previousMonth, currentMonth) are NOT accepted here and return 400; they are supported on the loans, sales and market endpoints (list, count, breakdowns, analytics summary / time-series / chart) (see DatedPeriod).
Loan-product share / volume bands for the selected period, ANDed: [{product:"fha", minShare:30}] = FHA is at least 30% of the company's period volume; [{product:"va", volume:{gte:5000000}}] = at least $5M of VA. products lets ANY of several types satisfy one entry. Whole-book figures across all markets.
Items1 <= items <= 10
sort?array<>
transactionMix?array<>
Transaction-type share bands for the selected period, ANDed: [{transactionType:"purchase", minShare:60}] = purchases are at least 60% of the company's period volume.