> ## Documentation Index
> Fetch the complete documentation index at: https://developers.investorlift.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Who lends in a ZIP, on the lean set?

> The lenders of record of one ZIP ranked, one lender with its places and its spellings, and its loans, on the lean routes of /v3.

<Note>
  **Early access.** The API serves every early-access route and tool to every key at 0 credits during the beta.
  Investorlift can restrict them later. Investorlift aims to give 30 days of email notice before it restricts them
  ([Developer Agreement 12.3](/guides/terms)), and the [changelog](/changelog) records the change.
</Note>

The lean set answers the lender questions of [Who lends to flippers in a ZIP?](/guides/walkthroughs/lenders-in-a-zip) on
`/v3`, from the county records of one state. A lender is an organization of the set, with the id of `GET /v3/orgs/{id}`.
Its loans are a dated slice of the county records, and `meta.build.states[].financing_as_of` gives the date. Every window
anchors on that date. A lender name is served when it reads as a company. The name of a person as a lender arrives empty
on this host.

## Who lends in one ZIP

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { GodMode } from "@investorlift/godmode";

  const gm = new GodMode(); // reads GM_API_KEY
  const body = await gm.lean.lenders({ state: "AZ", zip: "85251", limit: 3 });
  ```

  ```bash curl theme={null}
  curl "https://api.investorlift.com/v3/lenders?state=AZ&zip=85251&limit=3" \
    -H "Authorization: Bearer $GM_API_KEY"
  ```

  ```javascript Node.js theme={null}
  const params = new URLSearchParams({ state: "AZ", zip: "85251", limit: "3" });
  const res = await fetch(`https://api.investorlift.com/v3/lenders?${params}`, {
    headers: { Authorization: `Bearer ${process.env.GM_API_KEY}` },
  });
  if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
  const body = await res.json();
  ```

  ```python Python theme={null}
  import os

  import requests

  r = requests.get(
      "https://api.investorlift.com/v3/lenders",
      params={"state": "AZ", "zip": "85251", "limit": 3},
      headers={"Authorization": f"Bearer {os.environ['GM_API_KEY']}"},
      timeout=30,
  )
  r.raise_for_status()
  body = r.json()
  ```

  ```bash CLI theme={null}
  investorlift lean lenders --state AZ --zip 85251 --limit 3
  ```
</CodeGroup>

[`GET /v3/lenders`](/api-reference/endpoints/lean-list-lean-lenders) ranks the lenders of record of a state, a county or
a ZIP over a period. The default period is the 24 months before the date of the slice. Each row carries the lender, its loans there
(`n`), its volume, its first liens and its share of every lender's loans in the place. `rank` is the position under the
sort, and it continues across pages. `tags` keeps the banks or the hard-money lenders, and `min_n` cuts the long tail.
A ZIP outside the place index answers 404, never an empty page.

The recorded answer, the three lenders with the most loans in the ZIP:

```json theme={null}
{
  "data": [
    {
      "rank": 1,
      "lender": {
        "org_id": "AZ:F00471426",
        "org_name": "M&T Equipment Finance Corporation",
        "from_registry": true,
        "tags": []
      },
      "n": 210,
      "volume": 0,
      "n_first_lien": 0,
      "share": 0.089475927,
      "last_recorded_on": "2024-08-02",
      "as_of": "2026-06-25"
    }
  ],
  "page": {
    "next_cursor": "eyJ2IjoxLCJydW4iOiJ8bGVhbi1BWjE3OTE0Nzc4OTMtQ0ExNzkwMjE1MTkwLUZMMTc5MDI2MjY4Mi1UWDE3OTAyNDgyMTMiLCJxIjoiNzAxMTczMDBlYTg1ZGRiZDY1MzEyZGIxZGRkMTI0M2FhMjU1MWJlZDlkZThmYmI5NGM1MWM1NWM3ZjRkMmNlMyIsImsiOls4MywxNjExMzc2NiwiQVo6MDIzMzI1NDQiXX0",
    "limit": 3,
    "returned": 3
  }
}
```

## One lender, its places and its spellings

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { GodMode } from "@investorlift/godmode";

  const gm = new GodMode(); // reads GM_API_KEY
  const body = await gm.lean.lender("AZ:23078262");
  ```

  ```bash curl theme={null}
  curl "https://api.investorlift.com/v3/lenders/AZ:23078262" \
    -H "Authorization: Bearer $GM_API_KEY"
  ```

  ```javascript Node.js theme={null}
  const res = await fetch("https://api.investorlift.com/v3/lenders/AZ:23078262", {
    headers: { Authorization: `Bearer ${process.env.GM_API_KEY}` },
  });
  if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
  const body = await res.json();
  ```

  ```python Python theme={null}
  import os

  import requests

  r = requests.get(
      "https://api.investorlift.com/v3/lenders/AZ:23078262",
      headers={"Authorization": f"Bearer {os.environ['GM_API_KEY']}"},
      timeout=30,
  )
  r.raise_for_status()
  body = r.json()
  ```

  ```bash CLI theme={null}
  investorlift lean lender AZ:23078262
  ```
