Skip to main content
One period a house is on the market, cut from the weekly listing events. GET /v1/properties/{property_id}/listing-history returns it. A parcel search row carries the counts history.listing_cycles_1y and history.price_cuts_current_listing. A cycle opens the first week the replay sees the parcel on the market. It closes when the parcel sells or comes off. The next time the parcel goes active, a new cycle opens with cycle_no one higher. So a house listed, withdrawn and relisted is two cycles.

Outcome

The four middle rows are one fact in four of the feed’s words: it came off the market without a sale. Group them when you count, and show the word when you explain one house.

The fields a reader misreads

  • original_price is the first price this replay saw, not necessarily the first price the house ever asked. On a house already listed when the replay began, at meta.coverage[].parcel.history.first_week, it is the price in that week’s file.
  • days_on_market is accurate to the week. It runs from listed_on to sold_on, or to the last event week while the cycle is open. The events behind it are weekly observations.
  • first_week against listed_on. first_week is when the replay saw the cycle. listed_on is the date the feed itself carried and can be earlier.
  • n_price_cuts and n_price_rises count moves, not dollars. original_price, min_price and last_price are the dollars.
  • price_path[] is the drawable series: every listing event of the cycle in order, each with its week, price, status and event kind. A null price in it is a week whose record carried none.
  • status_path[] is the distinct statuses in order, so a status repeated over many weeks appears once.

Contact data

This host serves neither agent_name nor agent_license, so a cycle carries neither key. The first is the first listing agent as the file named it. The second is the state licence number, where the 2025 files carried one. The parcel’s listing block identifies its agent by agent_id, the key to the Listing agent object.

One listing cycle: from the first active sighting to sold, off market or still active at its last week.

id
string
required

Cycle id (32 hex).

cycle_no
integer
required

1 for the first cycle observed on the parcel.

Required range: -9007199254740991 <= x <= 9007199254740991
first_week
string
required

The week the history lake first saw the cycle.

last_week
string
required

The week of its last event.

listing_id
string | null
required

The feed's listing id; null when the delivery does not record it.

listed_on
string | null
required

The original listing date the feed carried.

original_price
integer | null
required

The first list price seen; null when no event of the cycle carried a price.

Required range: -9007199254740991 <= x <= 9007199254740991
last_price
integer | null
required

The last list price seen; null when no event of the cycle carried a price.

Required range: -9007199254740991 <= x <= 9007199254740991
min_price
integer | null
required

The lowest list price seen; null when no event of the cycle carried a price.

Required range: -9007199254740991 <= x <= 9007199254740991
n_price_cuts
integer
required

Price cuts in the cycle.

Required range: -9007199254740991 <= x <= 9007199254740991
n_price_rises
integer
required

Price rises in the cycle.

Required range: -9007199254740991 <= x <= 9007199254740991
status_path
string[] | null
required

The distinct statuses in order.

outcome
enum<string>
required

How the cycle ended. The value sold means the cycle sold. The values canceled, expired, withdrawn and off_market mean the listing came off without a sale. The value active means the listing was still on the market at the last week. The value unknown means the last status was neither active nor terminal.

Available options:
sold,
canceled,
expired,
withdrawn,
off_market,
active,
unknown
sold_price
integer | null
required

The sold price; null unless the cycle sold with a price.

Required range: -9007199254740991 <= x <= 9007199254740991
sold_on
string | null
required

The sold date.

days_on_market
integer | null
required

Days from listed_on to sold_on. Without sold_on, days from listed_on to the last event week; null without listed_on.

Required range: -9007199254740991 <= x <= 9007199254740991
price_path
object[]
required

Every listing event of the cycle in order.