Model MatchHelp

Companies

Submit a bulk-delivery job for companies

postapi.modelmatch.com/v1/companies/bulk-delivery

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.

Authorization

x-api-keystringrequired

API key or OAuth token. See Authentication.

Body application/json

advancedFiltersone of
Show child attributes
Option 1object
Show child attributes
childrenone of[]required

Array of filter expressions (AND)

Same shape as its parent.

typeenumrequired
Options:and
Option 2object
Show child attributes
childrenone of[]required

Array of filter expressions (OR)

Same shape as its parent.

typeenumrequired
Options:or
Option 3object
Show child attributes
childone ofrequired

Same shape as its parent.

typeenumrequired
Options:not
Option 4object
Show child attributes
fieldstringrequired
openumrequired

Comparison operator. exists means the field has a REAL value: on fields whose source records an unknown as an in-domain value (e.g. beds, squareFeet, lotSquareFeet, where an unrecorded measurement is stored as 0), those docs count as NOT existing. neq keeps docs with no value — it removes only what is known to equal the value, matching the reading of an exclusion.

Options:eqneqgtgteltltebetweeninmatchgeoDistanceexists
typeenumrequired
Options:filter
valuenull

Comparison value

crmListobject

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.

Show child attributes
listsone ofrequired

Which lists: "any" for every Company list the caller can see, or an array of list ids. Membership is the UNION across the selected lists.

Show child attributes
Option 1enum

Every list in the caller's workspace that the caller can see (own, org-wide, or shared with them) and that holds this kind of record — People lists for originators and agents, Company lists for companies.

Options:any
Option 2string[]

Specific CRM list ids (1–50).

modeenumrequired

in — only companies who are a member of the selected list(s). notIn — exclude every company who is a member of the selected list(s); everyone else passes, including companies on none of your lists.

Options:innotIn
excludeBrokerPartnersboolean

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.

filtersone of
Show child attributes
Option 1object
Show child attributes
childrenone of[]required

Array of filter expressions (AND)

Same shape as its parent.

typeenumrequired
Options:and
Option 2object
Show child attributes
childrenone of[]required

Array of filter expressions (OR)

Same shape as its parent.

typeenumrequired
Options:or
Option 3object
Show child attributes
childone ofrequired

Same shape as its parent.

typeenumrequired
Options:not
Option 4object
Show child attributes
fieldstringrequired
openumrequired

Comparison operator. exists means the field has a REAL value: on fields whose source records an unknown as an in-domain value (e.g. beds, squareFeet, lotSquareFeet, where an unrecorded measurement is stored as 0), those docs count as NOT existing. neq keeps docs with no value — it removes only what is known to equal the value, matching the reading of an exclusion.

Options:eqneqgtgteltltebetweeninmatchgeoDistanceexists
typeenumrequired
Options:filter
valuenull

Comparison value

flatFiltersobject
Show child attributes
affordableHousingTractCountone of | null

Number of the entity's loans in qualified affordable-housing tracts. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
affordableHousingTractPctone of | null

Share of the entity's tract-resolved loans in qualified census tracts for affordable-housing programs, 0-100 ({gte:25} = 27,209 originators). Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgAsianPctone of | null

Mean Asian (non-Hispanic) share of the population in the tracts the entity lent in, 0-100. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgBlackPctone of | null

Mean Black (non-Hispanic) share of the population in the tracts the entity lent in, 0-100. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgDenialRateone of | null

Mean share of mortgage applications denied in the tracts the entity lent in, 0-100. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgFamilyIncomeone of | null

Mean median family income of the tracts the entity lent in, in whole dollars. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgHispanicPctone of | null

Mean Hispanic or Latino share of the population in the tracts the entity lent in, 0-100. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgHomeValueone of | null

Mean median home value across the tracts the entity lent in, in whole dollars. A neighborhood statistic — not the entity's average loan size, which is avgLoanAmount. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgHomeownershipRateone of | null

Mean owner-occupied share of housing units in the tracts the entity lent in, 0-100. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgHouseholdIncomeone of | null

Mean median household income of the tracts the entity lent in, in whole dollars (e.g. {lte:60000}). Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgIncomeVsMetroPctone of | null

Mean tract income relative to its metro area, where 100 is parity — {lt:80} is the CRA low/moderate band, and values legitimately exceed 100 (observed up to 412). NOT a 0-100 share. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgLoanAmountone of | null

Bound the company's mean loan size for the selected period, derived from TOTAL production across ALL markets — NOT scoped to any geographic filter (city/state/zip/zipCode/geoPoint) in this request. For production INSIDE the geography this request names, read scopedVolume/scopedUnits on the same row, and sort by them to rank companies by it. There are two ways to get production for a geography: POST /companies/{nmlsId}/markets breaks ONE company's production out by market, and POST /loans/analytics/chart with measure: "volume", slice: "loanCompany" and a geographic filter answers the reverse — the companies that actually produced in that geography, each with the volume they produced there.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgLowModHouseholdPctone of | null

