Searchable Listing Statuses
status and previous_status
status and previous_statusBoth 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).
| Status | Notes |
|---|---|
Active | Currently on the market |
Pending | Under contract, sale not yet closed |
Coming Soon | Announced but not yet formally active |
Active Under Contract | Active, but an offer has been accepted (some boards allow continued showings) |
Sold | Alias — see below, resolves to Closed |
Closed | Sale completed |
Withdrawn | Taken off market by the seller/agent without selling |
Expired | Listing agreement ended without a sale |
Canceled | Listing canceled before its agreement expired |
Off Market | No 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:
| Boolean | Equivalent to |
|---|---|
active: true | status: "Active" |
pending: true | status: "Pending" |
sold: true | status: "Closed" |
The Sold → Closed alias
Sold → Closed aliasThe 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.