> ## 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.

# Get one lender of the lean set

> Get one lender organization of the lean set with its places and its spellings.

This route serves the lean set under `/v3/lenders/{id}`. See [The lean dataset](/api-reference/lean) for the tier rules and the rule of a lender name.


## OpenAPI

````yaml GET /v3/lenders/{id}
openapi: 3.1.0
info:
  title: God Mode API
  version: 0.63.0
  description: >-
    You have a house to sell, usually a wholesale contract. You want **the
    investors who buy houses like this one, from county deed records**. This API
    reads those records for each loaded market and serves three things: deals,
    investors and a ranking. On every response, `meta.coverage[]` lists the
    markets and the area each covers.


    **Deals** are every investment purchase, flip, wholesale and current
    investor holding. **Investors** are the buyers behind them, grouped so that
    the LLCs of an operator and the person behind them count as one. **A
    ranking** says, for a given house, which investors are the best fit and why.


    The documentation site at https://developers.investorlift.com carries the
    guides, the walkthroughs, the error catalogue and the connection steps for
    MCP clients. https://developers.investorlift.com/llms.txt indexes the site
    for a model. This document is the machine-readable reference behind the API
    tab of the site.


    **Start here.** Ranked buyers for a house at 7522 E Cholla St, Scottsdale,
    under contract at $410,000 and in need of a major rehab:


    ```

    GET
    https://api.investorlift.com/v1/buyers/match?lat=33.476917&lng=-111.920385&radius_miles=2&subject_asking_price=410000&subject_condition=MAJOR_REHAB

    Authorization: Bearer zpka_...

    ```


    **Conventions.** Responses are `{ data, meta }`. Lists add `page` (an opaque
    cursor) and sometimes `summary`. A list parameter takes commas or repeated
    keys. Dates are YYYY-MM-DD. Ids carry a prefix: `deal_`, `prop_`, `inv_`,
    `agt_`, `wl_`, `wsr_`.


    Money is whole dollars. It is null, never 0, when the deed carries no price.
    Coordinates are WGS84. A location is a point and radius (`lat`, `lng`,
    `radius_miles`), a viewport (`bbox=west,south,east,north`) or a parcel
    (`property_id`).


    Every operation carries `x-credits`, its price in credits on the public
    tier. `charge` is null at 0 credits. Otherwise `kind` names the deal,
    investor or property (a parcel) that costs 1 credit when new to your
    account. `base` is the credits a call costs before them. `contract: true`
    marks a route sold by contract.


    Every operation also carries `x-raises`, the problem codes it can answer,
    sorted. Each problem response of the operation lists and shows the codes of
    its status alone. The list includes the codes the gateway answers on its
    own.


    This host does not serve the people behind an entity, mailing addresses,
    owner identity, mortgage borrowers or lien parties. It does not serve the
    names, phones, emails and licence numbers of listing agents. It serves the
    entities, the deals, the listings and the ranking.


    Errors are RFC 9457 problem+json with a `code` to switch on. The catalogue
    is https://developers.investorlift.com/problems.json and the Errors page of
    the site. The field `meta.coverage[].dataset_version` changes only when a
    refresh rebuilds the tables of a market. Use it in cache keys, or poll `GET
    /v1/dataset`.


    **MCP.** The API serves the same data to Model Context Protocol clients at
    `POST https://api.investorlift.com/mcp` with the same key: twenty-nine
    read-only tools, four resources, seven prompts. The MCP tab of the
    documentation site has the client setup. The file `mcp-manifest.json` beside
    this document lists the tools with their input schemas.


    Problem codes: 400 validation_error, 400 unknown_parameter, 400
    invalid_cursor, 400 geometry_required, 400 geometry_conflict, 400
    sort_requires_point, 400 invalid_id, 400 market_required, 401 unauthorized,
    403 quota_exceeded, 403 subscription_required, 403 payment_overdue, 403
    plan_limit, 404 not_found, 406 not_acceptable, 410 gone, 422
    outside_coverage, 422 ambiguous_apn, 422 ambiguous_address, 422
    csv_cap_exceeded, 422 listings_unavailable, 422 agents_unavailable, 422
    lenders_unavailable, 422 wholesale_unavailable, 422 str_unavailable, 422
    cash_sale_unavailable, 422 auction_unavailable, 422 parcels_unavailable, 422
    addresses_unavailable, 422 dated_refused, 422 history_unavailable, 400
    quicklist_unavailable, 400 dataset_unavailable, 429 rate_limited, 500
    internal_error, 503 database_unavailable, 503 pool_saturated, 503
    ledger_unavailable, 504 statement_timeout.
servers:
  - url: https://api.investorlift.com
security:
  - bearerAuth: []
tags:
  - name: listings
    x-group: MLS listings
    description: >-
      Sale listings and observed asking rents near a location, with dated facts
      and sample counts.
  - name: buyers
    x-group: Buyers
    description: >-
      Which investors are the best fit for this house: the API ranks nearby
      investors against a subject property and explains each score.
  - name: deals
    x-group: Deals
    description: >-
      What occurred around a location: deals for a table, cells for a map,
      summary stats, and one deal by id.
  - name: investors
    x-group: Investors
    description: >-
      Who the buyers are: investors active in an area, a full profile, and their
      metro-wide history. A search finds an investor by any name they buy under.
  - name: properties
    x-group: Properties
    description: >-
      One parcel: find it from a point or an APN, then read its facts, owner
      information, short-term rental licence and every deal on it. The owner
      information covers investor holdings and business-use short-term rentals.
  - name: agents
    x-group: Listing agents
    description: >-
      Who the listing agents are: find one by name or licence number, then read
      the profile and every listing of theirs. The profile holds the licence,
      the brokerages, the listing counts and the investors they belong to.
  - name: wholesale
    x-group: Investorlift listings
    description: >-
      Investorlift listings as wholesale transactions: the houses listed, and
      what the county deeds show for each (closed, to whom, which deed). Also
      the listing companies, and what each investor bought off Investorlift.
  - name: lenders
    x-group: Lenders
    description: >-
      Who lends on houses in a market: find a lender by any spelling of its
      name. Rank the lenders of a market, or of one ZIP, city or county. Read a
      profile: loans counted once across the open-lien and recorded-history
      tables, the open book, terms, geography and rankings. List every loan of
      one lender.
  - name: lean
    x-group: Lean set
    description: >-
      The lean set, under `/v3`: who buys houses, from the state business
      registry and the deeds. A name search, one organization with its entities
      and its persons, its purchases, one person with the agent block, the
      current listings near a place, and the coverage and the build of each
      served state.
  - name: dataset
    x-group: Dataset and coverage
    description: >-
      What the API serves, how fresh it is and which data is available where.
      The dataset version and the last deed date of every market, for cache keys
      and freshness checks. The coverage matrix, with a place lookup.
  - name: contract
    x-group: By contract
    description: >-
      Routes sold per jurisdiction under an order form and not reachable on a
      self-serve key. Ask through the console.
externalDocs:
  description: >-
    The documentation site: the guides, the walkthroughs, the error catalogue
    and the MCP connection steps.
  url: https://developers.investorlift.com