Mean HUD block-group low/moderate-income HOUSEHOLD share across the tracts the entity lent in, 0-100. A finer-grained measure than lowModIncomeTractPct, which counts whole tracts — not a duplicate of it. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgMedianAgeone of | null

Mean median age of the population in the tracts the entity lent in, in years. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgMilesToCollegeone of | null

Mean straight-line distance to the nearest college, in miles. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgMilesToSchoolone of | null

Mean straight-line distance from the properties the entity lent on to the nearest school, in miles. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgMilesToWorshipone of | null

Mean straight-line distance to the nearest place of worship, in miles. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgMinorityPctone of | null

Mean non-white share of the population in the tracts the entity lent in, 0-100 ({gte:50} = 63,370 originators). majorityMinorityTractPct is the per-tract-threshold form of the same question. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgPopulationone of | null

Mean population of the tracts the entity lent in. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgPovertyRateone of | null

Mean share of the population below the poverty line in the tracts the entity lent in, 0-100. Pass whole percents — {gte:0.2} means 0.2%. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgTractApplicationsone of | null

Mean number of mortgage applications reported in the tracts the entity lent in, over the year. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgTractLoanVolumeone of | null

Mean mortgage dollar volume reported in the tracts the entity lent in, over the year. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgTractOriginationsone of | null

Mean number of mortgage originations reported in the tracts the entity lent in, over the year. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
avgWhiteNonHispanicPctone of | null

Mean White (non-Hispanic) share of the population in the tracts the entity lent in, 0-100. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
branchCountone of | null
Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
cityone of | null

Registered business address CITY — where the company is headquartered, NOT where it produced loans. This matches companies whose registered address is in this city; a company headquartered elsewhere is excluded no matter how much it lends here, and a company headquartered here is returned even if it produced nothing here. The row's volume/units/avgLoanAmount remain national totals, so a city filter combined with the default volume sort ranks the largest national producers that happen to be headquartered in this city. For production INSIDE the geography this request names, read scopedVolume/scopedUnits on the same row, and sort by them to rank companies by it. There are two ways to get production for a geography: POST /companies/{nmlsId}/markets breaks ONE company's production out by market, and POST /loans/analytics/chart with measure: "volume", slice: "loanCompany" and a geographic filter answers the reverse — the companies that actually produced in that geography, each with the volume they produced there.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
companyTypeone of | null
Show child attributes
Option 1enum

One of (case-insensitive): BANK, CU, OTHER

Options:BANKCUOTHER
Option 2enum[]

Match any of these values

Options:BANKCUOTHER
Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
countyone of | null

Registered business address COUNTY — where the company is headquartered, NOT where it produced loans (same caveats as state; under locationBasis: "production" it selects companies that produced loans in the county instead). Accepts a county name (Travis, with a sibling state when the name exists in several states), a 5-digit FIPS code (48453) or a dictionary county id; an array matches any. The address carries no county of its own, so it matches when the geocoded point of the address lies inside the Census boundary of the county (a company with no geocoded address matches no county). An unrecognized county is a 400. For production INSIDE the geography this request names, read scopedVolume/scopedUnits on the same row, and sort by them to rank companies by it. There are two ways to get production for a geography: POST /companies/{nmlsId}/markets breaks ONE company's production out by market, and POST /loans/analytics/chart with measure: "volume", slice: "loanCompany" and a geographic filter answers the reverse — the companies that actually produced in that geography, each with the volume they produced there.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
difficultDevelopmentAreaCountone of | null

Number of the entity's loans in HUD-designated difficult development areas. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
difficultDevelopmentAreaPctone of | null

Share of the entity's tract-resolved loans in HUD-designated difficult development areas, 0-100 ({gte:25} = 93,397 originators). Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
distressedTractCountone of | null

Number of the entity's loans in distressed-or-underserved tracts. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
distressedTractPctone of | null

Share of the entity's tract-resolved loans in distressed-or-underserved nonmetropolitan middle-income tracts, 0-100 ({gte:25} = 11,773 originators). Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
floodHazardTractCountone of | null

Number of the entity's loans in a FEMA special flood hazard area. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
floodHazardTractPctone of | null

Share of the entity's tract-resolved loans in a FEMA special flood hazard area, 0-100 ({gte:25} = 5,212 originators). predominantFloodZone gives the specific zone code. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
geoPointobject

