Find Listings at Different Lifecycle Stages/Statuses

Searchable Listing Statuses

status and previous_status

Both fields share the same fixed vocabulary and the same case-insensitive, "did you mean" catalog validation. status filters on the listing's current status; previous_status filters on the status immediately before the current one (see the Status Change History doc).

StatusNotes
ActiveCurrently on the market
PendingUnder contract, sale not yet closed
Coming SoonAnnounced but not yet formally active
Active Under ContractActive, but an offer has been accepted (some boards allow continued showings)
SoldAlias — see below, resolves to Closed
ClosedSale completed
WithdrawnTaken off market by the seller/agent without selling
ExpiredListing agreement ended without a sale
CanceledListing canceled before its agreement expired
Off MarketNo longer listed, reason not otherwise categorized
{ "status": "Active" }
{ "status": ["Active", "Active Under Contract"] }

Convenience booleans

Three of the most commonly filtered statuses have dedicated boolean shortcuts that are equivalent to (and slightly friendlier than) filtering status directly:

BooleanEquivalent to
active: truestatus: "Active"
pending: truestatus: "Pending"
sold: truestatus: "Closed"

The SoldClosed alias

The feed's stored value is Closed, but "Sold" is accepted as a friendly input alias and automatically resolves to it — you never need to know which term the underlying data uses:

{ "status": "Sold" }

searches exactly the same records as:

{ "status": "Closed" }

Typos and unrecognized values

An unrecognized status 400s with the nearest match from the list above:

{ "status": "Solld" }

"Solld" is not a valid status — did you mean "Sold"?

A data quality note on Expired / Canceled / Withdrawn

Not every MLS board reports Expired and Canceled as distinct statuses — many boards fold both into Withdrawn in their feed. If you're building status-based analysis across multiple boards, don't assume Expired/Canceled counts reflect the true rate for every market — cross-check against Withdrawn volume for boards that don't appear to use the finer-grained statuses. If precise lifecycle detail matters for a specific board, filter by mls_board_code and inspect status distribution for that board specifically before drawing conclusions.