Market
Loan officers who changed companies
The loan officers who moved to a new company in the window, with previous and new employer, move date, current location and production. sort=volume returns the highest producers who moved (notable moves); sort=date pages every move newest first. 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.
companyNmlsIdstringDestination company.
fromCompanyNmlsIdstringPrevious company.
sortenumdate (default): most recent moves first, one row per move. volume: the highest-producing movers first (trailing 14 months), one row per loan officer — scans the top producers, so total is null.
datevolumepageintegerlimitintegerRows to return (default 25, max 100).
Responses
200objectOKShow attributesHide attributes
dataobject[]requiredShow child attributesHide child attributes
citystring | nullrequiredfromCompanyNamestring | nullrequiredfromCompanyNmlsIdstring | nullrequiredmoveDatestring | nullrequirednamestring | nullrequirednmlsIdstringrequiredpreviousUnitsnumber | nullrequiredpreviousVolumenumber | nullrequiredTrailing 14-month volume originated under the previous company.
statestring | nullrequiredtoCompanyNamestring | nullrequiredtoCompanyNmlsIdstringrequiredunitsnumber | nullrequiredvolumenumber | nullrequiredTrailing 14-month volume, all employers.
limitnumberrequiredpagenumberrequiredtotalnumber | nullrequiredRows matching the request (moves for sort=date, loan officers for sort=volume).
windowobjectrequiredThe 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.