Radius search — { lat, lon, radius } (e.g. radius "15mi" or "24km") — around any office on the agent's record; with locationSource office the CURRENT office, production their transactions.

Show child attributes
latnumberrequired
lonnumberrequired
radiusstringrequired
isBrokerboolean

true: broker shops — non-bank companies that send more of the period's volume to OTHER lenders than they fund themselves. false: everyone else. Computed per period from each company's lender mix. Cannot be combined with mode: "or".

loCountone of | null
Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
loanTypeone of | null
Show child attributes
Option 1enum

One of (case-insensitive): conventional, fha, va, he, heloc, building, commercial, stand_alone_refi, closed_end, reverse, usda, stand_alone_second, aggregate, seller_take_back, sba_participation_trust_deed, balloon, opened_end, assumption, negative_amortization, land_contract, trade, modification, unknown

Options:conventionalfhavahehelocbuildingcommercialstand_alone_reficlosed_endreverseusdastand_alone_secondaggregateseller_take_backsba_participation_trust_deedballoonopened_endassumptionnegative_amortizationland_contracttrademodificationunknown
Option 2enum[]

Match any of these values

Options:conventionalfhavahehelocbuildingcommercialstand_alone_reficlosed_endreverseusdastand_alone_secondaggregateseller_take_backsba_participation_trust_deedballoonopened_endassumptionnegative_amortizationland_contracttrademodificationunknown
Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
loansWithCommunityDataone of | null

How many of the entity's loans in the selected period resolved to a neighborhood — the DENOMINATOR every Community Lending share is taken over. Pair it with a share filter ({gte:25}, 60,399 originators) so a 100% share off two loans does not read as a 100% share off two hundred. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
lowModIncomeTractCountone of | null

Number of the entity's loans that landed in a low- or moderate-income tract, as a count rather than a share. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
lowModIncomeTractPctone of | null

Share of the entity's tract-resolved loans that landed in a low- or moderate-income tract under the Community Reinvestment Act, 0-100. {gte:50} = 'at least half their book is LMI' (36,977 originators, 655 companies, 648 branches). Pass whole percents — {gte:0.5} means half of one percent and matches nearly everyone. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
majorityMinorityTractCountone of | null

Number of the entity's loans in majority-minority tracts. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
majorityMinorityTractPctone of | null

Share of the entity's tract-resolved loans in majority-minority tracts, 0-100 ({gte:50} = 65,654 originators). Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
modeenum
Options:andor
msaone of | null

