Model MatchHelp

Properties

Configurable chart data (measure × slice)

postapi.modelmatch.com/v1/properties/analytics/chart

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
absenteeOwnerboolean

Owner's mailing address (street + 5-digit zip, case/punctuation-insensitive) differs from the property's site address — an investor / non-owner-occupied signal. true = absentee, false = owner mails to the property; parcels with no mailing or site address match neither. Evaluated per candidate document (no stored flag yet), so always pair it with a geography filter (state, county, zipCode, fips, a radius) — an unscoped absenteeOwner over all parcels may time out.

activeLoanCountone of | null

Mortgages believed to still be outstanding (e.g. {lte: 0} for parcels with none). {lte: 0} alone is NOT a free-and-clear filter: it also matches recently-sold parcels whose new mortgage has not been recorded yet. Pair it with preSaleLoanCount: {lte: 0} for parcels we can actually verify.

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
addressone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
affordableHousingTractboolean

Parcel sits in a qualified census tract for affordable-housing programs (17,603,810 parcels). 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.

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

Match any value

Option 3object

Fuzzy text match

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

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
avmConfidenceone of | null

Confidence in the value estimate, as a 50–100 score (e.g. {gte: 90} for high-confidence estimates only). NOT a fraction — {gte: 0.9} matches every scored parcel, not the top decile.

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

Automated value estimate for the parcel, in whole dollars (e.g. {gte: 500000}). ~77% coverage. Matches the avm.mid value on the response.

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

Bedroom count (e.g. {lte: 2} for starter homes). ~46% coverage — on the rest the bedroom count was never recorded, which is NOT the same as a parcel with no bedrooms and NOT the same as a parcel with no assessor record: 15.6M of them do carry a recorded bath count and floor area. Unrecorded parcels are EXCLUDED by default; pass includeNulls: true to add them back. beds: 0 matches nothing (an unrecorded count is not a count of zero, and a genuine studio is indistinguishable from it), and the response returns null rather than 0.

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
borrowerStatusone of | null
Show child attributes
Option 1enum

One of (case-insensitive): no_active_loans, Current, Current_via_ALI

Options:no_active_loansCurrentCurrent_via_ALI
Option 2enum[]

Match any of these values

Options:no_active_loansCurrentCurrent_via_ALI
Option 3object

Fuzzy text match

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

Match any value

Option 3object

Fuzzy text match

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

Match any value

Option 3object

Fuzzy text match

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

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
countyone of | null

County, as a 5-digit FIPS code (e.g. 06037). Canonical key for the county dimension; fips is the exact-code alias kept for back-compat.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
difficultDevelopmentAreaboolean

Parcel sits in a HUD-designated difficult development area (30,643,419 parcels). 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.

distressedTractboolean

Parcel sits in a distressed-or-underserved nonmetropolitan middle-income tract (13,289,914 parcels). 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.

equityone of | null

Estimated equity, in whole dollars (e.g. {gte: 250000}). Negative values are genuine underwater parcels. Derived from the value estimate minus outstanding loan balances, so it inherits their coverage (~77%) AND their gaps: on a parcel whose mortgage is missing from the record there is nothing to subtract, so this returns the full value estimate. Pair a high-equity range with preSaleLoanCount: {lte: 0} to drop those.

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

Estimated equity as a FRACTION of the value estimate, where 1 = the whole value and 0.5 = half. Pass {gte: 0.5} for 50%-or-more equity — {gte: 50} is not a synonym and matches ZERO parcels, since no value exceeds 1. Negative values are genuine underwater parcels. Note the contrast with loanLtv, which takes whole percents. CAUTION: 1 is not proof a parcel is owned free and clear — it is also what a recently-sold parcel returns when the buyer's new mortgage has not been recorded yet, because the calculation subtracts nothing. Add preSaleLoanCount: {lte: 0} to restrict to parcels whose position we can actually verify.

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
fipsone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
floodHazardTractboolean

Parcel sits in a FEMA special flood hazard area (4,675,160 parcels). tractFloodZone 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.

foreclosureDateone of | null

Recording date of the most recent foreclosure notice on the parcel (e.g. {gte: "2025-01-01"}). Parcels with no notice are excluded. Pair with foreclosureStage, e.g. {foreclosureStage: "ND", foreclosureDate: {gte: "2025-01-01"}}.

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

Stage code of the most recent recorded foreclosure notice on the parcel (e.g. "ND", "NS"). Present on every parcel whose foreclosureStatus is in_foreclosure, so any value here also limits results to those parcels. Accepts one code or an array (any-of). Pair with foreclosureDate to find recent notices of one stage.