</CodeGroup>

[`GET /v3/lenders/{id}`](/api-reference/endpoints/lean-get-lean-lender) serves one lender organization: its loans by
window and by rule, its open book and the quantiles of its amounts, rates and terms. The body adds its term shares, its
places, its rank in the state and the same key in the other served states. `names[]` lists its spellings on the county records, and
`by_county[]` and `by_zip[]` give its loans in each place with its rank there. The same id opens the organization on
`GET /v3/orgs/{id}`, whose `lending` block is this body without the spellings and the places.

```json theme={null}
{
  "data": {
    "id": "AZ:23078262",
    "kind": "registry",
    "display_name": "ROCKET MORTGAGE, LLC",
    "tags": [
      "institution"
    ],
    "counts": {
      "n_loans_24m": 24565,
      "volume_24m": 7184725266
    },
    "open": {
      "n_liens": 101487
    },
    "terms": {
      "amount_p50": 260000
    },
    "rank_in_state": {
      "loans_24m": 1,
      "volume_24m": 2
    },
    "places": {
      "n_zips_24m": 314,
      "n_counties_24m": 15,
      "top_zip5_24m": "85383",
      "top_zip_share_24m": 0.01652758
    },
    "by_zip": [
      {
        "key": "85383",
        "n_24m": 406,
        "n_all": 3631,
        "volume_24m": 140677899,
        "share_of_lender": 0.01652758,
        "rank_in_place": 1,
        "share_of_place": 0.06468058
      }
    ]
  }
}
```