Registered business address METRO AREA (MSA / CBSA) — companies headquartered in ANY county of the metro (the address point inside the boundary of a member county, as for county); under locationBasis: "production", companies that produced loans in it. 5-digit CBSA code (12420) or metro name (Austin Metro); an array matches any. Member counties per the OMB July-2023 delineation (Connecticut's pre-2022 counties included; 41860 San Francisco Bay Area is the nine-county Bay Area). Unknown/ambiguous names are a 400 naming candidates.

Show child attributes
Option 1string
Option 2string[]
nameone of | null

DEPRECATED — fuzzy name matching is unreliable (name pollution silently returns unrelated companies). Resolve via instantSearch and filter by nmlsId (exact NMLS id) instead. Still functional for now.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
namePrefixstring

Prefix name search: every word must start a word of the name ("rock mort" → Rocket Mortgage). No fuzzy/nickname matching; relevance-ranked unless sort is set. Max 100 chars / 6 words (emails, URLs, phones ignored), else 400.

nmlsIdone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
opportunityZoneCountone of | null

Number of the entity's loans in Opportunity Zone tracts. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
opportunityZonePctone of | null

Share of the entity's tract-resolved loans in federally designated Opportunity Zone tracts, 0-100 ({gte:10} = 33,520 originators — this is a small-share filter, a 50% floor finds almost nobody). Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
predominantFloodZoneone of | null
Show child attributes
Option 1enum

One of (case-insensitive): A, AE, AH, AO, A99, V, VE

Options:AAEAHAOA99VVE
Option 2enum[]

Match any of these values

Options:AAEAHAOA99VVE
Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
predominantIncomeLevelone of | null
Show child attributes
Option 1enum

One of (case-insensitive): low, moderate, middle, upper

Options:lowmoderatemiddleupper
Option 2enum[]

Match any of these values

Options:lowmoderatemiddleupper
Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
producersOnlyboolean | null
regionone of | null

Registered business address CENSUS REGION / DIVISION (<region>-division-<n>, Census numbering 1–9) — companies headquartered in ANY state of it; under locationBasis: "production", companies that produced loans in it. An array matches any.

Show child attributes
Option 1enum
Options:northeastnortheast-division-1northeast-division-2midwestmidwest-division-3midwest-division-4southsouth-division-5south-division-6south-division-7westwest-division-8west-division-9
Option 2enum[]
Options:northeastnortheast-division-1northeast-division-2midwestmidwest-division-3midwest-division-4southsouth-division-5south-division-6south-division-7westwest-division-8west-division-9
rosterJoinedone of | null

Bound the number of loan officers who joined the company during the selected period — individuals whose sponsorship with the company began inside the window. IMPORTANT — this counts LICENSING EVENTS, not confirmed employer moves. A loan officer holds a separate license record for every state they are sponsored in, and this counts each individual whose sponsorship began or ended inside the window, so a single added or lapsed state license registers as an arrival or a departure even when the person's employment did not change. Measured on large lenders: 13-24% of a 12-month rosterLeft are still sponsored by the same employer today, and 33-50% of a 12-month rosterJoined were already sponsored by it before the window began. Treat both as directional indicators of movement, not as headcounts. rosterJoined and rosterLeft are measured from the same source on the same window basis, so unlike the retired loLoss — which had no arrivals figure computed the same way — the two can legitimately be combined into a churn rate. Both also grow with the window, so a longer period reports more than a shorter one and the periods are comparable in that direction.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
rosterLeftone of | null

Bound the number of loan officers who left the company during the selected period — individuals whose sponsorship with the company ended inside the window. IMPORTANT — this counts LICENSING EVENTS, not confirmed employer moves. A loan officer holds a separate license record for every state they are sponsored in, and this counts each individual whose sponsorship began or ended inside the window, so a single added or lapsed state license registers as an arrival or a departure even when the person's employment did not change. Measured on large lenders: 13-24% of a 12-month rosterLeft are still sponsored by the same employer today, and 33-50% of a 12-month rosterJoined were already sponsored by it before the window began. Treat both as directional indicators of movement, not as headcounts. rosterJoined and rosterLeft are measured from the same source on the same window basis, so unlike the retired loLoss — which had no arrivals figure computed the same way — the two can legitimately be combined into a churn rate. Both also grow with the window, so a longer period reports more than a shorter one and the periods are comparable in that direction.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
ruralGradientone of | null

Mean remoteness of the tracts the entity lent in, on an ORDINAL 1-10 scale (1 = metropolitan core, 10 = most remote). This is a code, not a percent — {gte:7} selects the deepest-rural books (8,886 originators). Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
ruralTractCountone of | null

Number of the entity's loans in rural tracts. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
ruralTractPctone of | null

Share of the entity's tract-resolved loans in rural tracts, 0-100 ({gte:50} = 24,006 originators). ruralGradient is the finer, ordinal form. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
stateone of | null

Registered business address STATE — where the company is headquartered, NOT where it produced loans. This matches companies whose registered address is in this state; a company headquartered elsewhere is excluded no matter how much it lends here, and a company headquartered here is returned even if it produced nothing here. The row's volume/units/avgLoanAmount remain national totals, so a state filter combined with the default volume sort ranks the largest national producers that happen to be headquartered in this state — not the largest producers in it. For production INSIDE the geography this request names, read scopedVolume/scopedUnits on the same row, and sort by them to rank companies by it. There are two ways to get production for a geography: POST /companies/{nmlsId}/markets breaks ONE company's production out by market, and POST /loans/analytics/chart with measure: "volume", slice: "loanCompany" and a geographic filter answers the reverse — the companies that actually produced in that geography, each with the volume they produced there.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
teamSizeone of | null
Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
transactionTypeone of | null
Show child attributes
Option 1enum

One of (case-insensitive): purchase, refinance, construction, equity, UNKNOWN

Options:purchaserefinanceconstructionequityUNKNOWN
Option 2enum[]

Match any of these values

Options:purchaserefinanceconstructionequityUNKNOWN
Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
unitsone of | null

Bound the company's TOTAL loan count for the selected period across ALL markets — the same national total the response units returns, NOT scoped to any geographic filter (city/state/zip/zipCode/geoPoint) in this request, exactly as described on the volume filter. For production INSIDE the geography this request names, read scopedVolume/scopedUnits on the same row, and sort by them to rank companies by it. There are two ways to get production for a geography: POST /companies/{nmlsId}/markets breaks ONE company's production out by market, and POST /loans/analytics/chart with measure: "volume", slice: "loanCompany" and a geographic filter answers the reverse — the companies that actually produced in that geography, each with the volume they produced there.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
usdaEligibleTractCountone of | null

Number of the entity's loans in USDA-eligible tracts. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
usdaEligibleTractPctone of | null

Share of the entity's tract-resolved loans in tracts eligible for USDA rural housing programs, 0-100 ({gte:50} = 90,392 originators). Broader than ruralTractPct — eligibility reaches well past what is classified rural. Values describe the U.S. Census tract (neighborhood) as a whole — tract-level aggregate statistics, never an individual, household or applicant attribute. Percentages are 0-100.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
volumeone of | null

Bound the company's TOTAL dollar production for the selected period across ALL markets — this is the same national total the response volume returns, and it is NOT scoped to any geographic filter (city/state/zip/zipCode/geoPoint) in this request. Combined with one of those filters it means 'national volume at least this large, AND headquartered in that place' — not 'produced this much there'. For production INSIDE the geography this request names, read scopedVolume/scopedUnits on the same row, and sort by them to rank companies by it. There are two ways to get production for a geography: POST /companies/{nmlsId}/markets breaks ONE company's production out by market, and POST /loans/analytics/chart with measure: "volume", slice: "loanCompany" and a geographic filter answers the reverse — the companies that actually produced in that geography, each with the volume they produced there.

Show child attributes
Option 1number
Option 2number[]

Match any value

Option 3object

Numeric range. Excludes null/missing-field docs by default; add includeNulls: true to keep them.

Show child attributes
gtnumber
gtenumber
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires at least one of gte/lte/gt/lt.

ltnumber
ltenumber
zipone of | null

Registered business address ZIP code — where the company is headquartered, NOT where it produced loans, with the same caveats as state and city: a company headquartered elsewhere is excluded however much it lends in this ZIP, and the row's volume/units/avgLoanAmount remain national totals. Canonical key (matches the response DTO); zipCode is an alias kept for cross-entity consistency with loans/sales. For production INSIDE the geography this request names, read scopedVolume/scopedUnits on the same row, and sort by them to rank companies by it. There are two ways to get production for a geography: POST /companies/{nmlsId}/markets breaks ONE company's production out by market, and POST /loans/analytics/chart with measure: "volume", slice: "loanCompany" and a geographic filter answers the reverse — the companies that actually produced in that geography, each with the volume they produced there.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
zipCodeone of | null

Alias of zip, identical behavior — the registered business address ZIP code, i.e. where the company is headquartered, NOT where it produced loans. The row's volume/units/avgLoanAmount remain national totals. For production INSIDE the geography this request names, read scopedVolume/scopedUnits on the same row, and sort by them to rank companies by it. There are two ways to get production for a geography: POST /companies/{nmlsId}/markets breaks ONE company's production out by market, and POST /loans/analytics/chart with measure: "volume", slice: "loanCompany" and a geographic filter answers the reverse — the companies that actually produced in that geography, each with the volume they produced there.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
footprintone of

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.

Show child attributes
Option 1object
Show child attributes
avgLoanAmountobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

Show child attributes
gtnumber
gtenumber
ltnumber
ltenumber
dimensionenum

Which footprint to address. Only lender is available for companies — it is inferred from a lender key, so you rarely pass this. Name it to ask the ANY-lender question ({dimension:'lender', volume:{gte:50000000}} = 'some single lender they sent $50M to'). A geographic dimension is a 400 naming the per-company markets endpoint, which live-aggregates that answer.

Options:zipcitycountystatelender
lenderone of

Funding lender, as an id from listLenders or instantSearch. Lender names are stored in a normalized dictionary form, so a typed name does not match — resolve it first. Several values UNION.

Show child attributes
Option 1string
Option 2string[]
notboolean

Invert the whole entry: match companies with NO lender relationship matching it (e.g. 'does not send loans to this lender').

productobject

Correlate a product INSIDE this lender relationship — 'FHA business through this lender'.

Show child attributes
avgLoanAmountobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

keyone of

Product key(s), lowercase — e.g. fha, conventional, va for loanType; purchase, refinance for transactionType.

mixenum

Which product breakdown inside the market — loan type (fha, conventional, va, …) or transaction type (purchase, refinance, …).

Options:loanTypetransactionType
shareOfUnitsobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

shareOfVolumeobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

unitsobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

volumeobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

shareOfVolumeobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

Show child attributes
gtnumber
gtenumber
ltnumber
ltenumber
unitsobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

Show child attributes
gtnumber
gtenumber
ltnumber
ltenumber
volumeobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

Show child attributes
gtnumber
gtenumber
ltnumber
ltenumber
Option 2object[]
Show child attributes
avgLoanAmountobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

Show child attributes
gtnumber
gtenumber
ltnumber
ltenumber
dimensionenum

Which footprint to address. Only lender is available for companies — it is inferred from a lender key, so you rarely pass this. Name it to ask the ANY-lender question ({dimension:'lender', volume:{gte:50000000}} = 'some single lender they sent $50M to'). A geographic dimension is a 400 naming the per-company markets endpoint, which live-aggregates that answer.

Options:zipcitycountystatelender
lenderone of

Funding lender, as an id from listLenders or instantSearch. Lender names are stored in a normalized dictionary form, so a typed name does not match — resolve it first. Several values UNION.

Show child attributes
Option 1string
Option 2string[]
notboolean

Invert the whole entry: match companies with NO lender relationship matching it (e.g. 'does not send loans to this lender').

productobject

Correlate a product INSIDE this lender relationship — 'FHA business through this lender'.

Show child attributes
avgLoanAmountobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

keyone of

Product key(s), lowercase — e.g. fha, conventional, va for loanType; purchase, refinance for transactionType.

mixenum

Which product breakdown inside the market — loan type (fha, conventional, va, …) or transaction type (purchase, refinance, …).

Options:loanTypetransactionType
shareOfUnitsobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

shareOfVolumeobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

unitsobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

volumeobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

shareOfVolumeobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

Show child attributes
gtnumber
gtenumber
ltnumber
ltenumber
unitsobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

Show child attributes
gtnumber
gtenumber
ltnumber
ltenumber
volumeobject

Dollar volume of the agent's sales financed BY this lender during the selected period — evaluated inside that lender's own bucket, not against the agent's total.

Show child attributes
gtnumber
gtenumber
ltnumber
ltenumber
lenderFiltersobject[]
Show child attributes
canonicalstring

Canonical lender name (the value from lender autocomplete). Resolved to a lender id server-side; pass id instead when you have one.

displayNamestringrequired

Label / typed search string

idstring

Lender-dictionary id — the id from instantSearch / listLenders (e.g. "mortgage_rocket" or "mortgage rocket"), and the same value the lender filter takes. PREFERRED: matched directly against the stored lender key with no name resolution. canonical is still accepted and resolved server-side.

modeenum
Options:includeexclude
percentMinnumber

Minimum percent_of_volume (0–100); 0/undefined = > 0%

typeenum
Options:canonicalfreetext
lenderMatchModeenum
Options:andor
locationBasisenum

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.

Options:registeredAddressproduction
paginationobject
Show child attributes
cursorstring

Opaque cursor from previous response for next page

sizeinteger

Page size (1-100, default 25)

periodenum

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).