paths:
  /v3/lenders/{id}:
    get:
      tags:
        - lean
      summary: Get one lender
      description: >-
        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
        places, its spellings, its rank in the state and the same key in the
        other served states.


        The path takes the organization id of a ranking row, a loan row or a
        search hit. The loans are a dated slice:
        meta.build.states[].financing_as_of gives the date. This host does not
        serve a spelling that reads as a person.


        A call costs 0 credits.


        [The lean dataset of the Investorlift Data
        API](https://developers.investorlift.com/api-reference/lean).
      operationId: getLeanLender
      parameters:
        - schema:
            type: string
            pattern: ^[A-Z]{2}:(name:.{1,200}|[A-Z0-9-]{1,40})$
          in: path
          name: id
          required: true
          description: >-
            The lender organization: the organization id of the set, as a
            ranking row, a loan row or a search hit carries it.
      responses:
        '200':
          description: >-
            One lender. The loans are a dated slice.
            meta.build.states[].financing_as_of and recordings_through give the
            dates.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/LeanLender'
                  meta:
                    $ref: '#/components/schemas/LeanMeta'
                required:
                  - data
                  - meta
                additionalProperties: false
                description: >-
                  One lender. The loans are a dated slice.
                  meta.build.states[].financing_as_of and recordings_through
                  give the dates.
              example:
                data:
                  id: AZ:23078262
                  state: AZ
                  kind: registry
                  display_name: ROCKET MORTGAGE, LLC
                  from_registry: true
                  tags:
                    - institution
                  nmls:
                    id: 3030
                    url: >-
                      https://www.nmlsconsumeraccess.org/EntityDetails.aspx/COMPANY/3030
                  successor: null
                  counts:
                    n_loans: 213662
                    n_loans_12m: 14198
                    n_loans_24m: 24565
                    n_loans_36m: 32183
                    volume_24m: 7184725266
                    n_unpriced_24m: 3
                    n_amount_excluded_24m: 312
                    n_blanket_positions_24m: 363
                    n_parcels: 158215
                    n_in_history: 168625
                    n_in_history_24m: 11763
                    n_in_both_24m: 9365
                    n_first_lien_24m: 21593
                    n_heloc_24m: 55
                    n_construction_24m: 9
                    n_purchase_label_24m: 454
                    n_priced_24m: 24250
                    n_rated_24m: 23084
                    n_term_known_24m: 24530
                    n_loans_since_2015: 167718
                    n_before_2002: 12
                    n_undated: 0
                    first_recording_date: '2000-03-24'
                    last_recording_date: '2026-06-11'
                  open:
                    n_liens: 101487
                    n_first_liens: 85659
                    n_junior_liens: 15828
                    n_due_known: 101293
                    n_maturing_12m: 81
                    n_on_resold_parcels: 1139
                    n_open_24m: 22460
                    balance: 22805748889
                    n_balance_excluded: 1349
                  terms:
                    amount_window: 24m
                    amount_p25: 115000
                    amount_p50: 260000
                    amount_p75: 394798
                    rate_p50: 6.47
                    term_p50_months: 360
                    share_le_24m: 0.000154567
                    share_25_120m: 0.01317096
                    share_121_359m: 0.257325527
                    share_ge_360m: 0.729348946
                  places:
                    n_zips_24m: 314
                    n_counties_24m: 15
                    top_zip5_24m: '85383'
                    top_zip_share_24m: 0.01652758
                  rank_in_state:
                    loans_24m: 1
                    volume_24m: 2
                  deals:
                    n_deals: 33
                    first_deal_date: '2022-09-29'
                    last_deal_date: '2026-09-01'
                  is_active_12m: true
                  has_open_book: true
                  borrowers:
                    n_borrowers: 257136
                    n_borrowers_24m: 36638
                    n_borrower_orgs_24m: 36775
                    n_repeat_borrowers_24m: 1859
                  financed:
                    n_investor_loans: 8288
                    n_investor_loans_24m: 909
                    n_investor_orgs_24m: 997
                    n_investor_loans_since_2015: 6307
                    n_deals_financed: 716
                    n_deals_financed_24m: 155
                    n_auction_purchases_financed_24m: 0
                    n_marketplace_purchases_financed_24m: 0
                    n_purchase_24m: 7287
                    n_not_purchase_24m: 16209
                    n_purpose_unknown_24m: 1069
                    investor_lender_by_count: false
                  outcomes:
                    n_strict_all: 723
                    n_strict_24m: 156
                    n_captured_24m: 165
                    n_foreclosed: 0
                    n_foreclosed_24m: 0
                    n_resolved_by_resale: 52
                    n_refinanced: 77
                    n_open_outcome: 655
                    n_takebacks: 65
                    n_takebacks_24m: 21
                    median_months_to_payoff: 29.8
                    is_auction_lender: true
                  as_of: '2026-06-25'
                  recordings_through: '2026-06-11'
                  names:
                    - name: ROCKET MORTGAGE LLC
                      lender_key: ROCKET MORTGAGE
                      identity_basis: key
                      company_like: true
                      tags:
                        - institution
                      n_rows: 141959
                      n_rows_24m: 56651
                      first_recording_date: '2021-07-06'
                      last_recording_date: '2026-06-11'
                    - name: QUICKEN LOANS INC
                      lender_key: QUICKEN LOANS
                      identity_basis: dictionary
                      company_like: true
                      tags:
                        - institution
                      n_rows: 139184
                      n_rows_24m: 14
                      first_recording_date: '2000-03-24'
                      last_recording_date: '2026-02-04'
                    - name: QUICKEN LOANS LLC
                      lender_key: QUICKEN LOANS
                      identity_basis: dictionary
                      company_like: true
                      tags:
                        - institution
                      n_rows: 90690
                      n_rows_24m: 16
                      first_recording_date: '2020-04-06'
                      last_recording_date: '2026-02-04'
                    - name: QUICKEN LOANS
                      lender_key: QUICKEN LOANS
                      identity_basis: dictionary
                      company_like: true
                      tags:
                        - institution
                      n_rows: 12
                      n_rows_24m: 0
                      first_recording_date: '2016-03-02'
                      last_recording_date: '2017-01-04'
                    - name: ROCKET MORTGAGE
                      lender_key: ROCKET MORTGAGE
                      identity_basis: key
                      company_like: true
                      tags:
                        - institution
                      n_rows: 3
                      n_rows_24m: 2
                      first_recording_date: '2021-10-28'
                      last_recording_date: '2026-02-26'
                    - name: QUICKEN LOANS INC LLC
                      lender_key: QUICKEN LOANS
                      identity_basis: dictionary
                      company_like: true
                      tags:
                        - institution
                      n_rows: 1
                      n_rows_24m: 0
                      first_recording_date: '2020-05-13'
                      last_recording_date: '2020-05-13'
                    - name: QUICKEN  LOANS LLC
                      lender_key: QUICKEN LOANS
                      identity_basis: dictionary
                      company_like: true
                      tags:
                        - institution
                      n_rows: 1
                      n_rows_24m: 0
                      first_recording_date: '2020-08-31'
                      last_recording_date: '2020-08-31'
                    - name: ROCKET MORTGAGE INC
                      lender_key: ROCKET MORTGAGE
                      identity_basis: key
                      company_like: true
                      tags:
                        - institution
                      n_rows: 1
                      n_rows_24m: 0
                      first_recording_date: '2021-08-06'
                      last_recording_date: '2021-08-06'
                    - name: ROCKET MORTGAGE LC
                      lender_key: ROCKET MORTGAGE
                      identity_basis: key
                      company_like: true
                      tags:
                        - institution
                      n_rows: 1
                      n_rows_24m: 0
                      first_recording_date: '2021-08-20'
                      last_recording_date: '2021-08-20'
                  lender_key: ROCKET MORTGAGE
                  identity_bases:
                    - dictionary
                    - key
                  by_county:
                    - key: '04013'
                      n_24m: 15272
                      n_all: 141229
                      volume_24m: 4873032469
                      share_of_lender: 0.621697537
                      rank_in_place: 3
                      share_of_place: 0.058884313
                    - key: '04019'
                      n_24m: 2642
                      n_all: 24711
                      volume_24m: 591588813
                      share_of_lender: 0.107551394
                      rank_in_place: 2
                      share_of_place: 0.047080207
                    - key: '04021'
                      n_24m: 2128
                      n_all: 15986
                      volume_24m: 559956309
                      share_of_lender: 0.086627315
                      rank_in_place: 2
                      share_of_place: 0.051184606
                    - key: '04015'
                      n_24m: 1152
                      n_all: 8232
                      volume_24m: 234190825
                      share_of_lender: 0.04689599
                      rank_in_place: 1
                      share_of_place: 0.074688797
                    - key: '04025'
                      n_24m: 1056
                      n_all: 8048
                      volume_24m: 307552033
                      share_of_lender: 0.042987991
                      rank_in_place: 1
                      share_of_place: 0.062488905
                    - key: '04017'
                      n_24m: 465
                      n_all: 2365
                      volume_24m: 130009701
                      share_of_lender: 0.018929371
                      rank_in_place: 1
                      share_of_place: 0.08976834
                    - key: '04005'
                      n_24m: 452
                      n_all: 3312
                      volume_24m: 178282418
                      share_of_lender: 0.018400163
                      rank_in_place: 1
                      share_of_place: 0.064086204
                    - key: '04027'
                      n_24m: 420
                      n_all: 3249
                      volume_24m: 90108961
                      share_of_lender: 0.017097496
                      rank_in_place: 7
                      share_of_place: 0.035839235
                    - key: '04003'
                      n_24m: 386
                      n_all: 2849
                      volume_24m: 79883093
                      share_of_lender: 0.015713413
                      rank_in_place: 2
                      share_of_place: 0.060049782
                    - key: '04007'
                      n_24m: 215
                      n_all: 1321
                      volume_24m: 60365956
                      share_of_lender: 0.00875229
                      rank_in_place: 1
                      share_of_place: 0.069422021
                    - key: '04023'
                      n_24m: 131
                      n_all: 986
                      volume_24m: 25707854
                      share_of_lender: 0.005332791
                      rank_in_place: 2
                      share_of_place: 0.050696594
                    - key: '04009'
                      n_24m: 118
                      n_all: 659
                      volume_24m: 26094639
                      share_of_lender: 0.004803582
                      rank_in_place: 3
                      share_of_place: 0.058329214
                    - key: '04001'
                      n_24m: 83
                      n_all: 449
                      volume_24m: 19963054
                      share_of_lender: 0.003378791
                      rank_in_place: 2
                      share_of_place: 0.079884504
                    - key: '04012'
                      n_24m: 35
                      n_all: 208
                      volume_24m: 5854991
                      share_of_lender: 0.001424791
                      rank_in_place: 1
                      share_of_place: 0.04985755
                    - key: '04011'
                      n_24m: 10
                      n_all: 58
                      volume_24m: 2134150
                      share_of_lender: 0.000407083
                      rank_in_place: 3
                      share_of_place: 0.056497175
                  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
                    - key: '85142'
                      n_24m: 374
                      n_all: 2672
                      volume_24m: 146751059
                      share_of_lender: 0.015224913
                      rank_in_place: 3
                      share_of_place: 0.051908397
                    - key: '85138'
                      n_24m: 324
                      n_all: 2474
                      volume_24m: 75586544
                      share_of_lender: 0.013189497
                      rank_in_place: 2
                      share_of_place: 0.053307009
                    - key: '85338'
                      n_24m: 323
                      n_all: 2764
                      volume_24m: 83852243
                      share_of_lender: 0.013148789
                      rank_in_place: 5
                      share_of_place: 0.04775987
                    - key: '85212'
                      n_24m: 310
                      n_all: 2511
                      volume_24m: 96301237
                      share_of_lender: 0.012619581
                      rank_in_place: 4
                      share_of_place: 0.05908138
                    - key: '85326'
                      n_24m: 310
                      n_all: 2413
                      volume_24m: 79531939
                      share_of_lender: 0.012619581
                      rank_in_place: 5
                      share_of_place: 0.036926742
                    - key: '85140'
                      n_24m: 290
                      n_all: 2080
                      volume_24m: 91095321
                      share_of_lender: 0.011805414
                      rank_in_place: 5
                      share_of_place: 0.052045944
                    - key: '85308'
                      n_24m: 263
                      n_all: 2860
                      volume_24m: 72847384
                      share_of_lender: 0.010706289
                      rank_in_place: 2
                      share_of_place: 0.071740316
                    - key: '85143'
                      n_24m: 254
                      n_all: 2116
                      volume_24m: 69155113
                      share_of_lender: 0.010339915
                      rank_in_place: 5
                      share_of_place: 0.054978355
                    - key: '86401'
                      n_24m: 254
                      n_all: 1352
                      volume_24m: 39609789
                      share_of_lender: 0.010339915
                      rank_in_place: 1
                      share_of_place: 0.114517583
                    - key: '85396'
                      n_24m: 247
                      n_all: 1722
                      volume_24m: 69895754
                      share_of_lender: 0.010054956
                      rank_in_place: 2
                      share_of_place: 0.054000875
                    - key: '85379'
                      n_24m: 240
                      n_all: 2216
                      volume_24m: 59158462
                      share_of_lender: 0.009769998
                      rank_in_place: 1
                      share_of_place: 0.076849183
                    - key: '85298'
                      n_24m: 233
                      n_all: 2175
                      volume_24m: 90047433
                      share_of_lender: 0.00948504
                      rank_in_place: 2
                      share_of_place: 0.072450249
                    - key: '85122'
                      n_24m: 232
                      n_all: 1921
                      volume_24m: 50108482
                      share_of_lender: 0.009444331
                      rank_in_place: 2
                      share_of_place: 0.058029015
                    - key: '85086'
                      n_24m: 229
                      n_all: 2142
                      volume_24m: 81493243
                      share_of_lender: 0.009322206
                      rank_in_place: 1
                      share_of_place: 0.086382497
                    - key: '85249'
                      n_24m: 217
                      n_all: 2274
                      volume_24m: 73345212
                      share_of_lender: 0.008833706
                      rank_in_place: 2
                      share_of_place: 0.074853398
                    - key: '85225'
                      n_24m: 215
                      n_all: 2264
                      volume_24m: 58588873
                      share_of_lender: 0.00875229
                      rank_in_place: 3
                      share_of_place: 0.068297332
                    - key: '85345'
                      n_24m: 213
                      n_all: 2054
                      volume_24m: 47997740
                      share_of_lender: 0.008670873
                      rank_in_place: 2
                      share_of_place: 0.070646766
                    - key: '85340'
                      n_24m: 211
                      n_all: 1472
                      volume_24m: 73903551
                      share_of_lender: 0.008589457
                      rank_in_place: 4
                      share_of_place: 0.057587336
                    - key: '85032'
                      n_24m: 209
                      n_all: 2202
                      volume_24m: 63452483
                      share_of_lender: 0.00850804
                      rank_in_place: 2
                      share_of_place: 0.064526088
                    - key: '85296'
                      n_24m: 208
                      n_all: 2153
                      volume_24m: 68885031
                      share_of_lender: 0.008467332
                      rank_in_place: 2
                      share_of_place: 0.075335024
                    - key: '85295'
                      n_24m: 207
                      n_all: 2187
                      volume_24m: 65716426
                      share_of_lender: 0.008426623
                      rank_in_place: 2
                      share_of_place: 0.076666667
                    - key: '85339'
                      n_24m: 207
                      n_all: 1805
                      volume_24m: 61374429
                      share_of_lender: 0.008426623
                      rank_in_place: 5
                      share_of_place: 0.045514512
                    - key: '85388'
                      n_24m: 206
                      n_all: 1662
                      volume_24m: 62320474
                      share_of_lender: 0.008385915
                      rank_in_place: 2
                      share_of_place: 0.069759567
                    - key: '85351'
                      n_24m: 190
                      n_all: 1633
                      volume_24m: 32627618
                      share_of_lender: 0.007734582
                      rank_in_place: 2
                      share_of_place: 0.071752266
                    - key: '85041'
                      n_24m: 189
                      n_all: 1517
                      volume_24m: 49478612
                      share_of_lender: 0.007693873
                      rank_in_place: 4
                      share_of_place: 0.05633383
                    - key: '86314'
                      n_24m: 188
                      n_all: 1438
                      volume_24m: 45684773
                      share_of_lender: 0.007653165
                      rank_in_place: 1
                      share_of_place: 0.072839985
                    - key: '85207'
                      n_24m: 184
                      n_all: 2007
                      volume_24m: 59081167
                      share_of_lender: 0.007490332
                      rank_in_place: 3
                      share_of_place: 0.063492063
                    - key: '85901'
                      n_24m: 184
                      n_all: 764
                      volume_24m: 55298195
                      share_of_lender: 0.007490332
                      rank_in_place: 1
                      share_of_place: 0.102506964
                    - key: '85254'
                      n_24m: 182
                      n_all: 1678
                      volume_24m: 95304925
                      share_of_lender: 0.007408915
                      rank_in_place: 1
                      share_of_place: 0.059206246
                    - key: '85387'
                      n_24m: 180
                      n_all: 905
                      volume_24m: 60393646
                      share_of_lender: 0.007327498
                      rank_in_place: 9
                      share_of_place: 0.028823058
                    - key: '85286'
                      n_24m: 178
                      n_all: 2141
                      volume_24m: 62939345
                      share_of_lender: 0.007246082
                      rank_in_place: 1
                      share_of_place: 0.080144079
                    - key: '85209'
                      n_24m: 178
                      n_all: 1526
                      volume_24m: 46142534
                      share_of_lender: 0.007246082
                      rank_in_place: 1
                      share_of_place: 0.082179132
                    - key: '85382'
                      n_24m: 176
                      n_all: 1695
                      volume_24m: 45979702
                      share_of_lender: 0.007164665
                      rank_in_place: 2
                      share_of_place: 0.078257003
                    - key: '85395'
                      n_24m: 175
                      n_all: 1547
                      volume_24m: 53128593
                      share_of_lender: 0.007123957
                      rank_in_place: 3
                      share_of_place: 0.077467906
                    - key: '85233'
                      n_24m: 173
                      n_all: 1606
                      volume_24m: 54558878
                      share_of_lender: 0.00704254
                      rank_in_place: 1
                      share_of_place: 0.086284289
                    - key: '85374'
                      n_24m: 171
                      n_all: 1722
                      volume_24m: 36369577
                      share_of_lender: 0.006961124
                      rank_in_place: 2
                      share_of_place: 0.073802331
                    - key: '85375'
                      n_24m: 166
                      n_all: 1317
                      volume_24m: 37120680
                      share_of_lender: 0.006757582
                      rank_in_place: 1
                      share_of_place: 0.08320802
                    - key: '85224'
                      n_24m: 163
                      n_all: 1667
                      volume_24m: 48526894
                      share_of_lender: 0.006635457
                      rank_in_place: 3
                      share_of_place: 0.075567918
                    - key: '85248'
                      n_24m: 161
                      n_all: 1510
                      volume_24m: 49159080
                      share_of_lender: 0.00655404
                      rank_in_place: 2
                      share_of_place: 0.07946693
                    - key: '85255'
                      n_24m: 160
                      n_all: 1543
                      volume_24m: 125791446
                      share_of_lender: 0.006513332
                      rank_in_place: 1
                      share_of_place: 0.054200542
                    - key: '85022'
                      n_24m: 160
                      n_all: 1512
                      volume_24m: 50144048
                      share_of_lender: 0.006513332
                      rank_in_place: 3
                      share_of_place: 0.068610635
                    - key: '85323'
                      n_24m: 158
                      n_all: 1149
                      volume_24m: 38493746
                      share_of_lender: 0.006431915
                      rank_in_place: 4
                      share_of_place: 0.053943325
                    - key: '85234'
                      n_24m: 157
                      n_all: 1906
                      volume_24m: 51296094
                      share_of_lender: 0.006391207
                      rank_in_place: 3
                      share_of_place: 0.05862584
                    - key: '85144'
                      n_24m: 154
                      n_all: 1061
                      volume_24m: 50286043
                      share_of_lender: 0.006269082
                      rank_in_place: 3
                      share_of_place: 0.052238806
                    - key: '85205'
                      n_24m: 152
                      n_all: 1559
                      volume_24m: 36895341
                      share_of_lender: 0.006187665
                      rank_in_place: 3
                      share_of_place: 0.064243449
                    - key: '85641'
                      n_24m: 148
                      n_all: 1267
                      volume_24m: 38180222
                      share_of_lender: 0.006024832
                      rank_in_place: 4
                      share_of_place: 0.042081319
                    - key: '85226'
                      n_24m: 146
                      n_all: 1510
                      volume_24m: 39020725
                      share_of_lender: 0.005943415
                      rank_in_place: 1
                      share_of_place: 0.085330216
                    - key: '85331'
                      n_24m: 146
                      n_all: 1475
                      volume_24m: 63957859
                      share_of_lender: 0.005943415
                      rank_in_place: 1
                      share_of_place: 0.062607204
                    - key: '85297'
                      n_24m: 145
                      n_all: 1588
                      volume_24m: 45318669
                      share_of_lender: 0.005902707
                      rank_in_place: 2
                      share_of_place: 0.070285991
                  other_states: []
                meta:
                  generated_at: '2026-10-08T19:47:10.138Z'
                  coverage: []
                  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
                  build:
                    states:
                      - state: AZ
                        build_id: null
                        built_at: '2026-10-08T19:20:44.917Z'
                        published_at: '2026-10-08T19:28:12.158Z'
                        run_id: 1791487250
                        financing_as_of: '2026-06-25'
                        recordings_through: '2026-06-11'
                        financing_source: replay_887
                      - state: CA
                        build_id: null
                        built_at: '2026-09-24T01:58:30.453Z'
                        published_at: '2026-09-24T03:15:56.838Z'
                        run_id: 1790215190
                        financing_as_of: null
                        recordings_through: null
                        financing_source: null
                      - state: FL
                        build_id: 0e5fa9bc
                        built_at: '2026-09-24T15:08:23.506Z'
                        published_at: '2026-09-24T18:59:42.805Z'
                        run_id: 1790262682
                        financing_as_of: null
                        recordings_through: null
                        financing_source: null
                      - state: TX
                        build_id: 775ed08d
                        built_at: '2026-09-24T11:08:10.587Z'
                        published_at: '2026-09-24T13:16:03.157Z'
                        run_id: 1790248213
                        financing_as_of: null
                        recordings_through: null
                        financing_source: null
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-Rows:
              $ref: '#/components/headers/X-Rows'
            X-Dataset-Version:
              $ref: '#/components/headers/X-Dataset-Version'
            X-Data-End:
              $ref: '#/components/headers/X-Data-End'
        '400':
          description: Bad request (invalid_id, validation_error)
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              examples:
                invalid_id:
                  summary: Invalid id
                  value:
                    type: >-
                      https://developers.investorlift.com/guides/concepts/errors#invalid_id
                    title: Invalid id
                    status: 400
                    code: invalid_id
                    detail: >-
                      An investor id is inv_ followed by 12 hex characters. The
                      prefix is part of the id.
                    instance: /v3/lenders/{id}
                    request_id: 6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3
                validation_error:
                  summary: Validation error
                  value:
                    type: >-
                      https://developers.investorlift.com/guides/concepts/errors#validation_error
                    title: Validation error
                    status: 400
                    code: validation_error
                    detail: radius_miles must be 20 or less.
                    instance: /v3/lenders/{id}
                    request_id: 6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3
                    errors:
                      - param: radius_miles
                        message: must be 20 or less
                        code: too_big
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '401':
          description: Unauthorized (unauthorized)
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              examples:
                unauthorized:
                  summary: Unauthorized
                  value:
                    type: >-
                      https://developers.investorlift.com/guides/concepts/errors#unauthorized
                    title: Unauthorized
                    status: 401
                    code: unauthorized
                    detail: 'Send Authorization: Bearer with a current key.'
                    instance: /v3/lenders/{id}
                    request_id: 6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '403':
          description: Forbidden (payment_overdue, subscription_required)
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              examples:
                payment_overdue:
                  summary: Payment overdue
                  value:
                    type: >-
                      https://developers.investorlift.com/guides/concepts/errors#payment_overdue
                    title: Payment overdue
                    status: 403
                    code: payment_overdue
                    detail: >-
                      The subscription's payment is overdue and the grace period
                      passed. Update the card under Manage Billing in the
                      developer console.
                    instance: /v3/lenders/{id}
                    request_id: 6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3
                subscription_required:
                  summary: Subscription required
                  value:
                    type: >-
                      https://developers.investorlift.com/guides/concepts/errors#subscription_required
                    title: Subscription required
                    status: 403
                    code: subscription_required
                    detail: >-
                      This key has no active plan subscription. Subscribe in the
                      developer console.
                    instance: /v3/lenders/{id}
                    request_id: 6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '404':
          description: Not found (not_found)
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              examples:
                not_found:
                  summary: Not found
                  value:
                    type: >-
                      https://developers.investorlift.com/guides/concepts/errors#not_found
                    title: Not found
                    status: 404
                    code: not_found
                    detail: No such deal in any loaded market.
                    instance: /v3/lenders/{id}
                    request_id: 6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '406':
          description: Not acceptable (not_acceptable)
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              examples:
                not_acceptable:
                  summary: Not acceptable
                  value:
                    type: >-
                      https://developers.investorlift.com/guides/concepts/errors#not_acceptable
                    title: Not acceptable
                    status: 406
                    code: not_acceptable
                    detail: >-
                      Accept text/html names no representation this endpoint
                      produces (application/json).
                    instance: /v3/lenders/{id}
                    request_id: 6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '429':
          description: Rate limited, with Retry-After (rate_limited)
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              examples:
                rate_limited:
                  summary: Rate limited
                  value:
                    type: >-
                      https://developers.investorlift.com/guides/concepts/errors#rate_limited
                    title: Rate limited
                    status: 429
                    code: rate_limited
                    detail: >-
                      The request exceeded the per-key budget. Retry in 12
                      seconds.
                    instance: /v3/lenders/{id}
                    request_id: 6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3
                    retry_after: 12
                    bucket: key
          headers:
            Retry-After:
              $ref: '#/components/headers/Retry-After'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '500':
          description: Internal error (internal_error)
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              examples:
                internal_error:
                  summary: Internal error
                  value:
                    type: >-
                      https://developers.investorlift.com/guides/concepts/errors#internal_error
                    title: Internal error
                    status: 500
                    code: internal_error
                    detail: The request failed. Quote request_id when you report it.
                    instance: /v3/lenders/{id}
                    request_id: 6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '503':
          description: >-
            Unavailable, with Retry-After on pool_saturated and
            ledger_unavailable (database_unavailable, pool_saturated)
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              examples:
                database_unavailable:
                  summary: Database unavailable
                  value:
                    type: >-
                      https://developers.investorlift.com/guides/concepts/errors#database_unavailable
                    title: Database unavailable
                    status: 503
                    code: database_unavailable
                    detail: >-
                      The service failed to reach the database and did not run
                      the request.
                    instance: /v3/lenders/{id}
                    request_id: 6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3
                pool_saturated:
                  summary: Pool saturated
                  value:
                    type: >-
                      https://developers.investorlift.com/guides/concepts/errors#pool_saturated
                    title: Pool saturated
                    status: 503
                    code: pool_saturated
                    detail: >-
                      No pooled connection was free. The service did not run the
                      request.
                    instance: /v3/lenders/{id}
                    request_id: 6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3
          headers:
            Retry-After:
              $ref: '#/components/headers/Retry-After'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '504':
          description: Statement timeout (statement_timeout)
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              examples:
                statement_timeout:
                  summary: Statement timeout
                  value:
                    type: >-
                      https://developers.investorlift.com/guides/concepts/errors#statement_timeout
                    title: Statement timeout
                    status: 504
                    code: statement_timeout
                    detail: >-
                      The query exceeded the 10 second statement timeout. Narrow
                      the geometry or filters.
                    instance: /v3/lenders/{id}
                    request_id: 6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
components:
  schemas:
    LeanLender:
      type: object
      properties:
        id:
          type: string
          pattern: ^[A-Z]{2}:(name:.{1,200}|[A-Z0-9-]{1,40})$
          description: >-
            The organization id: the state, a colon and the anchor entity number
            for a registry organization, for example AZ:L16090024. For a deed
            name that no entity matched: the state, a colon, the word name, a
            colon and the name key, for example AZ:name:ACME HOLDINGS. The id is
            stable across builds while the anchor entity stays.
        state:
          type: string
          pattern: ^[A-Z]{2}$
          description: The 2-letter state code of a served state, for example AZ.
        kind:
          type: string
          enum:
            - registry
            - deed_name
          description: >-
            registry: an organization of the business registry. deed_name: a
            spelling that no entity matched, one lender statewide under its key.
        display_name:
          type: string
          description: >-
            The name to print: the registry name of a registry organization,
            else the spelling with the most loans in the 24 months.
        from_registry:
          type: boolean
          description: True for an organization of the business registry.
        tags:
          type: array
          items:
            type: string
            enum:
              - government
              - bank
              - credit_union
              - trust
              - person
              - hard_money
              - institution
            description: >-
              A reading of the name of the lender, each by its rule in the
              build. government: a public body. bank: the bank, thrift and
              charter words. credit_union: a credit union. trust: a trust, an
              IRA, an estate or a seller carry-back. person: a name that reads
              as a person. hard_money: the hard-money vocabulary and brands.
              institution: a servicer, a title company or an association. A tag
              decides no row: a lender keeps its loans and gets a tag. The list
              can grow with the rules of the build: a client keeps an unknown
              tag.
          description: The union of the tags of its spellings, in the order of the enum.
        nmls:
          anyOf:
            - $ref: '#/components/schemas/LeanLenderNmls'
            - type: 'null'
          description: >-
            Its NMLS id. Null when the seed of the build does not name the
            lender.
        successor:
          anyOf:
            - $ref: '#/components/schemas/LeanLenderSuccessor'
            - type: 'null'
          description: >-
            Its successor in this state. Null when the link seed names none, or
            the successor is not a lender of this state.
        counts:
          $ref: '#/components/schemas/LeanLenderCounts'
        open:
          $ref: '#/components/schemas/LeanLenderOpen'
        terms:
          $ref: '#/components/schemas/LeanLenderTerms'
        places:
          $ref: '#/components/schemas/LeanLenderPlaces'
        rank_in_state:
          $ref: '#/components/schemas/LeanLenderRankInState'
        deals:
          anyOf:
            - $ref: '#/components/schemas/LeanLenderDeals'
            - type: 'null'
          description: >-
            The organization as a buyer. Null when it bought nothing on a
            flagged deed.
        is_active_12m:
          type: boolean
          description: True when it has a loan in the 365 days before financing_as_of.
        has_open_book:
          type: boolean
          description: True when it has an open position.
        borrowers:
          anyOf:
            - $ref: '#/components/schemas/LeanLenderBorrowers'
            - type: 'null'
          description: >-
            Its borrowers by key and by organization. Null while the state has
            no loan links.
        financed:
          anyOf:
            - $ref: '#/components/schemas/LeanLenderFinanced'
            - type: 'null'
          description: What its loans financed. Null while the state has no loan links.
        outcomes:
          anyOf:
            - $ref: '#/components/schemas/LeanLenderOutcomes'
            - type: 'null'
          description: >-
            The outcomes of its captured loans and the parcels it took back.
            Null while the state has no loan links.
        as_of:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The date of the financing slice of the state, YYYY-MM-DD. Null while
            the state has no financing slice.
        recordings_through:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The newest recording date of the slice, YYYY-MM-DD. Null while the
            state has no financing slice.
        names:
          type: array
          items:
            $ref: '#/components/schemas/LeanLenderName'
          description: >-
            Its spellings on the county records, the most rows first, at most
            50. This host does not serve a spelling that reads as a person.
        lender_key:
          description: >-
            The canonical key of the organization with the most loan rows: what
            the lender search folds a query to. Null when the key reads as a
            person.
          type:
            - string
            - 'null'
        identity_bases:
          type: array
          items:
            type: string
            enum:
              - key
              - dictionary
              - truncated_prefix
          description: The distinct ways its spellings joined it, sorted.
        by_county:
          type: array
          items:
            $ref: '#/components/schemas/LeanLenderPlaceRow'
          description: >-
            Every county with a loan of the lender, the most 24-month loans
            first.
        by_zip:
          type: array
          items:
            $ref: '#/components/schemas/LeanLenderPlaceRow'
          description: >-
            The ZIPs with a loan of the lender, the most 24-month loans first,
            at most 50.
        other_states:
          type: array
          items:
            $ref: '#/components/schemas/LeanLenderOtherState'
          description: >-
            The same key in the other served states, in state order. Empty when
            none.
      required:
        - id
        - state
        - kind
        - display_name
        - from_registry
        - tags
        - nmls
        - successor
        - counts
        - open
        - terms
        - places
        - rank_in_state
        - deals
        - is_active_12m
        - has_open_book
        - borrowers
        - financed
        - outcomes
        - as_of
        - recordings_through
        - names
        - lender_key
        - identity_bases
        - by_county
        - by_zip
        - other_states
      description: >-
        One lender organization: its counts by window and by rule, its open
        book, its terms, its places, its spellings and its rank in the state. No
        class and no score.
    LeanMeta:
      type: object
      properties:
        generated_at:
          type: string
          format: date-time
          description: >-
            When the API produced this response, ISO 8601. It does not change
            the ETag.
        weights:
          description: >-
            The effective match weights, one per factor, rounded to 4 decimals
            (buyers/match only). The API rescales the weights of the scored
            factors to sum 1 before it reports them.
          type: object
          propertyNames:
            type: string
          additionalProperties:
            type: number
        reference_point:
          description: >-
            The point the API measures every distance in the response from: lat
            + lng, or the centre of the property_id parcel. Absent with a bare
            bbox.
          type: object
          properties:
            lat:
              type: number
              minimum: -90
              maximum: 90
              description: Latitude of the reference point.
            lng:
              type: number
              minimum: -180
              maximum: 180
              description: Longitude of the reference point.
          required:
            - lat
            - lng
          additionalProperties: false
        geometry:
          $ref: '#/components/schemas/MetaGeometry'
          description: >-
            The location that ran, defaults filled and keyed as the query is
            (see MetaGeometry), on REST only: the MCP meta carries
            reference_point alone. Present on every route that takes a location:
            the deal lists, summary and cells, the investors, wholesale listings
            and short-term rental parcels, and `/v1/buyers/match`. Also on the
            comps of a parcel, kind radius around the subject and property_id
            the subject, and on POST `/v1/properties/search` (a county-only body
            echoes nothing). The lender list and a lender's loans carry it when
            you gave a geometry, a zip or a city. They apply a geometry as the
            H3 res-8 cells whose centre lies inside it, and echo no county,
            because MetaGeometry has no county slot. Absent on a route with no
            location, and on `/v1/properties/resolve`, whose lat + lng is a hint
            for the nearest parcel, not an area that ran.
        resolved_from:
          description: >-
            Present when the id in the path was an old id of an earlier build:
            the ids the API followed through the alias table, in order. Store
            the id the response carries.
          type: array
          items:
            type: string
        coverage:
          type: array
          items:
            $ref: '#/components/schemas/Coverage'
          description: >-
            The markets the response draws on, with their counties, data end
            dates and data versions.
        dated:
          description: >-
            Present when the response carries a block that is a dated snapshot
            at its as-of date, not current data. Those blocks are the financing,
            lien and valuation blocks of the parcel products. One entry per
            dated block, with its as-of date. Absent when nothing in the
            response is dated.
          type: array
          items:
            $ref: '#/components/schemas/Dated'
        terms:
          type: string
          description: Attribution and data-use terms for the data in this response.
        build:
          type: object
          properties:
            states:
              type: array
              items:
                $ref: '#/components/schemas/LeanBuildState'
              description: Every served state, in state order.
          required:
            - states
          additionalProperties: false
          description: >-
            The publishes behind the response. The ETag and each cursor follow
            the newest publish, so a publish ends every cursor. The rows belong
            to no market of the deed registry, so meta.coverage is empty.
      required:
        - generated_at
        - coverage
        - terms
        - build
      additionalProperties: false
      description: >-
        Response metadata of the lean family: when the API produced it, and the
        publishes behind the rows.
    Problem:
      type: object
      properties:
        type:
          type: string
          description: >-
            URI of the problem: the Errors page of the documentation site,
            anchored at the code.
        title:
          type: string
          description: Short human-readable summary of the problem code.
        status:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: HTTP status.
        code:
          type: string
          description: >-
            Stable machine-readable code from the catalogue at
            https://developers.investorlift.com/problems.json.
        detail:
          type: string
          description: Human-readable explanation specific to this occurrence.
        instance:
          type: string
          description: Request path.
        request_id:
          type: string
          description: Request id to quote when you report a problem.
        errors:
          description: Per-parameter validation failures (400 only).
          type: array
          items:
            type: object
            properties:
              param:
                description: >-
                  The offending parameter. Null when the problem is not about
                  one parameter.
                type:
                  - string
                  - 'null'
              message:
                type: string
                description: What is wrong with it.
              code:
                type: string
                description: Machine-readable reason, for example invalid_enum_value.
            required:
              - param
              - message
              - code
            additionalProperties: false
            description: One validation failure.
      required:
        - type
        - title
        - status
        - code
        - detail
        - instance
        - request_id
      additionalProperties: {}
      description: >-
        RFC 9457 problem details (application/problem+json). Some codes add
        extra fields beside these: superseded_by, candidates, n_deals, cap,
        suggestion, markets, retry_after.
    LeanLenderNmls:
      type: object
      properties:
        id:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The NMLS id of the lender from the curated seed of the build.
        url:
          type: string
          description: The NMLS Consumer Access page of the id.
      required:
        - id
        - url
      additionalProperties: false
      description: The NMLS id of a lender organization and the page that shows it.
    LeanLenderSuccessor:
      type: object
      properties:
        org_id:
          type: string
          pattern: ^[A-Z]{2}:(name:.{1,200}|[A-Z0-9-]{1,40})$
          description: >-
            The lender organization of this state that acquired the lender, or
            that it is a subsidiary of.
        kind:
          type: string
          enum:
            - acquisition
            - subsidiary
          description: >-
            acquisition: the successor bought the lender. subsidiary: the lender
            is a unit of the successor.
      required:
        - org_id
        - kind
      additionalProperties: false
      description: >-
        The successor of a lender organization from the curated link seed of the
        build. A link never merges two lenders.
    LeanLenderCounts:
      type: object
      properties:
        n_loans:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            The loans under the lender of record: one instrument row for each
            loan key and lender, all time.
        n_loans_12m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The loans recorded in the 365 days before financing_as_of.
        n_loans_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The loans recorded in the 730 days before financing_as_of.
        n_loans_36m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The loans recorded in the 1,095 days before financing_as_of.
        volume_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            The sum of the amounts of the 24-month loans, whole US dollars. The
            sum keeps a priced loan that is not an outlier and not a blanket
            position other than the carrier. 0 when none.
        n_unpriced_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The 24-month loans with no amount.
        n_amount_excluded_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            The 24-month loans the volume leaves out: an amount above 5,000,000,
            or a blanket position that is not the carrier.
        n_blanket_positions_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            The 24-month loans in a blanket group: one lender, one date and one
            amount on five parcels or more.
        n_parcels:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The distinct parcels of its loans, all time.
        n_in_history:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its loans with a recorded instrument, all time.
        n_in_history_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its 24-month loans with a recorded instrument.
        n_in_both_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            Its 24-month loans that are an open position paired with a recorded
            instrument.
        n_first_lien_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its 24-month loans in the first open position of the parcel.
        n_heloc_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its 24-month loans with the product heloc.
        n_construction_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its 24-month loans with the product construction.
        n_purchase_label_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its 24-month loans the county labelled purchase money.
        n_priced_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its 24-month loans in the volume.
        n_rated_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its 24-month loans with a rate.
        n_term_known_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its 24-month loans with a term.
        n_loans_since_2015:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its loans recorded since 2015-01-01.
        n_before_2002:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its loans recorded before 2002-01-01.
        n_undated:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its loans with no recording date.
        first_recording_date:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: Its first recording date, YYYY-MM-DD. Null when none is dated.
        last_recording_date:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: Its last recording date, YYYY-MM-DD. Null when none is dated.
      required:
        - n_loans
        - n_loans_12m
        - n_loans_24m
        - n_loans_36m
        - volume_24m
        - n_unpriced_24m
        - n_amount_excluded_24m
        - n_blanket_positions_24m
        - n_parcels
        - n_in_history
        - n_in_history_24m
        - n_in_both_24m
        - n_first_lien_24m
        - n_heloc_24m
        - n_construction_24m
        - n_purchase_label_24m
        - n_priced_24m
        - n_rated_24m
        - n_term_known_24m
        - n_loans_since_2015
        - n_before_2002
        - n_undated
        - first_recording_date
        - last_recording_date
      additionalProperties: false
      description: >-
        The loans of a lender organization under the lender of record, by window
        and by rule. Every count is a count of observed rows.
    LeanLenderOpen:
      type: object
      properties:
        n_liens:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            The open positions under the open-table lender: every open lien of
            the slice.
        n_first_liens:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The open positions in the first position of the parcel.
        n_junior_liens:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The open positions in the second position or below.
        n_due_known:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The open positions with a due date.
        n_maturing_12m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The open positions due in the 365 days after financing_as_of.
        n_on_resold_parcels:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            The open positions on a parcel sold at arm's length after the
            recording.
        n_open_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The open positions recorded in the 730 days before financing_as_of.
        balance:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            The sum of the estimated balances, whole US dollars. The sum leaves
            out an outlier, a blanket position other than the carrier and a
            position on a resold parcel. 0 when none.
        n_balance_excluded:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The open positions with a balance the sum leaves out.
      required:
        - n_liens
        - n_first_liens
        - n_junior_liens
        - n_due_known
        - n_maturing_12m
        - n_on_resold_parcels
        - n_open_24m
        - balance
        - n_balance_excluded
      additionalProperties: false
      description: >-
        The open book of a lender organization: its open positions and their
        balances, by rule.
    LeanLenderTerms:
      type: object
      properties:
        amount_window:
          type: string
          enum:
            - 24m
            - all
          description: >-
            The window of the five quantiles: 24m when the lender has 20 priced
            loans or more in the 24 months, else all.
        amount_p25:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
              description: Whole US dollars.
            - type: 'null'
          description: >-
            The first quartile of the amounts of the priced loans of the window,
            whole US dollars. Null below three loans.
        amount_p50:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
              description: Whole US dollars.
            - type: 'null'
          description: >-
            The median amount of the window, whole US dollars. Null below three
            loans.
        amount_p75:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
              description: Whole US dollars.
            - type: 'null'
          description: >-
            The third quartile of the window, whole US dollars. Null below three
            loans.
        rate_p50:
          description: >-
            The median rate of the rated loans of the window, percent. Null
            below three rated loans.
          type:
            - number
            - 'null'
        term_p50_months:
          description: >-
            The median term of the loans with a term in the window, months. Null
            below three.
          type:
            - number
            - 'null'
        share_le_24m:
          description: >-
            The share of its loans with a term of 24 months or less, of the
            loans with a term, all time, to nine decimals. Null when fewer than
            half of its loans carry a term.
          type:
            - number
            - 'null'
        share_25_120m:
          description: The share with a term of 25 to 120 months. Null as share_le_24m.
          type:
            - number
            - 'null'
        share_121_359m:
          description: The share with a term of 121 to 359 months. Null as share_le_24m.
          type:
            - number
            - 'null'
        share_ge_360m:
          description: The share with a term of 360 months or more. Null as share_le_24m.
          type:
            - number
            - 'null'
      required:
        - amount_window
        - amount_p25
        - amount_p50
        - amount_p75
        - rate_p50
        - term_p50_months
        - share_le_24m
        - share_25_120m
        - share_121_359m
        - share_ge_360m
      additionalProperties: false
      description: >-
        The amounts, the rate and the terms of the loans of a lender
        organization, as positional quantiles and shares.
    LeanLenderPlaces:
      type: object
      properties:
        n_zips_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The distinct ZIPs of its 24-month loans.
        n_counties_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The distinct counties of its 24-month loans.
        top_zip5_24m:
          description: >-
            The ZIP with the most of its 24-month loans, the lower code on a
            tie. Null when it has no 24-month loan with a ZIP.
          type:
            - string
            - 'null'
        top_zip_share_24m:
          description: >-
            The share of its 24-month loans in that ZIP, to nine decimals. Null
            when it has no 24-month loan.
          type:
            - number
            - 'null'
      required:
        - n_zips_24m
        - n_counties_24m
        - top_zip5_24m
        - top_zip_share_24m
      additionalProperties: false
      description: >-
        Where a lender organization lent in the 24 months: the counts of its
        places and its top ZIP.
    LeanLenderRankInState:
      type: object
      properties:
        loans_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            Its position among the lenders of the state by 24-month loans, 1
            first.
        volume_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            Its position among the lenders of the state by 24-month volume, 1
            first.
      required:
        - loans_24m
        - volume_24m
      additionalProperties: false
      description: The rank of a lender organization in its state, read at request time.
    LeanLenderDeals:
      type: object
      properties:
        n_deals:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The flagged purchases of the organization as a buyer.
        first_deal_date:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: Its first deed as a buyer, YYYY-MM-DD. Null for a deed name.
        last_deal_date:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: Its last deed as a buyer, YYYY-MM-DD. Null for a deed name.
      required:
        - n_deals
        - first_deal_date
        - last_deal_date
      additionalProperties: false
      description: >-
        The lender organization as a buyer of investment property: the one node
        of the set.
    LeanLenderBorrowers:
      type: object
      properties:
        n_borrowers:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The distinct borrower keys of its loans, all time.
        n_borrowers_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The distinct borrower keys of its 24-month loans.
        n_borrower_orgs_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The distinct borrower organizations of its 24-month loans.
        n_repeat_borrowers_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The borrower organizations on two or more of its 24-month loans.
      required:
        - n_borrowers
        - n_borrowers_24m
        - n_borrower_orgs_24m
        - n_repeat_borrowers_24m
      additionalProperties: false
      description: >-
        The borrowers of a lender organization, counted by key and by
        organization.
    LeanLenderFinanced:
      type: object
      properties:
        n_investor_loans:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            Its loans to a borrower organization that has a flagged purchase of
            its own, all time.
        n_investor_loans_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Such loans in the 24 months.
        n_investor_orgs_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The distinct such organizations in the 24 months.
        n_investor_loans_since_2015:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Such loans recorded since 2015-01-01.
        n_deals_financed:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            The flagged purchases whose purchase loan is a strict-linked loan of
            the lender, all time.
        n_deals_financed_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Such purchases financed by a loan of the 24 months.
        n_auction_purchases_financed_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Of them, the purchases at a foreclosure auction.
        n_marketplace_purchases_financed_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            Of them, the purchases that closed a listing of the Investorlift
            marketplaces.
        n_purchase_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            Its 24-month loans whose purpose reads purchase: a priced purchase
            deed inside the 45 days up to the recording.
        n_not_purchase_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its 24-month loans whose purpose reads not_purchase.
        n_purpose_unknown_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its 24-month loans whose purpose is unknown.
        investor_lender_by_count:
          type: boolean
          description: >-
            True under the behavior rule of the build: 20 loans or more since
            2015, a quarter of them strict-linked loans to an investor, and no
            bank tag.
      required:
        - n_investor_loans
        - n_investor_loans_24m
        - n_investor_orgs_24m
        - n_investor_loans_since_2015
        - n_deals_financed
        - n_deals_financed_24m
        - n_auction_purchases_financed_24m
        - n_marketplace_purchases_financed_24m
        - n_purchase_24m
        - n_not_purchase_24m
        - n_purpose_unknown_24m
        - investor_lender_by_count
      additionalProperties: false
      description: >-
        What a lender organization financed: the investor loans, the purchases
        its loans financed and the purpose of its loans.
    LeanLenderOutcomes:
      type: object
      properties:
        n_strict_all:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            Its loans strict-linked to a flagged purchase: recorded inside 45
            days after the sale, all time.
        n_strict_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Such loans in the 24 months.
        n_captured_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its 24-month loans linked to a flagged purchase, strict or loose.
        n_foreclosed:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            Its captured loans followed by a take-back deed past the 90-day
            floor, before any resale or refinance.
        n_foreclosed_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Such loans recorded in the 24 months.
        n_resolved_by_resale:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its captured loans resolved by a priced resale of the parcel.
        n_refinanced:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            Its captured loans resolved by another loan on the parcel more than
            45 days after.
        n_open_outcome:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its captured loans with an open position and no later event.
        n_takebacks:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            The parcels the lender took back since 2016: a take-back deed with a
            key of the lender among the grantees, its own auction purchases out.
        n_takebacks_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The parcels it took back in the 24 months.
        median_months_to_payoff:
          description: >-
            The median months from the recording to the resale or the refinance
            of its strict-linked loans resolved in the 24 months. Null below
            three.
          type:
            - number
            - 'null'
        is_auction_lender:
          type: boolean
          description: >-
            True under one of two rules. A key of the lender is the grantee of
            two deeds in lieu or more on distinct parcels since 2016. Or a key
            of the lender bought two trustee-sale deeds or more as a seller key
            too, the credit bid.
      required:
        - n_strict_all
        - n_strict_24m
        - n_captured_24m
        - n_foreclosed
        - n_foreclosed_24m
        - n_resolved_by_resale
        - n_refinanced
        - n_open_outcome
        - n_takebacks
        - n_takebacks_24m
        - median_months_to_payoff
        - is_auction_lender
      additionalProperties: false
      description: >-
        The outcomes of the captured loans of a lender organization and the
        parcels it took back. A take-back is a deed, never delinquency.
    LeanLenderName:
      type: object
      properties:
        name:
          description: >-
            The spelling as the county wrote it. Null when the spelling reads as
            a person.
          type:
            - string
            - 'null'
        lender_key:
          description: The key of the spelling in the build. Null with the name.
          type:
            - string
            - 'null'
        identity_basis:
          type: string
          enum:
            - key
            - dictionary
            - truncated_prefix
          description: >-
            How the spelling joined the organization. key: its own key.
            dictionary: a row of the curated dictionary. truncated_prefix: a
            spelling the county cut at 30 or 40 characters, a prefix of one
            other spelling.
        company_like:
          type: boolean
          description: >-
            True when the spelling reads as a company, a public body or an
            institution.
        tags:
          type: array
          items:
            type: string
            enum:
              - government
              - bank
              - credit_union
              - trust
              - person
              - hard_money
              - institution
            description: >-
              A reading of the name of the lender, each by its rule in the
              build. government: a public body. bank: the bank, thrift and
              charter words. credit_union: a credit union. trust: a trust, an
              IRA, an estate or a seller carry-back. person: a name that reads
              as a person. hard_money: the hard-money vocabulary and brands.
              institution: a servicer, a title company or an association. A tag
              decides no row: a lender keeps its loans and gets a tag. The list
              can grow with the rules of the build: a client keeps an unknown
              tag.
          description: The tags of the spelling.
        n_rows:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            The loan rows that name the spelling, as the lender or as the
            assignee, all time.
        n_rows_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: The loan rows that name it in the 730 days before financing_as_of.
        first_recording_date:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The first recording date of its rows, YYYY-MM-DD. Null when none is
            dated.
        last_recording_date:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The last recording date of its rows, YYYY-MM-DD. Null when none is
            dated.
      required:
        - name
        - lender_key
        - identity_basis
        - company_like
        - tags
        - n_rows
        - n_rows_24m
        - first_recording_date
        - last_recording_date
      additionalProperties: false
      description: >-
        One spelling of the lender on the county records, with how it joined the
        organization and its rows.
    LeanLenderPlaceRow:
      type: object
      properties:
        key:
          type: string
          description: The county FIPS or the ZIP.
        n_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its loans in the place in the 730 days before financing_as_of.
        n_all:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its loans in the place, all time.
        volume_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            Its 24-month volume in the place, whole US dollars: the sum of the
            priced amounts that are not an outlier and not a blanket position
            other than the carrier. 0 when none.
        share_of_lender:
          description: >-
            Its 24-month loans in the place over its 24-month loans everywhere,
            to nine decimals. Null when it has no 24-month loan.
          type:
            - number
            - 'null'
        rank_in_place:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            - type: 'null'
          description: >-
            Its position among the lenders of the place by 24-month loans, 1
            first. Null when it has no 24-month loan in the place.
        share_of_place:
          description: >-
            Its 24-month loans in the place over every lender's 24-month loans
            there, to nine decimals. Null when the place has no 24-month loan.
          type:
            - number
            - 'null'
      required:
        - key
        - n_24m
        - n_all
        - volume_24m
        - share_of_lender
        - rank_in_place
        - share_of_place
      additionalProperties: false
      description: >-
        One place of the lender with its loans there, its share of the lender
        and its rank in the place.
    LeanLenderOtherState:
      type: object
      properties:
        state:
          type: string
          pattern: ^[A-Z]{2}$
          description: The 2-letter state code of a served state, for example AZ.
        org_id:
          type: string
          pattern: ^[A-Z]{2}:(name:.{1,200}|[A-Z0-9-]{1,40})$
          description: >-
            The lender organization of that state under the same key: the key to
            `GET /v3/lenders/{id}` there.
        n_loans_24m:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Its 24-month loans in that state.
      required:
        - state
        - org_id
        - n_loans_24m
      additionalProperties: false
      description: The same lender key as a lender organization of another served state.
    MetaGeometry:
      type: object
      properties:
        kind:
          type: string
          enum:
            - radius
            - bbox
            - place
          description: >-
            Which location ran: radius, bbox or place. A radius uses a point, a
            parcel ID, or a resolved address. A bbox is a viewport. A place is a
            ZIP list or a postal city.
        lat:
          anyOf:
            - type: number
              minimum: -90
              maximum: 90
              description: WGS84 latitude.
            - type: 'null'
          description: >-
            The centre of the radius, or the reference point you gave beside a
            bbox or a place. For a property_id request the centre is the parcel
            centroid. Null when a bbox or a place had no reference point.
        lng:
          anyOf:
            - type: number
              minimum: -180
              maximum: 180
              description: WGS84 longitude.
            - type: 'null'
          description: The longitude beside lat. Null when lat is null.
        radius_miles:
          description: >-
            The radius that ran, in miles: the value you sent, or the default
            when you sent none. The default is 2 on the GET lists and 1 around
            property_id on POST `/v1/properties/search`. Null for a bbox or a
            place.
          type:
            - number
            - 'null'
        bbox:
          anyOf:
            - type: array
              prefixItems:
                - type: number
                  minimum: -180
                  maximum: 180
                  description: West edge (longitude).
                - type: number
                  minimum: -90
                  maximum: 90
                  description: South edge (latitude).
                - type: number
                  minimum: -180
                  maximum: 180
                  description: East edge (longitude).
                - type: number
                  minimum: -90
                  maximum: 90
                  description: North edge (latitude).
              items: false
              minItems: 4
              maxItems: 4
              description: '[west, south, east, north] in WGS84 degrees.'
            - type: 'null'
          description: >-
            The viewport as [west, south, east, north] in WGS84 degrees. Null
            unless kind is bbox.
        property_id:
          anyOf:
            - type: string
              pattern: ^prop_[0-9a-f]{32}$
              description: >-
                Parcel id: prop_ followed by 32 hex characters, for example
                prop_e93c776c53354a88de4e58448a6bf21b. The prefix is part of the
                id.
            - type: 'null'
          description: >-
            The parcel at the centre of the radius. Null unless the request
            named property_id.
        address:
          description: >-
            Resolved situs line for an address search. Null for other location
            forms. This field describes the resolved parcel.
          type:
            - string
            - 'null'
        zip:
          anyOf:
            - type: array
              items:
                type: string
                pattern: ^\d{5}$
            - type: 'null'
          description: >-
            The ZIP list as you sent it, for example ["85251", "85257"]. Null
            unless kind is place and the request named ZIPs.
        city:
          description: >-
            The postal city as the API compared it: trimmed and folded to upper
            case ("Scottsdale" ran as "SCOTTSDALE"). Null unless kind is place
            and the request named a city.
          type:
            - string
            - 'null'
        location_radius_m:
          description: >-
            Present when the property at the centre is listed on Investorlift.
            Then lat and lng are an approximate point, address is null, and this
            value is the radius in metres of the circle that contains the true
            point. The API measures each distance from the true point.
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            - type: 'null'
      required:
        - kind
        - lat
        - lng
        - radius_miles
        - bbox
        - property_id
        - address
        - zip
        - city
      additionalProperties: false
      description: >-
        The location the API computed the response over, as it ran: defaults
        filled, a parcel resolved to its centroid, a city folded. Copy it back
        as the query to repeat the request.
    Coverage:
      type: object
      properties:
        market:
          type: string
          description: Market code, for example phx. One entry per loaded market.
        state:
          type: string
          description: >-
            2-letter state of the market. The loaded markets and their states
            are in meta.coverage[].
        counties:
          type: array
          items:
            type: object
            properties:
              fips:
                type: string
                description: The 5-digit county FIPS code, for example 04013.
              name:
                type: string
                description: County name, for example Maricopa.
              data_end:
                anyOf:
                  - type: string
                    format: date
                    description: Calendar date, YYYY-MM-DD.
                  - type: 'null'
                description: >-
                  The last deed date on file for this county, YYYY-MM-DD. Null
                  when the county carries no dated deed.
            required:
              - fips
              - name
              - data_end
            additionalProperties: false
            description: One county the loaded area lies in.
          description: >-
            The counties the loaded area lies in, each with its own data end
            date. For a zip market the list names the county, but the loaded
            area is only the ZIP (see universe_kind).
        bbox:
          type: array
          prefixItems:
            - type: number
              minimum: -180
              maximum: 180
              description: West edge (longitude).
            - type: number
              minimum: -90
              maximum: 90
              description: South edge (latitude).
            - type: number
              minimum: -180
              maximum: 180
              description: East edge (longitude).
            - type: number
              minimum: -90
              maximum: 90
              description: North edge (latitude).
          items: false
          minItems: 4
          maxItems: 4
          description: >-
            The rectangle (west, south, east, north) that encloses every deal in
            the market: the initial map viewport and, with
            point_tolerance_miles, the limit for outside_coverage.
        data_end:
          type: string
          format: date
          description: >-
            The last deed date in the data, YYYY-MM-DD. The API measures every
            "days since" value from this data_end, never from the request time.
        build_run_id:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            - type: 'null'
          description: >-
            Which pipeline build produced the data. Informational: use
            dataset_version for caching. Null when the data does not record it.
        registry_run:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            - type: 'null'
          description: >-
            Which investor registry run produced the data. Informational: use
            dataset_version for caching. Null when the data does not record it.
        registry_version:
          description: >-
            Which registry code version produced the data. Informational: use
            dataset_version for caching. Null when the data does not record it.
          type:
            - string
            - 'null'
        dataset_version:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            Version of the loaded data, an integer that grows with every
            refresh. It is the cache key and the ETag, and every cursor binds to
            it.
        loaded_at:
          type: string
          format: date-time
          description: When this data version went live, ISO 8601.
        metro_buy_to_resale_ratio:
          anyOf:
            - type: number
              description: Decimal ratio, never a percentage (0.53 = +53%).
            - type: 'null'
          description: >-
            The median of purchase price divided by resale price over the
            market's priced flips since 2021. For example, 0.72 means flippers
            pay about 72% of the resale price. The price_fit factor uses it when
            an investor has too few flips of their own. Null when no priced
            flips exist.
        universe_kind:
          anyOf:
            - type: string
              enum:
                - zip
                - county
                - metro
              description: >-
                The area every count in this market covers: metro, county or
                zip. A metro market covers whole counties. A county market
                covers one county. The market cannot see what an investor did in
                the neighbouring counties. A zip market covers one or more ZIP
                codes. The market cannot see what an investor did outside them,
                a larger gap. In a county or zip market every investor count,
                price band, scale tier and confidence is a floor.
            - type: 'null'
          description: >-
            Null when the market row does not record it, a seed older than the
            column. The area every count in this market covers: metro, county or
            zip. A metro market covers whole counties. A county market covers
            one county. The market cannot see what an investor did in the
            neighbouring counties. A zip market covers one or more ZIP codes.
            The market cannot see what an investor did outside them, a larger
            gap. In a county or zip market every investor count, price band,
            scale tier and confidence is a floor.
        universe_zips:
          anyOf:
            - type: array
              items:
                type: string
                description: A 5-digit ZIP.
            - type: 'null'
          description: >-
            The ZIP codes of a zip universe, for example ["77088"]. Null for
            county and metro markets.
        point_tolerance_miles:
          type: number
          description: >-
            How far outside bbox a point can lie and get an answer, in miles: 20
            for a metro, 2 for a county market. The point is lat + lng, or the
            centre of a property_id parcel. Farther out, the API answers 422
            outside_coverage. A bbox must intersect the coverage bbox.
        n_parcels:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            - type: 'null'
          description: >-
            Parcels in the loaded area, the universe every count covers. Null
            when the data does not record it.
        listings_data_end:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The as-of date of the MLS listing feed for this market, YYYY-MM-DD:
            the newest status update among its listing rows, later than
            data_end. The deeds and the listings arrive in one delivery, each
            with its own end. The API measures every listing window
            (days_on_market, n_listed_12m) against this date. Null when this
            market has no published listing tables. Every listing block and
            listings rollup is null then, and the correct reading is "no listing
            data".
        agents_data_end:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The as-of date of the listing set behind the agent registry of this
            market, YYYY-MM-DD. It equals listings_data_end when the registry is
            current. It is earlier when a refresh moved the listings but left
            the agents on the older set. Null when this market has no published
            agent tables. Then every agent_id, identity_basis and
            agent_is_holder_member on the listing agents is null, and the
            investor profile carries has_licensed_member and agent_links null.
            The /v1/agents routes then answer 422 agents_unavailable.
        wholesale_as_of:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The date of the Investorlift export behind the market's wholesale
            transactions, YYYY-MM-DD. Every Investorlift listing published up to
            this date is on file. The API measures every wholesale window
            (n_listed_12m, n_bought_via_investorlift_12m) against the deed
            data_end. Null when this market has no published wholesale tables.
            Then every wholesale_listing block on deal rows, wholesale_purchases
            block on investor rows and wholesale_listings[] on a parcel is null.
            Then /v1/wholesale-listings, /v1/wholesalers,
            `/v1/investors/{id}/wholesale-purchases` and the source=investorlift
            and bought_on_investorlift filters answer 422 wholesale_unavailable.
        str_as_of:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The short-term rental snapshot of this market, YYYY-MM-DD: the
            oldest snapshot date among its served jurisdictions. Each
            jurisdiction's own date is in str.jurisdictions[].snapshot_date and
            on every block as data_as_of. Null when this market has no published
            short-term rental tables, or when the API serves none of its
            jurisdictions. Then every short_term_rental block on parcels and
            hold rows and every str roll-up on investor rows is null. Then the
            str_status, str_business_use, str_operator and str_holdings_min
            filters and /v1/str-parcels answer 422 str_unavailable.
        str:
          anyOf:
            - type: object
              properties:
                jurisdictions:
                  type: array
                  items:
                    $ref: '#/components/schemas/StrCoverageJurisdiction'
                  description: >-
                    Every city of the market the short-term rental build knows,
                    served or not. This list, not the parcel, explains a null
                    block on a parcel: read the city's coverage_reason.
              required:
                - jurisdictions
              additionalProperties: false
            - type: 'null'
          description: >-
            The short-term rental jurisdiction table of this market. Null when
            this market has no published short-term rental tables.
        auction_counted:
          type: boolean
          description: >-
            True when this market measures the foreclosure-auction and REO
            purchase counts. Then every investor row carries the auction block
            (investor.auction) and deal rows carry bought_auction_kind. False
            when the market's registry build came before the counts existed.
            Then the block is null on every investor of the market, and
            bought_auction_kind is null on every deal. The buys_at_auction,
            buys_reo and bought_auction_kind filters then answer 422
            auction_unavailable.
        parcel_as_of:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The deed data end that the build of the parcel product layer used,
            YYYY-MM-DD. The layer serves POST /v1/properties/search and the
            financing, permit and history routes. Null when this market has no
            published parcel product tables: those routes then answer 422
            parcels_unavailable.
        address_as_of:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The deed data end of the address table behind GET
            /v1/properties/resolve?address, YYYY-MM-DD. Null when this market
            has no published address table. The address lookup answers 422
            addresses_unavailable while no market carries the table.
        parcel:
          anyOf:
            - $ref: '#/components/schemas/ParcelCoverage'
            - type: 'null'
          description: >-
            What the parcel products cover in this market. The parts are the
            layer, the dated financing slice, the permit snapshot, the Owner
            Profile block and the history lake with its ZIP set. Null when this
            market has no published parcel product tables.
        lenders:
          anyOf:
            - type: object
              properties:
                as_of:
                  anyOf:
                    - type: string
                      format: date
                      description: Calendar date, YYYY-MM-DD.
                    - type: 'null'
                  description: >-
                    The slice date behind the lender registry, YYYY-MM-DD. It
                    equals parcel.financing.as_of. Null when the registry row
                    does not record it.
                recordings_through:
                  anyOf:
                    - type: string
                      format: date
                      description: Calendar date, YYYY-MM-DD.
                    - type: 'null'
                  description: >-
                    The newest recording date in either source table,
                    YYYY-MM-DD. The API measures every recency on a lender
                    against this date. Null when the registry row does not
                    record it.
                counties:
                  type: array
                  items:
                    type: string
                    description: A 5-digit county FIPS.
                  description: >-
                    The counties the lender registry covers. A ZIP, city or
                    county outside them answers 422 outside_coverage.
                history_capture_share:
                  anyOf:
                    - type: number
                      description: Decimal ratio, never a percentage (0.53 = +53%).
                    - type: 'null'
                  description: >-
                    The share of open lien positions recorded since 2022 that
                    the recorded history also carries within 3 days, 0 to 1. It
                    says how much of the open table the history sees. Null when
                    the registry did not measure it.
                n_lender_ids:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Lender ids served in the market: the identities with a
                    profile, after the person gate. parcel.financing.n_lenders
                    counts raw spellings, several per id. Null when the registry
                    row does not record it.
                purchase_measured:
                  type: boolean
                  description: >-
                    True when the market has the deed link. Then the API serves
                    purpose and the deed block on the loan rows, and the
                    purchase-money counts and ranks on the lenders. It also
                    serves the lender list's purpose, investor_only and
                    purchase_desc parameters. False on a registry built before
                    the deed link: every such value is null, and those
                    parameters answer 422 lenders_unavailable.
                investor_lending_measured:
                  type: boolean
                  description: >-
                    True when the market has the deal link and the borrower
                    match. Then the API serves the deal block, outcome and
                    investor ids on the loan rows, and the investor_lending
                    block on the profiles. It also serves the financing block on
                    deal rows and the financing sidecar on investor profiles.
                    False otherwise: every one of those is null.
                flips_measured:
                  type: boolean
                  description: >-
                    True when the market measures the flips each lender
                    financed, the flips_financed block on the profiles. False
                    otherwise: the block is null.
                borrowers_measured:
                  type: boolean
                  description: >-
                    True when the market has the borrower fold. Then the API
                    serves borrower keys on the loan rows, the borrowers block
                    on the profiles, GET `/v1/lenders/{id}/borrowers` and the
                    financed_by and uses_private_lender filters. False
                    otherwise: the block is null, and the route and the filters
                    answer 422 lenders_unavailable.
                takebacks_measured:
                  type: boolean
                  description: >-
                    True when the registry of this market includes the
                    foreclosure take-backs. That needs the auction deed tables
                    built and the lender members present. Then the API serves
                    the takebacks block on the profiles, the foreclosed block on
                    the loan rows and the FORECLOSED outcome. False otherwise:
                    the block is null on every profile, and foreclosed is null
                    on every loan row.
                counties_measured:
                  type: boolean
                  description: >-
                    True when the market has more than one loaded county, so a
                    county ranking means something:
                    rankings.n_counties_ranked_first_24m on the profiles. False
                    while the slice covers one county: that count is null.
                dated:
                  description: >-
                    True when the registry is a snapshot valued at as_of, like
                    the financing slice behind it. The API stamps every value
                    from it in meta.dated[] as the lenders block. Null on a
                    registry row that does not record it, a row older than the
                    column.
                  type:
                    - boolean
                    - 'null'
                n_parcels_uncovered:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Parcels of the market outside the counties the registry
                    covers. Such a county is one the financing slice does not
                    reach. Null when the row does not record it.
              required:
                - as_of
                - recordings_through
                - counties
                - history_capture_share
                - n_lender_ids
                - purchase_measured
                - investor_lending_measured
                - flips_measured
                - borrowers_measured
                - takebacks_measured
                - counties_measured
                - dated
                - n_parcels_uncovered
              additionalProperties: false
            - type: 'null'
          description: >-
            The lender registry of this market. Null when this market has no
            published lender tables: every /v1/lenders route then answers 422
            lenders_unavailable.
      required:
        - market
        - state
        - counties
        - bbox
        - data_end
        - build_run_id
        - registry_run
        - registry_version
        - dataset_version
        - loaded_at
        - metro_buy_to_resale_ratio
        - universe_kind
        - universe_zips
        - point_tolerance_miles
        - n_parcels
        - listings_data_end
        - agents_data_end
        - wholesale_as_of
        - str_as_of
        - str
        - auction_counted
        - parcel_as_of
        - address_as_of
        - parcel
        - lenders
      additionalProperties: false
      description: >-
        One loaded market: the area its counts cover (universe_kind), the
        counties it lies in, how fresh it is, and its data version.
    Dated:
      type: object
      properties:
        block:
          type: string
          enum:
            - valuation
            - financing
            - liens
            - lenders
          description: >-
            The block of the response that is a snapshot at as_of, not current
            data. The values are valuation (the AVM, equity and LTV), financing
            (open liens and mortgage history), liens (involuntary liens) and
            lenders. The lenders block is the lender registry and every count on
            it, built from the same slice.
        as_of:
          type: string
          format: date
          description: >-
            The date of the delivery that valued the snapshot, YYYY-MM-DD: the
            same date as meta.coverage[].parcel.financing.as_of for the market.
        reason:
          type: string
          description: >-
            Why the block is dated, in one sentence: the dataset is not in the
            current delivery.
      required:
        - block
        - as_of
        - reason
      additionalProperties: false
      description: >-
        One block of the response that is a dated snapshot. Every response that
        carries a value from a dated block lists it here. A caller that cannot
        use dated data passes require_current: true. The API then answers 422
        dated_refused instead.
    LeanBuildState:
      type: object
      properties:
        state:
          type: string
          pattern: ^[A-Z]{2}$
          description: The 2-letter state code of a served state, for example AZ.
        build_id:
          description: >-
            The id of the build of the files, a hash of the recorded steps. Null
            while the files of the state are a trial and no build id exists.
          type:
            - string
            - 'null'
        built_at:
          anyOf:
            - type: string
              format: date-time
              description: Timestamp, ISO 8601.
            - type: 'null'
          description: >-
            When the last step of the build finished, ISO 8601. Null while the
            files carry no record.
        published_at:
          type: string
          format: date-time
          description: When the publish of the state wrote the served tables, ISO 8601.
        run_id:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            The id of the publish that serves the rows of the state. It moves
            with each publish.
        financing_as_of:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The date of the financing slice of the state, the newest applied
            drop of the county records: the clock of every lender window,
            YYYY-MM-DD. Null while the state has no financing slice.
        recordings_through:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The newest recording date of a loan of the slice, YYYY-MM-DD. Null
            while the state has no financing slice.
        financing_source:
          description: >-
            Where the financing slice came from: replay_887 for the replay of
            the archive of the feed, weekly when the weekly delivery carries the
            domains again. Null while the state has no financing slice.
          type:
            - string
            - 'null'
      required:
        - state
        - build_id
        - built_at
        - published_at
        - run_id
        - financing_as_of
        - recordings_through
        - financing_source
      additionalProperties: false
      description: >-
        One served state: its build, its publish and the dates of its financing
        slice.
    StrCoverageJurisdiction:
      type: object
      properties:
        name:
          type: string
          description: >-
            The jurisdiction, upper case, for example SCOTTSDALE, PHOENIX or
            HOUSTON: the city-limit polygon the parcel falls in, never the
            postal city. The same value as
            short_term_rental.coverage.jurisdiction on the parcels inside it.
        regime:
          anyOf:
            - type: string
              enum:
                - REQUIRED
                - NOT_REQUIRED
                - UNKNOWN
              description: >-
                The city's rule on a short-term rental licence or permit.
                REQUIRED: an ordinance requires one. NOT_REQUIRED: the city has
                no requirement, so no roll exists. UNKNOWN: the survey did not
                cover the city. Null when the market row does not record it.
            - type: 'null'
          description: >-
            Null when the market row does not record it. The city's rule on a
            short-term rental licence or permit. REQUIRED: an ordinance requires
            one. NOT_REQUIRED: the city has no requirement, so no roll exists.
            UNKNOWN: the survey did not cover the city. Null when the market row
            does not record it.
        coverage_reason:
          anyOf:
            - type: string
              enum:
                - LOADED_SERVED
                - LOADED_UNVALIDATED
                - LOADED_COUNTS_ONLY
                - REQUIRED_NOT_PUBLISHED
                - NO_REQUIREMENT
                - NOT_SURVEYED
              description: >-
                Why parcels of this jurisdiction carry, or do not carry, a
                short-term rental block. LOADED_SERVED: the city's roll is on
                file, matched to parcels and served, so every parcel inside
                carries a block, NONE when it has no record. LOADED_UNVALIDATED:
                the roll is on file and matched, but without a spot check, so
                the block is present with status null and coverage.served false.
                LOADED_COUNTS_ONLY: the roll is on file for counts only, because
                no parcel match is possible for the file, so no block. No block
                for REQUIRED_NOT_PUBLISHED (licence required, no roll
                published), NO_REQUIREMENT (no licence required) or NOT_SURVEYED
                (outside the survey). Null when the market row does not record
                it.
            - type: 'null'
          description: >-
            Null when the market row does not record it. Why parcels of this
            jurisdiction carry, or do not carry, a short-term rental block.
            LOADED_SERVED: the city's roll is on file, matched to parcels and
            served, so every parcel inside carries a block, NONE when it has no
            record. LOADED_UNVALIDATED: the roll is on file and matched, but
            without a spot check, so the block is present with status null and
            coverage.served false. LOADED_COUNTS_ONLY: the roll is on file for
            counts only, because no parcel match is possible for the file, so no
            block. No block for REQUIRED_NOT_PUBLISHED (licence required, no
            roll published), NO_REQUIREMENT (no licence required) or
            NOT_SURVEYED (outside the survey). Null when the market row does not
            record it.
        served:
          type: boolean
          description: >-
            True when parcels inside this jurisdiction carry a measured status
            (LICENSED, PENDING, EXPIRED or NONE). False when they carry a block
            with status null, or no block at all: coverage_reason says why.
        snapshot_only:
          type: boolean
          description: >-
            True when the roll came from a single pull and has no weekly feed
            (Fountain Hills, Cave Creek). Its dates are the pull date, and the
            API never sets feed_stale.
        licence_start:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The earliest possible date of a licence in this jurisdiction, the
            day its ordinance took effect, YYYY-MM-DD, for example 2025-10-01
            for Houston. Null when unknown, or when the city requires no
            licence.
        snapshot_date:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The snapshot the served blocks read, YYYY-MM-DD:
            short_term_rental.data_as_of on every parcel inside. Null when no
            roll is on file.
        feed_stale:
          type: boolean
          description: >-
            True when this week's feed failed the freshness rule and the API
            serves the last good snapshot instead. Every block inside then
            carries coverage.feed_stale true. False otherwise.
        sources:
          type: array
          items:
            $ref: '#/components/schemas/StrCoverageSource'
          description: >-
            The city files behind this jurisdiction, each with its newest load
            date and its stale flag. Empty when no roll is on file.
        n_licensed:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            - type: 'null'
          description: >-
            Parcels inside with status LICENSED on this snapshot. Null when no
            roll is on file.
        n_pending:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            - type: 'null'
          description: Parcels inside with status PENDING. Null when no roll is on file.
        n_expired:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            - type: 'null'
          description: Parcels inside with status EXPIRED. Null when no roll is on file.
        n_advertised:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            - type: 'null'
          description: >-
            Parcels the city lists as advertised without a licence, Scottsdale
            only. The API counts them and never serves them as a status. Null
            when the city publishes no such list.
        share_unmatched:
          anyOf:
            - type: number
              description: Decimal ratio, never a percentage (0.53 = +53%).
            - type: 'null'
          description: >-
            The share of the city's records that matched no parcel, 0 to 1, for
            example 0.04. Null when no roll is on file.
        share_assumed:
          anyOf:
            - type: number
              description: Decimal ratio, never a percentage (0.53 = +53%).
            - type: 'null'
          description: >-
            The share of attributed parcels with attribution_basis ASSUMED, 0 to
            1. ASSUMED means the attribution has no date, no name and no regime
            bound. Null when no roll is on file.
      required:
        - name
        - regime
        - coverage_reason
        - served
        - snapshot_only
        - licence_start
        - snapshot_date
        - feed_stale
        - sources
        - n_licensed
        - n_pending
        - n_expired
        - n_advertised
        - share_unmatched
        - share_assumed
      additionalProperties: false
      description: >-
        One city of the market in the short-term rental build. It says if the
        licence roll is on file and served, how fresh it is, and what it counts.
        It explains a null short_term_rental block on a parcel: the block is
        null where the API does not serve the jurisdiction.
    ParcelCoverage:
      type: object
      properties:
        parcel_as_of:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The deed data end that the parcel layer build used, YYYY-MM-DD. Null
            when the coverage row does not record it.
        n_parcels:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            - type: 'null'
          description: >-
            Parcels in the layer for this market. Null when the coverage row
            does not record it.
        sale_mortgage_measured:
          type: boolean
          description: >-
            True when the delivery records a purchase mortgage on at least one
            priced last sale in five of the market. Then cash_sale_proxy, the
            sale.cash_sale filter and the cash-buyer quicklist are measured.
            False below that bar, as in the 2026 deliveries, which carry the
            column empty. Then cash_sale_proxy is null on every parcel, and the
            filter and the quicklist answer 422 cash_sale_unavailable.
        financing:
          anyOf:
            - type: object
              properties:
                as_of:
                  anyOf:
                    - type: string
                      format: date
                      description: Calendar date, YYYY-MM-DD.
                    - type: 'null'
                  description: >-
                    The date of the delivery that valued the financing, lien and
                    valuation slice, YYYY-MM-DD. Null when the coverage row does
                    not record it.
                dated:
                  type: boolean
                  description: >-
                    True while the Recorder & Mortgage and AVM datasets are not
                    in the current delivery, so the slice stays at as_of. The
                    API then stamps every value from the slice in meta.dated[].
                dated_reason:
                  description: Why the slice is dated. Null when dated is false.
                  type:
                    - string
                    - 'null'
                n_parcels:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Parcels with a row in the slice. Null when the coverage row
                    does not record it.
                n_with_open_lien:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Parcels with at least one open lien at as_of. Null when the
                    coverage row does not record it.
                n_free_and_clear:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Parcels with zero open liens at as_of. Null when the
                    coverage row does not record it.
                n_avm:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Parcels with an AVM at as_of. Null when the coverage row
                    does not record it.
                n_involuntary:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Parcels with an involuntary lien at as_of. Null when the
                    coverage row does not record it.
                n_lenders:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Distinct raw lender spellings over the two lien tables, not
                    registry ids. For registry ids, read
                    meta.coverage[].lenders.n_lender_ids. Null when the coverage
                    row does not record it.
              required:
                - as_of
                - dated
                - dated_reason
                - n_parcels
                - n_with_open_lien
                - n_free_and_clear
                - n_avm
                - n_involuntary
                - n_lenders
              additionalProperties: false
            - type: 'null'
          description: The financing slice. Null when this market has none.
        permits:
          anyOf:
            - type: object
              properties:
                as_of:
                  anyOf:
                    - type: string
                      format: date
                      description: Calendar date, YYYY-MM-DD.
                    - type: 'null'
                  description: >-
                    The effective date of the loaded permit snapshot,
                    YYYY-MM-DD. Null when the coverage row does not record it.
                n_permits:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Permits served for this market. Null when the coverage row
                    does not record it.
                n_parcels:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Parcels with at least one permit. Null when the coverage row
                    does not record it.
                n_unmatched:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Permits in the county file that landed on no parcel of the
                    market, so the API does not serve them. Null when the
                    coverage row does not record it.
                jurisdictions:
                  anyOf:
                    - type: array
                      items:
                        type: object
                        properties:
                          jurisdiction:
                            description: >-
                              The issuing city or county, upper case. Null when
                              the file names none.
                            type:
                              - string
                              - 'null'
                          n_permits:
                            anyOf:
                              - type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                              - type: 'null'
                            description: >-
                              Permits the jurisdiction issued, all time. Null
                              when the coverage row does not record it.
                          last_issue_date:
                            anyOf:
                              - type: string
                                format: date
                                description: Calendar date, YYYY-MM-DD.
                              - type: 'null'
                            description: >-
                              The newest issue date of the jurisdiction,
                              YYYY-MM-DD. Null when no permit of the
                              jurisdiction carries an issue date.
                          windows_measured:
                            description: >-
                              True when the jurisdiction issued a permit in the
                              12 months before as_of. False when it did not: its
                              feed is stale, so its parcels carry null 24-month
                              and 36-month windows. The rule applies in every
                              market. Read those null windows (n_permits_24m,
                              n_open_permits_12m, major_work_36m, tags_24m,
                              job_value_24m) as unmeasured, not as permit-free.
                              The negative permit filters of the search leave
                              such parcels out. Null only on a coverage row
                              built before the flag existed.
                            type:
                              - boolean
                              - 'null'
                        required:
                          - jurisdiction
                          - n_permits
                          - last_issue_date
                          - windows_measured
                        additionalProperties: false
                    - type: 'null'
                  description: >-
                    The issuing jurisdictions, largest first, each with its
                    permit count, its newest issue date and its windows_measured
                    flag. Null when the coverage row does not record them.
              required:
                - as_of
                - n_permits
                - n_parcels
                - n_unmatched
                - jurisdictions
              additionalProperties: false
            - type: 'null'
          description: The permit snapshot. Null when this market has none.
        owner_profile:
          anyOf:
            - type: object
              properties:
                as_of:
                  anyOf:
                    - type: string
                      format: date
                      description: Calendar date, YYYY-MM-DD.
                    - type: 'null'
                  description: >-
                    The date of the delivery the Owner Profile block comes from,
                    YYYY-MM-DD. Null when the coverage row does not record it.
                n_parcels:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Parcels carrying a profile. Null when the coverage row does
                    not record it.
                n_multi:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Parcels whose owner holds two or more properties. Null when
                    the coverage row does not record it.
                n_portfolio_5:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Parcels whose owner holds five or more. Null when the
                    coverage row does not record it.
              required:
                - as_of
                - n_parcels
                - n_multi
                - n_portfolio_5
              additionalProperties: false
            - type: 'null'
          description: The Owner Profile block. Null when this market has none.
        history:
          anyOf:
            - type: object
              properties:
                first_week:
                  anyOf:
                    - type: string
                      format: date
                      description: Calendar date, YYYY-MM-DD.
                    - type: 'null'
                  description: >-
                    The first weekly file the history lake replayed (the
                    baseline FULL), YYYY-MM-DD. Null when the lake has no file.
                last_week:
                  anyOf:
                    - type: string
                      format: date
                      description: Calendar date, YYYY-MM-DD.
                    - type: 'null'
                  description: >-
                    The last weekly file replayed, YYYY-MM-DD. Null when the
                    lake has no file.
                zips:
                  anyOf:
                    - type: array
                      items:
                        type: string
                    - type: 'null'
                  description: >-
                    The ZIP codes the history lake covers. A parcel outside them
                    has no history: `GET /v1/properties/{id}/history` answers
                    422 history_unavailable and the history block is null.
                n_parcels:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Parcels observed in the ZIP set. Null when the coverage row
                    does not record it.
                n_events:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Typed events on record. Null when the coverage row does not
                    record it.
                n_weeks:
                  anyOf:
                    - type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    - type: 'null'
                  description: >-
                    Weekly files replayed. Null when the coverage row does not
                    record it.
                domains:
                  anyOf:
                    - type: object
                      propertyNames:
                        type: string
                      additionalProperties:
                        type: object
                        properties:
                          first_week:
                            anyOf:
                              - type: string
                                format: date
                                description: Calendar date, YYYY-MM-DD.
                              - type: 'null'
                            description: >-
                              The first weekly file with the domain, YYYY-MM-DD.
                              Null when the lake has no file for it.
                          last_week:
                            anyOf:
                              - type: string
                                format: date
                                description: Calendar date, YYYY-MM-DD.
                              - type: 'null'
                            description: >-
                              The last weekly file with the domain, YYYY-MM-DD.
                              Null when the lake has no file for it.
                          n_events:
                            anyOf:
                              - type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                              - type: 'null'
                            description: >-
                              Typed events of the domain on record. Null when
                              the coverage row does not record it.
                        required:
                          - first_week
                          - last_week
                          - n_events
                        additionalProperties: false
                    - type: 'null'
                  description: >-
                    Per domain, the weeks the lake covers it. Valuation and
                    financing end at the financing slice date, financing.as_of.
                    The rest run to last_week. Null when the coverage row does
                    not record them.
              required:
                - first_week
                - last_week
                - zips
                - n_parcels
                - n_events
                - n_weeks
                - domains
              additionalProperties: false
            - type: 'null'
          description: The history lake. Null when this market has none.
      required:
        - parcel_as_of
        - n_parcels
        - sale_mortgage_measured
        - financing
        - permits
        - owner_profile
        - history
      additionalProperties: false
      description: >-
        What the parcel products cover in one market. The parts are the parcel
        layer, the dated financing slice, the permit snapshot, the Owner Profile
        block and the history lake. Each part carries its as-of date and its
        counts, and is null where the market has none of it. The block itself is
        null where the market has no parcel product tables.
    StrCoverageSource:
      type: object
      properties:
        source:
          type: string
          description: >-
            The source code of one city file, for example S1 (the Scottsdale
            licensed roll), P1 (the Phoenix active permits layer) or COH (the
            Houston registry).
        snapshot_date:
          anyOf:
            - type: string
              format: date
              description: Calendar date, YYYY-MM-DD.
            - type: 'null'
          description: >-
            The date of the newest load of this source, YYYY-MM-DD. Null before
            the first load of this source.
        stale:
          type: boolean
          description: >-
            True when the newest load failed the freshness rule and the API
            still serves the previous snapshot. A load fails the rule when the
            count moved more than 30 percent, or when its newest date is more
            than 14 days old.
      required:
        - source
        - snapshot_date
        - stale
      additionalProperties: false
      description: >-
        One city file behind a jurisdiction's short-term rental data: the date
        of its newest load, and if that load is stale.
  headers:
    ETag:
      description: >-
        The entity tag of the answer, derived from the dataset version of the
        markets in the response and from the representation, not from the body.
        It moves only when a refresh rebuilds the tables of a market. On a JSON
        route, send it back as If-None-Match, and an unchanged dataset answers
        304 with no body. The API streams an export whatever the tag. GET
        /v1/dataset runs no query, so it is the lowest-cost place to send the
        tag. On every 2xx and the 304, never on an error.
      schema:
        type: string
    X-Request-Id:
      description: >-
        The id of this call. The edge mints it and also sends it as zp-rid, the
        gateway's own name for it. The API keys its log line for the call on it,
        and every error body repeats it as request_id. Log it on every response,
        not only on errors. A refusal the gateway answers itself carries zp-rid
        and request_id alone. Those refusals are a 401, a 403 quota_exceeded and
        a 429 at the limit of the plan.
      schema:
        type: string
    X-Rows:
      description: >-
        How many rows the body carries: data.length on a list, 1 on a single
        record. The size of the body, not a charge. Absent on a streamed export,
        whose count the API knows only when the stream ends, and on a 304.
      schema:
        type: integer
        minimum: 0
    X-Dataset-Version:
      description: >-
        The dataset version of every market in the response, as market=version
        pairs joined by commas (phx=1788469819 for one market). The header
        carries one pair per loaded market. The figures are the same as
        meta.coverage[].dataset_version, and you can read them without parsing
        the body. A version moves only when a refresh rebuilds the tables of the
        market, so fold the label into cache keys. On every 2xx and the 304,
        never on an error. Absent when the answer names no market: an empty
        deployment, or a GET /v1/coverage lookup outside every market.
      schema:
        type: string
    X-Data-End:
      description: >-
        The last deed date of every market in the response, as market=YYYY-MM-DD
        pairs joined by commas (phx=2026-08-12 for one market). The header
        carries one pair per loaded market. The dates are the same as
        meta.coverage[].data_end. On every 2xx and the 304, never on an error.
        Absent when the answer names no market: an empty deployment, or a GET
        /v1/coverage lookup outside every market.
      schema:
        type: string
    Retry-After:
      description: >-
        Whole seconds to wait before you retry, never below 1. On a 429, the
        seconds until the spent bucket refills. On a 503, 1 for pool_saturated
        and 5 for ledger_unavailable, and none for database_unavailable. On a
        403 plan_limit for the name-search day cap, the seconds to the next UTC
        midnight, when the cap resets. The other plan limits carry none. The
        body repeats it as retry_after on the 429, the ledger refusal and the
        day cap.
      schema:
        type: integer
        minimum: 1
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        API key from the developer console (starts with zpka_). Create one at
        https://developers.investorlift.com/get-a-key. The same key works on
        POST /mcp.

````

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