Skip to main content
All of these filters work on deals, cells, summary, investors and buyers/match. So one filter state serves every view. Location. The filters narrow a location. The location is separate from the filters and takes one of four forms:
  • a point: lat + lng with radius_miles
  • a viewport: bbox=west,south,east,north
  • a parcel: property_id, with radius_miles
  • a place, on every list but /v1/buyers/match: a zip or a city
zip takes a comma list or a repeated key of 5-digit ZIPs. city takes the parcel’s postal city as the county records it, in any case. Send one form per request. lat + lng can also go beside a viewport or a place. Then they are the reference point for distance_miles and sort=distance. A place with no point takes the list’s default order. On Free and Starter the place is one ZIP (Plans and limits). For a ZIP or a city that no loaded market’s parcels carry, the API answers 422 outside_coverage (Coverage). Lists take commas (kind=flip,hold) or repeated keys (kind=flip&kind=hold). For a misspelled parameter the API answers a 400 that names it, so a typo never returns everything without an error. The three auction filters answer 422 auction_unavailable in a market whose registry predates the counts. meta.coverage[].auction_counted is false there. Drop the parameter to list every row. The two lender filters read the lender registry’s borrower match. financed_by matches any loan the registry ties to the investor. uses_private_lender matches a loan in the 24 months to the registry’s slice date from three kinds of lender. The lender is hard money by name or behaviour, an investor lender by behaviour, or classed INDIVIDUAL or PRIVATE. Both answer 422 lenders_unavailable in a market without a published registry or borrower match. The match sees about one loan in five, so both are floors, never a cash test. Texas markets. Texas is a non-disclosure state: most off-market deeds carry no price. So on a Houston deal bought_price is usually null while the MLS resale’s sold_price is known, and gross_profit and spread_ratio are null. price_quality says which prices the row has: SELL_ONLY, BOTH, BUY_ONLY or NONE. The first is the normal shape of a Texas flip bought off-market and sold through the MLS. A price is never 0. The API handles a null purchase price in these ways:
  • price_min / price_max compare bought_price, so either filter drops null-priced deals unless you add include_unpriced=true.
  • sort=price_desc and price_asc put null-priced rows last in both directions.
  • median_bought_price, total_volume and in_radius.volume use priced rows only, and n_unpriced counts the rows left out.
  • median_gross_profit uses the rows where both prices are known.
In /v1/buyers/match the price_fit factor reads the investor’s band of priced purchases. So for many Texas investors it is absent, and the other factors share its weight. For an investor with fewer than 3 priced purchases, the API halves it. resale_fit is the exit-price counterpart. It compares subject_arv with the median resale price of the investor’s flips, which Texas does record. It carries weight 0 by default, so set w_resale_fit= to score it. The Houston market is Harris County. meta.coverage[] says so: universe_kind: "county", counties[] names Harris, and n_parcels gives the parcel count. Every investor count, price band, scale tier and confidence there covers the county only. The data does not see activity in the neighbouring counties. The point tolerance of the market is 2 miles. holding_kind is RENTAL_SIGNAL in every market on a holding whose short-term rental licence is a business use attributed to the owner. The short_term_rental block on the row says so. Texas has no rental registry. So there the same value also marks an absentee owner with no homestead exemption on the county roll or a rental listing. RENTAL_REGISTERED still takes precedence where the county registry has the parcel.