Market
Loan officer movement by state and city
Loan officers who changed companies in the window, grouped by state (all states) and city (top limit), each with the company that gained the most of them. A move is dated by the loan officer's FIRST record at the new company; a loan officer licensed in several states counts once per company. Location filters use the loan officer's CURRENT NMLS location. Results refresh weekly. A response not ready within 25 s answers 202 (MovementComputing): repeat the same request after retryAfterMs.
Authorization
Query parameters
dateRangestringReporting window. last_N_months = the N most recent COMPLETED calendar months (the current month is excluded); year_to_date = Jan 1 through the end of last month; YYYY (or fy_YYYY) = that calendar year; all_time. Default last_12_months.
statestringTwo-letter state. Matches the loan officer's CURRENT NMLS location, not where they were when they moved.
statesstringComma-separated two-letter states (e.g. a region). ORed; combined with state when both are sent.
citystringExact city name of the loan officer's current NMLS location. Pair with state.
companyCategorystringComma-separated company categories (BANK, CU, OTHER) applied to the company whose roster changed — the destination for arrivals, the company left for departures.
limitintegerCity rows to return (default 25, max 100). All states are always returned.
Responses
200objectOKShow attributesHide attributes
citiesobject[]requiredShow child attributesHide child attributes
citystringrequiredlosChangednumberrequiredstatestring | nullrequiredtopGainingCompanyobject | nullrequiredShow child attributesHide child attributes
gainedCountnumberrequirednamestring | nullrequirednmlsIdstringrequireddataobject[]requiredLoan officers who changed companies in the window, by their current state.
Show child attributesHide child attributes
losChangednumberrequiredstatestringrequiredtopGainingCompanyobject | nullrequiredShow child attributesHide child attributes
gainedCountnumberrequirednamestring | nullrequirednmlsIdstringrequiredwindowobjectrequiredThe resolved reporting window (inclusive dates).
Show child attributesHide child attributes
endDatestringrequiredmonthsnumberrequiredstartDatestringrequired202objectStill computing — poll the same request after `retryAfterMs`. See `MovementComputing`.Show attributesHide attributes
retryAfterMsintegerrequiredSuggested wait before repeating the SAME request (also sent as Retry-After, in seconds).
statusenumrequiredcomputing400objectValidation error401objectUnauthorized403objectForbidden (authenticated, but missing required context — e.g. no active organization)404objectNot found413objectResponse payload too large — detail endpoint capped to fit Lambda response limits503objectSearch timed out or the cluster is overloaded — retry after `Retry-After` seconds.