Model MatchHelp

Loans

Search individual loan records with filters

postapi.modelmatch.com/v1/loans

Search and list individual public-record mortgage and deed loan records — one row per loan (purchase, refinance, origination). Filter by geography (state, county, city, zip), lender, originator, loan amount, interest rate, loan type/purpose, and recording date, with sorting and cursor pagination. This is the discrete per-loan record search: use it to find specific loans or build a filtered loan list. Each row carries the property address, loan terms, the originating loan officer, and borrowerStatus — so this is also how you pull a loan officer's own funded production ("my closed loans", "my past clients", "my book of business"): filter by originator (their NMLS id), and add borrowerStatus for borrowers still in the home — that is the five current-owner codes (Current, R_CWCLO, R_CWNLO, E_CWCLO, E_CWNLO), NOT "Current" alone, which omits everyone who has since refinanced. That is market data, not CRM data — it does not require the loan officer to have added anything to a CRM workspace. (For aggregate market rates and volumes use the market search; for one loan by its ID use the loan detail endpoint.) If you only need how many loans match and not the records themselves, send the same request body to countLoans.

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

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
agentIdstring

Loans crediting this agent (GET /v1/agents/{id}) — the rows' *AgentId; see agentRole. ≤ 10,000 candidate loans in scope (else 400).

agentRoleenum

agentId's role: sold, list, coList, listing (list or co-list), any (default).

Options:anysoldlistcoListlisting
borrowerStatusone of | null

ModelMatch-derived loan position: whether the borrower on THIS loan is still the property's current owner. Codes read as [purpose_](C|P)W(N|C)LO — CW = current owner, PW = previous owner; NLO = a different originator than the prior loan, CLO = the same one (the retention signal).

CURRENT OWNER — Current (no newer loan), R_CWCLO/R_CWNLO (refinanced), E_CWCLO/E_CWNLO (took equity). For "past clients still in the home" pass ALL FIVE: "Current" on its own silently drops ~5M loans whose borrower is still there but has since refinanced or tapped equity.

PREVIOUS OWNER — PSALE (home sold), PWCLO/PWNLO (purchase loan), C_PWCLO/C_PWNLO (construction loan).