## Its loans in the ZIP

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { GodMode } from "@investorlift/godmode";

  const gm = new GodMode(); // reads GM_API_KEY
  const body = await gm.lean.lenderLoans("AZ:23078262", { zip: "85251", limit: 3 });
  ```

  ```bash curl theme={null}
  curl "https://api.investorlift.com/v3/lenders/AZ:23078262/loans?zip=85251&limit=3" \
    -H "Authorization: Bearer $GM_API_KEY"
  ```

  ```javascript Node.js theme={null}
  const params = new URLSearchParams({ zip: "85251", limit: "3" });
  const res = await fetch(`https://api.investorlift.com/v3/lenders/AZ:23078262/loans?${params}`, {
    headers: { Authorization: `Bearer ${process.env.GM_API_KEY}` },
  });
  if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
  const body = await res.json();
  ```

  ```python Python theme={null}
  import os

  import requests

  r = requests.get(
      "https://api.investorlift.com/v3/lenders/AZ:23078262/loans",
      params={"zip": "85251", "limit": 3},
      headers={"Authorization": f"Bearer {os.environ['GM_API_KEY']}"},
      timeout=30,
  )
  r.raise_for_status()
  body = r.json()
  ```

  ```bash CLI theme={null}
  investorlift lean lender-loans AZ:23078262 --zip 85251 --limit 3
  ```
</CodeGroup>

[`GET /v3/lenders/{id}/loans`](/api-reference/endpoints/lean-list-lean-lender-loans) lists the loans of the lender,
newest recording first, one keyset page. Each row is an open position or a recorded instrument with its amounts, its
dates, its terms, its labels and its parcel. `zip`, `product`, `term_band`, `label` and the two amount bounds cut the
list. A property listed on the Investorlift marketplace now serves no street line and an approximate point.

```json theme={null}
{
  "data": [
    {
      "loan_key": "8d6f30a4daf06847956e2978dac68e62",
      "source": "open",
      "lender": {
        "org_id": "AZ:23078262",
        "org_name": "ROCKET MORTGAGE, LLC",
        "from_registry": true,
        "tags": [
          "institution"
        ]
      },
      "recording_date": "2026-05-22",
      "loan_amount": 444150,
      "term_band": "ge_360m",
      "product": "other",
      "parcel": {
        "line": "6278 E Catalina Dr",
        "zip": "85251"
      }
    }
  ],
  "page": {
    "next_cursor": "eyJ2IjoxLCJydW4iOiJ8bGVhbi1BWjE3OTE0ODcyNTAtQ0ExNzkwMjE1MTkwLUZMMTc5MDI2MjY4Mi1UWDE3OTAyNDgyMTMiLCJxIjoiMjlkZmYxNGVjMDdhNzZlYmZhZjY2NGJiODczZjRlOTY1NzBkMjc3MGQwYThkNWMxMDQ5OTU5MTU4NDA3M2NmOSIsImsiOlsiMjAyNi0wNS0xOCIsIjI1NWY1ODMyZGEwY2ExNWQ0YTEwOWFmMDE2ZjFkMGZhIiwib3BlbiIsMV19",
    "limit": 3,
    "returned": 3
  }
}
```

The financing of one parcel is on [`GET /v3/properties/{id}`](/api-reference/endpoints/lean-get-lean-property) under
`financing`. The block holds the open positions, the recorded instruments, the involuntary liens, the valuation and the
equity, at the date of the slice. The search finds a lender by a spelling of its loans with `kind=lender`.

## Its borrowers

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { GodMode } from "@investorlift/godmode";

  const gm = new GodMode(); // reads GM_API_KEY
  const body = await gm.lean.lenderBorrowers("AZ:23078262", { limit: 3 });
  ```

  ```bash curl theme={null}
  curl "https://api.investorlift.com/v3/lenders/AZ:23078262/borrowers?limit=3" \
    -H "Authorization: Bearer $GM_API_KEY"
  ```

  ```javascript Node.js theme={null}
  const params = new URLSearchParams({ limit: "3" });
  const res = await fetch(`https://api.investorlift.com/v3/lenders/AZ:23078262/borrowers?${params}`, {
    headers: { Authorization: `Bearer ${process.env.GM_API_KEY}` },
  });
  if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
  const body = await res.json();
  ```

  ```python Python theme={null}
  import os

  import requests

  r = requests.get(
      "https://api.investorlift.com/v3/lenders/AZ:23078262/borrowers",
      params={"limit": 3},
      headers={"Authorization": f"Bearer {os.environ['GM_API_KEY']}"},
      timeout=30,
  )
  r.raise_for_status()
  body = r.json()
  ```

  ```bash CLI theme={null}
  investorlift lean lender-borrowers AZ:23078262 --limit 3
  ```
</CodeGroup>

[`GET /v3/lenders/{id}/borrowers`](/api-reference/endpoints/lean-list-lean-lender-borrowers) lists the borrowers of
the lender as organizations, the most loans first, one keyset page. Each row is a counterparty with the relation
`lent_to`: the organization, its tags, the loans between the two and the sum of their amounts. `q` matches a word of
the name, `registered_only` keeps the organizations of the business registry, and `period=24m` keeps the borrowers of
the 24 months. This host does not name a borrower that reads as a person. The route answers 422 while the state has
no loan links.

## Where to go next

<CardGroup cols={2}>
  <Card title="When a call fails" icon="triangle-exclamation" href="/guides/walkthroughs/when-it-fails">
    The five failures a developer meets first: the body, the recovery and what to send to support.
  </Card>

  <Card title="GET /v3/lenders" icon="code" href="/api-reference/endpoints/lean-list-lean-lenders">
    The bucket, the period, the filters, the sorts and every field of a ranking row, generated from the code.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.