Options:2017201820192020202120222023202420252026last3Monthslast6Monthslast12Monthslast14Monthslast16Monthslast18Monthslast24MonthsyearToDateallTime
productMixobject[]

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.

Show child attributes
basisenum

volume (default) or units (loan count).

Options:volumeunits
maxSharenumber

Upper bound, 0–100 percent. No bucket = 0% (passes).

minSharenumber

Lower bound, 0–100 percent of the period book.

productenum

The loan product. Send this OR products, not both.

Options:conventionalfhavahehelocbuildingcommercialstand_alone_reficlosed_endreverseusdastand_alone_secondaggregateseller_take_backsba_participation_trust_deedballoonopened_endassumptionnegative_amortizationland_contracttrademodificationunknown
productsenum[]

Several products, ANY of which may satisfy the bounds on its own (each type's share is read separately, never summed): {products:["fha","va","usda"], minShare:30} = FHA, VA or USDA is on its own at least 30% of the book. Send this OR product.

Options:conventionalfhavahehelocbuildingcommercialstand_alone_reficlosed_endreverseusdastand_alone_secondaggregateseller_take_backsba_participation_trust_deedballoonopened_endassumptionnegative_amortizationland_contracttrademodificationunknown
volumeobject

Dollar volume of THIS type in the period, {gte, lte} — e.g. {gte: 5000000} = at least $5M of FHA. Evaluated inside the same type bucket as the share bounds; a company with no loans of the type does not match.

Show child attributes
gtenumber
ltenumber
sortobject[]
Show child attributes
fieldenumrequired
Options:namenmlsIdcompanyTypecitystatezipvolumeunitsavgLoanAmountbranchCountscopedVolumescopedUnitsteamSizeloCountrosterJoinedrosterLeftproducersOnlypurchaseSharerefinanceShare
orderenum
Options:ascdesc
transactionMixobject[]

Transaction-type share bands for the selected period, ANDed: [{transactionType:"purchase", minShare:60}] = purchases are at least 60% of the company's period volume.

Show child attributes
basisenum

volume (default) or units (loan count).

Options:volumeunits
maxSharenumber

Upper bound, 0–100 percent. No bucket = 0% (passes).

minSharenumber

Lower bound, 0–100 percent of the period book.

transactionTypeenumrequired
Options:purchaserefinanceconstructionequityUNKNOWN
volumeobject

Dollar volume of THIS type in the period, {gte, lte} — e.g. {gte: 5000000} = at least $5M of FHA. Evaluated inside the same type bucket as the share bounds; a company with no loans of the type does not match.

Show child attributes
gtenumber
ltenumber
columnsobject[]

A FORMATTED file: its columns, in order, with header labels and number formats — for format csv or xlsx only, and not combined with fields or a push-target destination (400 columns_format_unsupported / columns_with_fields / columns_with_destination). Every field a column reads is gated by the entitlement exactly as if it were listed in fields: a withheld field drops out of a column's fallback list, and a column with nothing left is omitted. An unknown field is a 400 unknown_column_field. No id column is added. A formatted csv starts with a UTF-8 byte-order mark and uses CRLF line endings, so Excel opens it with accented names intact. Columns may read any DTO field and any opt-in column fields documents, including the computed governmentPct, branchCount, managerName / managerNmlsId and licensedSince.

Show child attributes
fieldone ofrequired

The response DTO field this column reads — the same names fields takes, dotted into nested objects (contact.linkedin) — or a list of them, taking the first non-empty value (["contact.personalEmail", "contact.workEmail", "email"]).

Show child attributes
Option 1string
Option 2string[]
formatenum

currency, number and percentWhole round the value to a whole number (in both csv and xlsx) and, in xlsx, display it as $1,234,567, 1,234 or 62%. percentWhole expects a value that is already 0–100 (it is written as 62 in csv; in xlsx the cell holds 0.62 under the standard percent format, so it displays 62% in every spreadsheet app and calculates as a percent). text writes an xlsx text cell. titleCase (dina verteramo → Dina Verteramo), lowercase, and phone (US 10-digit numbers as (469) 907-7475; anything else as stored) reshape the text and write a text cell. Omit for the value as-is.

Options:currencynumberpercentWholetexttitleCaselowercasephone
labelstringrequired

Header for the column.

valueMapobject

Display text per value, keyed by the value as a string ({ "true": "Branch Manager", "false": "Originator" }, { "BANK": "Bank" }). The key "null" matches an empty value. Unmatched values are written unchanged.

Show child attributes
[key: string]string
destinationobject

Where the finished delivery goes. Omit for the default — a file you download from the status endpoint. push-target: when the job completes, the rows are handed to the named push target, which sends them to its configured HTTPS destination using its own field mapping and signing. The target is checked at submit (it must exist, be enabled, accept this entity, and be usable by you on your plan) — a failed check rejects the submit with the push target's error code. format is ignored (the handoff is always gzipped NDJSON), and when the target's mapping reads only some fields, only those fields (plus id) are delivered. Row limits, entitlements, limit, and billing (1 credit / row) are unchanged, except that deliveries submitted from the ModelMatch web app are not billed. Poll the job for pushBatchId; a handoff that cannot be completed fails the job with error push_handoff_failed and is not billed.

Show child attributes
targetIdstringrequired

Id of a push target configured on the active workspace (or your own member push targets).

typeenumrequired
Options:push-target
fieldsstring[]

Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. city, interestRate). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: communityLending (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; parties (properties) — the mortgage parties attributed to the parcel, by attribution scope; marketCount / countyCount / stateCount / zipCount / lenderCount (originators) — the market-breadth rollups you can already filter on; and the computed governmentPct (originators: FHA + VA percent of loans, 0–100), branchCount (companies: NMLS branch count) and managerName / managerNmlsId (branches: the first branch manager) and licensedSince (branches: first-licensed date, the earliest license issueDate, YYYY-MM-DD). Agents also offer email2 / phone2 (the best-ranked email / phone distinct from email / phone, admitted by the email / phone entitlement field), bestEmail / bestEmail2 and bestPhone / bestPhone2 (the best and runner-up contact over every email / phone on the record, email / phone included — the pair the ModelMatch web app's agent export shows; same entitlement fields), officePhone (admitted by phone), activeListings (current active listings; null when unknown), and the profile-link columns facebook, instagram, linkedin, twitter, youtube, tiktok, zillow, otherLinks (a ; -joined list of profile URLs on no known platform) — all admitted by the links entitlement field. Loans offer the list row's transaction-export fields (employerName, employerNmlsId, brokerName, titleCompanyName, soldAgentName, listAgentName, coListAgentName, buyer1FirstMiddle … seller2Last). In csv and parquet the two block columns are JSON-encoded cells; in json and ndjson they are nested objects. Windowed production (originators, agents, companies, branches): name <field>_<n>mo for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of period — e.g. volume_3mo, units_6mo, purchaseVolume_24mo. Available for originators volume, units, avgLoanAmount, purchaseVolume, purchaseUnits, refinanceVolume, refinanceUnits, conventionalPct, fhaPct, vaPct; agents volume, units, avgSoldPrice, buyerVolume, buyerUnits, sellerVolume, sellerUnits, totalOriginatorsWorkedWith, totalCompaniesWorkedWith, totalLendersWorkedWith; companies volume, units, avgLoanAmount, loCount; branches volume, units, avgLoanAmount, purchasePct, refinancePct, loCount. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.

formatenum

Output file format for the delivered dataset. Every format contains the same rows — the entity's list/summary DTO (e.g. LoanSummary), one record per row. ndjson: gzipped newline-delimited JSON (application/x-ndjson, .ndjson.gz). json: a single JSON array (application/json, .json). csv: RFC 4180 (text/csv, .csv). parquet: typed columnar Apache Parquet — scalar fields keep their DTO types, nested fields are JSON-encoded strings (application/vnd.apache.parquet, .parquet). xlsx: a single-sheet Excel workbook with a bold, frozen header row — numbers are numeric cells, everything else (ids, zips, phones) text cells (.xlsx). Pair with columns for labelled headers and number formats. Required on submit unless destination is a push target, which always delivers gzipped NDJSON (a missing format on a file delivery is a 400 format_required).

Options:ndjsonjsoncsvparquetxlsx
limitinteger

Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first limit rows in sort order (default newest-first) and bills only for those. If the query matches fewer than limit, all matches are delivered. Distinct from the page-size size field, which is ignored on this endpoint. The row ceiling still applies — 5,000 without the entity's bulk-delivery entitlement, or the entitlement's maxRows with it. A limit above the ceiling is rejected, but a limit at or below it lets you export a capped top-N even when the full match exceeds the ceiling — which is the intended way to run a broad query under the 5,000-row allowance.

Responses

202objectJob queued; ECS task launched
Show attributes
billingenum

credits = billed at 1 credit per delivered row. none = not billed (deliveries submitted from the ModelMatch web app).

Options:creditsnone
destinationobject

Where the finished delivery goes. Omit for the default — a file you download from the status endpoint. push-target: when the job completes, the rows are handed to the named push target, which sends them to its configured HTTPS destination using its own field mapping and signing. The target is checked at submit (it must exist, be enabled, accept this entity, and be usable by you on your plan) — a failed check rejects the submit with the push target's error code. format is ignored (the handoff is always gzipped NDJSON), and when the target's mapping reads only some fields, only those fields (plus id) are delivered. Row limits, entitlements, limit, and billing (1 credit / row) are unchanged, except that deliveries submitted from the ModelMatch web app are not billed. Poll the job for pushBatchId; a handoff that cannot be completed fails the job with error push_handoff_failed and is not billed.

Show child attributes
targetIdstringrequired

Id of a push target configured on the active workspace (or your own member push targets).

typeenumrequired
Options:push-target
entityTypestringrequired
estimatedTotalintegerrequired
formatenumrequired

Output file format for the delivered dataset. Every format contains the same rows — the entity's list/summary DTO (e.g. LoanSummary), one record per row. ndjson: gzipped newline-delimited JSON (application/x-ndjson, .ndjson.gz). json: a single JSON array (application/json, .json). csv: RFC 4180 (text/csv, .csv). parquet: typed columnar Apache Parquet — scalar fields keep their DTO types, nested fields are JSON-encoded strings (application/vnd.apache.parquet, .parquet). xlsx: a single-sheet Excel workbook with a bold, frozen header row — numbers are numeric cells, everything else (ids, zips, phones) text cells (.xlsx). Pair with columns for labelled headers and number formats. Required on submit unless destination is a push target, which always delivers gzipped NDJSON (a missing format on a file delivery is a 400 format_required).

Options:ndjsonjsoncsvparquetxlsx
jobIdstringrequired
maxRowsintegerrequired
statusenumrequired
Options:queued
400one ofValidation failure (incl. `format_required`: a file delivery needs `format`; a refused `columns` request), delivery would exceed the entitlement's maxRows, OR the push target does not accept this entity (`ENTITY_MISMATCH`)
401objectAuthentication required
402one ofInsufficient credits (balance < estimatedTotal, at 1 credit per row), OR the plan does not include push targets (`PLAN_REQUIRED`)
403one ofDelivery exceeds the 5,000-row limit available without the `bulk-delivery.companies` entitlement (lower `limit`, narrow the filters, or contact support for a limit increase), OR you may not use the push target (`FORBIDDEN`), OR a scoped token named a push-target destination without `push-targets:send` (`insufficient_scope`).
404objectPush target not found (`TARGET_NOT_FOUND`)
409objectPush target is disabled (`TARGET_DISABLED`)
502objectPreflight / S3 / DDB / ECS launch failure, the push-target check could not reach the auth server, or the credit balance could not be read (`billing_unavailable` — retry; a paid delivery is never queued unverified)