curl --request GET \
--url https://api.investorlift.com/v1/lenders \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.investorlift.com/v1/lenders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.investorlift.com/v1/lenders"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"rank": 1,
"lender": {
"id": "len_b959a8d2abef",
"name": "CAPITAL FUND I LLC",
"lender_class": "NONBANK",
"is_hard_money": true
},
"n": 816,
"volume": 436204000,
"n_unpriced": 0,
"share": 0.003146,
"n_first_lien": 515,
"n_heloc": 15,
"n_open_liens": 933,
"open_balance": 307985588,
"n_parcels": 3325,
"median_amount": 313500,
"last_recorded_on": "2026-06-11",
"n_purchase_money": 406,
"n_investor": 506,
"n_deals_financed": 222,
"share_by_volume": 0.004472,
"n_borrowers": 509,
"in_geometry": null,
"as_of": "2026-06-25",
"dated": true
},
{
"rank": 2,
"lender": {
"id": "len_86e697f7effc",
"name": "EZ HOMES INC",
"lender_class": "NONBANK",
"is_hard_money": true
},
"n": 315,
"volume": 83365730,
"n_unpriced": 0,
"share": 0.001214,
"n_first_lien": 227,
"n_heloc": 0,
"n_open_liens": 405,
"open_balance": 72385580,
"n_parcels": 848,
"median_amount": 220000,
"last_recorded_on": "2026-06-11",
"n_purchase_money": 148,
"n_investor": 119,
"n_deals_financed": 78,
"share_by_volume": 0.000855,
"n_borrowers": 277,
"in_geometry": null,
"as_of": "2026-06-25",
"dated": true
}
],
"page": {
"next_cursor": "eyJ2IjoxLCJydW4iOiIxNzg5NTMzMTgwIiwicSI6IjExMGJjNjdiMjJhNGY0YzdiZWUzMDM0MTc3YzI5MTc5YzM3YTIxMTg2YmI1ZDQ3MTEwNTUxMjRhYTRiNjIxZjUiLCJrIjpbMzE1LCJsZW5fODZlNjk3ZjdlZmZjIl19",
"limit": 2,
"returned": 2
},
"meta": {
"generated_at": "2026-09-15T12: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": 1789533180,
"loaded_at": "2026-09-16T04:32:59.760Z",
"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": null,
"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
},
{
"jurisdiction": "MARICOPA COUNTY",
"n_permits": 217628,
"last_issue_date": "2027-10-17",
"windows_measured": null
},
{
"jurisdiction": "SCOTTSDALE",
"n_permits": 182189,
"last_issue_date": "2024-11-05",
"windows_measured": null
},
{
"jurisdiction": "GOODYEAR",
"n_permits": 173391,
"last_issue_date": "2025-04-02",
"windows_measured": null
},
{
"jurisdiction": "GILBERT",
"n_permits": 160199,
"last_issue_date": "2025-04-07",
"windows_measured": null
},
{
"jurisdiction": "TEMPE",
"n_permits": 102909,
"last_issue_date": "2025-12-29",
"windows_measured": null
},
{
"jurisdiction": "BUCKEYE",
"n_permits": 94951,
"last_issue_date": "2026-03-18",
"windows_measured": null
},
{
"jurisdiction": "CHANDLER",
"n_permits": 94942,
"last_issue_date": "2026-05-29",
"windows_measured": null
},
{
"jurisdiction": "PEORIA",
"n_permits": 75435,
"last_issue_date": "2026-05-07",
"windows_measured": null
},
{
"jurisdiction": "QUEEN CREEK",
"n_permits": 59103,
"last_issue_date": "2026-04-24",
"windows_measured": null
},
{
"jurisdiction": null,
"n_permits": 43845,
"last_issue_date": "2026-06-05",
"windows_measured": null
},
{
"jurisdiction": "PARADISE VALLEY",
"n_permits": 23135,
"last_issue_date": "2026-04-24",
"windows_measured": null
},
{
"jurisdiction": "AVONDALE",
"n_permits": 7961,
"last_issue_date": "2026-04-24",
"windows_measured": null
},
{
"jurisdiction": "MARICOPA",
"n_permits": 5732,
"last_issue_date": "2026-12-12",
"windows_measured": null
},
{
"jurisdiction": "YOUNGTOWN",
"n_permits": 3979,
"last_issue_date": "2026-06-05",
"windows_measured": null
},
{
"jurisdiction": "EL MIRAGE",
"n_permits": 1971,
"last_issue_date": "2026-04-13",
"windows_measured": null
},
{
"jurisdiction": "YUMA",
"n_permits": 1909,
"last_issue_date": "2009-01-15",
"windows_measured": null
},
{
"jurisdiction": "FOUNTAIN HILLS",
"n_permits": 767,
"last_issue_date": "2026-05-21",
"windows_measured": null
},
{
"jurisdiction": "ELMIRAGE",
"n_permits": 521,
"last_issue_date": "2025-08-08",
"windows_measured": null
},
{
"jurisdiction": "SUN CITY",
"n_permits": 133,
"last_issue_date": null,
"windows_measured": null
},
{
"jurisdiction": "COCONINO COUNTY",
"n_permits": 63,
"last_issue_date": "2024-02-16",
"windows_measured": null
},
{
"jurisdiction": "PINAL COUNTY",
"n_permits": 54,
"last_issue_date": "2022-07-21",
"windows_measured": null
},
{
"jurisdiction": "APACHE JUNCTION",
"n_permits": 47,
"last_issue_date": "2025-05-13",
"windows_measured": null
},
{
"jurisdiction": "PIMA COUNTY",
"n_permits": 21,
"last_issue_date": "2016-10-24",
"windows_measured": null
},
{
"jurisdiction": "WITTMANN",
"n_permits": 8,
"last_issue_date": "2026-02-03",
"windows_measured": null
},
{
"jurisdiction": "JACKSON COUNTY",
"n_permits": 7,
"last_issue_date": null,
"windows_measured": null
},
{
"jurisdiction": "LEWISVILLE",
"n_permits": 5,
"last_issue_date": "2024-02-07",
"windows_measured": null
},
{
"jurisdiction": "MONTGOMERY",
"n_permits": 4,
"last_issue_date": "2023-06-05",
"windows_measured": null
},
{
"jurisdiction": "RIVERSIDE COUNTY",
"n_permits": 3,
"last_issue_date": "2026-06-20",
"windows_measured": null
},
{
"jurisdiction": "LITCHFIELD PARK",
"n_permits": 3,
"last_issue_date": null,
"windows_measured": null
},
{
"jurisdiction": "APACHE JUNCTION - SEWER UTILITY",
"n_permits": 2,
"last_issue_date": "2026-05-07",
"windows_measured": null
},
{
"jurisdiction": "FORT WORTH",
"n_permits": 2,
"last_issue_date": null,
"windows_measured": null
},
{
"jurisdiction": "YAVAPAI COUNTY",
"n_permits": 1,
"last_issue_date": null,
"windows_measured": null
},
{
"jurisdiction": "LOCUST GROVE",
"n_permits": 1,
"last_issue_date": null,
"windows_measured": null
},
{
"jurisdiction": "ORO VALLEY",
"n_permits": 1,
"last_issue_date": null,
"windows_measured": null
},
{
"jurisdiction": "TANGIPAHOA",
"n_permits": 1,
"last_issue_date": "2019-05-28",
"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
}
}
],
"dated": [
{
"block": "financing",
"as_of": "2026-06-25",
"reason": "dataset not in current delivery"
},
{
"block": "lenders",
"as_of": "2026-06-25",
"reason": "dataset not in current delivery"
}
],
"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"
}
}Rank the lenders of a market or a place
Who lends most, market-wide, inside one ZIP, city or county, or around a point, over the window you name.
curl --request GET \
--url https://api.investorlift.com/v1/lenders \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.investorlift.com/v1/lenders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.investorlift.com/v1/lenders"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"rank": 1,
"lender": {
"id": "len_b959a8d2abef",
"name": "CAPITAL FUND I LLC",
"lender_class": "NONBANK",
"is_hard_money": true
},
"n": 816,
"volume": 436204000,
"n_unpriced": 0,
"share": 0.003146,
"n_first_lien": 515,
"n_heloc": 15,
"n_open_liens": 933,
"open_balance": 307985588,
"n_parcels": 3325,
"median_amount": 313500,
"last_recorded_on": "2026-06-11",
"n_purchase_money": 406,
"n_investor": 506,
"n_deals_financed": 222,
"share_by_volume": 0.004472,
"n_borrowers": 509,
"in_geometry": null,
"as_of": "2026-06-25",
"dated": true
},
{
"rank": 2,
"lender": {
"id": "len_86e697f7effc",
"name": "EZ HOMES INC",
"lender_class": "NONBANK",
"is_hard_money": true
},
"n": 315,
"volume": 83365730,
"n_unpriced": 0,
"share": 0.001214,
"n_first_lien": 227,
"n_heloc": 0,
"n_open_liens": 405,
"open_balance": 72385580,
"n_parcels": 848,
"median_amount": 220000,
"last_recorded_on": "2026-06-11",
"n_purchase_money": 148,
"n_investor": 119,
"n_deals_financed": 78,
"share_by_volume": 0.000855,
"n_borrowers": 277,
"in_geometry": null,
"as_of": "2026-06-25",
"dated": true
}
],
"page": {
"next_cursor": "eyJ2IjoxLCJydW4iOiIxNzg5NTMzMTgwIiwicSI6IjExMGJjNjdiMjJhNGY0YzdiZWUzMDM0MTc3YzI5MTc5YzM3YTIxMTg2YmI1ZDQ3MTEwNTUxMjRhYTRiNjIxZjUiLCJrIjpbMzE1LCJsZW5fODZlNjk3ZjdlZmZjIl19",
"limit": 2,
"returned": 2
},
"meta": {
"generated_at": "2026-09-15T12: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": 1789533180,
"loaded_at": "2026-09-16T04:32:59.760Z",
"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": null,
"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
},
{
"jurisdiction": "MARICOPA COUNTY",
"n_permits": 217628,
"last_issue_date": "2027-10-17",
"windows_measured": null
},
{
"jurisdiction": "SCOTTSDALE",
"n_permits": 182189,
"last_issue_date": "2024-11-05",
"windows_measured": null
},
{
"jurisdiction": "GOODYEAR",
"n_permits": 173391,
"last_issue_date": "2025-04-02",
"windows_measured": null
},
{
"jurisdiction": "GILBERT",
"n_permits": 160199,
"last_issue_date": "2025-04-07",
"windows_measured": null
},
{
"jurisdiction": "TEMPE",
"n_permits": 102909,
"last_issue_date": "2025-12-29",
"windows_measured": null
},
{
"jurisdiction": "BUCKEYE",
"n_permits": 94951,
"last_issue_date": "2026-03-18",
"windows_measured": null
},
{
"jurisdiction": "CHANDLER",
"n_permits": 94942,
"last_issue_date": "2026-05-29",
"windows_measured": null
},
{
"jurisdiction": "PEORIA",
"n_permits": 75435,
"last_issue_date": "2026-05-07",
"windows_measured": null
},
{
"jurisdiction": "QUEEN CREEK",
"n_permits": 59103,
"last_issue_date": "2026-04-24",
"windows_measured": null
},
{
"jurisdiction": null,
"n_permits": 43845,
"last_issue_date": "2026-06-05",
"windows_measured": null
},
{
"jurisdiction": "PARADISE VALLEY",
"n_permits": 23135,
"last_issue_date": "2026-04-24",
"windows_measured": null
},
{
"jurisdiction": "AVONDALE",
"n_permits": 7961,
"last_issue_date": "2026-04-24",
"windows_measured": null
},
{
"jurisdiction": "MARICOPA",
"n_permits": 5732,
"last_issue_date": "2026-12-12",
"windows_measured": null
},
{
"jurisdiction": "YOUNGTOWN",
"n_permits": 3979,
"last_issue_date": "2026-06-05",
"windows_measured": null
},
{
"jurisdiction": "EL MIRAGE",
"n_permits": 1971,
"last_issue_date": "2026-04-13",
"windows_measured": null
},
{
"jurisdiction": "YUMA",
"n_permits": 1909,
"last_issue_date": "2009-01-15",
"windows_measured": null
},
{
"jurisdiction": "FOUNTAIN HILLS",
"n_permits": 767,
"last_issue_date": "2026-05-21",
"windows_measured": null
},
{
"jurisdiction": "ELMIRAGE",
"n_permits": 521,
"last_issue_date": "2025-08-08",
"windows_measured": null
},
{
"jurisdiction": "SUN CITY",
"n_permits": 133,
"last_issue_date": null,
"windows_measured": null
},
{
"jurisdiction": "COCONINO COUNTY",
"n_permits": 63,
"last_issue_date": "2024-02-16",
"windows_measured": null
},
{
"jurisdiction": "PINAL COUNTY",
"n_permits": 54,
"last_issue_date": "2022-07-21",
"windows_measured": null
},
{
"jurisdiction": "APACHE JUNCTION",
"n_permits": 47,
"last_issue_date": "2025-05-13",
"windows_measured": null
},
{
"jurisdiction": "PIMA COUNTY",
"n_permits": 21,
"last_issue_date": "2016-10-24",
"windows_measured": null
},
{
"jurisdiction": "WITTMANN",
"n_permits": 8,
"last_issue_date": "2026-02-03",
"windows_measured": null
},
{
"jurisdiction": "JACKSON COUNTY",
"n_permits": 7,
"last_issue_date": null,
"windows_measured": null
},
{
"jurisdiction": "LEWISVILLE",
"n_permits": 5,
"last_issue_date": "2024-02-07",
"windows_measured": null
},
{
"jurisdiction": "MONTGOMERY",
"n_permits": 4,
"last_issue_date": "2023-06-05",
"windows_measured": null
},
{
"jurisdiction": "RIVERSIDE COUNTY",
"n_permits": 3,
"last_issue_date": "2026-06-20",
"windows_measured": null
},
{
"jurisdiction": "LITCHFIELD PARK",
"n_permits": 3,
"last_issue_date": null,
"windows_measured": null
},
{
"jurisdiction": "APACHE JUNCTION - SEWER UTILITY",
"n_permits": 2,
"last_issue_date": "2026-05-07",
"windows_measured": null
},
{
"jurisdiction": "FORT WORTH",
"n_permits": 2,
"last_issue_date": null,
"windows_measured": null
},
{
"jurisdiction": "YAVAPAI COUNTY",
"n_permits": 1,
"last_issue_date": null,
"windows_measured": null
},
{
"jurisdiction": "LOCUST GROVE",
"n_permits": 1,
"last_issue_date": null,
"windows_measured": null
},
{
"jurisdiction": "ORO VALLEY",
"n_permits": 1,
"last_issue_date": null,
"windows_measured": null
},
{
"jurisdiction": "TANGIPAHOA",
"n_permits": 1,
"last_issue_date": "2019-05-28",
"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
}
}
],
"dated": [
{
"block": "financing",
"as_of": "2026-06-25",
"reason": "dataset not in current delivery"
},
{
"block": "lenders",
"as_of": "2026-06-25",
"reason": "dataset not in current delivery"
}
],
"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"
}
}Use it when
The lender leaderboard: who funds deals here, which hard-money lenders are active in 85032, who writes construction loans in Scottsdale. For one lender’s standing, use its profile. Itsrankings block places the lender overall, within its class and among hard-money lenders. For the loans behind a
row, use GET /v1/lenders/{id}/loans.
How it works
- One market at a time. The list ranks inside one market. If the API has several loaded markets and you name
none, it answers
400 market_requiredand lists them. - One place at most.
zip,cityorcountynarrows the list to a place. The API reads the rows from a table pre-aggregated per lender and place. So the counts inside a ZIP are the lender’s loans there, not its market-wide book. The place must be inside the counties the registry covers, listed inmeta.coverage[].lenders.countiesand on Counties, cities and ZIP codes. Outside them the API answers422 outside_coverageand names the covered counties, never an empty page. - Or around a point (since 0.19.0). A geometry ranks the lenders active in it instead:
latandlngwithradius_miles, abbox, orproperty_id. The API resolves the geometry to the H3 res-8 cells whose centre lies inside it, about a third of a square mile each. So its edge is a hex boundary, not the circle. The row’sin_geometrysays how many cells the geometry became and how many of them carry the lender. - Under a geometry the API sums
n,volume, the first-lien and product counts,n_purchase_money,n_investorandlast_recorded_onover those cells.share,share_by_volume,n_unpriced,n_deals_financedandn_borrowersare null, not measured per geometry. Every sort orders the aggregate in memory. - A geometry beside
zip,cityorcountyis400 validation_error(codegeography_conflict). A point outside every loaded market’s tolerance is422 outside_coverage. A point in a market other thanmarket=is a400 validation_error(codegeometry_market). meta.geometryechoes the shape you asked for, with the defaults filled. Aproperty_idechoes as aradiusof the default around the parcel. The cells the shape became are the row’sin_geometry. Azipor acityechoes as aplace. The API does not echo acounty. See the envelope.- The window.
period(since 0.19.0) takes24m(the default),12m,all(every dated instrument), a calendar yearYYYYor a monthYYYY-MM. The default is the 24 months ending onas_of. The year runs from 2002 to the slice year, and the month is one of the 36 ending on the slice month. - Inside a place every window works. Market-wide only
24mor a monthYYYY-MMworks. The market-wide month rows are the profile’sby_monthbuckets, and the registry has no market-wide rows for12m,allor a year. Around a point only24m,12mandallwork, because the registry keeps the cells at those three. - Any other value is
400 validation_error, codeperiod_not_served, and the message names the rule. Every windowed count on the row follows the window. - The count.
nis every instrument of any kind recorded in the window, counted once across the open-lien and recorded-history tables.position=1counts first liens alone.product=counts the named products alone. The two together count the first liens of those products. The registry pre-aggregates the per-product first-lien counts, so the API no longer refuses the pair. purpose=purchase(since 0.16.0) counts the purchase-money instruments alone, those whose loan sits in the 45 days after a priced deed on the parcel. The API refuses it besidepositionorproduct, because the registry does not pre-aggregate that pair.min_nand the sort’s metric apply tonas selected.active_fromapplies to the lender’s newest recording in the place.- Investor lenders.
investor_only=true(since 0.16.0) keeps the lenders whose window is half or more loans to registered investors, whatever the name says. The profile carries this asis_investor_lender.hard_money=truekeeps the lenders that are hard money by name or, since the same release, by behaviour. - Who appears. The list hides persons (
INDIVIDUAL,PRIVATE) andGOVERNMENTlenders unless you setinclude_persons=trueorinclude_government=true.hard_money=truekeeps the hard-money lenders andfalsekeeps the rest.lender_class=narrows within the lenders that appear. rankandshareare the row’s, not the profile’s. The section Read a row says how the API measures each and why they differ fromrankings.rank_24m. Since 0.19.0 the row also carriesshare_by_volume, the lender’s volume over every lender’s in the same window and place. It also carriesn_borrowers, its borrowers in the window, market-wide or inside the place.GET /v1/lenders/{id}/rankingsis the other way round: it lists every place one lender ranks in.- Sorts.
loans_desc(the default),volume_desc,open_liens_desc,open_balance_desc,last_recorded_descand, since 0.16.0,purchase_desc. That sort puts the most purchase-money loans in the window first, and the lenders without one last. The open-lien and open-balance sorts order by the lender’s market-wide book even inside a place.
Gotchas
- A
GOVERNMENTrow counts claims and insurance, not originations. HUD and the VA appear as lenders on the partial-claim seconds and insurance claims recorded under the agency’s name. - A bridge lender ranks below its activity. The history captures about one open loan in five, and it counts a short-term loan only while the loan is open. The bias is the same on every row, so compare hard-money lenders with each other.
- A
periodother than24m, a geometry andshare_by_volumeread the place rankings. On a registry built before them, the API answers422 lenders_unavailableand names the parameter. On such a registryshare_by_volumeis null on every row, andn_borrowersinside a place is null too. Market-wide it reads the borrower match, and the API serves it from 0.16.0. purpose,investor_onlyandsort=purchase_descread the deed link. On a registry built before it, the API answers422 lenders_unavailable. The counts they read are null on every row there.- Every row is dated (
meta.dated[]). Theas_ofis the slice date inmeta.coverage[].lenders.as_of. Withrequire_current=truethe API answers422 dated_refused. The API measures recency (last_recorded_on,active_from) againstmeta.coverage[].lenders.recordings_through, fourteen days beforeas_of. - For a market with no published lender registry, the API answers
422 lenders_unavailable. A cursor from another query or an older dataset is400 invalid_cursor.
Related
Who is this lender? ends with the hard-money lenders active in one ZIP and the ZIPs one lender leads. Rank one lender by place is this list inverted: every place one lender ranks in.Authorizations
API key from the developer console (starts with zpka_). Create one at https://developers.investorlift.com/get-a-key.
Query Parameters
Market code, for example phx. The loaded markets are in meta.coverage[]. The list ranks inside one market. When meta.coverage[] lists more than one market and you send none, the API answers 400 market_required and lists them in extra.markets. If the market has no published lender registry, the API answers 422 lenders_unavailable.
1 - 16The window the counts cover: 24m, the default, is the 24 months ending on the slice date. 12m is the 12 months ending on it, all is every dated instrument, and a calendar year YYYY runs from 2002 to the slice year. A month YYYY-MM is one of the 36 ending on the slice month, and any other value answers 400 validation_error with code period_not_served. Market-wide the list serves 24m and a month, and the other periods need a ZIP, city, county or geometry. A geometry serves the three windows alone.
^(12m|24m|all|\d{4}|\d{4}-(0[1-9]|1[0-2]))$Point latitude (with lng). With radius_miles it is the geometry. The API resolves the circle to the H3 res-8 cells whose centre lies inside it, so its edge is a hex boundary. Do not send it with zip, city or county (400 geography_conflict). On a registry built before the place rankings, the API answers 422 lenders_unavailable.
-90 <= x <= 90Point longitude (with lat).
-180 <= x <= 180Search radius in miles around the point or around the centre of the property_id parcel, 0.25 to 20 (default 2). Not allowed with bbox.
0.25 <= x <= 20Viewport as west,south,east,north (WGS84 degrees). West must be less than east, south less than north, and the diagonal at most 40 mi. It must intersect a loaded market's coverage bbox (422 outside_coverage otherwise). It can carry lat + lng (without radius_miles) as the reference point for distances and sort=distance.
Parcel geometry: search around the centre of that parcel, with radius_miles. Not allowed with lat, lng or bbox.
^prop_[0-9a-f]{32}$Keep only lenders of these classes (comma list or repeated key): BANK, NONBANK, PRIVATE, INDIVIDUAL, GOVERNMENT. It does not lift the two defaults below: INDIVIDUAL and PRIVATE still need include_persons=true, and GOVERNMENT needs include_government=true. For the hard-money sense of private lender, use hard_money=true, not lender_class=PRIVATE.
1How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body.
BANK, NONBANK, PRIVATE, INDIVIDUAL, GOVERNMENT true keeps only hard-money lenders (is_hard_money true). false keeps only the rest. Default: every lender. The registry flags a hard-money lender by name or brand, or by behaviour in a market with the deed link.
true, false true includes lenders whose class reads INDIVIDUAL or PRIVATE: a person's name, a trust, a seller carry-back. Default false hides them, the way investor lists hide institutional investors.
true, false true includes GOVERNMENT lenders: HUD, the VA, a housing authority. Their counts are insurance claims and partial-claim seconds recorded under the agency's name, not originations. Default false hides them.
true, false 1 counts first liens only: the instruments whose open lien position is 1 (n_first_lien). The API serves no other value. With product[] the row's n is the first liens of the named products, from precomputed counts.
1 <= x <= 1Count only instruments of these products (comma list or repeated key): CONSTRUCTION, HELOC, OTHER. The row's n is the sum of the named counts. With position=1 it is their first liens alone. The row's share is null (no per-product denominator).
1What the file says the loan is, read from its flags and loan type and never from the label. CONSTRUCTION: the construction flag or a "Building or Construction Loan" type. HELOC: the credit-line flag or a "Credit Line (Revolving)" type. OTHER: everything else, that is a purchase-money or refinance mortgage of any kind.
CONSTRUCTION, HELOC, OTHER purchase counts only the window's purchase-money instruments: purpose PURCHASE by the deed link. The deed link sets PURCHASE when it finds a priced deed on the parcel in the 45 days up to the recording. The row's n is n_purchase_money and share is null (no purchase-money denominator). The API serves no other value. Do not send it with position or product (400 validation_error, code not_precomputed). While the market's registry predates the deed link, the API answers 422 lenders_unavailable (meta.coverage[].lenders.purchase_measured false).
purchase true keeps only investor lenders by behaviour (is_investor_lender true). false keeps only the rest. Default: every lender. The flag is true when half or more of the window's instruments go to registered investors and the window holds 20 or more. While the market's registry predates the borrower match, the API answers 422 lenders_unavailable.
true, false Rank inside one 5-digit ZIP, from the pre-aggregated geography table. For a ZIP outside the covered counties (meta.coverage[].lenders.counties), the API answers 422 outside_coverage. Send at most one of zip, city or county.
^\d{5}$Rank inside one city, as the parcel table writes it ("SCOTTSDALE"). Case does not matter. For a city outside the covered counties, the API answers 422 outside_coverage. Send at most one of zip, city or county.
1 - 100Rank inside one county, a 5-digit FIPS such as 04013. For a county outside meta.coverage[].lenders.counties, the API answers 422 outside_coverage. Send at most one of zip, city or county.
^\d{5}$Row order of the lender list: loans_desc, the default, puts the most loans in the window first. With volume_desc, the largest loan total in the window comes first, and with open_liens_desc the most open lien positions at the slice date. With open_balance_desc, the largest open balance comes first. With last_recorded_desc, the newest recording comes first and undated lenders last. With purchase_desc, the most purchase-money loans in the window by the deed link come first, and lenders without a deed link last.
loans_desc, volume_desc, open_liens_desc, open_balance_desc, last_recorded_desc, purchase_desc Keep only lenders whose newest recording (last_recorded_on) is on or after this date, YYYY-MM-DD. If you name a geography, the API reads the newest recording inside it.
Keep only lenders whose n is at least this, default 1. The n is the count that position or product selects. The API never lists a lender with nothing in the window.
1 <= x <= 9007199254740991Page size, 1-500 (default 100).
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 - 4096true refuses the request with 422 dated_refused while the registry's source, the financing slice, is a dated snapshot. The default false serves it, and meta.dated[] carries the lenders and financing blocks.
true, false Response
The ranked lenders, one page in the requested sort.
The ranked lenders, 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?