Look up companies in the NMLS registry
Search the NMLS company registry by id, name, registered address, regulator category and size — one row per registered company, INCLUDING companies with no production on file (which listCompanies does not return). Use it to resolve canonical company names for a list of NMLS ids, or to filter/sort companies by regulatorCategory, branchCount, activeLoCount or avgTenureMonths. For production metrics use listCompanies.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/companies/lookup" \ -H "Content-Type: application/json" \ -d '{}'{
"data": [
{
"activeLoCount": 0,
"avgTenureMonths": 0,
"branchCount": 0,
"businessStructure": "string",
"city": "string",
"name": "string",
"nmlsId": "string",
"primaryFederalRegulator": "string",
"registrationStatus": "string",
"regulatorCategory": "BANK",
"state": "string"
}
],
"total": 0
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string",
"limit": 0,
"size": 0
}Search companies with filters POST
Search and list individual mortgage companies with filters — one row per company. Filter by name, NMLS ID, location (state, county, city, zip), and production metrics (loan volume, units, market share) by period and geography, with sorting and cursor pagination. This is the per-company record search: use it to find specific mortgage lenders/companies or build a filtered company list. (For a single company by ID use the company detail endpoint.) If you only need how many companies match and not the records themselves, send the same request body to `countCompanies`.
Submit a bulk-delivery job for companies POST
Queues an ECS task that dumps every matching companies document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/companies/bulk-delivery/{jobId}` for status + the signed download URL. **Row limit.** Deliveries of up to 5,000 rows need no entitlement. Above that, the org's `bulk-delivery.companies` entitlement is required and its scope (row ceiling, row filters, allowed fields) governs the delivery; without it the request is rejected with 403 `entitlement_missing`. Pass `limit` at or below the ceiling to deliver a capped subset of a broader query. Email support@modelmatch.com to request a limit increase. Delivery is billed at 1 credit per row regardless of entitlement (deliveries submitted from the ModelMatch web app are not billed). **Push-target destination.** Pass `destination: { type: "push-target", targetId }` to have the finished rows sent to a configured push target instead of downloaded. The target is checked before anything is queued; a refusal returns the push target's status and `code` (`TARGET_NOT_FOUND` 404, `FORBIDDEN` 403, `PLAN_REQUIRED` 402, `TARGET_DISABLED` 409, `ENTITY_MISMATCH` 400). Limits and billing are the same as a file delivery.