UNKNOWN — UNK_NOORIG (the property's most recent loan had no originator; ~64% of all populated values), UNK_PWCLO/UNK_PWNLO (most recent loan was not a purchase). REO_CWNLO/REO_CWCLO exist but are vanishingly rare (<300 loans total) and are not classified in the source glossary.

Only ~69% of loans carry any status, so an absent value means unknown — not "not current".

Show child attributes
Option 1enum

One of (case-insensitive): Current, PSALE, PWNLO, PWCLO, C_PWNLO, C_PWCLO, R_CWNLO, R_CWCLO, E_CWNLO, E_CWCLO, REO_CWNLO, REO_CWCLO, UNK_NOORIG, UNK_PWNLO, UNK_PWCLO

Options:CurrentPSALEPWNLOPWCLOC_PWNLOC_PWCLOR_CWNLOR_CWCLOE_CWNLOE_CWCLOREO_CWNLOREO_CWCLOUNK_NOORIGUNK_PWNLOUNK_PWCLO
Option 2enum[]

Match any of these values

Options:CurrentPSALEPWNLOPWCLOC_PWNLOC_PWCLOR_CWNLOR_CWCLOE_CWNLOE_CWCLOREO_CWNLOREO_CWCLOUNK_NOORIGUNK_PWNLOUNK_PWCLO
Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
brokerone of | null

Broker shop NMLS id (digits only). A broker is a company — resolve a broker name to its NMLS id via instantSearch (or listCompanies).

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
buyerEntityTypeboolean | null
cityone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
coListAgentNamestring

Co-listing agent name.

conformingboolean | null
countyone of | null

County name (e.g. "Broward") or 5-digit FIPS code. Names resolve to FIPS server-side; include a state filter to disambiguate.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
currentBalanceone of | null

Estimated remaining principal balance (~19% populated). Approximate current equity as homeValue (AVM) minus this.

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
employerone of | null

Employer/company NMLS id (digits only). Resolve a company name to its NMLS id via instantSearch.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
equityone of | null

Point-in-time equity recorded on the loan (sparse, ~10%). NOT a live current-equity figure. For HELOC/cash-out targeting on up-to-date equity, use properties search (listProperties) instead — its equity is far better populated and current.

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
excludeBrokerone of | null

Exclude loans brokered by this broker-shop NMLS id (digits only) — the inverse of broker.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
excludeCityone of | null

Exclude loans in this city — the inverse of city.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
excludeLenderone of | null

Exclude loans from this lender ID ("everyone but X") — the inverse of lender, same id contract (resolve via instantSearch/listLenders). Loans with no lender stay in the results.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
excludeLoanCompanyone of | null

Exclude loans funded by this company NMLS id (digits only) — the inverse of loanCompany.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
excludeLoanTypeone of | null

Exclude loans of this loan type — the inverse of loanType, same values (one type or a list; a list drops loans matching ANY of them). E.g. ["he", "heloc"] keeps everything but home-equity loans and HELOCs. Loans with no loan type recorded stay in the results.

Show child attributes
Option 1enum

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

Options:conventionalfhavausdahehelocbuildingballooncommercialreversesbaassumptionstand_alone_refistand_alone_secondaggregateclosed_endnegative_amortizationland_contractmodificationtradeotherunknown
Option 2enum[]

Match any of these values

Options:conventionalfhavausdahehelocbuildingballooncommercialreversesbaassumptionstand_alone_refistand_alone_secondaggregateclosed_endnegative_amortizationland_contractmodificationtradeotherunknown
Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
excludeOriginatorone of | null

Exclude loans with this originator NMLS id (digits only) — the inverse of originator. Common for 'everyone but my own shop' lists.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
excludeStateone of | null

Exclude loans in this state (2-letter code, e.g. "CA") — the inverse of state. For "everywhere but this state" lists.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
excludeTransactionTypeone of | null

Exclude loans of this transaction type — the inverse of transactionType, same values (one type or a list; a list drops loans matching ANY of them). E.g. ["equity"] keeps purchase, refinance, construction and REO. Loans with no transaction type recorded stay in the results.

Show child attributes
Option 1enum

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

Options:purchaserefinanceconstructionequityreo
Option 2enum[]

Match any of these values

Options:purchaserefinanceconstructionequityreo
Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
excludeZipCodeone of | null

Exclude loans in this ZIP code — the inverse of zipCode.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
fipsone of | null

Exact 5-digit county FIPS code (no name resolution) — the code-only escape hatch alongside county.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
geoPointobject | null

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
hasAgentenum[]

Roles that must have an agent: sold (buyer's), list, coList; any = at least one.

Options:anysoldlistcoList
hasBuilderboolean

true: new construction — a sale of the property names a builder, or the loan names a builder or a builder seller of record. false: the rest. Needs a scope of ≤ 50,000 loans (else 400).

homeValueone of | null

AVM (automated valuation) at the linked property (~26%, -linked). Pair with currentBalance to approximate current equity.

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
includeUnknownOriginatorboolean

Include loans that have no originator NMLS id. Omitted/false (default): such loans are excluded — the vast majority are pre-2016 public records with no linkable originator. true: include them. Note that the default scopes results to loans with a known originator (~2016+ recordings).

interestRateone 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
lenderone of | null

Lender ID — the normalized lender-dictionary key, NOT a fuzzy name match. Resolve a lender via instantSearch (or listLenders) and pass the id it returns (e.g. "mortgage_rocket" or "mortgage rocket"). Underscores and letter case are normalized, so either id surface works. A stored normalized lender name (what the slice: "lender" chart buckets emit) is also accepted, so a chart bucket key filters directly. A value that is neither returns 400 rather than silently matching nothing — to search by lender NAME, use lenderName.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
lenderNameone of | null

Lender name as recorded on the loan document — fuzzy, all-terms match (e.g. "Fifth Third"). The name counterpart to the exact-id lender filter; use lender when you have a resolved id, and this when you only have a name.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
listAgentNamestring

Listing agent name.

loanCompanyone of | null

Funding/loan company NMLS id (digits only). Resolve a company name to its NMLS id via instantSearch.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

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

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

Options:conventionalfhavausdahehelocbuildingballooncommercialreversesbaassumptionstand_alone_refistand_alone_secondaggregateclosed_endnegative_amortizationland_contractmodificationtradeotherunknown
Option 2enum[]

Match any of these values

Options:conventionalfhavausdahehelocbuildingballooncommercialreversesbaassumptionstand_alone_refistand_alone_secondaggregateclosed_endnegative_amortizationland_contractmodificationtradeotherunknown
Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
ltvAtOriginationone of | null

Loan-to-value at ORIGINATION (sparse), as a PERCENT on a 0-100 scale (80 = 80% LTV; values above 100 are real underwater loans). This is not a current LTV — there is no stored current-LTV field on loans.

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
mortgageAmountone 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
mortgageDateone of | null
Show child attributes
Option 1string

Exact date, or a whole period: YYYY-MM-DD (that day), YYYY-MM (the whole month — "2025-06" = 2025-06-01 through 2025-06-30) or YYYY (the whole year). YYYYMMDD, MM/DD/YYYY, an ISO-8601 datetime and epoch milliseconds are also accepted. An unparseable value is a 400.

Option 2object

Date range. Excludes null/missing-field docs by default; add includeNulls: true to keep them. Bounds accept YYYY, YYYY-MM, YYYY-MM-DD, YYYYMMDD, MM/DD/YYYY, a full ISO datetime or epoch milliseconds; an unparseable bound is a 400. A partial bound denotes the whole period and expands to the edge that preserves the operator: gte/lt take the period START, gt/lte take the period END — so {gte: "2024"} means on/after 2024-01-01 and {lte: "2024"} means through 2024-12-31.

Show child attributes
gtstring
gtestring
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires a bound.

ltstring
ltestring
originatorone of | null

Loan originator NMLS id (digits only). To search by name use originatorName, or resolve a name to its id via instantSearch.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
originatorNameone of | null

DEPRECATED — fuzzy name matching is unreliable (same originator can return wildly different counts by name string). Resolve the loan officer via instantSearch and filter by originator (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
propertyIdone of | null

Parcel id — returns every loan recorded against one property. Pass the same string this endpoint returns as mmPropertyId on a loan row, or the mmPropertyId of a property record.

This is the parcel's FULL recorded loan history, which is deliberately wider than the loans embedded on a property record: that embed is a snapshot of what is still owed (up to five currently-active loans), so paid-off mortgages are absent from it and present here.

Multi-unit caveat: loans carry a unit-blind parcel id, so for one unit of a multi-unit building this selects every unit in the building, not that unit alone.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
saleDateone of | null
Show child attributes
Option 1string

Exact date, or a whole period: YYYY-MM-DD (that day), YYYY-MM (the whole month — "2025-06" = 2025-06-01 through 2025-06-30) or YYYY (the whole year). YYYYMMDD, MM/DD/YYYY, an ISO-8601 datetime and epoch milliseconds are also accepted. An unparseable value is a 400.

Option 2object

Date range. Excludes null/missing-field docs by default; add includeNulls: true to keep them. Bounds accept YYYY, YYYY-MM, YYYY-MM-DD, YYYYMMDD, MM/DD/YYYY, a full ISO datetime or epoch milliseconds; an unparseable bound is a 400. A partial bound denotes the whole period and expands to the edge that preserves the operator: gte/lt take the period START, gt/lte take the period END — so {gte: "2024"} means on/after 2024-01-01 and {lte: "2024"} means through 2024-12-31.

Show child attributes
gtstring
gtestring
includeNullsboolean

Also keep docs where the field is null/missing (a range filter drops them by default). Requires a bound.

ltstring
ltestring
salePriceone 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
searchstring

Every word starts a word of the address (street, city, state, ZIP), the lender name or an agent name ("12 oak", "jane sm").

soldAgentNamestring

Buyer's agent: every word starts a word of the name or the linked agent's name. Likewise listAgentName, coListAgentName.

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

Match any value

Option 3object

Fuzzy text match

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

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

Options:purchaserefinanceconstructionequityreo
Option 2enum[]

Match any of these values

Options:purchaserefinanceconstructionequityreo
Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
zipone of | null

Alias of zipCode — same ZIP filter, accepted for cross-entity key parity.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

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

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
paginationobject
Show child attributes
cursorstring

Opaque cursor from previous response for next page

sizeinteger

Page size (1-100, default 25)

periodenum

Date window for loans / sales / market endpoints. Accepts every Period value plus rolling windows: last30Days / last60Days / last90Days (today minus 30 / 60 / 90 days through today), previousMonth (the last complete calendar month) and currentMonth (the 1st of this month through today). All windows are resolved in UTC with inclusive calendar-date bounds. Rolling windows are only accepted by the loans, sales and market endpoints (list, count, breakdowns, analytics summary / time-series / chart); originators / companies / branches / agents / offices endpoints return 400 for them.

Options:2017201820192020202120222023202420252026last3Monthslast6Monthslast12Monthslast14Monthslast16Monthslast18Monthslast24MonthsyearToDateallTimelast30Dayslast60Dayslast90DayspreviousMonthcurrentMonth
sortobject[]
Show child attributes
fieldenumrequired
Options:citystatezipCodecountytransactionTypeloanTypeconformingmortgageAmountmortgageDatebrokerloanCompanylenderborrowerStatussalePricesaleDateoriginatororiginatorNameinterestRateequityhomeValueltvAtOriginationcurrentBalancestreetAddresslistPrice+5 more
orderenum
Options:ascdesc

Responses

200objectPaginated list of loans
Show attributes
cursorstring
dataobject[]required
Show child attributes
apnstring | null
borrowerNamestring | null
borrowerStatusenum | null
Options:CurrentPSALEPWNLOPWCLOC_PWNLOC_PWCLOR_CWNLOR_CWCLOE_CWNLOE_CWCLOREO_CWNLOREO_CWCLOUNK_NOORIGUNK_PWNLOUNK_PWCLOnull
brokerNamestring | null

Mortgage broker as written on the loan document, when third-party originated.

brokerNmlsIdstring | null
builderNamestring | null

Builder named on a sale of this property (new construction); the hasBuilder predicate.

buyer1FirstMiddlestring | null

First buyer's first + middle name (an entity's whole name, with no last).

buyer1Laststring | null

First buyer's last name.

buyer2FirstMiddlestring | null

Second buyer's first + middle name.

buyer2Laststring | null

Second buyer's last name.

citystring | null
coListAgentEmailstring | null

Co-listing agent email, same rule.

coListAgentIdstring | null

Co-listing agent id, same rule.

coListAgentNamestring | null

Co-listing agent: the agent record's name when the keys resolve to one agent, else as the recorded it.

coListAgentPhonestring | null

Co-listing agent direct phone, same rule.

companyNamestring | null
companyNmlsIdstring | null
conformingboolean | null
coordinatesobject | null
Show child attributes
latnumberrequired
lonnumberrequired
employerNamestring | null

Employer at the time of the loan (the LO's company then), as recorded. Not companyName, the funding company on the document.

employerNmlsIdstring | null

NMLS id of employerName.

fipsstring | null
idstringrequired
interestRatenumber | null
interestRateTypestring | null

Recorded rate type (e.g. FIXED, ADJUSTABLE); null when not on file.

lenderIdstring | null

Normalized lender id — the value the lender filter takes.

lenderNamestring | null
listAgentEmailstring | null

Listing agent email, same rule.

listAgentIdstring | null

Listing agent id, same rule.

listAgentNamestring | null

Listing agent: the agent record's name when the keys resolve to one agent, else as the recorded it.

listAgentPhonestring | null

Listing agent direct phone, same rule.

listPricenumber | null
loanTermMonthsnumber | null
loanTypestring | null
mmPropertyIdstring | null
mortgageAmountnumber | null
mortgageDatestring | null
originatorEmailstring | nulldeprecated

DEPRECATED — ALWAYS NULL. Loan records carry no originator email field, so this is null on every loan; it is retained only for response-shape compatibility. To get a loan officer's email, take originatorNmlsId from this response and fetch the originator (GET /v1/originators/{nmlsId}), whose email field carries it — available for roughly 14% of loan officers.

originatorNamestring | null
originatorNmlsIdstring | null
salePricenumber | null
seller1FirstMiddlestring | null

First seller's first + middle name.

seller1Laststring | null

First seller's last name.

seller2FirstMiddlestring | null

Second seller's first + middle name.

seller2Laststring | null

Second seller's last name.

sellerNamestring | null
soldAgentEmailstring | null

Buyer's agent email — the agent record's email (GET /v1/agents/{id}); null when soldAgentId is.

soldAgentIdstring | null

Buyer's agent id (GET /v1/agents/{id}) when the keys resolve to one agent.

soldAgentNamestring | null

Buyer's agent: the agent record's name when the loan's agent keys resolve to one agent, else as the recorded it; lowercase.

soldAgentPhonestring | null

Buyer's agent direct phone — the agent record's phone; null when soldAgentId is.

statestring | null
streetAddressstring | null
titleCompanyNamestring | null

Title company name.

transactionDatestring | null
transactionTypestring | null
zipCodestring | null
lenderNormalizationsobject[]

How each lenderName value resolved against the lender dictionary. Present when a lenderName filter was supplied.

Show child attributes
aliasCountintegerrequired

Stored lender-name variants this id expands to

displayNamestring | nullrequired
idstring | nullrequired

Canonical lender-dictionary id, or null

matchedViaenumrequired

id = the value already WAS a canonical key; alias = a stored lender name; name = matched the display/canonical name; unresolved = fell back to raw text match; degraded = the dictionary could not be consulted.

Options:idaliasnameunresolveddegraded
originalstringrequired

The value the caller sent

totalDocumentsintegerrequired

Loans the dictionary attributes to this id. A small number next to a well-known lender name means the name matched a minor entry.

locationNormalizationsobject[]

How each location filter value resolved. Present when a city/county/state/zip filter was supplied.

Show child attributes
candidatesstring[]

Location ids matching an ambiguous name, ranked. Use instantSearch or suggestLocations to pick one.

confidenceenumrequired

"exact" — matched a dictionary entry as written. "normalized" — resolved to a different spelling or merged several candidates. "fallback" — NOT resolved; the raw value was passed through, so a zero result means the name was not recognized rather than empty.

Options:exactnormalizedfallback
displayNamestringrequired
fieldstringrequired

The filter key this applies to

idstring

Resolved location id — pass this back for an exact filter

normalizedstringrequired
originalstringrequired
variantsstring[]

Spellings actually queried against the index

totalnumberrequired
truncatedboolean

Row sorts only: more than 10,000 loans matched; the newest 10,000 were sorted and total counts them.

400objectValidation error. Includes unresolvable location filters: a `city`/`county`/`state`/`zip` value that does not match a recognized location returns 400 rather than an empty result set. Resolve the name with `instantSearch` (use an id from its `results.locations[]`) or `suggestLocations` (use the `id` of a `source: "dictionary"` result), then pass that id back as the filter value.
401objectUnauthorized
403objectForbidden (authenticated, but missing required context — e.g. no active organization)
404objectNot found
413objectResponse payload too large — detail endpoint capped to fit Lambda response limits
503objectSearch timed out or the cluster is overloaded — retry after `Retry-After` seconds.