Read the listing cycles of a parcel
curl --request GET \
--url https://api.investorlift.com/v1/properties/{property_id}/listing-history \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.investorlift.com/v1/properties/{property_id}/listing-history', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.investorlift.com/v1/properties/{property_id}/listing-history"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": {
"property_id": "prop_5fd69b38fbb3dba53367a0130dac9b5e",
"cycles": [
{
"id": "6b05295cd3dcc1adbebde0d90edec890",
"cycle_no": 3,
"first_week": "2026-06-25",
"last_week": "2026-09-09",
"listing_id": null,
"listed_on": "2026-06-19",
"original_price": 357500,
"last_price": 350000,
"min_price": 350000,
"n_price_cuts": 1,
"n_price_rises": 0,
"status_path": [
"Active",
"Pending",
"Off Market"
],
"outcome": "off_market",
"sold_price": 380000,
"sold_on": "2023-10-18",
"days_on_market": 82,
"price_path": [
{
"week": "2026-06-25",
"price": 357500,
"status": "Active",
"kind": "relist"
},
{
"week": "2026-07-22",
"price": 350000,
"status": "Active",
"kind": "price_cut"
},
{
"week": "2026-08-19",
"price": 350000,
"status": "Pending",
"kind": "status"
},
{
"week": "2026-09-09",
"price": 350000,
"status": "Off Market",
"kind": "delist"
}
]
},
{
"id": "d3ea34d261b9eeb2e32a7485cfdc04ca",
"cycle_no": 2,
"first_week": "2026-02-12",
"last_week": "2026-06-04",
"listing_id": null,
"listed_on": "2025-12-12",
"original_price": 405000,
"last_price": 380000,
"min_price": 380000,
"n_price_cuts": 3,
"n_price_rises": 0,
"status_path": [
"Active",
"Off Market"
],
"outcome": "off_market",
"sold_price": 0,
"sold_on": null,
"days_on_market": 174,
"price_path": [
{
"week": "2026-02-12",
"price": 405000,
"status": "Active",
"kind": "relist"
},
{
"week": "2026-02-26",
"price": 399990,
"status": "Active",
"kind": "price_cut"
},
{
"week": "2026-03-19",
"price": 390000,
"status": "Active",
"kind": "price_cut"
},
{
"week": "2026-04-16",
"price": 385000,
"status": "Active",
"kind": "price_cut"
},
{
"week": "2026-04-30",
"price": null,
"status": "Active",
"kind": "status"
},
{
"week": "2026-05-07",
"price": 380000,
"status": "Active",
"kind": "status"
},
{
"week": "2026-06-04",
"price": 380000,
"status": "Off Market",
"kind": "delist"
}
]
},
{
"id": "c6cb718fdf2ac389cb138fd94ee77850",
"cycle_no": 1,
"first_week": "2026-01-01",
"last_week": "2026-01-21",
"listing_id": null,
"listed_on": "2025-12-12",
"original_price": 415000,
"last_price": 415000,
"min_price": 415000,
"n_price_cuts": 0,
"n_price_rises": 0,
"status_path": [
"Active",
"Canceled"
],
"outcome": "canceled",
"sold_price": 0,
"sold_on": null,
"days_on_market": 40,
"price_path": [
{
"week": "2026-01-01",
"price": 415000,
"status": "Active",
"kind": "relist"
},
{
"week": "2026-01-21",
"price": 415000,
"status": "Canceled",
"kind": "delist"
}
]
}
]
},
"meta": {
"generated_at": "2026-09-16T21:00:00.000Z",
"coverage": [
{
"market": "phx",
"state": "AZ",
"counties": [
{
"fips": "04013",
"name": "Maricopa",
"data_end": "2026-08-12"
},
{
"fips": "04021",
"name": "Pinal",
"data_end": "2026-08-06"
}
],
"bbox": [
-113.332773,
32.46915,
-110.455491,
33.999503
],
"data_end": "2026-08-27",
"build_run_id": 3,
"registry_run": 11,
"registry_version": "v6-auction",
"dataset_version": 1789574268,
"loaded_at": "2026-09-16T15:57:47.926Z",
"metro_buy_to_resale_ratio": 0.719,
"universe_kind": "metro",
"universe_zips": null,
"point_tolerance_miles": 20,
"n_parcels": 1836311,
"listings_data_end": "2026-08-31",
"agents_data_end": "2026-08-31",
"wholesale_as_of": "2026-09-09",
"str_as_of": "2026-09-10",
"str": {
"jurisdictions": [
{
"name": "APACHE_JUNCTION",
"regime": "NOT_REQUIRED",
"coverage_reason": "NO_REQUIREMENT",
"served": false,
"snapshot_only": false,
"licence_start": null,
"snapshot_date": null,
"feed_stale": false,
"sources": [],
"n_licensed": 0,
"n_pending": 0,
"n_expired": 0,
"n_advertised": 0,
"share_unmatched": null,
"share_assumed": null
},
{
"name": "AVONDALE",
"regime": "REQUIRED",
"coverage_reason": "REQUIRED_NOT_PUBLISHED",
"served": false,
"snapshot_only": false,
"licence_start": null,
"snapshot_date": null,
"feed_stale": false,
"sources": [],
"n_licensed": 0,
"n_pending": 0,
"n_expired": 0,
"n_advertised": 0,
"share_unmatched": null,
"share_assumed": null
}
]
},
"auction_counted": true,
"parcel_as_of": "2026-08-27",
"address_as_of": "2026-08-27",
"parcel": {
"parcel_as_of": "2026-08-27",
"n_parcels": 1836311,
"sale_mortgage_measured": false,
"financing": {
"as_of": "2026-06-25",
"dated": true,
"dated_reason": "dataset not in current delivery",
"n_parcels": 1611957,
"n_with_open_lien": 1032808,
"n_free_and_clear": 579149,
"n_avm": 1528967,
"n_involuntary": 192400,
"n_lenders": 76212
},
"permits": {
"as_of": "2026-09-01",
"n_permits": 2377496,
"n_parcels": 663045,
"n_unmatched": 355,
"jurisdictions": [
{
"jurisdiction": "PHOENIX",
"n_permits": 795764,
"last_issue_date": "2026-05-11",
"windows_measured": null
},
{
"jurisdiction": "MESA",
"n_permits": 330809,
"last_issue_date": "2026-05-29",
"windows_measured": null
}
]
},
"owner_profile": {
"as_of": "2026-09-09",
"n_parcels": 1611077,
"n_multi": 646963,
"n_portfolio_5": 277841
},
"history": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"zips": [
"85251"
],
"n_parcels": 18774,
"n_events": 236022,
"n_weeks": 62,
"domains": {
"tax": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 18597
},
"deed": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 17615
},
"sale": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 1700
},
"listing": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 21122
},
"mailing": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 2128
},
"vacancy": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 2583
},
"financing": {
"first_week": "2025-12-02",
"last_week": "2026-06-25",
"n_events": 6420
},
"occupancy": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 1297
},
"ownership": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 3238
},
"structure": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 2548
},
"valuation": {
"first_week": "2025-07-24",
"last_week": "2026-06-25",
"n_events": 83657
},
"assessment": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 16450
},
"owner_profile": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 58404
},
"classification": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 263
}
}
}
},
"lenders": {
"as_of": "2026-06-25",
"recordings_through": "2026-06-11",
"counties": [
"04013"
],
"history_capture_share": 0.183706,
"n_lender_ids": 32046,
"purchase_measured": true,
"investor_lending_measured": true,
"flips_measured": true,
"borrowers_measured": true,
"takebacks_measured": true,
"counties_measured": false,
"dated": true,
"n_parcels_uncovered": 224192
}
}
],
"terms": "Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"
}
}Properties
Read a parcel's listing cycles
Every time this house went on the market, what it asked, how the price moved, and how each cycle ended.
GET
/
v1
/
properties
/
{property_id}
/
listing-history
Read the listing cycles of a parcel
curl --request GET \
--url https://api.investorlift.com/v1/properties/{property_id}/listing-history \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.investorlift.com/v1/properties/{property_id}/listing-history', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.investorlift.com/v1/properties/{property_id}/listing-history"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": {
"property_id": "prop_5fd69b38fbb3dba53367a0130dac9b5e",
"cycles": [
{
"id": "6b05295cd3dcc1adbebde0d90edec890",
"cycle_no": 3,
"first_week": "2026-06-25",
"last_week": "2026-09-09",
"listing_id": null,
"listed_on": "2026-06-19",
"original_price": 357500,
"last_price": 350000,
"min_price": 350000,
"n_price_cuts": 1,
"n_price_rises": 0,
"status_path": [
"Active",
"Pending",
"Off Market"
],
"outcome": "off_market",
"sold_price": 380000,
"sold_on": "2023-10-18",
"days_on_market": 82,
"price_path": [
{
"week": "2026-06-25",
"price": 357500,
"status": "Active",
"kind": "relist"
},
{
"week": "2026-07-22",
"price": 350000,
"status": "Active",
"kind": "price_cut"
},
{
"week": "2026-08-19",
"price": 350000,
"status": "Pending",
"kind": "status"
},
{
"week": "2026-09-09",
"price": 350000,
"status": "Off Market",
"kind": "delist"
}
]
},
{
"id": "d3ea34d261b9eeb2e32a7485cfdc04ca",
"cycle_no": 2,
"first_week": "2026-02-12",
"last_week": "2026-06-04",
"listing_id": null,
"listed_on": "2025-12-12",
"original_price": 405000,
"last_price": 380000,
"min_price": 380000,
"n_price_cuts": 3,
"n_price_rises": 0,
"status_path": [
"Active",
"Off Market"
],
"outcome": "off_market",
"sold_price": 0,
"sold_on": null,
"days_on_market": 174,
"price_path": [
{
"week": "2026-02-12",
"price": 405000,
"status": "Active",
"kind": "relist"
},
{
"week": "2026-02-26",
"price": 399990,
"status": "Active",
"kind": "price_cut"
},
{
"week": "2026-03-19",
"price": 390000,
"status": "Active",
"kind": "price_cut"
},
{
"week": "2026-04-16",
"price": 385000,
"status": "Active",
"kind": "price_cut"
},
{
"week": "2026-04-30",
"price": null,
"status": "Active",
"kind": "status"
},
{
"week": "2026-05-07",
"price": 380000,
"status": "Active",
"kind": "status"
},
{
"week": "2026-06-04",
"price": 380000,
"status": "Off Market",
"kind": "delist"
}
]
},
{
"id": "c6cb718fdf2ac389cb138fd94ee77850",
"cycle_no": 1,
"first_week": "2026-01-01",
"last_week": "2026-01-21",
"listing_id": null,
"listed_on": "2025-12-12",
"original_price": 415000,
"last_price": 415000,
"min_price": 415000,
"n_price_cuts": 0,
"n_price_rises": 0,
"status_path": [
"Active",
"Canceled"
],
"outcome": "canceled",
"sold_price": 0,
"sold_on": null,
"days_on_market": 40,
"price_path": [
{
"week": "2026-01-01",
"price": 415000,
"status": "Active",
"kind": "relist"
},
{
"week": "2026-01-21",
"price": 415000,
"status": "Canceled",
"kind": "delist"
}
]
}
]
},
"meta": {
"generated_at": "2026-09-16T21:00:00.000Z",
"coverage": [
{
"market": "phx",
"state": "AZ",
"counties": [
{
"fips": "04013",
"name": "Maricopa",
"data_end": "2026-08-12"
},
{
"fips": "04021",
"name": "Pinal",
"data_end": "2026-08-06"
}
],
"bbox": [
-113.332773,
32.46915,
-110.455491,
33.999503
],
"data_end": "2026-08-27",
"build_run_id": 3,
"registry_run": 11,
"registry_version": "v6-auction",
"dataset_version": 1789574268,
"loaded_at": "2026-09-16T15:57:47.926Z",
"metro_buy_to_resale_ratio": 0.719,
"universe_kind": "metro",
"universe_zips": null,
"point_tolerance_miles": 20,
"n_parcels": 1836311,
"listings_data_end": "2026-08-31",
"agents_data_end": "2026-08-31",
"wholesale_as_of": "2026-09-09",
"str_as_of": "2026-09-10",
"str": {
"jurisdictions": [
{
"name": "APACHE_JUNCTION",
"regime": "NOT_REQUIRED",
"coverage_reason": "NO_REQUIREMENT",
"served": false,
"snapshot_only": false,
"licence_start": null,
"snapshot_date": null,
"feed_stale": false,
"sources": [],
"n_licensed": 0,
"n_pending": 0,
"n_expired": 0,
"n_advertised": 0,
"share_unmatched": null,
"share_assumed": null
},
{
"name": "AVONDALE",
"regime": "REQUIRED",
"coverage_reason": "REQUIRED_NOT_PUBLISHED",
"served": false,
"snapshot_only": false,
"licence_start": null,
"snapshot_date": null,
"feed_stale": false,
"sources": [],
"n_licensed": 0,
"n_pending": 0,
"n_expired": 0,
"n_advertised": 0,
"share_unmatched": null,
"share_assumed": null
}
]
},
"auction_counted": true,
"parcel_as_of": "2026-08-27",
"address_as_of": "2026-08-27",
"parcel": {
"parcel_as_of": "2026-08-27",
"n_parcels": 1836311,
"sale_mortgage_measured": false,
"financing": {
"as_of": "2026-06-25",
"dated": true,
"dated_reason": "dataset not in current delivery",
"n_parcels": 1611957,
"n_with_open_lien": 1032808,
"n_free_and_clear": 579149,
"n_avm": 1528967,
"n_involuntary": 192400,
"n_lenders": 76212
},
"permits": {
"as_of": "2026-09-01",
"n_permits": 2377496,
"n_parcels": 663045,
"n_unmatched": 355,
"jurisdictions": [
{
"jurisdiction": "PHOENIX",
"n_permits": 795764,
"last_issue_date": "2026-05-11",
"windows_measured": null
},
{
"jurisdiction": "MESA",
"n_permits": 330809,
"last_issue_date": "2026-05-29",
"windows_measured": null
}
]
},
"owner_profile": {
"as_of": "2026-09-09",
"n_parcels": 1611077,
"n_multi": 646963,
"n_portfolio_5": 277841
},
"history": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"zips": [
"85251"
],
"n_parcels": 18774,
"n_events": 236022,
"n_weeks": 62,
"domains": {
"tax": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 18597
},
"deed": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 17615
},
"sale": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 1700
},
"listing": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 21122
},
"mailing": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 2128
},
"vacancy": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 2583
},
"financing": {
"first_week": "2025-12-02",
"last_week": "2026-06-25",
"n_events": 6420
},
"occupancy": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 1297
},
"ownership": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 3238
},
"structure": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 2548
},
"valuation": {
"first_week": "2025-07-24",
"last_week": "2026-06-25",
"n_events": 83657
},
"assessment": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 16450
},
"owner_profile": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 58404
},
"classification": {
"first_week": "2025-07-24",
"last_week": "2026-09-09",
"n_events": 263
}
}
}
},
"lenders": {
"as_of": "2026-06-25",
"recordings_through": "2026-06-11",
"counties": [
"04013"
],
"history_capture_share": 0.183706,
"n_lender_ids": 32046,
"purchase_measured": true,
"investor_lending_measured": true,
"flips_measured": true,
"borrowers_measured": true,
"takebacks_measured": true,
"counties_measured": false,
"dated": true,
"n_parcels_uncovered": 224192
}
}
],
"terms": "Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"
}
}The response lists every listing cycle observed on one parcel, newest first.
Each cycle says when the house went active, how it ended, and the days on market. It also carries the price path
with its cuts and rises.
Use it when
Use it for the listing history strip on a subject property. Use it for the question a seller asks first: was this house on the market before, and at what price.| Instead use | When |
|---|---|
GET /v1/properties/{property_id}/history | The raw listing events beside the ownership, tax and vacancy ones. |
GET /v1/properties/{property_id} | The latest listing the feed knows, as of meta.coverage[].listings_data_end. |
How a cycle is cut
The replay reads the weekly deliveries from the lake’s first week,meta.coverage[].parcel.history.first_week,
onward. A cycle opens the first week the replay sees the parcel on the market. It closes when the parcel sells or
comes off the market. The next time the parcel goes active, a new cycle opens with cycle_no one higher. So a house
that went on the market, came off and went on again is two cycles, not one long one. This rule gives
listing_cycles_1y and the relisted quicklist their meaning.
outcome says how the cycle ended:
outcome | Means |
|---|---|
sold | It sold. The cycle carries sold_price and sold_on. |
canceled, expired, withdrawn, off_market | It came off the market without a sale. The four are the feed’s own words for it. |
active | Still on the market in the last week replayed. |
unknown | The last status was neither active nor terminal. So the cycle is open, and no other outcome word fits it. |
Read the response
original_priceis the first list price seen in the cycle.last_priceis the final one andmin_pricethe lowest.n_price_cutsandn_price_risescount the moves between them.price_path[]is every listing event of the cycle in order, each with its week, price, status and event kind. Use it for a chart. Use the counts above for a sentence.days_on_marketruns fromlisted_ontosold_on, or to the last event week while the cycle is open. The replay measures it in weeks of observation, so it is accurate to the week, not to the day.status_path[]is the distinct statuses in the order the replay saw them. It is the shape of the cycle without the prices.first_weekandlast_weekare what the replay saw.listed_onis the date the feed itself carried. It can be earlier thanfirst_weekon a house that was already on the market when the replay began.
Gotchas
- This host does not serve
agent_nameandagent_license: the cycles carry neither key. - Only the ZIP codes the history lake covers have cycles. Elsewhere the API answers
422 history_unavailableand names the ZIPs inmeta.coverage[].parcel.history.zips. Counties, cities and ZIP codes lists them. - A parcel inside the ZIP set that never went on the market answers with an empty
cycles[]. This means “never seen on the market since the lake’s first week”. - The API answers
404 not_foundwhen the parcel is in no market with parcel tables. It answers422 parcels_unavailablewhen the market has none.
Authorizations
API key from the developer console (starts with zpka_). Create one at https://developers.investorlift.com/get-a-key.
Path Parameters
Parcel id, prop_<32 hex>, from /v1/properties/resolve or any deal's property.id. The prefix is part of the id (400 invalid_id otherwise).
Required string length:
1 - 64Response
The listing cycles of one parcel.
Was this page helpful?