Show child attributes
Option 1enum

One of (case-insensitive): AN, CS, JF, ND, NF, NL, NS, NT, PF, RD, RJ, RL, RP, RS, RT, SR

Options:ANCSJFNDNFNLNSNTPFRDRJRLRPRSRTSR
Option 2enum[]

Match any of these values

Options:ANCSJFNDNFNLNSNTPFRDRJRLRPRSRTSR
Option 3object

Fuzzy text match

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

One of (case-insensitive): unknown, in_foreclosure

Options:unknownin_foreclosure
Option 2enum[]

Match any of these values

Options:unknownin_foreclosure
Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
geoBoundsobject

Map viewport {north, south, east, west} in degrees: only listings inside the box. west greater than east crosses the antimeridian. Unlike geoPoint (a radius) this is the shape a map reports. Applies to list, count and analytics alike.

Show child attributes
eastnumberrequired
northnumberrequired
southnumberrequired
westnumberrequired
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
lastSalePriceone 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
lenderNmlsone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

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

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
loanCountone 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
lotSquareFeetone of | null

Lot size in square feet (e.g. {gte: 5000}). ~85% coverage; unmeasured parcels are excluded by default — pass includeNulls: true to add them back. lotSquareFeet: 0 matches nothing (the response returns 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
lowModIncomeTractboolean

Parcel sits in a low- or moderate-income tract under the Community Reinvestment Act (34,010,153 parcels). tractIncomeLevel is the four-way form of the same classification. 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.

majorityMinorityTractboolean

Parcel sits in a majority-minority tract (38,745,783 parcels). 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.

milesToCollegeone of | null

Straight-line distance from the parcel 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
milesToSchoolone of | null

Straight-line distance from the parcel 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
milesToWorshipone of | null

Straight-line distance from the parcel 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
modeenum
Options:andor
mortgageBalanceone 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
opportunityZoneboolean

Parcel sits in a federally designated Opportunity Zone tract (10,277,168 parcels). 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.

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

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
ownerOccupancyone of | null

Assessor owner-occupancy flag, bucketed: "owner_occupied", "probable_owner_occupied", or "not_flagged" (the assessor did not flag the parcel — where non-owner-occupied/investor parcels land). Accepts one value or an array (any-of). For investor targeting use {ownerOccupancy: "not_flagged", absenteeOwner: true}, optionally with ownerType: "entity".

Show child attributes
Option 1enum

One of (case-insensitive): owner_occupied, probable_owner_occupied, not_flagged

Options:owner_occupiedprobable_owner_occupiednot_flagged
Option 2enum[]

Match any of these values

Options:owner_occupiedprobable_owner_occupiednot_flagged
Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
preSaleLoanCountone of | null

Mortgages excluded from activeLoanCount because the parcel sold after they were recorded — the seller's loan, assumed paid off at closing. Use it to separate the two meanings of activeLoanCount: 0: {activeLoanCount: {lte: 0}, preSaleLoanCount: {lte: 0}} returns parcels where nothing was excluded, so the zero is backed by the record; {activeLoanCount: {lte: 0}, preSaleLoanCount: {gte: 1}} returns the parcels where it is not. On its own a non-zero value is unremarkable — most recently-sold parcels have one and also carry a current mortgage.

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
ruralTractboolean

Parcel sits in a rural tract (29,289,319 parcels). Thinner coverage than the other flags — stamped on 111.9M of 161.1M parcels, and a parcel with no value is dropped by either true or false. 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.

saleCountone 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
salePropensityone of | null

Likelihood the parcel sells in the near term, as a 0–100 score (e.g. {gte: 80} for the most likely to sell). NOT a fraction — {gte: 0.8} matches nearly every scored parcel. salePropensityCategory is the bucketed form of the same signal.

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
salePropensityCategoryone of | null
Show child attributes
Option 1enum

One of (case-insensitive): High, Medium, Low

Options:HighMediumLow
Option 2enum[]

Match any of these values

Options:HighMediumLow
Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
squareFeetone of | null

Building area in square feet (e.g. {gte: 1500}). ~68% coverage; unmeasured parcels are excluded by default — pass includeNulls: true to add them back. squareFeet: 0 matches nothing (the response returns 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
stateone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
tractApplicationsone of | null

Mortgage applications reported in the tract over the year, as a count. 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
tractAsianPctone of | null

Asian (non-Hispanic) share of the tract's population, 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
tractBlackPctone of | null

Black (non-Hispanic) share of the tract's population, 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
tractCountyCodeone of | null

Three-digit county FIPS code of the tract (county-within-state, NOT the 5-digit county/fips key). Pass with tractStateCode and tractId to pin one neighborhood. 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 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
tractDenialRateone of | null

Share of the tract's mortgage applications that were denied, 0-100 (e.g. {gte: 25} for 25%+). 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
tractFamilyIncomeone of | null

Median family income of the tract, 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
tractFloodZoneone 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
tractHispanicPctone of | null

Hispanic or Latino share of the tract's population, 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
tractHomeownershipRateone of | null

Owner-occupied share of the tract's housing units, 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
tractHouseholdIncomeone of | null

Median household income of the tract, in whole dollars (e.g. {gte: 120000}). 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
tractIdone of | null

Six-digit tract code. A tract code REPEATS in every state and county, so this only identifies a neighborhood when passed ALONGSIDE tractStateCode and tractCountyCode — on its own it matches roughly 75× too many parcels. 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 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
tractIncomeLevelone 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
tractIncomeVsMetroPctone of | null

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

Mortgage dollar volume reported in the tract over the year, 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
tractMedianAgeone of | null

Median age of the tract's population, 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
tractMedianHomeValueone of | null

Median home value across the tract, in whole dollars. A neighborhood statistic — the parcel's own value estimate is avmValue. 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
tractMinorityPctone of | null

Non-white share of the tract's population, 0-100 (e.g. {gte: 50} for majority-minority; majorityMinorityTract is the flag 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
tractOriginationsone of | null

Mortgage originations reported in the tract over the year, as a count. 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
tractPopulationone of | null

Total population of the tract. 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
tractPovertyRateone of | null

Share of the tract's population below the poverty line, 0-100 (e.g. {gte: 20} for 20%+). Pass whole percents — {gte: 0.2} means 0.2% and matches almost every tract. 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
tractRuralGradientone of | null

Remoteness of the tract on an ORDINAL 1-10 scale (1 = metropolitan core, 10 = most remote). This is a code, not a percent — {gte: 7} selects the most remote 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
tractStateCodeone of | null

Two-digit state FIPS code of the tract. Pass with tractCountyCode and tractId to pin one neighborhood. 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 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
tractWhiteNonHispanicPctone of | null

White (non-Hispanic) share of the tract's population, 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
usdaEligibleTractboolean

Parcel sits in a tract eligible for USDA rural housing programs (70,637,816 parcels). 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.

yearBuiltone 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
zipone of | null
Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
zipCodeone of | null

ZIP code. Canonical key (matches loans zipCode and the response DTO); zip is a legacy alias kept for back-compat.

Show child attributes
Option 1string
Option 2string[]

Match any value

Option 3object

Fuzzy text match

Show child attributes
matchstringrequired
measureenumdefault: "units"

Which metric each bar reports, AND what the bars are ranked by — the list is ordered by the measure you ask for, descending. Defaults to units, so an unqualified "top originators" means the busiest; pass volume for the biggest by dollars, or an average to rank by that average. Two things to know about the averages specifically. Buckets built from fewer than 5 documents are dropped from an average chart entirely, because a mean says nothing about how many transactions produced it and a single-transaction bucket would otherwise outrank real ones; no floor is applied to units or volume, where a lone large transaction is a legitimate top bar. And ranking a bucket list by a sub-aggregated average is approximate in the search engine — each shard contributes its own local top-N before they are merged — so treat the ordering of an average chart as indicative near the boundary rather than exact. Every bucket publishes its own count, so the sample size behind a value is never implicit.

Options:volumeunitsavgSalePriceavgListPrice
sliceenumrequired
Options:citycountystatezipCodezipforeclosureStatusforeclosureStageborrowerStatussalePropensityCategory

Responses

200objectChart data with measure/slice breakdown
Show attributes
completenessobject

Data-completeness watermark for this response. Present only when it could be measured; absence means it was not measured, NOT that the data is complete.

Show child attributes
throughdaterequired

The last calendar date (YYYY-MM-DD) this query's matching records actually reach. Records arrive after the events they describe, so a period ending today is normally backed by data ending days or weeks earlier, and any bucket extending past this date is built from a partial period. Measured from THIS query's own matched set, not a global figure: the delay varies by geography and moves over time, so two requests with different filters can legitimately report different dates.

dataobject[]required
Show child attributes
countnumberrequired

How many documents this bucket was built from — the denominator behind value, published whatever the measure. It is the sample size of an average, the transaction count behind a volume sum, and (for measure: "units") value itself. Present on every bucket. Distinct from excluded, which reports how many of these documents a guarded measure's sentinel filter then dropped: a bucket can look well-populated here and still average over far fewer.

excludednumber

How many of this bucket's documents the measure's sentinel guard excluded — documents that carry the field but whose value is an out-of-range fill. Additive and optional: absent when the measure is unguarded (a document count, or a field with no fill values). Present per BUCKET because exclusion is not uniform — one period or slice can be almost entirely fill values while its neighbors are clean, and a single response-level total would hide exactly that.

idstring

Machine value behind label when the bucket key is not itself the label. lender: label is the dictionary display name and id the normalized lender key — pass id, not label, back as a lender filter value. conforming: label is conforming / nonConforming and id the raw true / false flag. titleCompany (time-series segment): label is the most-used spelling and id the normalized name every spelling was merged under — match segments across buckets on id. Absent on slices whose label is already the machine value.

labelstringrequired
segmentsobject[]

Present only when the request named a segment: this bucket broken down by that second dimension, ranked by the same measure and capped at 25 per bucket (the rest is counted in segmentsOmittedCount). Documents with no value for the segment are not grouped and appear nowhere here, so segment counts sum to at most the bucket's count.

Show child attributes
countnumberrequired

Documents in this segment of the parent bucket — the denominator behind value, whatever the measure.

idstring

Machine value behind label when the bucket key is not itself the label. lender: label is the dictionary display name and id the normalized lender key — pass id, not label, back as a lender filter value. conforming: label is conforming / nonConforming and id the raw true / false flag. titleCompany (time-series segment): label is the most-used spelling and id the normalized name every spelling was merged under — match segments across buckets on id. Absent on slices whose label is already the machine value.

labelstringrequired
valuenumberrequired

The requested measure over the documents in BOTH this segment and its parent bucket.

segmentsOmittedCountnumber

Present only with segments: documents in this bucket whose segment value fell past the 25-per-bucket cap. A document COUNT, never a dollar figure. 0 means segments is the complete breakdown of every document that carries a segment value.

unattributedenum

Present and true on at most one bucket, which is NOT a real category: it collects the documents this breakdown could not attribute to any value of the slice, and its label ("(unknown)") is prose, not an identifier. Filter on THIS field, never on the label — a consumer plotting a map or joining the label to a real code must drop this row. It is always the LAST element of data, appended after ranking rather than placed by value, so it is the one bucket that does not obey the ordering measure describes. It exists so the bars account for the same population the summary reports: a document whose slice field holds no indexed term is absent from a terms breakdown entirely rather than forming a small bucket, so without it a chart silently omits part of its own corpus. That reconciliation is exact for units; on an average it is not, because buckets under the five-document floor are dropped and a slice with more than 200 distinct values still truncates — neither loss is collected in this row (the truncated tail is reported response-wide as omittedCount; the floor is reported nowhere). Absent when there is nothing unattributed, never false and never a zero-valued row.

Options:true
valuenumberrequired
measurestringrequired
nextCursorstring

Paged party slices only (a chart request that passed size or after with slice originator / broker / loanCompany). Opaque cursor for the next page of the ranking — send it back as after with the same body. Absent on the last page.

omittedCountnumber

How many documents fell outside the bars — the size of the dropped tail, not its value. A chart groups by a capped number of distinct values, so a slice with more of them than the cap returns its largest groups and drops the rest; zip, city, lender and originator are the ones that reach it. It is the documents in the groups past the size cap, and only those: documents excluded from the slice by its empty-value filter, or carrying no value for it at all, are never grouped and are not counted here either. Where the response carries an unattributed row that row collects them; elsewhere a small residual against /analytics/summary can remain on city, lender, originator and similar, so bars plus this count reconcile with the summary's population exactly only on a slice with no such documents. 0 means the bars ARE the complete set, and the field is absent only where the grouping cannot truncate at all — so 0 and missing are different claims. Unlike a breakdown there is no next page to fetch: narrow the filters or pick a coarser slice. It is a DOCUMENT count and never a dollar or an average — the aggregation reports how many rows it left out, not what they were worth, so a truncated volume chart cannot be completed from this figure. One exception it does not cover: the average measures drop buckets thinner than a minimum sample size, and those are not counted here — compare against the summary when a mean matters.

segmentstring | nullrequired

The second dimension echoed from the request, or null for a one-dimensional chart (then no bucket carries segments).

slicestringrequired
totalinteger

Paged party slices only. Distinct bucket keys (e.g. originators) in the filtered population — what a consumer paginates against. A cardinality ESTIMATE (see totalApproximate): near-exact below 40,000, approximate above. On an average measure it can exceed the ranked buckets, which drop keys under the 5-document floor. Use nextCursor, not total, to decide whether another page exists.

totalApproximateboolean

Present (always true) alongside total: the total is a cardinality estimate, not an exact count.

400objectValidation error
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.