curl --request GET \
--url https://api.investorlift.com/v1/investors/{id}/deals \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.investorlift.com/v1/investors/{id}/deals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.investorlift.com/v1/investors/{id}/deals"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "deal_f0908eaa16021b8be474384f19328288",
"market": "phx",
"kind": "flip",
"deal_type": "PAIR",
"deal_kind": "FLIP",
"ownership_confirmed": null,
"buyer_status": "registered",
"buyer_exclusion": null,
"property": {
"id": "prop_e90edc5ea3c0c58ffa80e5cc04eaf0e4",
"market": "phx",
"apn": "207-02-477",
"apn_norm": "20702477",
"county_fips": "04013",
"address_short": "3125 W Charleston Ave",
"street_no_unit": "3125 W Charleston Ave",
"unit": null,
"city": "PHOENIX",
"state": "AZ",
"zip": "85053",
"latitude": 33.648618,
"longitude": -112.126837,
"segment": "SFR",
"bedrooms": null,
"bathrooms": 2,
"sqft": 1055,
"year_built": 1977,
"pool": null
},
"distance_miles": null,
"bought_on": "2026-06-22",
"date_quality": "deed",
"held_since_source": "DEED_ACQUISITION",
"bought_price": 195000,
"sold_on": "2026-07-24",
"sold_price": 270000,
"hold_days": 32,
"gross_profit": 75000,
"spread_ratio": 0.384615,
"price_quality": "BOTH",
"days_held_to_data_end": null,
"sold_to_wholesaler": null,
"round_trip": false,
"is_purchase_event": true,
"n_parcels_in_event": 2,
"bought_from_wholesaler": true,
"bought_from_wholesaler_via": "SELLER_KIND",
"wholesaler_investor_id": "inv_abaf618f44a3",
"bought_from_investor": true,
"bought_distressed": false,
"bought_auction_kind": null,
"holding_kind": null,
"acquisition_kind": null,
"investor": {
"id": "inv_abaf618f44a3",
"market": "phx",
"name": "ZAK VENTURES LLC",
"display_name": "ZAK VENTURES LLC",
"state": "AZ",
"kind": "LANDLORD",
"confidence": "STRONG",
"scale": "large",
"institutional": false,
"is_public": false,
"last_bought_on": "2026-08-05",
"n_deals": 775,
"buyer_status": "registered"
},
"seller": {
"id": "inv_abaf618f44a3",
"name": "ZAK VENTURES LLC",
"display_name": "ZAK VENTURES LLC",
"kind": "ENTITY",
"kinds": [
"LANDLORD",
"FLIPPER",
"BUILDER",
"WHOLESALER"
]
},
"end_buyer": {
"id": "inv_83d86e5dde06",
"name": "BRUCE AND JIM LLC",
"display_name": "BRUCE AND JIM LLC",
"kind": "ENTITY",
"kinds": [
"LANDLORD"
]
},
"owner": null,
"listing": null,
"short_term_rental": null,
"wholesale_listing": null,
"financing": {
"purchase_loan_status": "NOT_MEASURED",
"purchase_loan": null,
"secondary_loans_n": null,
"link_window": null,
"outcome": null,
"as_of": "2026-06-25",
"dated": true
}
},
{
"id": "deal_8c38bc7d253246f85075fdb67e1b0f78",
"market": "phx",
"kind": "flip",
"deal_type": "PAIR",
"deal_kind": "FLIP",
"ownership_confirmed": null,
"buyer_status": "registered",
"buyer_exclusion": null,
"property": {
"id": "prop_c43cecbb42811180448e6ac30b4bfc09",
"market": "phx",
"apn": "145-23-072",
"apn_norm": "14523072",
"county_fips": "04013",
"address_short": "4229 N 48th Ave",
"street_no_unit": "4229 N 48th Ave",
"unit": null,
"city": "PHOENIX",
"state": "AZ",
"zip": "85031",
"latitude": 33.497889,
"longitude": -112.1618,
"segment": "SFR",
"bedrooms": null,
"bathrooms": 2,
"sqft": 1360,
"year_built": 1954,
"pool": null
},
"distance_miles": null,
"bought_on": "2026-06-15",
"date_quality": "deed",
"held_since_source": "DEED_ACQUISITION",
"bought_price": 187500,
"sold_on": "2026-08-11",
"sold_price": 243500,
"hold_days": 57,
"gross_profit": 56000,
"spread_ratio": 0.298667,
"price_quality": "BOTH",
"days_held_to_data_end": null,
"sold_to_wholesaler": false,
"round_trip": false,
"is_purchase_event": true,
"n_parcels_in_event": 1,
"bought_from_wholesaler": true,
"bought_from_wholesaler_via": "SELLER_KIND",
"wholesaler_investor_id": "inv_abaf618f44a3",
"bought_from_investor": true,
"bought_distressed": false,
"bought_auction_kind": null,
"holding_kind": null,
"acquisition_kind": null,
"investor": {
"id": "inv_abaf618f44a3",
"market": "phx",
"name": "ZAK VENTURES LLC",
"display_name": "ZAK VENTURES LLC",
"state": "AZ",
"kind": "LANDLORD",
"confidence": "STRONG",
"scale": "large",
"institutional": false,
"is_public": false,
"last_bought_on": "2026-08-05",
"n_deals": 775,
"buyer_status": "registered"
},
"seller": {
"id": "inv_abaf618f44a3",
"name": "ZAK VENTURES LLC",
"display_name": "ZAK VENTURES LLC",
"kind": "ENTITY",
"kinds": [
"LANDLORD",
"FLIPPER",
"BUILDER",
"WHOLESALER"
]
},
"end_buyer": {
"id": null,
"name": null,
"display_name": null,
"kind": "TRUST",
"kinds": null
},
"owner": null,
"listing": null,
"short_term_rental": null,
"wholesale_listing": null,
"financing": {
"purchase_loan_status": "NOT_MEASURED",
"purchase_loan": null,
"secondary_loans_n": null,
"link_window": null,
"outcome": null,
"as_of": "2026-06-25",
"dated": true
}
}
],
"page": {
"next_cursor": "eyJ2IjoxLCJydW4iOiIxNzg4NDY5ODE5IiwicSI6IjcwMDA1Nzk2YmJjNTg4ZjJiY2U3MGUzMGJiMjYwOTQzMjI4YjhiZWRiMzI2OGU4MjIxNWNjMDBmMTVkOWQ5YTciLCJrIjpbIjIwMjYtMDYtMTUiLCI4YzM4YmM3ZDI1MzI0NmY4NTA3NWZkYjY3ZTFiMGY3OCJdfQ",
"limit": 2,
"returned": 2
},
"meta": {
"generated_at": "2026-09-03T21:40: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-12",
"build_run_id": 1,
"registry_run": 7,
"registry_version": "v4-metro-review-fixes",
"dataset_version": 1788469819,
"loaded_at": "2026-09-03T21:10:18.682Z",
"metro_buy_to_resale_ratio": 0.7192,
"universe_kind": "metro",
"universe_zips": null,
"point_tolerance_miles": 20,
"n_parcels": null,
"listings_data_end": "2026-08-31",
"agents_data_end": "2026-08-31",
"wholesale_as_of": "2026-09-09",
"str_as_of": null,
"str": null,
"auction_counted": true,
"parcel_as_of": null,
"address_as_of": null,
"parcel": null,
"lenders": null
}
],
"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"
}
}List every deal of one investor across the market
Every deal of one investor across the whole market, as rows shaped like /v1/deals with coordinates for a map. A two mile radius shows about 5% of an active flipper’s activity. This route shows all of it.
For their deals inside one area use /v1/deals with investor_id.
curl --request GET \
--url https://api.investorlift.com/v1/investors/{id}/deals \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.investorlift.com/v1/investors/{id}/deals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.investorlift.com/v1/investors/{id}/deals"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "deal_f0908eaa16021b8be474384f19328288",
"market": "phx",
"kind": "flip",
"deal_type": "PAIR",
"deal_kind": "FLIP",
"ownership_confirmed": null,
"buyer_status": "registered",
"buyer_exclusion": null,
"property": {
"id": "prop_e90edc5ea3c0c58ffa80e5cc04eaf0e4",
"market": "phx",
"apn": "207-02-477",
"apn_norm": "20702477",
"county_fips": "04013",
"address_short": "3125 W Charleston Ave",
"street_no_unit": "3125 W Charleston Ave",
"unit": null,
"city": "PHOENIX",
"state": "AZ",
"zip": "85053",
"latitude": 33.648618,
"longitude": -112.126837,
"segment": "SFR",
"bedrooms": null,
"bathrooms": 2,
"sqft": 1055,
"year_built": 1977,
"pool": null
},
"distance_miles": null,
"bought_on": "2026-06-22",
"date_quality": "deed",
"held_since_source": "DEED_ACQUISITION",
"bought_price": 195000,
"sold_on": "2026-07-24",
"sold_price": 270000,
"hold_days": 32,
"gross_profit": 75000,
"spread_ratio": 0.384615,
"price_quality": "BOTH",
"days_held_to_data_end": null,
"sold_to_wholesaler": null,
"round_trip": false,
"is_purchase_event": true,
"n_parcels_in_event": 2,
"bought_from_wholesaler": true,
"bought_from_wholesaler_via": "SELLER_KIND",
"wholesaler_investor_id": "inv_abaf618f44a3",
"bought_from_investor": true,
"bought_distressed": false,
"bought_auction_kind": null,
"holding_kind": null,
"acquisition_kind": null,
"investor": {
"id": "inv_abaf618f44a3",
"market": "phx",
"name": "ZAK VENTURES LLC",
"display_name": "ZAK VENTURES LLC",
"state": "AZ",
"kind": "LANDLORD",
"confidence": "STRONG",
"scale": "large",
"institutional": false,
"is_public": false,
"last_bought_on": "2026-08-05",
"n_deals": 775,
"buyer_status": "registered"
},
"seller": {
"id": "inv_abaf618f44a3",
"name": "ZAK VENTURES LLC",
"display_name": "ZAK VENTURES LLC",
"kind": "ENTITY",
"kinds": [
"LANDLORD",
"FLIPPER",
"BUILDER",
"WHOLESALER"
]
},
"end_buyer": {
"id": "inv_83d86e5dde06",
"name": "BRUCE AND JIM LLC",
"display_name": "BRUCE AND JIM LLC",
"kind": "ENTITY",
"kinds": [
"LANDLORD"
]
},
"owner": null,
"listing": null,
"short_term_rental": null,
"wholesale_listing": null,
"financing": {
"purchase_loan_status": "NOT_MEASURED",
"purchase_loan": null,
"secondary_loans_n": null,
"link_window": null,
"outcome": null,
"as_of": "2026-06-25",
"dated": true
}
},
{
"id": "deal_8c38bc7d253246f85075fdb67e1b0f78",
"market": "phx",
"kind": "flip",
"deal_type": "PAIR",
"deal_kind": "FLIP",
"ownership_confirmed": null,
"buyer_status": "registered",
"buyer_exclusion": null,
"property": {
"id": "prop_c43cecbb42811180448e6ac30b4bfc09",
"market": "phx",
"apn": "145-23-072",
"apn_norm": "14523072",
"county_fips": "04013",
"address_short": "4229 N 48th Ave",
"street_no_unit": "4229 N 48th Ave",
"unit": null,
"city": "PHOENIX",
"state": "AZ",
"zip": "85031",
"latitude": 33.497889,
"longitude": -112.1618,
"segment": "SFR",
"bedrooms": null,
"bathrooms": 2,
"sqft": 1360,
"year_built": 1954,
"pool": null
},
"distance_miles": null,
"bought_on": "2026-06-15",
"date_quality": "deed",
"held_since_source": "DEED_ACQUISITION",
"bought_price": 187500,
"sold_on": "2026-08-11",
"sold_price": 243500,
"hold_days": 57,
"gross_profit": 56000,
"spread_ratio": 0.298667,
"price_quality": "BOTH",
"days_held_to_data_end": null,
"sold_to_wholesaler": false,
"round_trip": false,
"is_purchase_event": true,
"n_parcels_in_event": 1,
"bought_from_wholesaler": true,
"bought_from_wholesaler_via": "SELLER_KIND",
"wholesaler_investor_id": "inv_abaf618f44a3",
"bought_from_investor": true,
"bought_distressed": false,
"bought_auction_kind": null,
"holding_kind": null,
"acquisition_kind": null,
"investor": {
"id": "inv_abaf618f44a3",
"market": "phx",
"name": "ZAK VENTURES LLC",
"display_name": "ZAK VENTURES LLC",
"state": "AZ",
"kind": "LANDLORD",
"confidence": "STRONG",
"scale": "large",
"institutional": false,
"is_public": false,
"last_bought_on": "2026-08-05",
"n_deals": 775,
"buyer_status": "registered"
},
"seller": {
"id": "inv_abaf618f44a3",
"name": "ZAK VENTURES LLC",
"display_name": "ZAK VENTURES LLC",
"kind": "ENTITY",
"kinds": [
"LANDLORD",
"FLIPPER",
"BUILDER",
"WHOLESALER"
]
},
"end_buyer": {
"id": null,
"name": null,
"display_name": null,
"kind": "TRUST",
"kinds": null
},
"owner": null,
"listing": null,
"short_term_rental": null,
"wholesale_listing": null,
"financing": {
"purchase_loan_status": "NOT_MEASURED",
"purchase_loan": null,
"secondary_loans_n": null,
"link_window": null,
"outcome": null,
"as_of": "2026-06-25",
"dated": true
}
}
],
"page": {
"next_cursor": "eyJ2IjoxLCJydW4iOiIxNzg4NDY5ODE5IiwicSI6IjcwMDA1Nzk2YmJjNTg4ZjJiY2U3MGUzMGJiMjYwOTQzMjI4YjhiZWRiMzI2OGU4MjIxNWNjMDBmMTVkOWQ5YTciLCJrIjpbIjIwMjYtMDYtMTUiLCI4YzM4YmM3ZDI1MzI0NmY4NTA3NWZkYjY3ZTFiMGY3OCJdfQ",
"limit": 2,
"returned": 2
},
"meta": {
"generated_at": "2026-09-03T21:40: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-12",
"build_run_id": 1,
"registry_run": 7,
"registry_version": "v4-metro-review-fixes",
"dataset_version": 1788469819,
"loaded_at": "2026-09-03T21:10:18.682Z",
"metro_buy_to_resale_ratio": 0.7192,
"universe_kind": "metro",
"universe_zips": null,
"point_tolerance_miles": 20,
"n_parcels": null,
"listings_data_end": "2026-08-31",
"agents_data_end": "2026-08-31",
"wholesale_as_of": "2026-09-09",
"str_as_of": null,
"str": null,
"auction_counted": true,
"parcel_as_of": null,
"address_as_of": null,
"parcel": null,
"lenders": null
}
],
"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"
}
}Authorizations
API key from the developer console (starts with zpka_). Create one at https://developers.investorlift.com/get-a-key.
Path Parameters
Investor id, inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The API follows an old id from an earlier data refresh to the current investor (meta.resolved_from). It answers 410 for a retired id.
Query Parameters
Market code, for example phx. The loaded markets are in meta.coverage[]. Send it only when the id exists in more than one loaded market. 400 market_required says so. Otherwise the API uses the id's own market.
1 - 16Which side of the deals to list. With buyer (the default) the list holds the purchases, holdings and resales where the investor was the buyer. With seller it holds the deals where the investor sold to the buyer named on the row. With any it holds the buyer, seller and end-buyer rows together, each deal once.
buyer, seller, any Deal kinds to keep (comma list or repeated key). Default: every kind.
1What occurred on the deal. flip: bought, fixed and resold within about a year at a profit-shaped margin; wholesale: bought and resold in under 30 days, or a chain resale or round trip within 90 (a double close); hold: bought and still owned at data_end, a confirmed holding or an un-resold purchase; long_hold: held over a year, then sold (a landlord exit); other: an investor resale that is not a clean flip. Reasons: a loss, a thin margin, a builder's new home resold, an iBuyer resale, or a chain resale of 3 to 12 months; build: a registered investor bought a lot or teardown, built a house on it during the hold, then sold. A builder's finished home bought and resold is other. On data built after 2026-09-17 the kind keeps only a single-family parcel held over 90 days, its house complete by the sale year. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build.
flip, wholesale, hold, long_hold, other, build Keep only holdings whose MLS listing matches one of these values (comma list or repeated key). The value on_market keeps the holdings listed at listings_data_end: ACTIVE or PENDING and not a rental. The values active, pending, sold and off_market match the record's status, and none keeps holdings with no record. The API applies the filter before it cuts the page, so role=buyer&listing_status=on_market is every listed holding in one page. It answers 422 listings_unavailable when the market has no listing tables (meta.coverage[].listings_data_end null). Default: every row.
1What the MLS listing on a holding must be for the API to keep the row. With on_market, ACTIVE or PENDING and not a rental: the rows whose listing block says on_market, before the ownership test. So the counted ones among them are those with counted true. With active, pending, sold or off_market, the block's status, rentals included, and with none, a holding with no listing record at all. The API keeps a row when any of the values matches. Rows that are not holdings (flips, wholesales, resold purchases) carry no listing and never match.
on_market, active, pending, sold, off_market, none The value investorlift keeps only deals whose closing deed closed an Investorlift listing. Those rows carry a wholesale_listing block: the houses this investor bought off Investorlift. The API applies the filter before it cuts the page. It answers 422 wholesale_unavailable when the market has no wholesale tables (meta.coverage[].wholesale_as_of null). Default: every row.
investorlift Keep only holdings whose short-term rental status matches one of the values (comma list or repeated key): LICENSED, PENDING or EXPIRED, the block's status. The API serves NONE on rows, but NONE is not filterable in this release (400 for the value). The API applies the filter before it cuts the page. Rows that are not holdings never match. 422 str_unavailable when a market in play has no short-term rental tables (meta.coverage[].str_as_of null). Default: every row.
1The short-term rental status a holding must carry for the API to keep the row: the block's status. LICENSED means an active licence or permit, PENDING an application on file with none active, and EXPIRED every record on the parcel inactive. The API keeps a row when any of the values matches. Rows that are not holdings (flips, wholesales, resold purchases) carry no block and never match. The API serves NONE on rows, but NONE is not filterable in this release (400 for the value).
LICENSED, PENDING, EXPIRED With true, keep only hold rows whose licence is a business use attributed to the current owner: the UI's short-term rental deal type. With false, keep only hold rows whose licence is not one: a person's own home with a casita permit, or a prior owner's permit. Without str_status the test covers LICENSED and PENDING records, the only ones where business_use is true. Combine it with str_status to widen or narrow. The API applies the filter before it cuts the page. Rows that are not holdings never match. 422 str_unavailable when a market in play has no short-term rental tables (meta.coverage[].str_as_of null). Default: every row.
true, false The values date_desc (the default) and date_asc sort on the purchase date for role=buyer. For role=seller and role=any they sort on the resale date, or on the purchase date for a deal with no resale. Null dates come last in both directions. The values price_desc and price_asc sort on the bought price, nulls last.
date_desc, date_asc, price_desc, price_asc Page size, 1-500 (default 500).
1 <= x <= 500Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1.
1 - 4096Response
The investor's deals across the whole market, one page, in the requested sort.
The investor's deals across the whole market, one page, in the requested sort.
The rows of this page.
Show child attributes
Show child attributes
Pagination: the page size, the rows returned and the cursor for the next page. Paged lists carry no total. The summary block does.
Show child attributes
Show child attributes
Response metadata: when the API produced it, which markets it covers, and how fresh they are.
Show child attributes
Show child attributes
Was this page helpful?