{"openapi":"3.1.0","info":{"title":"God Mode API","version":"0.33.1","description":"You have a house to sell, usually a wholesale contract. You want to know **who nearby buys houses like this one and how to reach them**. County deed records already hold the answer. This API reads them 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.\n\n**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.\n\nThe 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.\n\n**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:\n\n```\nGET https://api.investorlift.com/v1/buyers/match?lat=33.476917&lng=-111.920385&radius_miles=2&subject_asking_price=410000&subject_condition=MAJOR_REHAB\nAuthorization: Bearer zpka_...\n```\n\n**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_`.\n\nMoney 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`).\n\nThis 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.\n\nErrors 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`.\n\n**MCP.** The API serves the same data to Model Context Protocol clients at `POST https://api.investorlift.com/mcp` with the same key: twenty-six 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.\n\nProblem 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."},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key from the developer console (starts with zpka_). Create one at https://developers.investorlift.com/get-a-key."}},"schemas":{"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."},"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","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."},"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","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","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."},"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","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."},"ParcelCoverage":{"type":"object","properties":{"parcel_as_of":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The deed data end that the parcel layer build used, YYYY-MM-DD."},"n_parcels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Parcels in the layer for this market."},"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","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."},"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.","type":["string","null"]},"n_parcels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Parcels with a row in the slice."},"n_with_open_lien":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Parcels with at least one open lien at as_of."},"n_free_and_clear":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Parcels with zero open liens at as_of."},"n_avm":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Parcels with an AVM at as_of."},"n_involuntary":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Parcels with an involuntary lien at as_of."},"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."}},"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","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The effective date of the loaded permit snapshot, YYYY-MM-DD."},"n_permits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Permits served for this market."},"n_parcels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Parcels with at least one permit."},"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."},"jurisdictions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"jurisdiction":{"type":["string","null"]},"n_permits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"last_issue_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}]},"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."}},"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","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The date of the delivery the Owner Profile block comes from, YYYY-MM-DD."},"n_parcels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Parcels carrying a profile."},"n_multi":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Parcels whose owner holds two or more properties."},"n_portfolio_5":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Parcels whose owner holds five or more."}},"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","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The first weekly file the history lake replayed (the baseline FULL)."},"last_week":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The last weekly file replayed."},"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."},"n_events":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Typed events on record."},"n_weeks":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Weekly files replayed."},"domains":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"first_week":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}]},"last_week":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}]},"n_events":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"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."}},"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 carries its as-of date and counts."},"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","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","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","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","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","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","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","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","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","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","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."},"recordings_through":{"anyOf":[{"type":"string","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."},"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."},"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."},"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."},"MetaGeometry":{"type":"object","properties":{"kind":{"type":"string","enum":["radius","bbox","place"],"description":"Which location ran: radius, bbox or place. A radius is a point with radius_miles, or a property_id request, which runs around the parcel centroid. 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."},"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"]}},"required":["kind","lat","lng","radius_miles","bbox","property_id","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."},"Meta":{"type":"object","properties":{"generated_at":{"type":"string","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":{"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.","$ref":"#/components/schemas/MetaGeometry"},"resolved_from":{"description":"Present when an id in the request was an old id from an earlier data refresh: the old ids the API followed, in order. The ids are the investor id, from the path or the investor_id filter, the agent id and the lender id. The lender id comes from the path of the lender routes, the financed_by filter or filters.financing.lender_id. Store the id the response carries, not the old one.","type":"array","items":{"type":"string","pattern":"^(inv|agt|len)_[0-9a-f]{12}$","description":"An investor id (inv_...), a listing agent id (agt_...) or a lender id (len_...)."}},"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."}},"required":["generated_at","coverage","terms"],"additionalProperties":false,"description":"Response metadata: when the API produced it, which markets it covers, and how fresh they are."},"Page":{"type":"object","properties":{"next_cursor":{"description":"Opaque cursor for the next page: pass it back as cursor= with the same query. Null on the last page.","type":["string","null"]},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The page size the API applied."},"returned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows in this page."}},"required":["next_cursor","limit","returned"],"additionalProperties":false,"description":"Pagination: the page size, the rows returned and the cursor for the next page. Paged lists carry no total. The summary block does."},"SearchPage":{"type":"object","properties":{"next_cursor":{"description":"Always null: a name search is a ranked lookup with no further page.","type":["string","null"]},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The page size the API applied."},"returned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows in this page."},"capped":{"type":"boolean","description":"True when more names matched than `limit` allowed and the API cut the page at it. The flag tells a page of exactly `limit` hits from the whole set. False when every hit is on the page. When true, narrow the query or pass `market=`."}},"required":["next_cursor","limit","returned","capped"],"additionalProperties":false,"description":"The page block of a name search: no cursor, the limit applied, the hits returned and if the API cut the page at the limit."},"ListingAgent":{"type":"object","properties":{"role":{"description":"The agent's role as the feed writes it, \"Listing Agent\" on every on-market row of the feed. Null when the feed gives none.","type":["string","null"]},"agent_id":{"anyOf":[{"type":"string","pattern":"^agt_[0-9a-f]{12}$","description":"Listing agent id: agt_ followed by 12 hex characters, for example agt_fdfd4a0f8bae. The registry mints the id from a matched state licence number, else from the name and the feed's identifying keys. The id is stable across data refreshes. A licence-based id is the same in every market. The API follows an old id through the alias table. Store it as the identity."},{"type":"null"}],"description":"The stable id of this agent in the agent registry, for example agt_fdfd4a0f8bae: the key to GET `/v1/agents/{id}`. The id is the same across every listing the agent appears on, whatever the spelling of the name. Served to every key. Null when the market has no published agent registry (meta.coverage[].agents_data_end is null). Also null when the feed named an agent the registry does not carry."},"identity_basis":{"anyOf":[{"type":"string","enum":["LICENSE_FEED","LICENSE_NAME","LICENSE_NAME_DISAMBIGUATED","LICENSE_NICKNAME","CONTACT_CLUSTER","NAME_BROKERAGE","NAME_ONLY"],"description":"How the registry established the agent's identity, strongest first: the four LICENSE_ values are the licence-keyed agents. LICENSE_FEED: the MLS feed carried the agent's state licence number on their listings, so the feed's own attribution keyed the agent on the public record. LICENSE_NAME: exactly one state licence carries this name, and LICENSE_NAME_DISAMBIGUATED: several do, and the middle initial, brokerage, office phone or licence period picked one. LICENSE_NICKNAME: the registry found the licence through a nickname or short form of the given name, for example DOUG for DOUGLAS. Without a licence, the registry merged name spellings through a shared personal phone or email (CONTACT_CLUSTER), or through the name and a common brokerage (NAME_BROKERAGE). NAME_ONLY: the name fold alone, so two people with the same name are one agent here (see license_candidates)."},{"type":"null"}],"description":"Served to every key. Null with agent_id. How the registry established the agent's identity, strongest first: the four LICENSE_ values are the licence-keyed agents. LICENSE_FEED: the MLS feed carried the agent's state licence number on their listings, so the feed's own attribution keyed the agent on the public record. LICENSE_NAME: exactly one state licence carries this name, and LICENSE_NAME_DISAMBIGUATED: several do, and the middle initial, brokerage, office phone or licence period picked one. LICENSE_NICKNAME: the registry found the licence through a nickname or short form of the given name, for example DOUG for DOUGLAS. Without a licence, the registry merged name spellings through a shared personal phone or email (CONTACT_CLUSTER), or through the name and a common brokerage (NAME_BROKERAGE). NAME_ONLY: the name fold alone, so two people with the same name are one agent here (see license_candidates)."},"agent_is_holder_member":{"description":"True when this agent is, with high confidence, a person member of the investor holding the parcel. The agent then lists their own inventory (a self-listing), not a client's. False when the parcel has a holder and the agent is not one of its people. Null when the parcel has no investor holding, or when the market has no published agent registry. Served to every key, independent of owner_test.","type":["boolean","null"]}},"required":["role","agent_id","identity_basis","agent_is_holder_member"],"description":"One listing agent of an MLS listing. Through the agent you reach an investor's listed inventory. The block carries the stable agent id, how the registry established that identity, and if the agent lists their own inventory. This host does not serve the identifying fields (name, phones, email, licence)."},"Listing":{"type":"object","properties":{"status":{"type":"string","enum":["ACTIVE","PENDING","SOLD","OFF_MARKET"],"description":"The listing's status in the feed, normalised. ACTIVE means on the market, and PENDING means under contract, contingent or not. SOLD means the listing sold, or any listing whose sale date is on or after its listing date: the sale is the later fact. OFF_MARKET means the listing ended without a sale: cancelled, expired or withdrawn (see off_market_reason). Only ACTIVE and PENDING are on the market."},"status_detail":{"anyOf":[{"type":"string","enum":["NEW","PRICE_CHANGE","COMING_SOON","BACK_ON_MARKET","CONTINGENT","UNDER_CONTRACT"],"description":"The feed's sub-status of an ACTIVE or PENDING listing. NEW means just listed, PRICE_CHANGE means the price moved, and COMING_SOON means announced, before showings start. BACK_ON_MARKET means a contract fell through. CONTINGENT means under contract with contingencies, and UNDER_CONTRACT means under contract. Null when the feed gives none. Always null on SOLD and OFF_MARKET rows, where the sub-status is stale."},{"type":"null"}],"description":"Null when the feed gives no sub-status, and on SOLD and OFF_MARKET rows. The feed's sub-status of an ACTIVE or PENDING listing. NEW means just listed, PRICE_CHANGE means the price moved, and COMING_SOON means announced, before showings start. BACK_ON_MARKET means a contract fell through. CONTINGENT means under contract with contingencies, and UNDER_CONTRACT means under contract. Null when the feed gives none. Always null on SOLD and OFF_MARKET rows, where the sub-status is stale."},"status_raw":{"type":"string","description":"The feed's own status and sub-status, for diagnosis, for example \"Active / Price Change\" or \"Failed / Canceled\". Do not branch on it: use status and status_detail."},"off_market_reason":{"anyOf":[{"type":"string","enum":["CANCELED","EXPIRED","OFF_MARKET"],"description":"Why an OFF_MARKET listing ended. CANCELED means the seller cancelled, and EXPIRED means the listing agreement ran out. OFF_MARKET means withdrawn or temporarily off the market, and the feed says no more. Null on every other status."},{"type":"null"}],"description":"Only on OFF_MARKET rows, null otherwise. Why an OFF_MARKET listing ended. CANCELED means the seller cancelled, and EXPIRED means the listing agreement ran out. OFF_MARKET means withdrawn or temporarily off the market, and the feed says no more. Null on every other status."},"is_rental":{"type":"boolean","description":"True when the feed flags the listing as a rental, or when its asking price is under $10,000. That is a monthly rent in the sale price field of a row the feed did not flag: about 1 in 40 active rows. A rental listing keeps its status but is never on the market and never counts."},"on_market":{"type":"boolean","description":"True when status is ACTIVE or PENDING and the listing is not a rental. The parcel is then for sale at the listing data end date (meta.coverage[].listings_data_end). A parcel fact, independent of who owns it."},"owner_test":{"anyOf":[{"type":"string","enum":["PASSED","FAILED","UNDATED","NOT_HOLDER"],"description":"The ownership test: if the listing belongs to the investor holding the parcel at the deed data end date (meta.coverage[].data_end). PASSED: listed on or after the holder's purchase date, so it is their listing. FAILED: listed before the purchase, so it is the listing they bought under or an older one, never their inventory. UNDATED: the holding has no purchase date, so the test cannot run, and the API shows and flags the listing but does not count it. NOT_HOLDER, on a deal row only: this row is not the parcel's current hold deal, and another investor holds the parcel. Null when the parcel has no investor holding: a household, a public body or an unregistered owner."},{"type":"null"}],"description":"Null when the parcel has no investor holding. The ownership test: if the listing belongs to the investor holding the parcel at the deed data end date (meta.coverage[].data_end). PASSED: listed on or after the holder's purchase date, so it is their listing. FAILED: listed before the purchase, so it is the listing they bought under or an older one, never their inventory. UNDATED: the holding has no purchase date, so the test cannot run, and the API shows and flags the listing but does not count it. NOT_HOLDER, on a deal row only: this row is not the parcel's current hold deal, and another investor holds the parcel. Null when the parcel has no investor holding: a household, a public body or an unregistered owner."},"counted":{"type":"boolean","description":"True when on_market is true and owner_test is PASSED: exactly the rows the investor's listings rollup (n_active, n_pending) counts. The API shows everything else for context and never counts it."},"list_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The current asking price, whole dollars, for example 289000. Null, never 0, when the feed has none."},"price_low":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The lowest asking price this listing carried, whole dollars. Null when the feed has none, and null when the feed's price history predates this listing (a prior listing's range)."},"price_low_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"When the listing carried price_low, YYYY-MM-DD. Null with price_low."},"price_high":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The highest asking price this listing carried, whole dollars. Null under the same rule as price_low."},"price_high_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"When the listing carried price_high, YYYY-MM-DD. Null with price_high."},"listed_on":{"type":"string","description":"When the listing went live, YYYY-MM-DD (the feed's original listing date). Always set."},"status_updated_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"When the feed last changed the status, YYYY-MM-DD: the row's own as-of date. Null when the feed gives none."},"off_market_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"When an OFF_MARKET listing ended, YYYY-MM-DD. Null on every other status, and when the feed's end date predates the listing."},"sold_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"When a SOLD listing closed, YYYY-MM-DD. Null on every other status."},"sold_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"What a SOLD listing closed at, whole dollars. Null on every other status, and when the feed has no price."},"days_on_market":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days from listed_on to the status's end date: ACTIVE to the listing data end date (meta.coverage[].listings_data_end), PENDING to status_updated_on, SOLD to sold_on, OFF_MARKET to off_market_on. Null when that end date is unknown or earlier than listed_on. Never measured from the request time."},"list_to_bought_ratio":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"list_price divided by what the investor paid, rounded to 4 decimals, for example 1.3182: an asking price 32% above the purchase. On hold deal rows only. Null on the property row, and when either price is unknown, as for most Texas purchases."},"mls_number":{"description":"The MLS listing number as the feed writes it, for example \"6812345\". Null when the feed has none.","type":["string","null"]},"brokerage_name":{"description":"The listing brokerage: the brokerage name the feed writes, else the listing office's corporate name from the feed's office record. The two never overlap. Set on about half of all listing rows. On the rows on the market the feed carries neither on most rows, so expect it on a fifth or fewer there. Served to every key.","type":["string","null"]},"agents":{"type":"array","items":{"$ref":"#/components/schemas/ListingAgent"},"description":"The listing agents, usually one. Empty when the feed names none. This host does not serve the identifying fields of each agent; the array itself is always present."}},"required":["status","status_detail","status_raw","off_market_reason","is_rental","on_market","owner_test","counted","list_price","price_low","price_low_on","price_high","price_high_on","listed_on","status_updated_on","off_market_on","sold_on","sold_price","days_on_market","list_to_bought_ratio","mls_number","brokerage_name","agents"],"additionalProperties":false,"description":"The MLS listing on a parcel: the latest listing the feed knows, its status and prices, and the listing agent. The block says if the listing belongs to the investor holding the parcel. Measured at the listing data end date, never the clock."},"InvestorListings":{"type":"object","properties":{"n_active":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Holdings of this investor listed ACTIVE at listings_data_end whose listing passed the ownership test. 0 when none."},"n_pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Holdings of this investor listed PENDING at listings_data_end whose listing passed the ownership test. 0 when none."},"n_listed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"n_active + n_pending: what the investor has on the market at listings_data_end."},"n_listed_undated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Holdings on the market whose purchase date is unknown, so the ownership test cannot run. The deal rows show them with owner_test UNDATED, and the counts above leave them out. Usually 0."},"n_holdings_dated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Hold deal rows of this investor with a purchase date: the holdings the ownership test can run on."},"n_holdings_undated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Hold deal rows of this investor without a purchase date. n_holdings_dated + n_holdings_undated is the investor's hold count."},"median_list_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median asking price over the counted listings that carry one, whole dollars. Null when the rollup counts nothing, or when no counted listing carries an asking price."},"min_list_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Lowest asking price among the counted listings that carry one, whole dollars. Null when the rollup counts nothing, or when no counted listing carries an asking price."},"max_list_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Highest asking price among the counted listings that carry one, whole dollars. Null when the rollup counts nothing, or when no counted listing carries an asking price. With min_list_price the drawer's \"asking $289K to $340K\"."},"last_listed_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The newest listed_on among the counted listings, YYYY-MM-DD. Null when the rollup counts nothing."},"n_listed_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings of this investor's holdings, any status, that went live in the 365 days ending on listings_data_end and passed the ownership test. A lower bound: the feed keeps one listing per parcel, the latest."},"listings_data_end":{"type":"string","description":"The date the block measures every listing window against, YYYY-MM-DD: the newest status update in the market's listing feed. Later than the deed data_end."}},"required":["n_active","n_pending","n_listed","n_listed_undated","n_holdings_dated","n_holdings_undated","median_list_price","min_list_price","max_list_price","last_listed_on","n_listed_12m","listings_data_end"],"additionalProperties":false,"description":"What the investor has on the market at the listing data end date, from the MLS listings on the parcels they hold. Null where it sits when the market has no published listing tables. Zeros when it has them and nothing is listed."},"AgentListings":{"type":"object","properties":{"n_total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings the agent appears on, every status, as far back as the feed names agents, about 2018 at full coverage. A lower bound: the feed keeps one listing per parcel, the newest, so a parcel relisted by the same agent counts once."},"n_active":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings ACTIVE at the listing slice behind the agent registry (meta.coverage[].agents_data_end), never the clock. That slice equals listings_data_end when the registry is current."},"n_pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings PENDING at the registry's listing slice (meta.coverage[].agents_data_end)."},"n_on_market":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings on the market at the registry's listing slice (meta.coverage[].agents_data_end): ACTIVE or PENDING and not a rental."},"n_sold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings that sold."},"n_off_market":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings that ended without a sale."},"first_listed_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The oldest listed_on among the agent's listings, YYYY-MM-DD. Null when none is dated."},"last_listed_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The newest listed_on, YYYY-MM-DD. Null when none is dated."},"n_listed_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings that went live in the 365 days ending on the registry's listing slice (meta.coverage[].agents_data_end)."},"n_sold_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings that sold in the 365 days ending on the registry's listing slice (meta.coverage[].agents_data_end)."},"median_list_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median asking price over the agent's priced listings, whole dollars. Null when no listing carries a price."},"median_sold_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median sold price over the agent's sold listings with a price, whole dollars. Null when none has one."},"by_year":{"type":"array","items":{"type":"object","properties":{"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The calendar year of listed_on."},"n_listed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings of this agent that went live in that year."},"n_sold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, the ones that sold."},"n_self":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, the ones on parcels held by an investor the agent is a person member of (self-listings)."}},"required":["year","n_listed","n_sold","n_self"],"additionalProperties":false,"description":"One year of the agent's listing activity."},"description":"Listing counts per calendar year of listed_on, oldest first. Empty when no listing is dated."}},"required":["n_total","n_active","n_pending","n_on_market","n_sold","n_off_market","first_listed_on","last_listed_on","n_listed_12m","n_sold_12m","median_list_price","median_sold_price","by_year"],"additionalProperties":false,"description":"The agent's listing activity in the market, counted over the MLS listings that name them. The registry counts them at its own listing slice (meta.coverage[].agents_data_end), never at the clock. Served to every key."},"AgentInvestorLink":{"type":"object","properties":{"investor_id":{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"The linked investor: the key to GET `/v1/investors/{id}`."},"investor_name":{"type":"string","description":"The investor's registry name, the deed spelling, upper case, SURNAME GIVEN for a person, for example ZAK VENTURES LLC. Served to every key, as on every deal row."},"investor_display_name":{"type":"string","description":"The name to print for the investor. For a cleanly parsed person, it has the form GIVEN [MIDDLE] SURNAME [SUFFIX] in upper case. For example, \"DANA RIVERA\" from the deed's \"RIVERA DANA\". For an entity, a trust, a public body, an institutional investor or an ambiguous spelling it equals investor_name. Display only: join on investor_id."},"kind":{"anyOf":[{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},{"type":"null"}],"description":"The investor's primary kind. Null when the registry recorded none. Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},"link_basis":{"type":"string","enum":["SELF_LISTING","LICENSE_MAILING"],"description":"What ties the agent to the investor. SELF_LISTING: the agent listed a parcel held by an investor whose person member carries the agent's name, so they sell their own inventory. LICENSE_MAILING: the licensee's mailing address on the state roll equals a mailing address of a person member with the agent's name."},"confidence":{"type":"string","enum":["HIGH","MEDIUM"],"description":"How sure the link is. HIGH: surname and given name equal, middle initials compatible. MEDIUM: surname equal and the given names share their first three letters, for example DOUG and DOUGLAS."},"n_self_listings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings of the agent on parcels this investor holds. 0 for a LICENSE_MAILING link with no such listing."}},"required":["investor_id","investor_name","investor_display_name","kind","link_basis","confidence","n_self_listings"],"description":"One person-level link between a listing agent and an investor: the agent is one of the investor's people. An agent linked to an investor sells that investor's inventory as their own."},"AgentProfile":{"type":"object","properties":{"id":{"type":"string","pattern":"^agt_[0-9a-f]{12}$","description":"Listing agent id: agt_ followed by 12 hex characters, for example agt_fdfd4a0f8bae. The registry mints the id from a matched state licence number, else from the name and the feed's identifying keys. The id is stable across data refreshes. A licence-based id is the same in every market. The API follows an old id through the alias table. Store it as the identity."},"market":{"type":"string","description":"Market code, for example phx. The loaded markets are in meta.coverage[]. A licence-keyed agent has the same id in every market and a profile per market."},"kind":{"type":"string","enum":["PERSON","TEAM_OR_OFFICE"],"description":"What the feed named. PERSON: a named individual, the only kind the registry matches to a licence or links to an investor. TEAM_OR_OFFICE: a team, an office or a builder sales office written into the agent field, for example \"The Smith Team\" or a brokerage name. The registry groups such a name under one id so you can find its rows, and never licence-matches or links it."},"n_name_variants":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many spellings name_variants holds. Served to every key."},"identity_basis":{"type":"string","enum":["LICENSE_FEED","LICENSE_NAME","LICENSE_NAME_DISAMBIGUATED","LICENSE_NICKNAME","CONTACT_CLUSTER","NAME_BROKERAGE","NAME_ONLY"],"description":"How the registry established the agent's identity, strongest first: the four LICENSE_ values are the licence-keyed agents. LICENSE_FEED: the MLS feed carried the agent's state licence number on their listings, so the feed's own attribution keyed the agent on the public record. LICENSE_NAME: exactly one state licence carries this name, and LICENSE_NAME_DISAMBIGUATED: several do, and the middle initial, brokerage, office phone or licence period picked one. LICENSE_NICKNAME: the registry found the licence through a nickname or short form of the given name, for example DOUG for DOUGLAS. Without a licence, the registry merged name spellings through a shared personal phone or email (CONTACT_CLUSTER), or through the name and a common brokerage (NAME_BROKERAGE). NAME_ONLY: the name fold alone, so two people with the same name are one agent here (see license_candidates)."},"license_candidates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many licensees of the state roll fit the agent's name. 0 means none: the name is not on the roll, or it is a nickname the registry did not resolve. 1 means matched: the API serves the licence. 2 or more means ambiguous: several people share the name and nothing told them apart. The API then serves no licence, and the rows under this name can belong to more than one person."},"brokerages":{"type":"array","items":{"type":"string","description":"One brokerage name as the feed writes it."},"description":"The brokerages on the agent's listings, newest first, at most 10. Empty when the feed named none. Served to every key."},"current_brokerage":{"description":"The brokerage on the agent's newest listing that names one. Null when none does. Served to every key.","type":["string","null"]},"listings":{"$ref":"#/components/schemas/AgentListings"},"n_self_listings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings of the agent on parcels held by an investor linked to the agent with HIGH confidence: their own inventory, not a client's. 0 when none."},"investor_links":{"type":"array","items":{"$ref":"#/components/schemas/AgentInvestorLink"},"description":"The investors this agent is a person member of, HIGH confidence first, then by self-listings. Empty when none. This host serves the investor names. It does not serve the member's deed name."},"has_investor_link":{"type":"boolean","description":"True when investor_links is not empty."}},"required":["id","market","kind","n_name_variants","identity_basis","license_candidates","brokerages","current_brokerage","listings","n_self_listings","investor_links","has_investor_link"],"description":"The profile of one listing agent: who they are, where they work, what they list, and which investors they belong to as a person. Who they are is the name spellings, the state licence the registry keyed them on and how sure that key is. Where they work is the brokerages, and what they list is the counts by status and year."},"AgentSearchResult":{"type":"object","properties":{"id":{"type":"string","pattern":"^agt_[0-9a-f]{12}$","description":"Listing agent id: agt_ followed by 12 hex characters, for example agt_fdfd4a0f8bae. The registry mints the id from a matched state licence number, else from the name and the feed's identifying keys. The id is stable across data refreshes. A licence-based id is the same in every market. The API follows an old id through the alias table. Store it as the identity."},"market":{"type":"string","description":"Market code, for example phx."},"kind":{"type":"string","enum":["PERSON","TEAM_OR_OFFICE"],"description":"What the feed named. PERSON: a named individual, the only kind the registry matches to a licence or links to an investor. TEAM_OR_OFFICE: a team, an office or a builder sales office written into the agent field, for example \"The Smith Team\" or a brokerage name. The registry groups such a name under one id so you can find its rows, and never licence-matches or links it."},"identity_basis":{"type":"string","enum":["LICENSE_FEED","LICENSE_NAME","LICENSE_NAME_DISAMBIGUATED","LICENSE_NICKNAME","CONTACT_CLUSTER","NAME_BROKERAGE","NAME_ONLY"],"description":"How the registry established the agent's identity, strongest first: the four LICENSE_ values are the licence-keyed agents. LICENSE_FEED: the MLS feed carried the agent's state licence number on their listings, so the feed's own attribution keyed the agent on the public record. LICENSE_NAME: exactly one state licence carries this name, and LICENSE_NAME_DISAMBIGUATED: several do, and the middle initial, brokerage, office phone or licence period picked one. LICENSE_NICKNAME: the registry found the licence through a nickname or short form of the given name, for example DOUG for DOUGLAS. Without a licence, the registry merged name spellings through a shared personal phone or email (CONTACT_CLUSTER), or through the name and a common brokerage (NAME_BROKERAGE). NAME_ONLY: the name fold alone, so two people with the same name are one agent here (see license_candidates)."},"license_candidates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many licensees fit the name: 0 none, 1 matched, 2 or more ambiguous."},"current_brokerage":{"description":"The brokerage on the agent's newest listing that names one. Null when none does.","type":["string","null"]},"n_listings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings the agent appears on, every status."},"n_active":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings ACTIVE at the listing slice behind the agent registry (meta.coverage[].agents_data_end)."},"last_listed_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The newest listing date, YYYY-MM-DD. Null when none is dated."},"n_investor_links":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Investors linked to the agent as a person member. 0 when none."},"match":{"type":"string","enum":["license","exact","tokens","trigram"],"description":"How the search found the hit, best first. With license the query is a licence number and equals one of the agent's. With exact the normalised query equals the agent's name. With tokens every word of the query is a word of the name, in any order, so \"Rivera Dana\" finds DANA RIVERA. With trigram the match is fuzzy, similarity 0.55 or more, and the API tries it only when fewer than 10 agents matched otherwise. The API sets similarity on a trigram hit."},"similarity":{"description":"Trigram similarity of the name to the query, 0 to 1. The API sets it on trigram hits only. Null otherwise.","type":["number","null"]}},"required":["id","market","kind","identity_basis","license_candidates","current_brokerage","n_listings","n_active","last_listed_on","n_investor_links","match","similarity"],"description":"One agent found by name or licence number, with enough to pick the right one: identity basis, brokerage, listing counts and investor links."},"AgentListingRow":{"type":"object","properties":{"property_id":{"type":"string","description":"Parcel id: prop_ followed by 32 hex characters, the key to GET `/v1/properties/{property_id}`."},"address_short":{"description":"Street address without city, for example \"7522 E Cholla St\". Null when the parcel is not in the parcel table.","type":["string","null"]},"city":{"description":"City, upper case. Null when the parcel is not in the parcel table.","type":["string","null"]},"zip":{"description":"5-digit ZIP. Null when the parcel is not in the parcel table.","type":["string","null"]},"is_self_listing":{"type":"boolean","description":"True when the agent is, with high confidence, a person member of the investor holding the parcel: their own inventory. False otherwise, parcels with no investor holding included."},"holder":{"anyOf":[{"type":"object","properties":{"investor_id":{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"The investor holding the parcel at the listing slice of the agent registry (meta.coverage[].agents_data_end)."},"name":{"description":"The investor's registry name, the deed spelling, upper case, SURNAME GIVEN for a person. Served to every key, as on every deal row. Null when the holder id no longer has an investor row, which occurs between a registry rebuild and the next agent registry run. Open GET `/v1/investors/{investor_id}` to check.","type":["string","null"]},"display_name":{"description":"The name to print for the holder. For a cleanly parsed person, it has the form GIVEN [MIDDLE] SURNAME [SUFFIX] in upper case. Otherwise it equals name. Null exactly when name is null.","type":["string","null"]}},"required":["investor_id","name","display_name"],"additionalProperties":false},{"type":"null"}],"description":"The investor holding the parcel at the listing slice of the agent registry (meta.coverage[].agents_data_end), when one did. Its investor_id is the key to GET `/v1/investors/{id}`. Null for a household, a public body or an unregistered owner."},"listing":{"anyOf":[{"$ref":"#/components/schemas/Listing"},{"type":"null"}],"description":"The MLS listing on the parcel with the holder's ownership test (owner_test) and no purchase ratio. Null only when the listing record vanished between the registry build and the listing refresh. The agents[] inside carry this agent and any co-listing agent with their ids."}},"required":["property_id","address_short","city","zip","is_self_listing","holder","listing"],"additionalProperties":false,"description":"One listing of the agent: the parcel, if it is the agent's own inventory, who holds the parcel, and the listing block."},"LenderRef":{"type":"object","properties":{"id":{"type":"string","pattern":"^len_[0-9a-f]{12}$","description":"The lender: the key to GET `/v1/lenders/{id}`."},"name":{"type":"string","description":"The lender's display name in the market, upper case as the file writes it, for example KIAVI FUNDING INC. A business name, which the API serves to every key."},"lender_class":{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"A reading of the name, never a legal status. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"is_hard_money":{"type":"boolean","description":"True when the name carries hard-money vocabulary or is a known hard-money brand, or when the book behaves like one. The profile's hard_money_basis says which, and the behaviour test needs the market's deed link. A PRIVATE lender_class is a trust or a seller carry-back, not a hard-money lender."}},"required":["id","name","lender_class","is_hard_money"],"additionalProperties":false,"description":"The lender behind a ranking row: id, display name, class and the hard-money flag."},"LenderSuccessor":{"type":"object","properties":{"id":{"type":"string","pattern":"^len_[0-9a-f]{12}$","description":"The successor: the key to GET `/v1/lenders/{id}`, a served lender of the same market."},"name":{"type":"string","description":"The lender's display name in the market, upper case as the file writes it, for example KIAVI FUNDING INC. A business name, which the API serves to every key."},"lender_class":{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"A reading of the name, never a legal status. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"is_hard_money":{"type":"boolean","description":"True when the name carries hard-money vocabulary or is a known hard-money brand, or when the book behaves like one. The profile's hard_money_basis says which, and the behaviour test needs the market's deed link. A PRIVATE lender_class is a trust or a seller carry-back, not a hard-money lender."},"kind":{"type":"string","enum":["ACQUISITION","SUBSIDIARY"],"description":"How the lender is part of its successor. ACQUISITION: the successor bought it or absorbed it, for example NATIONAL CITY BANK into PNC BANK. SUBSIDIARY: the successor is its parent, for example WELLS FARGO FINANCIAL ARIZONA under WELLS FARGO BANK."}},"required":["id","name","lender_class","is_hard_money","kind"],"additionalProperties":false,"description":"The lender this one is part of. An acquisition never merges the books: BANK ONE's loans stay BANK ONE's, under BANK ONE's id. So the profile points at the acquirer or the parent instead. Null when the registry records no successor, and when the successor has no profile in the market."},"LenderNmls":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The NMLS id (Nationwide Multistate Licensing System), for example 1120. The registry keeps it by hand for the largest lenders."},"url":{"type":"string","description":"The NMLS Consumer Access page for that id, for example https://www.nmlsconsumeraccess.org/EntityDetails.aspx/COMPANY/1120: the lender's licences and registrations as the regulators publish them."}},"required":["id","url"],"additionalProperties":false,"description":"The NMLS id the registry keeps by hand for the largest lenders, and the NMLS Consumer Access page it opens. Null where the registry keeps none."},"LenderIdHistoryEntry":{"type":"object","properties":{"old_id":{"type":"string","pattern":"^len_[0-9a-f]{12}$","description":"The id the registry retired into this lender. After the merge, the old id answers on GET `/v1/lenders/{id}` and its loans and borrowers routes, and the API redirects here with meta.resolved_from."},"reason":{"type":"string","enum":["MERGED","MERGED_PARTIAL","NEW_SPLIT","RETIRED"],"description":"Why the API stopped serving the old id. MERGED: every spelling behind it belongs to this lender, because a dictionary row or a fold decision joined them. MERGED_PARTIAL: some of its spellings came here, the rest went elsewhere. NEW_SPLIT: the registry split this lender out of it. RETIRED: no lender holds its spellings any more, so such an id answers 410 gone and never appears in an id_history."},"lender_run":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The lender registry run that retired it, an integer that grows with every build."}},"required":["old_id","reason","lender_run"],"additionalProperties":false,"description":"One id a merge retired into this lender: the old id, why, and the registry run that did it."},"LenderYear":{"type":"object","properties":{"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The calendar year of the recording date, 2002 or later."},"n_loans":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments recorded that year with this lender as lender of record, counted once across the open-lien and recorded-history tables."},"n_in_history":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Recorded-history slots dated that year, duplicates included: what the history holds, a floor, not activity."},"n_open":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Open lien positions at the slice date with a recording date in that year."},"volume":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sum of the loan amounts of the priced instruments, whole dollars. The sum counts a blanket group once, that is one loan recorded across 5 or more parcels. It leaves out amounts above $5,000,000, a facility amount the file records on every parcel it covers, which amount_outlier on the loan row flags. 0 when no instrument carries a price."},"n_purchase":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Instruments recorded that year whose purpose is PURCHASE, a priced deed in the 45 days up to the recording. Null while the market has no deed link (purchase_measured false), and for years before the deed registry begins."},"n_investor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Instruments recorded that year whose borrower resolves to a registered investor, so the loan row carries investor_id. Null while the market has no borrower match (investor_lending_measured false)."},"median_amount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median loan amount of the priced instruments, whole dollars, amounts above $5,000,000 left out. Null under 3."},"floor":{"type":"boolean","description":"True for years before history_floor_year. The history keeps 5 slots per parcel and newer mortgages push older ones out, so the count is a floor."}},"required":["year","n_loans","n_in_history","n_open","volume","n_purchase","n_investor","median_amount","floor"],"additionalProperties":false,"description":"One calendar year of the lender's originations, from 2002, the year the recorded history begins."},"LenderMonth":{"type":"object","properties":{"month":{"type":"string","description":"The calendar month, YYYY-MM."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments recorded in the month with this lender as lender of record, counted once across both tables."},"volume":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sum of the loan amounts of the priced instruments, whole dollars, a blanket group counted once and amounts above $5,000,000 left out. 0 when no instrument carries a price."},"market_n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The market's instruments recorded that month, every lender, persons below the gate and placeholders included: the share denominator."},"share":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"n divided by market_n, 0 to 1. 0 when n is 0, and null when market_n is 0."},"rank":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Rank by n among the lenders with at least one instrument that month, every class included, with ties by volume then id. Null when n is 0."},"hard_money_market_n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of market_n, the instruments from hard-money lenders (is_hard_money)."},"hard_money_rank":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Rank by n among the hard-money lenders with at least one instrument that month. Null when this lender is not a hard-money lender or n is 0."},"n_purchase_money":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Of n, the instruments whose purpose is PURCHASE, a priced deed in the 45 days up to the recording. Null while the market has no deed link (purchase_measured false)."},"partial":{"type":"boolean","description":"True on the last month only: recordings in the slice stop on recordings_through, before the month ends."}},"required":["month","n","volume","market_n","share","rank","hard_money_market_n","hard_money_rank","n_purchase_money","partial"],"additionalProperties":false,"description":"One calendar month of the lender's originations against the market's: count, volume, share and rank."},"LenderTerms":{"type":"object","properties":{"window":{"anyOf":[{"type":"string","enum":["24m","all"],"description":"Which loans the terms block covers. 24m is the lender's loans in the 24 months ending on the slice date. The block uses 24m when 20 or more of those loans carry an amount, else all, which is every loan on record."},{"type":"null"}],"description":"Null when no loan of the lender carries an amount. Which loans the terms block covers. 24m is the lender's loans in the 24 months ending on the slice date. The block uses 24m when 20 or more of those loans carry an amount, else all, which is every loan on record."},"amount":{"type":"object","properties":{"p25":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"25th percentile of loan amount, whole dollars. Null under 3 values."},"p50":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median loan amount, whole dollars. Null under 3 values."},"p75":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"75th percentile of loan amount, whole dollars. Null under 3 values."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Values behind the quartiles: the window's priced instruments, amounts above $5,000,000 left out."}},"required":["p25","p50","p75","n"],"additionalProperties":false,"description":"What the lender lends: the quartiles of the loan amounts, amounts above $5,000,000 left out. A facility amount the file records on every parcel it covers is not what the lender lends on one."},"rate":{"type":"object","properties":{"p25":{"description":"25th percentile of interest rate, percent as the file writes it. Null under 3 values.","type":["number","null"]},"p50":{"description":"Median interest rate, percent as the file writes it. Null under 3 values.","type":["number","null"]},"p75":{"description":"75th percentile of interest rate, percent as the file writes it. Null under 3 values.","type":["number","null"]},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Values behind the quartiles: the window's instruments carrying a rate."},"share_rated":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"The share of the window's instruments that carry a rate, 0 to 1. Null when the window is empty. Under 0.5 the quartiles describe a minority of the book."}},"required":["p25","p50","p75","n","share_rated"],"additionalProperties":false,"description":"The rate as the file writes it: an estimate at the slice date on open rows, the rate at recording on history rows."},"term":{"type":"object","properties":{"median_months":{"description":"Median term in months over the window's instruments whose term is known. Null under 3.","type":["number","null"]},"share_le_24m":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Share of the known-term instruments at 24 months or less, 0 to 1. Null when share_term_known is under 0.5."},"share_25_120m":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Share at 25 to 120 months, 0 to 1. Null when share_term_known is under 0.5."},"share_121_359m":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Share at 121 to 359 months, 0 to 1. Null when share_term_known is under 0.5."},"share_ge_360m":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Share at 360 months and longer, 0 to 1. Null when share_term_known is under 0.5."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments whose term is known, from a term or a maturity on file."},"share_term_known":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"The share of the window's instruments whose term band is not UNKNOWN, 0 to 1. Null when the window is empty. A hard-money book often carries a term on one row in ten."}},"required":["median_months","share_le_24m","share_25_120m","share_121_359m","share_ge_360m","n","share_term_known"],"additionalProperties":false,"description":"The term, from the file's term in months or its maturity date. The API serves the band shares only where half or more of the book carries a term."},"loan_to_avm":{"type":"object","properties":{"p25":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"25th percentile of the loan amount divided by the parcel's automated valuation at the slice date. Null under 3 values."},"p50":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Median the loan amount divided by the parcel's automated valuation at the slice date. Null under 3 values."},"p75":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"75th percentile of the loan amount divided by the parcel's automated valuation at the slice date. Null under 3 values."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Values behind the quartiles: the window's open lien positions on a parcel with a valuation."}},"required":["p25","p50","p75","n"],"additionalProperties":false,"description":"The loan against the as-of valuation, open lien positions only: not a loan-to-value at origination. A ratio above 1 on a short-term loan is a rehab holdback, not negative equity."},"loan_to_price":{"anyOf":[{"type":"object","properties":{"p25":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"25th percentile of the loan amount divided by the price on the purchase deed it financed. Null under 3 values."},"p50":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Median the loan amount divided by the price on the purchase deed it financed. Null under 3 values."},"p75":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"75th percentile of the loan amount divided by the price on the purchase deed it financed. Null under 3 values."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Values behind the quartiles: the window's PURCHASE instruments with a priced deed and an amount."}},"required":["p25","p50","p75","n"],"additionalProperties":false},{"type":"null"}],"description":"The loan against the purchase price, over the window's purchase-money instruments (purpose PURCHASE). The ratio is the loan divided by the price on the deed dated in the 45 days up to the recording. Above 1 is a rehab holdback on top of the price, not an error, and a fix-and-flip lender's median sits near 1.1. Above 3 is a blanket loan, which the quartiles leave out. Null while the market has no deed link (purchase_measured false)."},"estimated_payment_p50":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median estimated monthly payment over the window's open lien positions carrying one, whole dollars. Null under 3."}},"required":["window","amount","rate","term","loan_to_avm","loan_to_price","estimated_payment_p50"],"additionalProperties":false,"description":"The lender's pricing and terms: amount, rate and term quartiles, the loan against the as-of valuation, the payment. The block covers the 24-month window when 20 or more loans in it carry an amount, else all time, and window says which."},"LenderGeoRow":{"type":"object","properties":{"value":{"type":"string","description":"The geography: a 5-digit county FIPS such as 04013, a city name upper case such as PHOENIX, or a 5-digit ZIP."},"n_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments recorded there in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock."},"n_all":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Dated instruments recorded there, all time. The profile counts an instrument without a recording date in n_undated and in no place."},"volume_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Loan volume recorded there in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock. The volume sums the priced instruments' loan amounts in whole dollars, counts a blanket group once and leaves out amounts above $5,000,000. 0 when no instrument carries a price."},"share_of_lender":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"n_24m over the lender's instruments in the window, 0 to 1: how concentrated the lender is here. Null when the lender has no instrument in the window."},"rank_in_geo":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The lender's rank by n_24m among every lender active in this geography in the window. The registry breaks ties by volume, then by id. Null when n_24m is 0."},"share_of_geo":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"n_24m over every lender's instruments in this geography in the window, 0 to 1. Null when n_24m is 0."}},"required":["value","n_24m","n_all","volume_24m","share_of_lender","rank_in_geo","share_of_geo"],"additionalProperties":false,"description":"One geography with the lender's loans on record: how much of the lender is here, and how much of this place is the lender."},"LenderGeography":{"type":"object","properties":{"by_county":{"type":"array","items":{"$ref":"#/components/schemas/LenderGeoRow"},"description":"Every county with the lender's loans on record, most window loans first. Every one is inside coverage.counties."},"by_city":{"type":"array","items":{"$ref":"#/components/schemas/LenderGeoRow"},"description":"The top 20 cities by window loans, then all-time loans."},"by_zip":{"type":"array","items":{"$ref":"#/components/schemas/LenderGeoRow"},"description":"The top 50 ZIP codes by window loans, then all-time loans."},"n_zips_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct ZIP codes with at least one instrument in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock."},"concentration_top3_zips":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"The share of the lender's window instruments in its three largest ZIP codes, 0 to 1. Null when the lender has none in the window."}},"required":["by_county","by_city","by_zip","n_zips_24m","concentration_top3_zips"],"additionalProperties":false,"description":"Where the lender lends: by county, city and ZIP, with the lender's share of each place and each place's share of the lender. Every count is of dated instruments. The profile counts an instrument without a recording date in n_undated and in no place. A place whose instruments are all undated is absent."},"LenderCoverage":{"type":"object","properties":{"market":{"type":"string","description":"Market code, for example phx."},"counties":{"type":"array","items":{"type":"string","description":"A 5-digit county FIPS."},"description":"The counties the financing slice covers for this market, for example [\"04013\"]: every loan, geography and ranking is inside them. For a ZIP, city or county outside them, the API answers 422 outside_coverage."},"n_parcels_uncovered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Parcels of the market outside those counties. They carry no financing rows and so no loans here. For example, the Phoenix market has 224,192 such parcels in Pinal County."},"as_of":{"type":"string","description":"The slice date, YYYY-MM-DD. The registry measures every count at this date."},"recordings_through":{"type":"string","description":"The newest recording date in either source table, YYYY-MM-DD. The registry measures recency against this date, not against as_of."},"dated":{"type":"boolean","description":"True while the Recorder & Mortgage datasets are not in the current delivery, so every lender value is a snapshot at as_of. The API lists the lenders and financing blocks in meta.dated[]."},"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 (for example 0.18). The history sees about one open loan in five. So a recorded-history count is a floor, and the union of the two tables is the origination count."}},"required":["market","counties","n_parcels_uncovered","as_of","recordings_through","dated","history_capture_share"],"additionalProperties":false,"description":"What the lender registry covers in one market: the counties, the parcels left out, the slice date and the newest recording. It also says how much of the open table the history captures."},"LenderRankings":{"type":"object","properties":{"rank_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Rank by loans in the window among every lender of the market with at least one. The ranking includes every class and the persons above the gate. The registry breaks ties by volume, then by id. Null when the lender has none in the window. The default list hides persons and GOVERNMENT, so its positions differ."},"share_24m":{"type":"number","description":"The lender's instruments over the market's in the window, 0 to 1. The denominator counts every lender, the persons below the gate and the placeholders included. 0 when the lender has none."},"rank_by_volume_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Rank by loan total in the window. Null when the total is 0."},"rank_in_class_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Rank by loans in the window among the market's lenders of the same lender_class. Null when the lender has none."},"rank_hard_money_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Rank by loans in the window among hard-money lenders. Null when the lender is not one or has none."},"share_of_hard_money_24m":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"The lender's instruments over every hard-money lender's in the window, 0 to 1. Null when the lender is not one."},"rank_purchase_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Rank by purchase-money instruments in the window among every lender of the market with at least one. A purchase-money instrument has purpose PURCHASE by the deed link. The registry breaks ties by volume, then by id. Null when the lender has none. Also null while the market has no deed link (purchase_measured false). The lender list walks this order under sort=purchase_desc."},"share_by_volume_24m":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"The lender's loan total over the market's in the window, 0 to 1, both after the amount rule. The rule counts a blanket group once and leaves out amounts above $5,000,000. 0 when the lender's total is 0. Null on a registry built before the place rankings."},"n_zips_ranked_first_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"ZIP codes where the lender ranks first by instruments in the window with 10 or more of its own there: \"#1 in N ZIPs\". The rule: the lender's own n is 10 or more and its rank is 1 in the ZIP. The ranking counts every lender. You can recompute it from GET `/v1/lenders/{id}/rankings?group_by=zip&min_n=10`. Null on a registry built before the place rankings."},"n_cities_ranked_first_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The same over cities. Null on a registry built before the place rankings."},"n_counties_ranked_first_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The same over counties. Null while counties_measured is false: with one county loaded, the count says nothing. Also null on a registry built before the place rankings."}},"required":["rank_24m","share_24m","rank_by_volume_24m","rank_in_class_24m","rank_hard_money_24m","share_of_hard_money_24m","rank_purchase_24m","share_by_volume_24m","n_zips_ranked_first_24m","n_cities_ranked_first_24m","n_counties_ranked_first_24m"],"additionalProperties":false,"description":"Where the lender stands in the market over the 24 months ending on the slice date, by loans and by volume. The rankings are overall, within its class, among hard-money lenders and by purchase-money loans."},"LenderInvestorRef":{"type":"object","properties":{"id":{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"The investor: the key to GET `/v1/investors/{id}`."},"name":{"type":"string","description":"The investor's registry name, upper case, SURNAME GIVEN for a person, for example SAGUARO HOLDINGS LLC. It is the deed spelling most often on their deeds. The API serves it to every key, as the registry serves it, and it can be a natural person's. It can change under a stable id. Never use it as a key."},"display_name":{"type":"string","description":"The name to print (API 0.32.0). For a person whose deed spelling parsed cleanly, GIVEN [MIDDLE] SURNAME [SUFFIX] in upper case, for example DANA RIVERA from the deed's RIVERA DANA. For an entity, a trust, a public body or an ambiguous spelling it equals name. Display only: match, join and search on name. The API serves it to every key, as it serves name."},"kind":{"anyOf":[{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},{"type":"null"}],"description":"Primary kind, display only. Null when not classified. Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},"kinds":{"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},"description":"Every kind the investor qualifies for. Empty when none."},"scale":{"anyOf":[{"type":"string","enum":["individual","small","mid","large","institutional"],"description":"Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."},{"type":"null"}],"description":"Scale tier. Null when not classified. Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."},"institutional":{"type":"boolean","description":"True for iBuyers, production builders, bulk landlords and the brand list."},"n_deals":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Investment deals as buyer inside the area loaded for the market, all kinds and years."},"last_bought_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Their last purchase inside the loaded area, YYYY-MM-DD. Null when they never bought."}},"required":["id","name","display_name","kind","kinds","scale","institutional","n_deals","last_bought_on"],"additionalProperties":false,"description":"The investor behind a borrower or a financed deal: id, registry name (the deed spelling), kinds, scale and size, enough to choose the right one. The profile has the rest."},"LenderBorrowerRef":{"type":"object","properties":{"borrower_key":{"type":"string","pattern":"^[0-9a-f]{12}$","description":"Borrower key: 12 hex characters hashed from the borrower's folded name with the dataset salt. The same key appears on every lender's rows and in every market. It is not a name and not reversible, and it is stable across data refreshes. Use the key to compare borrowers across lenders."},"name":{"description":"The borrower's name as the recorded mortgages write it, upper case, when the borrower is a company (is_entity). This is a business name on a recorded instrument, and the API serves it to every key. Null when the borrower is a person: this host never serves a person's name.","type":["string","null"]},"investor":{"anyOf":[{"$ref":"#/components/schemas/LenderInvestorRef"},{"type":"null"}],"description":"The registered investor the borrower belongs to. Null when the key resolves to none: borrower_match PARTY or MORTGAGE_ONLY, or an owner of record outside the registry."},"is_entity":{"type":"boolean","description":"True when the name reads as a company: an LLC, a corporation, a partnership or a similar entity. A trust is neither this nor a person."},"is_person":{"type":"boolean","description":"True when the name reads as a person's."},"borrower_match":{"type":"string","enum":["DEAL","ENTITY_NAME","PERSON_NAME","PARTY","MORTGAGE_ONLY","OWNER_OF_RECORD"],"description":"How the registry resolved the borrower, by the first rule that applied. DEAL: the loan has a deal whose investor has a member with the borrower's key, or the deal's investor when no key matched. ENTITY_NAME: the key is an entity member of exactly one investor, and PERSON_NAME means a person member of exactly one investor. PARTY: the key is on a recorded deed but belongs to no investor, while MORTGAGE_ONLY means the key is on no deed. OWNER_OF_RECORD: an open lien that names no borrower resolves to the parcel's owner of record. The registry takes the owner only when the owner held the parcel on the recording date and no sale followed."},"n_loans":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Loans from this lender that carry this borrower, all time, counted once per instrument."},"n_loans_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock."},"volume_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sum of the loan amounts of those in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock, whole dollars, with amounts above $5,000,000 left out. 0 when none carries a price."},"last_loan_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The recording date of the borrower's newest loan from this lender, YYYY-MM-DD. Null when none is dated."}},"required":["borrower_key","name","investor","is_entity","is_person","borrower_match","n_loans","n_loans_24m","volume_24m","last_loan_on"],"additionalProperties":false,"description":"One of the lender's largest borrowers as the profile lists them. The row carries the key, the name when it is a company, the investor behind it and the loan counts. Never a person's name."},"LenderCompetingLender":{"type":"object","properties":{"lender":{"$ref":"#/components/schemas/LenderRef"},"n_shared_borrowers_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Borrowers with a loan from both lenders in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock."},"n_shared_borrowers_all":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Borrowers with a loan from both lenders, all time."}},"required":["lender","n_shared_borrowers_24m","n_shared_borrowers_all"],"additionalProperties":false,"description":"Another lender that lends to the same borrowers, with how many they share."},"LenderBorrowers":{"type":"object","properties":{"n_borrowers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct borrowers (by key) with a loan from this lender, all time. The count includes every borrower a recorded mortgage names, plus the owner of record on open liens that name none."},"n_borrowers_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock."},"n_resolved_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of the window's borrowers, those that resolve to a registered investor."},"share_resolved_24m":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"n_resolved_24m over n_borrowers_24m, 0 to 1. Null when the window has no borrower."},"borrower_measured_share":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"The share of the lender's instruments, all time, with any borrower source, 0 to 1. A borrower source is a recorded slot that names borrowers, or an open lien whose owner of record qualifies. The recorded history sees about one open loan in five, so most open liens have no named borrower. Null when the lender has no instrument."},"n_repeat_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Borrowers with 2 or more loans from this lender in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock."},"n_new_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Borrowers whose first loan from this lender has a recording date in the 12 months ending on `as_of` (365 days, inclusive), as of `as_of`, the slice date, never the clock."},"n_churned_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Borrowers who churned (churned true on their row) and whose later loan elsewhere has a recording date in the 12 months ending on `as_of` (365 days, inclusive), as of `as_of`, the slice date, never the clock. A lower bound of leaving, since the history sees one loan in five."},"churn_measured":{"type":"boolean","description":"True when the registry can measure churn for half or more of the borrowers it tests. It tests the lender's borrowers whose last loan here is dated 12 to 36 months before the slice date (as_of). False when most of those borrowers hold open positions the history does not carry, the bridge-borrower case. Then the churn counts here are floors of floors."},"top_borrowers":{"type":"array","items":{"$ref":"#/components/schemas/LenderBorrowerRef"},"description":"The 10 largest borrowers by loans in the window, then all time, then key. A person's name is never here, nor anywhere on this host."},"competing_lenders":{"type":"array","items":{"$ref":"#/components/schemas/LenderCompetingLender"},"description":"The 10 lenders that share the most borrowers with this one in the window, then all time."},"person_names_redacted":{"type":"boolean","description":"True when at least one of top_borrowers is a person. That name is null here whatever the key. False when every one is a company."}},"required":["n_borrowers","n_borrowers_24m","n_resolved_24m","share_resolved_24m","borrower_measured_share","n_repeat_24m","n_new_12m","n_churned_12m","churn_measured","top_borrowers","competing_lenders","person_names_redacted"],"additionalProperties":false,"description":"Who borrows from the lender: how many, how many are registered investors, repeats, newcomers and churn (a lower bound). It also lists the largest borrowers and the other lenders they use. Null on the profile while the market has no borrower match."},"LenderTopInvestor":{"type":"object","properties":{"investor":{"$ref":"#/components/schemas/LenderInvestorRef"},"n_loans_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Loans from this lender to the investor (its borrower or a co-borrower) in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock, counted once per instrument."},"volume_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sum of the loan amounts of those, whole dollars, with amounts above $5,000,000 left out. 0 when none carries a price."},"last_loan_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The recording date of the investor's newest loan from this lender, YYYY-MM-DD. Null when none is dated."}},"required":["investor","n_loans_24m","volume_24m","last_loan_on"],"additionalProperties":false,"description":"One registered investor the lender funds most, with the loans and volume in the window."},"LenderInvestorLending":{"type":"object","properties":{"n_investor_loans":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments whose borrower resolves to a registered investor, all time, counted once per instrument. Such a loan row carries investor_id."},"n_investor_loans_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the 12 months ending on `as_of` (365 days, inclusive), as of `as_of`, the slice date, never the clock."},"n_investor_loans_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock."},"share_investor_loans_24m":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"n_investor_loans_24m over the lender's instruments in the window, 0 to 1: how much of the book goes to investors. Null when the lender has none in the window. Read against borrower_measured_share: an open lien that names no borrower, and whose owner is not the borrower, counts in the denominator and cannot resolve."},"n_investors_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct registered investors borrowing in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock."},"by_investor_kind_24m":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments with this value among the window's investor loans."},"share":{"type":"number","description":"n divided by the window's investor loans, 0 to 1."}},"required":["value","n","share"],"additionalProperties":false},"description":"The window's investor loans by the investor's kinds, largest first. An investor carries every kind it qualifies for, so a loan counts under each and the shares can sum above 1."},"n_deals_financed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deals (purchases by a registered investor) whose purchase loan is this lender's, all time. The purchase loan is the largest loan of either table recorded in the 45 days from the purchase date."},"n_deals_financed_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the deals bought in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock."},"by_deal_kind":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","enum":["flip","wholesale","hold","long_hold","other","build"],"description":"What occurred on the deal. flip: bought, fixed and resold within about a year at a profit-shaped margin; wholesale: bought and resold in under 30 days, or a chain resale or round trip within 90 (a double close); hold: bought and still owned at data_end, a confirmed holding or an un-resold purchase; long_hold: held over a year, then sold (a landlord exit); other: an investor resale that is not a clean flip. Reasons: a loss, a thin margin, a builder's new home resold, an iBuyer resale, or a chain resale of 3 to 12 months; build: a registered investor bought a lot or teardown, built a house on it during the hold, then sold. A builder's finished home bought and resold is other. On data built after 2026-09-17 the kind keeps only a single-family parcel held over 90 days, its house complete by the sale year. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deals of this kind financed, all time."},"n_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, bought in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock."}},"required":["value","n","n_24m"],"additionalProperties":false},"description":"The financed deals by kind, that is by what occurred on them, largest first. A kind with none is absent, for example a market with no build."},"n_auction_purchases_financed_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Financed deals bought at auction (a trustee's or sheriff's sale) in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock."},"n_wholesale_purchases_financed_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Financed deals bought from a wholesaler in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock. The evidence is a documented double close or a known wholesaler seller."},"top_investors":{"type":"array","items":{"$ref":"#/components/schemas/LenderTopInvestor"},"description":"The 10 registered investors with the most loans from this lender in the window, then volume, then id."},"is_investor_lender":{"type":"boolean","description":"True when half or more of the window's instruments go to registered investors and the window holds 20 or more. Such a lender is an investor lender by behaviour, whatever the name says. The uses_private_lender filter of the investor routes reads it beside the hard-money flag."}},"required":["n_investor_loans","n_investor_loans_12m","n_investor_loans_24m","share_investor_loans_24m","n_investors_24m","by_investor_kind_24m","n_deals_financed","n_deals_financed_24m","by_deal_kind","n_auction_purchases_financed_24m","n_wholesale_purchases_financed_24m","top_investors","is_investor_lender"],"additionalProperties":false,"description":"How much of the lender's book funds registered investors: the loans and share, the investors and their kinds. It also carries the deals financed by what occurred on them, the largest investors and the flag for an investor lender by behaviour. Null on the profile while the market has no deal registry or no borrower match."},"LenderFlipsYear":{"type":"object","properties":{"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The calendar year of the flip's purchase."},"n_flips_captured":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Flips bought that year with a purchase loan of this lender."},"n_resold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, resold by the deed data end date."},"median_gross_profit":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median resale price less purchase price over the resold flips with both prices, whole dollars. Null under 20 of them: the API never quotes a margin on fewer. Not net of rehab or costs."}},"required":["year","n_flips_captured","n_resold","median_gross_profit"],"additionalProperties":false,"description":"One purchase year of the flips the lender financed."},"LenderFlipsFinanced":{"type":"object","properties":{"window_from":{"type":"string","description":"The first purchase date the block counts, YYYY-MM-DD: 36 months before window_to."},"window_to":{"type":"string","description":"The last purchase date the block counts, YYYY-MM-DD: 45 days before recordings_through, so every counted purchase had its 45-day loan window inside the slice."},"n_flips_captured":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Flips (deals of kind flip) bought in the window whose purchase loan is this lender's. Wholesales and builds count apart, in investor_lending.by_deal_kind."},"capture_share":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"n_flips_captured over the flips in the window tied to this lender by any route, 0 to 1. The denominator is n_flips_captured plus n_flips_by_known_borrowers. The ratio says how much of what the lender probably funded the slice actually shows. Null when neither count is above 0."},"n_flips_by_known_borrowers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Flips in the window by investors who borrow from this lender elsewhere, whose own purchase loan the slice did not capture. These are probably this lender's, but the block never counts them as such."},"n_resold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of the captured flips, those resold by the deed data end date."},"n_resold_priced":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, resold with both prices on the deeds: the rows behind every margin figure."},"median_gross_profit":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median resale price less purchase price over the priced resold flips, whole dollars. Null under 20 of them: the API never quotes a margin on fewer. Not net of rehab or costs."},"p25_gross_profit":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"25th percentile of the same. Null under 20."},"p75_gross_profit":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"75th percentile of the same. Null under 20."},"median_spread_ratio":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Median resale price over purchase price less 1 over the priced resold flips (0.336 = +33.6%). Null under 20."},"median_hold_days":{"description":"Median days from purchase to resale over the resold flips. Null under 3.","type":["number","null"]},"median_loan_to_price":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Median purchase loan over purchase price over the captured flips with both, 0 to 1 and above. A value above 1 is a rehab holdback. Null under 3."},"share_of_financed_flips":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"n_flips_captured over every flip in the window with a captured purchase loan from any lender, 0 to 1. This is the lender's share of the flips the slice can attribute, never of every flip. The shares sum to 1 over the market's lenders. Null when the market has none."},"by_year":{"type":"array","items":{"$ref":"#/components/schemas/LenderFlipsYear"},"description":"The captured flips by purchase year, oldest first. A year with none is absent."}},"required":["window_from","window_to","n_flips_captured","capture_share","n_flips_by_known_borrowers","n_resold","n_resold_priced","median_gross_profit","p25_gross_profit","p75_gross_profit","median_spread_ratio","median_hold_days","median_loan_to_price","share_of_financed_flips","by_year"],"additionalProperties":false,"description":"The flips the lender financed, on the purchases the slice can tie to a loan. The block says how many and how much of the lender's flip lending that is. It also gives the resale margins where 20 or more resold with both prices. Null on the profile while the market has no flip measure."},"LenderTakebacks":{"type":"object","properties":{"n_takebacks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Take-back deeds that name the lender as grantee under any of its spellings, from 2016 through the deed data end date (data_end). The registry counts once per parcel and deed. A take-back deed is a trustee's deed, a sheriff's deed or a deed in lieu."},"n_takebacks_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock."},"by_instrument":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","enum":["TRUSTEES_DEED","SHERIFFS_DEED","DEED_IN_LIEU"],"description":"The deed by which a lender took a property back. TRUSTEES_DEED: a trustee's deed after a non-judicial foreclosure sale, the certificate of title in Arizona. SHERIFFS_DEED: a sheriff's deed after a judicial sale, in an Arizona or Washington market. In Texas a sheriff's deed is a tax sale, never a take-back. DEED_IN_LIEU: the borrower deeded the property to the lender instead of a foreclosure."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments with this value among the lender's take-back deeds."},"share":{"type":"number","description":"n divided by the lender's take-back deeds, 0 to 1."}},"required":["value","n","share"],"additionalProperties":false},"description":"The take-back deeds by instrument, largest first. The shares sum to 1. Empty when the lender has none."},"n_loans_foreclosed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Take-backs on a parcel that carries a loan row of this lender recorded before the deed. The loan row names the lender as lender of record or as open-lien lender, in either source table. These are the take-backs the registry can tie to one of the lender's own loans."},"n_takebacks_unlinked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"n_takebacks less n_loans_foreclosed: the take-backs with no tie to one of the lender's own loans. Two causes: the loan is older than the five kept history slots, or it is in neither table. A third cause: the grantee is the trustee or the servicer of a securitised loan, whose originator the registry cannot see."},"foreclosure_share":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Of the lender's loans tied to a deal (STRICT link, the captured instruments), the share with outcome FORECLOSED, 0 to 1. Null under 20 captured loans. A performance proxy from the deed chain, never a delinquency rate."},"median_days_takeback_to_resale":{"description":"Median days from the take-back deed to the next priced deed on the parcel ($10,000 or more). The registry measures it over the take-backs that resold by the deed data end date. It says how long the lender held what it took back. Null under 3.","type":["number","null"]},"is_auction_lender":{"type":"boolean","description":"True when any of the lender's spellings is a grantee the auction build classed as a lender at its own sale. The test is a credit bid or a deed in lieu on two or more parcels. Such a lender takes properties back at the courthouse steps. The flag reads from the auction build's lender list alone, never from the buyer-side exclusion vocabulary. That vocabulary matches every bank."}},"required":["n_takebacks","n_takebacks_24m","by_instrument","n_loans_foreclosed","n_takebacks_unlinked","foreclosure_share","median_days_takeback_to_resale","is_auction_lender"],"additionalProperties":false,"description":"The properties the lender took back by trustee's deed, sheriff's deed or deed in lieu since 2016. The block says how many, by instrument and window, and how many tie to one of its own loans. It also gives the foreclosure share of its captured loans, how fast it resold them, and if it is an auction lender. Deeds, never delinquency. The grantee is usually the trustee or servicer, so the originator of a securitised loan is invisible. Null on the profile while the market has no take-back join (takebacks_measured false)."},"LenderMarketProfile":{"type":"object","properties":{"market":{"type":"string","description":"Market code, for example phx. The loaded markets are in meta.coverage[]. A lender has the same id in every market and a profile per market."},"name":{"type":"string","description":"The lender's display name, upper case as the file writes it, for example KIAVI FUNDING INC. This is the spelling with the most rows in the window, or the newest spelling after a recorded rename. For example, ROCKET MORTGAGE LLC, not QUICKEN LOANS INC. It can change under a stable id. Never use it as a key. A business name, and the API serves it to every key."},"lender_class":{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"A reading of the name, never a legal status. The parcel financing block carries the same reading. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"class_basis":{"anyOf":[{"type":"string","enum":["NAME","DICTIONARY"],"description":"Why the class reads as it does. NAME: the name rules of the registry, read on the folded name. The rules apply the government, bank, trust, lending and person vocabularies in that order. So KS STATEBANK reads BANK, and a trust with lender words reads NONBANK. DICTIONARY: a hand-kept row overrides the name's reading, for example BBVA USA as a BANK. Null on a registry built before the registry recorded a basis."},{"type":"null"}]},"identity_basis":{"type":"string","enum":["NAME_FOLD","TRUNCATED_PREFIX","ALIAS_DICTIONARY"],"description":"How the registry ties the spelling to its lender: NAME_FOLD means the folded name alone joins them. The fold uses upper case, drops punctuation and entity suffixes and spells out abbreviations: WELLS FARGO BANK NA and WELLS FARGO BANK N.A. are one. TRUNCATED_PREFIX: the file cut the name at 30 or 40 characters, and the registry joined it to the one longer name that starts with it. ALIAS_DICTIONARY: a hand-kept row joined it, for a rename such as QUICKEN LOANS to ROCKET MORTGAGE, a trade name or a charter form. A row also covers a spelling the same instrument carries both ways. The registry never merges acquisitions."},"is_hard_money":{"type":"boolean","description":"True when the name carries hard-money vocabulary or is a known hard-money brand, or when the book behaves like one. The field hard_money_basis says which, and the behaviour test needs the market's deed link. A PRIVATE lender_class is a trust or a seller carry-back, not this. The hard_money filter of the list reads this flag."},"hard_money_basis":{"anyOf":[{"type":"string","enum":["NAME","BEHAVIOUR","BOTH"],"description":"Why is_hard_money is true: NAME means the name carries hard-money vocabulary such as BRIDGE, FIX AND FLIP, REHAB, PRIVATE MONEY or a numbered FUND. A known brand such as KIAVI, LIMA ONE or RCN CAPITAL also counts as NAME. FUNDING, CAPITAL and LENDING alone never qualify. BEHAVIOUR: the lender is not a bank and has 20 or more loans since 2015. A quarter or more of those loans sit within 45 days of a registered investor's purchase. BOTH: name and behaviour."},{"type":"null"}],"description":"Null when is_hard_money is false. Why is_hard_money is true: NAME means the name carries hard-money vocabulary such as BRIDGE, FIX AND FLIP, REHAB, PRIVATE MONEY or a numbered FUND. A known brand such as KIAVI, LIMA ONE or RCN CAPITAL also counts as NAME. FUNDING, CAPITAL and LENDING alone never qualify. BEHAVIOUR: the lender is not a bank and has 20 or more loans since 2015. A quarter or more of those loans sit within 45 days of a registered investor's purchase. BOTH: name and behaviour."},"names":{"type":"array","items":{"type":"string","description":"One spelling, as the file writes it."},"description":"Every spelling the two source tables use for this lender in this market, for example [\"KIAVI FUNDING INC\", \"LENDINGHOME FUNDING CORP\"]. The display name comes first, then the rest by rows in the window. Business names, and the API serves them to every key."},"former_names":{"type":"array","items":{"type":"string","description":"One retired spelling."},"description":"Spellings retired by a recorded rename, for example QUICKEN LOANS INC under ROCKET MORTGAGE LLC. Empty when none."},"n_names":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many spellings names holds."},"n_loans":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments on record with this lender as lender of record, all time, counted once across the open-lien and recorded-history tables. An instrument in both tables, with the same parcel, date and amount, counts once. So does a duplicated history slot. A floor: the history keeps 5 slots per parcel, and a paid-off loan is in neither table."},"n_loans_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the 12 months ending on `as_of` (365 days, inclusive), as of `as_of`, the slice date, never the clock."},"n_loans_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock: the number the lender list ranks by. It counts every instrument of any kind (purchase money, refinance, HELOC, construction). For a GOVERNMENT lender it counts insurance claims and partial-claim seconds recorded under the agency's name, not originations."},"volume_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sum of the loan amounts of the priced instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock, whole dollars, after the amount rule. The rule counts a blanket group once: one loan recorded across 5 or more parcels. It also leaves out amounts above $5,000,000, and n_amount_excluded_24m counts them. Such an amount is a facility amount the file records on every parcel a commercial facility covers. Without the rule, a bank's window volume is in the hundreds of billions. 0 when none carries a price."},"n_unpriced_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock with no amount on file."},"n_blanket_positions_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Open lien positions in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock inside a blanket group: the same lender, date and amount on 5 or more parcels. The rule leaves out credit lines and banks. Counted in n_loans_24m, collapsed in volume_24m and open_balance."},"n_amount_excluded_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock whose loan amount exceeds $5,000,000. The count n_loans_24m includes them. These leave them out: volume_24m, every volume in by_year, by_month and geography, and the terms.amount quartiles. The loan row keeps its amount and carries amount_outlier."},"n_parcels":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct parcels carrying any of the lender's instruments, all time."},"n_in_history":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Recorded-history slots that name the lender, all time, duplicates included. This is what the history holds: a floor, never an activity measure. The field history_capture_share says how much of the open table it sees."},"n_in_history_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the 12 months ending on `as_of` (365 days, inclusive), as of `as_of`, the slice date, never the clock."},"n_in_history_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock."},"n_open_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Open lien positions at `as_of` recorded in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock, under the lender the open-lien table names."},"n_in_both_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock found in both tables: an open row and a recorded slot on the same parcel with the same date and amount."},"n_open_liens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Open lien positions at `as_of` under the lender the open-lien table names, every position. \"Open\" is the vendor's state in the slice, not a reconveyance-checked book."},"n_open_first_liens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, position 1 (senior)."},"n_open_junior_liens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, positions 2 to 4."},"n_open_maturing_12m_from_as_of":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Open lien positions whose maturity date falls in the 365 days after `as_of`. Null when fewer than half of the positions carry a maturity date (share_due_known), as on most hard-money books."},"n_open_on_resold_parcels":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Open lien positions on a parcel sold more than 30 days after the recording, per the deeds. The loan is probably paid off, and the slice does not show that. The field open_balance leaves them out."},"share_due_known":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"The share of open lien positions that carry a maturity date, 0 to 1. Null when the lender has no open position."},"open_balance":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sum of the estimated current balances of the open lien positions at `as_of`, whole dollars. The sum leaves out positions above $5,000,000, the repeats of a blanket group and positions on resold parcels. The field n_balance_excluded counts them. 0 when none survives. \"Open\" is the vendor's state in the slice, not a reconveyance-checked book. The API never serves the raw sum."},"n_balance_excluded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Open lien positions left out of open_balance."},"n_loans_lender_disagrees":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments in both tables where the recorded history and the open table name different lenders. The cause is the insurer (HUD, the VA) against the servicer, or a spelling the dictionary does not join in this registry run. The history's lender is the lender of record."},"n_first_lien_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock whose open lien position is 1: what position=1 on the lender list counts."},"n_heloc_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock with product HELOC."},"n_construction_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock with product CONSTRUCTION."},"n_purchase_money_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock whose purpose is PURCHASE. PURCHASE means a priced deed on the parcel in the 45 days up to the recording, and by_purpose_24m has the rest. This is what sort=purchase_desc on the lender list orders by. Null while the market has no deed link (purchase_measured false)."},"n_investor_loans_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock whose borrower resolves to a registered investor. The investor_lending block has the rest. Null while the market has no borrower match (investor_lending_measured false)."},"n_borrowers":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Distinct borrowers (by key) with a loan from this lender, all time. The borrowers block has the rest. Null while the market has no borrower match (borrowers_measured false)."},"n_borrowers_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The same over the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock. Null under the same rule."},"is_investor_lender":{"description":"True when half or more of the window's instruments go to registered investors and the window holds 20 or more. Such a lender is an investor lender by behaviour, whatever the name says. The lender list keeps these under investor_only=true. Null while the market has no borrower match.","type":["boolean","null"]},"first_recording_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The oldest recording date on any of the lender's instruments, YYYY-MM-DD: a floor, since the history keeps 5 slots per parcel. Null when none is dated."},"last_recording_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The newest recording date, YYYY-MM-DD. Null when none is dated."},"days_before_recordings_through":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days from last_recording_date to recordings_through, for example 1 for a lender that records every week. Null when last_recording_date is null."},"active_12m_to_as_of":{"type":"boolean","description":"True when n_loans_12m is at least 1: a loan recorded in the 12 months ending on `as_of` (365 days, inclusive), as of `as_of`, the slice date, never the clock."},"n_before_2002":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments recorded before 2002, outside by_year. The history begins in 2002, but an open lien can be older."},"n_undated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments with no recording date on file: outside by_year and every window."},"by_year":{"type":"array","items":{"$ref":"#/components/schemas/LenderYear"},"description":"Originations per calendar year from 2002 to the year of `as_of`, every year present, oldest first. The yearly n_loans values sum to the profile's n_loans less n_before_2002 and n_undated."},"by_month":{"type":"array","items":{"$ref":"#/components/schemas/LenderMonth"},"description":"The 36 calendar months ending with the month of `as_of`, every month present, oldest first. Each month carries the lender's count, the market's count and the rank among lenders that month. The month of `as_of` is partial."},"by_product_24m":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","enum":["CONSTRUCTION","HELOC","OTHER"],"description":"What the file says the loan is, read from its flags and loan type and never from the label. CONSTRUCTION: the construction flag or a \"Building or Construction Loan\" type. HELOC: the credit-line flag or a \"Credit Line (Revolving)\" type. OTHER: everything else, that is a purchase-money or refinance mortgage of any kind."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments with this value among the lender's instruments in the window."},"share":{"type":"number","description":"n divided by the lender's instruments in the window, 0 to 1."}},"required":["value","n","share"],"additionalProperties":false},"description":"Instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock by product, largest first. The shares sum to 1. Empty when the lender has none in the window."},"by_term_band_24m":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","enum":["LE_24M","25_TO_120M","121_TO_359M","GE_360M","UNKNOWN"],"description":"The loan term in months, from the file's term where it carries one, else from the maturity date less the recording date. LE_24M: up to 24 months, the bridge and fix-and-flip range. 25_TO_120M: 25 to 120 months. 121_TO_359M: 121 to 359 months. GE_360M: 30 years and longer. UNKNOWN: neither a term nor a maturity on file, which is most hard-money rows."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments with this value among the lender's instruments in the window."},"share":{"type":"number","description":"n divided by the lender's instruments in the window, 0 to 1."}},"required":["value","n","share"],"additionalProperties":false},"description":"Instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock by term band, largest first. The shares sum to 1."},"by_product_proxy_24m":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","enum":["BRIDGE","RENTAL_TERM","RETAIL"],"description":"An inference from the term, not a fact the file states. BRIDGE: an OTHER product with a term of 24 months or less, a bridge or fix-and-flip loan. RENTAL_TERM: a term of 30 years or more from a hard-money lender, a DSCR rental loan. RETAIL: any other known term. Null when the term band is UNKNOWN."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments with this value among the lender's instruments in the window."},"share":{"type":"number","description":"n divided by the lender's instruments in the window, 0 to 1."}},"required":["value","n","share"],"additionalProperties":false},"description":"Instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock by the term-inferred product, largest first. Instruments with an UNKNOWN term band have no proxy, and the list leaves them out. So the shares sum to 1 less that band's share."},"by_loan_type_24m":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","description":"The loan type as the file writes it, for example \"New Conventional\" or \"FHA\", or \"Other\" for the fold of the smallest types."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments with this value among the lender's instruments in the window."},"share":{"type":"number","description":"n divided by the lender's instruments in the window, 0 to 1."}},"required":["value","n","share"],"additionalProperties":false},"description":"Instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock by loan type, largest first. The list leaves out a blank type and \"Unknown (DEFAULT)\". At most 12 rows, with the smallest folded into \"Other\"."},"by_label_24m":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","enum":["REFI_OR_SECOND","HELOC","RESALE_PURCHASE_MONEY","NEW_PURCHASE_MONEY","CONSTRUCTION","NON_RESIDENTIAL"],"description":"The file's transaction label, mapped to a closed list. REFI_OR_SECOND: refinance loans and second trust deeds, purchase and non-purchase money lumped together. RESALE_PURCHASE_MONEY: a purchase-money loan on a resale. NEW_PURCHASE_MONEY: a purchase-money loan on a new home. HELOC, CONSTRUCTION and NON_RESIDENTIAL: the file's label of that name. The purchase labels stop in January 2022, and a label never decides if a loan financed a purchase."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments with this value among the labelled recorded-history slots in the window."},"share":{"type":"number","description":"n divided by the labelled recorded-history slots in the window, 0 to 1."}},"required":["value","n","share"],"additionalProperties":false},"description":"Recorded-history slots in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock by transaction label, largest first, over the labelled slots only. The field n_unlabelled_24m counts the rest. The open table leaves the label blank on most rows, so the block reads the history alone."},"n_unlabelled_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Recorded-history slots in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock with no label."},"by_property_type_24m":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","description":"The parcel's property type category as the assessor feed writes it, for example \"Residential\", or \"Other\" for the fold of the smallest categories."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments with this value among the lender's instruments in the window."},"share":{"type":"number","description":"n divided by the lender's instruments in the window, 0 to 1."}},"required":["value","n","share"],"additionalProperties":false},"description":"Instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock by the parcel's property type category, largest first. The list leaves out parcels without one. At most 12 rows."},"share_non_owner_occupied_24m":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Of the parcels that carry the lender's instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock whose occupancy is known, the share not owner-occupied, 0 to 1. An investor-lending signal. Null when none is known."},"by_purpose_24m":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","enum":["PURCHASE","NOT_PURCHASE","UNKNOWN"],"description":"The loan's purpose, that is if it financed a purchase, read from the recorded deeds and never from the file's label. PURCHASE: a priced deed on the parcel, $10,000 or more, is dated in the 45 days up to and including the recording date. A deed after the loan is a later sale, never this loan's purchase. NOT_PURCHASE: the deed registry covers those 45 days, the parcel has priced deeds, and none falls in them. Such a loan is a refinance, a second, a HELOC or a construction draw. UNKNOWN: the deed registry does not cover the window: its deeds or the parcel's deeds start after the loan, or the market has none."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments with this value among the lender's instruments in the window."},"share":{"type":"number","description":"n divided by the lender's instruments in the window, 0 to 1."}},"required":["value","n","share"],"additionalProperties":false},"description":"Instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock by purpose, largest first. The purposes are PURCHASE, NOT_PURCHASE and UNKNOWN, by the deed link. The shares sum to 1. Empty while the market has no deed link (purchase_measured false), and when the lender has none in the window."},"by_outcome_24m":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","enum":["RESOLVED_BY_RESALE","REFINANCED","OPEN","FORECLOSED","UNKNOWN"],"description":"What became of a loan tied to a deal: a performance proxy read from the deed chain, never from a delinquency record or payment history. RESOLVED_BY_RESALE is a priced deed on the parcel after the loan, and REFINANCED is a later mortgage on it in either table before any resale. OPEN is an open lien position at the slice date and nothing later, and UNKNOWN is none of these because the chain runs out. FORECLOSED: a take-back deed on the parcel more than 90 days after the loan's recording, before any priced resale and any later mortgage. A take-back deed is a trustee's deed, a sheriff's deed or a deed in lieu, and the foreclosed block on the loan row carries it. A shorter gap is the auction buyer's own deed, not a foreclosure of this loan."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments with this value among the captured loans recorded in the window."},"share":{"type":"number","description":"n divided by the captured loans recorded in the window, 0 to 1."}},"required":["value","n","share"],"additionalProperties":false},"description":"The loans tied to a deal, recorded in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock, by what became of them, largest first. A tied loan has deal set on the loan row. The shares sum to 1. A performance proxy from the deed chain, never delinquency. Empty while the market has no deal link (investor_lending_measured false), and when the slice captured none."},"median_months_to_payoff":{"description":"Median months from recording to resolution, 1 decimal, over the loans tied to a deal with a resolution by resale or refinance in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock. The resolution falls in the window, and the recording date can fall at any time. Null under 3, and while the market has no deal link.","type":["number","null"]},"terms":{"$ref":"#/components/schemas/LenderTerms"},"geography":{"$ref":"#/components/schemas/LenderGeography"},"coverage":{"$ref":"#/components/schemas/LenderCoverage"},"rankings":{"$ref":"#/components/schemas/LenderRankings"},"borrowers":{"anyOf":[{"$ref":"#/components/schemas/LenderBorrowers"},{"type":"null"}],"description":"Who borrows from the lender: counts, repeats, churn (a lower bound), the largest borrowers (never a person's name) and the competing lenders. Null while the market has no borrower match (borrowers_measured false)."},"investor_lending":{"anyOf":[{"$ref":"#/components/schemas/LenderInvestorLending"},{"type":"null"}],"description":"How much of the book funds registered investors, the deals financed and the largest investors. Null while the market has no deal registry or no borrower match (investor_lending_measured false)."},"flips_financed":{"anyOf":[{"$ref":"#/components/schemas/LenderFlipsFinanced"},{"type":"null"}],"description":"The flips the lender financed on the purchases the slice can tie to a loan. The block gives the resale margins where 20 or more resold with both prices. Null while the market has no flip measure (flips_measured false)."},"takebacks":{"anyOf":[{"$ref":"#/components/schemas/LenderTakebacks"},{"type":"null"}],"description":"The properties the lender took back since 2016 by a trustee's deed, a sheriff's deed or a deed in lieu that names it as grantee. The block also gives the foreclosure share of its captured loans and says if it is an auction lender. Null while the market has no take-back join (takebacks_measured false), and on a registry built before the place rankings."},"successor":{"anyOf":[{"$ref":"#/components/schemas/LenderSuccessor"},{"type":"null"}],"description":"The lender this one is part of, an acquirer or a parent recorded by hand: its id, name, class, hard-money flag and kind. The registry never merges the books: this lender's loans stay under this id. Null when the registry records none, when the successor has no profile in the market, and on a registry built before phase 4."},"nmls":{"anyOf":[{"$ref":"#/components/schemas/LenderNmls"},{"type":"null"}],"description":"The NMLS id, curated by hand for the largest lenders, and the NMLS Consumer Access page it opens. Null where uncurated (most lenders), and on a registry built before phase 4."},"id_history":{"type":"array","items":{"$ref":"#/components/schemas/LenderIdHistoryEntry"},"description":"Ids retired into this lender by a merge, oldest run first. Each one continues to answer on GET `/v1/lenders/{id}` and on its loans and borrowers routes, and meta.resolved_from names it. Empty when none, and on a registry built before phase 4."},"summary":{"type":"string","description":"One paragraph on the lender, written from the served numbers at build time. It covers class, hard money, scale, rank and share, top geography, product mix and last recording. Every build regenerates it, and no one writes it by hand. It never quotes a margin and never says LTV."},"as_of":{"type":"string","description":"The slice date, YYYY-MM-DD. The API measures every count on this profile at it. Dated: see meta.dated[]."},"recordings_through":{"type":"string","description":"The newest recording date in either source table, YYYY-MM-DD. The API measures recency against it."},"dated":{"type":"boolean","description":"True while the Recorder & Mortgage datasets are not in the current delivery: this profile is a snapshot at as_of."},"data_end":{"type":"string","description":"The market's deed data end date, YYYY-MM-DD. The API measures the resold-parcel test, the deed link and the outcome chain against it. The registry's own slice date is as_of."},"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 (for example 0.18). This share is why a history count is a floor."},"history_floor_year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The year by which 90% of the parcels with a full history (5 slots) lost older mortgages, for example 2008. The by_year rows before it are floors."},"history_floor_p50":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The median year of the oldest kept mortgage on those parcels, for example 2004."},"share_parcels_with_lost_history":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"The share of parcels with a recorded history whose 5 slots are full, 0 to 1 (for example 0.19). The recorded history dropped their older mortgages."},"purchase_measured":{"type":"boolean","description":"True when the market has a deed link and the API serves the purchase-money counts. Those counts are purpose on the loan rows, by_purpose_24m, n_purchase_money_24m, terms.loan_to_price and rankings.rank_purchase_24m. False while the market has no deed link, and every such count is then null."},"investor_lending_measured":{"type":"boolean","description":"True when the market has the deal link and the borrower match, and the API serves the investor_lending block. The API then also serves the deal block, the outcome and the investor ids on the loan rows. False while the market does not have them."},"flips_measured":{"type":"boolean","description":"True when the registry measures the flips the lender financed and the API serves the flips_financed block. False while it does not."},"borrowers_measured":{"type":"boolean","description":"True when the market has the borrower fold and the API serves the borrowers block, n_borrowers and the borrowers route. False while it does not."},"takebacks_measured":{"type":"boolean","description":"True when the registry carries the foreclosure take-backs. False while it does not."},"counties_measured":{"type":"boolean","description":"True when the slice has more than one county, so a county ranking means something. False while the slice covers one county."}},"required":["market","name","lender_class","class_basis","identity_basis","is_hard_money","hard_money_basis","names","former_names","n_names","n_loans","n_loans_12m","n_loans_24m","volume_24m","n_unpriced_24m","n_blanket_positions_24m","n_amount_excluded_24m","n_parcels","n_in_history","n_in_history_12m","n_in_history_24m","n_open_24m","n_in_both_24m","n_open_liens","n_open_first_liens","n_open_junior_liens","n_open_maturing_12m_from_as_of","n_open_on_resold_parcels","share_due_known","open_balance","n_balance_excluded","n_loans_lender_disagrees","n_first_lien_24m","n_heloc_24m","n_construction_24m","n_purchase_money_24m","n_investor_loans_24m","n_borrowers","n_borrowers_24m","is_investor_lender","first_recording_date","last_recording_date","days_before_recordings_through","active_12m_to_as_of","n_before_2002","n_undated","by_year","by_month","by_product_24m","by_term_band_24m","by_product_proxy_24m","by_loan_type_24m","by_label_24m","n_unlabelled_24m","by_property_type_24m","share_non_owner_occupied_24m","by_purpose_24m","by_outcome_24m","median_months_to_payoff","terms","geography","coverage","rankings","borrowers","investor_lending","flips_financed","takebacks","successor","nmls","id_history","summary","as_of","recordings_through","dated","data_end","history_capture_share","history_floor_year","history_floor_p50","share_parcels_with_lost_history","purchase_measured","investor_lending_measured","flips_measured","borrowers_measured","takebacks_measured","counties_measured"],"additionalProperties":false,"description":"The lender in one market. The profile carries its names and class, and its originations counted once across the open-lien and recorded-history tables, all time, 12 and 24 months. It also carries its open book, the year and month series against the market, and the product, term and label mix. It also carries pricing and terms, geography, coverage and rankings. Every window ends on as_of, the slice date. Every value is a dated snapshot."},"Lender":{"type":"object","properties":{"id":{"type":"string","pattern":"^len_[0-9a-f]{12}$","description":"Lender id: len_ followed by 12 hex characters, for example len_3f9a1c27b4e0. The registry mints the id from the lender's folded name, so the same lender carries the same id in every market, stable across data refreshes. A hand-kept dictionary row can merge two spellings into one lender. The API then follows the old id from the earlier registry run to that lender and lists it in meta.resolved_from. A retired id with no successor answers 410 gone. Store the whole id, prefix included, as the identity."},"name":{"type":"string","description":"The lender's display name in its lead market, upper case as the file writes it, for example KIAVI FUNDING INC. The lead market is the market with the most loans in the window. The name can change under a stable id, so it is never a key. It is a business name, and the API serves it to every key."},"lender_class":{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"A reading of the name, never a legal status. The parcel financing block carries the same reading. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"class_basis":{"anyOf":[{"type":"string","enum":["NAME","DICTIONARY"],"description":"Why the class reads as it does. NAME: the name rules of the registry, read on the folded name. The rules apply the government, bank, trust, lending and person vocabularies in that order. So KS STATEBANK reads BANK, and a trust with lender words reads NONBANK. DICTIONARY: a hand-kept row overrides the name's reading, for example BBVA USA as a BANK. Null on a registry built before the registry recorded a basis."},{"type":"null"}]},"identity_basis":{"type":"string","enum":["NAME_FOLD","TRUNCATED_PREFIX","ALIAS_DICTIONARY"],"description":"How the registry ties the spelling to its lender: NAME_FOLD means the folded name alone joins them. The fold uses upper case, drops punctuation and entity suffixes and spells out abbreviations: WELLS FARGO BANK NA and WELLS FARGO BANK N.A. are one. TRUNCATED_PREFIX: the file cut the name at 30 or 40 characters, and the registry joined it to the one longer name that starts with it. ALIAS_DICTIONARY: a hand-kept row joined it, for a rename such as QUICKEN LOANS to ROCKET MORTGAGE, a trade name or a charter form. A row also covers a spelling the same instrument carries both ways. The registry never merges acquisitions."},"is_hard_money":{"type":"boolean","description":"True when the name carries hard-money vocabulary or is a known hard-money brand, or when the book behaves like one. The field hard_money_basis says which, and the behaviour test needs the market's deed link. A PRIVATE lender_class is a trust or a seller carry-back, not this. The hard_money filter of the list reads this flag."},"hard_money_basis":{"anyOf":[{"type":"string","enum":["NAME","BEHAVIOUR","BOTH"],"description":"Why is_hard_money is true: NAME means the name carries hard-money vocabulary such as BRIDGE, FIX AND FLIP, REHAB, PRIVATE MONEY or a numbered FUND. A known brand such as KIAVI, LIMA ONE or RCN CAPITAL also counts as NAME. FUNDING, CAPITAL and LENDING alone never qualify. BEHAVIOUR: the lender is not a bank and has 20 or more loans since 2015. A quarter or more of those loans sit within 45 days of a registered investor's purchase. BOTH: name and behaviour."},{"type":"null"}],"description":"Null when is_hard_money is false. Why is_hard_money is true: NAME means the name carries hard-money vocabulary such as BRIDGE, FIX AND FLIP, REHAB, PRIVATE MONEY or a numbered FUND. A known brand such as KIAVI, LIMA ONE or RCN CAPITAL also counts as NAME. FUNDING, CAPITAL and LENDING alone never qualify. BEHAVIOUR: the lender is not a bank and has 20 or more loans since 2015. A quarter or more of those loans sit within 45 days of a registered investor's purchase. BOTH: name and behaviour."},"names":{"type":"array","items":{"type":"string","description":"One spelling, as the file writes it."},"description":"Every spelling across the markets, the lead market's first. These are business names, and the API serves them to every key."},"n_names":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many spellings names holds."},"profile_gate":{"type":"string","enum":["SERVED","BELOW_PERSON_THRESHOLD","PLACEHOLDER"],"description":"The profile gate of the identity: SERVED means it has a profile, the only value a served lender carries. BELOW_PERSON_THRESHOLD: a person-named lender, class INDIVIDUAL or PRIVATE, with fewer than 10 loans or fewer than 5 parcels. Such a lender has no id, no search hit and no profile, and its name stays on the parcel financing block only. PLACEHOLDER: a name such as NOT AVAILABLE, NOT PROVIDED or UNKNOWN, with no id. The market's coverage counts the two hidden values, and the API never serves them as rows."},"nmls":{"anyOf":[{"$ref":"#/components/schemas/LenderNmls"},{"type":"null"}],"description":"The NMLS id and the NMLS Consumer Access page it opens. The registry curates the id by hand for the largest lenders. The block is the lead market's, and the same lender carries one id everywhere. Null where the lender has no curated id, and on a registry built before phase 4."},"n_loans_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments recorded in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock, summed over markets[]."},"volume_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sum of the loan amounts of the priced instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock, whole dollars, summed over markets[] after each market profile's exclusions. The exclusions count a blanket group once and leave out amounts above $5,000,000. 0 when none carries a price."},"n_open_liens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Open lien positions at `as_of`, summed over markets[]."},"open_balance":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The lender's open balance after the exclusions each market profile describes, whole dollars, summed over markets[]. 0 when none."},"n_markets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many markets the lender has a profile in: the length of markets."},"markets":{"minItems":1,"type":"array","items":{"$ref":"#/components/schemas/LenderMarketProfile"},"description":"The per-market profiles, most loans in the window first. One entry when market= names one. Each carries its own ranks, coverage, as_of and dated. The union totals above are their sums."}},"required":["id","name","lender_class","class_basis","identity_basis","is_hard_money","hard_money_basis","names","n_names","profile_gate","nmls","n_loans_24m","volume_24m","n_open_liens","open_balance","n_markets","markets"],"additionalProperties":false,"description":"One lender: who it is, its totals across the loaded markets, and a profile per market. The identity is the names, the class, the hard-money flag and how the registry established the identity. Nothing in any delivery carries a lender's phone or email, so no such block exists."},"LenderSearchResult":{"type":"object","properties":{"id":{"type":"string","pattern":"^len_[0-9a-f]{12}$","description":"Lender id: len_ followed by 12 hex characters, for example len_3f9a1c27b4e0. The registry mints the id from the lender's folded name, so the same lender carries the same id in every market, stable across data refreshes. A hand-kept dictionary row can merge two spellings into one lender. The API then follows the old id from the earlier registry run to that lender and lists it in meta.resolved_from. A retired id with no successor answers 410 gone. Store the whole id, prefix included, as the identity."},"market":{"type":"string","description":"Market code the hit belongs to, for example phx. A search without market= runs over every loaded market with a lender registry, so the same id can appear once per market."},"name":{"type":"string","description":"The lender's display name in the market, upper case as the file writes it."},"matched_name":{"type":"string","description":"The spelling the query matched, as the file writes it. On an exact hit this is the display name. Otherwise it is the variant the query found, for example LENDINGHOME FUNDING CORP under KIAVI FUNDING INC."},"lender_class":{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"A reading of the name, never a legal status. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"is_hard_money":{"type":"boolean","description":"True when the name carries hard-money vocabulary or is a known hard-money brand, or when the book behaves like one. The profile's hard_money_basis says which. The behaviour test needs the market's deed link."},"n_loans_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments recorded in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock, counted once across both tables."},"n_open_liens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Open lien positions at `as_of`."},"open_balance":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The open balance after the profile's exclusions, whole dollars. 0 when none."},"last_recording_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The newest recording date, YYYY-MM-DD. Null when none is dated."},"rank_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Rank by loans in the window among every lender of the market with at least one. Null when none."},"match":{"type":"string","enum":["exact","tokens","contains","trigram"],"description":"How the search found the hit, best first: with exact, the folded query equals the lender's folded name. With tokens, every word of the query is a word of one of the lender's spellings, in any order. The search ignores entity suffixes such as LLC and NA there. With contains, the query is a substring of a spelling. With trigram, the match is fuzzy at a similarity of 0.55 or more, and the hit carries similarity. The search tries trigram only when fewer than 10 lenders matched otherwise."},"similarity":{"description":"Trigram similarity of the matched spelling to the query, 0 to 1, set on trigram hits only. Null otherwise.","type":["number","null"]},"as_of":{"type":"string","description":"The slice date, YYYY-MM-DD. The API measures the counts at it. Dated: see meta.dated[]."},"dated":{"type":"boolean","description":"True while the datasets are not in the current delivery, so the row is a snapshot at as_of."}},"required":["id","market","name","matched_name","lender_class","is_hard_money","n_loans_24m","n_open_liens","open_balance","last_recording_date","rank_24m","match","similarity","as_of","dated"],"additionalProperties":false,"description":"One lender found by name, with the spelling that matched. The row carries enough to pick the right one: class, the hard-money flag, loans in the window, open book and rank."},"LenderInGeometry":{"type":"object","properties":{"res":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The H3 resolution the API resolved the geometry to: 8 (cells about 0.3 square miles)."},"n_cells":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many res-8 cells the geometry resolved to: the cells whose centre lies inside the radius or the viewport. The list counts inside those cells, so its edge is a hex boundary, not the circle."},"n_cells_lent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, the cells this lender recorded at least one instrument in over the period."}},"required":["res","n_cells","n_cells_lent"],"additionalProperties":false,"description":"What a geometry on the lender list resolved to, and how many of its cells carry this lender. The geometry resolves to the H3 res-8 cells whose centre lies inside it."},"LenderRankingRow":{"type":"object","properties":{"rank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The row's 1-based position in this list under its sort and filters. The position continues across pages. The default list hides persons and GOVERNMENT, so it differs from the profile's rankings.rank_24m, which counts every lender."},"lender":{"$ref":"#/components/schemas/LenderRef"},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments recorded in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock, counted once across both tables, inside the geography when you name one. The count takes every instrument of any kind: purchase money, refinance, HELOC and construction. For a GOVERNMENT lender it takes insurance claims and partial-claim seconds under the agency's name, not originations. With position=1 or product[] the count takes the matching instruments only."},"volume":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sum of the loan amounts of the priced instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock, whole dollars, inside the geography when you name one. The sum counts a blanket group once and leaves out amounts above $5,000,000. 0 when none carries a price. Position and product do not narrow it."},"n_unpriced":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Instruments in the window with no amount on file. Null when you name a geography, because the registry does not measure it per geography."},"share":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"n over every lender's instruments in the window, 0 to 1, in the geography when you name one. The denominator counts every lender, persons below the gate and placeholders included. Null with position=1 or product[], because no per-product denominator exists."},"n_first_lien":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of the instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock, in the geography when you name one, those whose open lien position is 1."},"n_heloc":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of the same, those with product HELOC."},"n_open_liens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Open lien positions at `as_of` under the lender the open-lien table names, market-wide."},"open_balance":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The open balance after the profile's exclusions, whole dollars, market-wide. 0 when none."},"n_parcels":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct parcels carrying any of the lender's instruments, all time, market-wide."},"median_amount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median loan amount over the lender's priced instruments, market-wide, whole dollars. This is the profile's terms.amount.p50, over the window its terms block says. Null under 3."},"last_recorded_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The newest recording date, YYYY-MM-DD, inside the geography when you name one. Null when none is dated."},"n_purchase_money":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Of the instruments in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock, in the geography when you name one, those whose purpose is PURCHASE by the deed link. This is what purpose=purchase narrows n to and what sort=purchase_desc orders by. Null while the market has no deed link (meta.coverage[].lenders.purchase_measured false)."},"n_investor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Of the same, those whose borrower resolves to a registered investor. Null while the market has no borrower match."},"n_deals_financed":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Deals bought in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock whose purchase loan is this lender's, market-wide. Null when you name a geography, because the registry does not measure it per geography. Null also while the market has no deal link."},"share_by_volume":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"The lender's loan total over every lender's in the period, 0 to 1, in the geography when you name one. Both totals follow the amount rule: a blanket group once, amounts above $5,000,000 left out. 0 when the lender's total is 0 and the market's is not. Null inside a place whose volume is 0, where no instrument carries a price. Null with position, product or purpose, because no per-product denominator exists. Null under a geometry, because the registry does not measure it per geometry, and on a registry built before the place rankings."},"n_borrowers":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Distinct borrowers (by key) behind the lender's instruments in the period. Market-wide this is the profile's n_borrowers_24m. Inside a ZIP, city or county it is the geography's own count. Null under a geometry, because the registry does not measure it per geometry, and while the market has no borrower match. The count inside a place is also null on a registry built before the place rankings. Market-wide the count reads the borrower match, and the API serves it from 0.16.0."},"in_geometry":{"anyOf":[{"$ref":"#/components/schemas/LenderInGeometry"},{"type":"null"}],"description":"What the geometry resolved to and how many of its cells carry this lender. Null without a geometry."},"as_of":{"type":"string","description":"The slice date, YYYY-MM-DD. The API measures the counts at it. Dated: see meta.dated[]."},"dated":{"type":"boolean","description":"True while the datasets are not in the current delivery, so the row is a snapshot at as_of."}},"required":["rank","lender","n","volume","n_unpriced","share","n_first_lien","n_heloc","n_open_liens","open_balance","n_parcels","median_amount","last_recorded_on","n_purchase_money","n_investor","n_deals_financed","share_by_volume","n_borrowers","in_geometry","as_of","dated"],"additionalProperties":false,"description":"One lender in the ranked list: its position, who it is, what it recorded in the window, in the market or in one geography. The row also says how much of that was purchase money and investor lending, and carries its open book and its typical loan."},"LenderRankingBucket":{"type":"object","properties":{"key":{"type":"string","description":"The bucket, by group_by. A ZIP is 5 digits. A city is upper case as the parcel table writes it. A county is its 5-digit FIPS. A cell is an H3 hex string, for example 8848eba59dfffff. A month is a calendar month, YYYY-MM."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments recorded in the bucket over the period with this lender as lender of record. The count takes each instrument once across the open-lien and recorded-history tables. 0 on a month of the span in which the lender recorded nothing."},"volume":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sum of the loan amounts of the priced instruments in the bucket over the period, whole dollars. The sum counts a blanket group once and leaves out amounts above $5,000,000. 0 when none carries a price."},"n_purchase_money":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Of n, the instruments whose purpose is PURCHASE. A PURCHASE has a priced deed on the parcel in the 45 days up to the recording. Null while the market has no deed link (purchase_measured false)."},"n_investor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Of n, the instruments whose borrower resolves to a registered investor. Null while the market has no borrower match."},"rank":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The lender's rank by n in the bucket over the period among every lender active there. The ranking takes every class, persons below the gate and placeholders included. It breaks ties by volume, then by id. Null on a month of the span with n 0."},"share":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"n over every lender's instruments in the bucket over the period, 0 to 1. The denominator counts every lender. 0 on a month with n 0."},"partial":{"type":"boolean","description":"True when the bucket's window ends after recordings_through. That is the slice month, as a month bucket or as period YYYY-MM, and the slice year, as period YYYY. Recordings in the slice stop on recordings_through."},"floor":{"type":"boolean","description":"True on a calendar-year period before history_floor_year. The recorded history keeps five slots per parcel and pushes older mortgages out, so the count is a floor."},"as_of":{"type":"string","description":"The slice date, YYYY-MM-DD. The API measures the counts at it. Dated: see meta.dated[]."},"dated":{"type":"boolean","description":"True while the datasets are not in the current delivery, so the row is a snapshot at as_of."}},"required":["key","n","volume","n_purchase_money","n_investor","rank","share","partial","floor","as_of","dated"],"additionalProperties":false,"description":"One place, month or cell the lender lent in over the period. The bucket carries its count, volume, purchase-money and investor counts, and its rank and share among every lender there."},"LenderCell":{"type":"object","properties":{"cell":{"type":"string","description":"The H3 cell as a hex string, for example 8848eba59dfffff, at the requested res: the form H3 libraries read and GET `/v1/deals/cells` serves."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments recorded in the cell over the period with this lender as lender of record, counted once across both tables. With product[] the count is the sum of the named products' counts."},"volume":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sum of the loan amounts of the priced instruments in the cell over the period, whole dollars. The sum counts a blanket group once and leaves out amounts above $5,000,000. 0 when none carries a price. The product[] filter does not narrow it."},"n_purchase_money":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Of the cell's instruments, those whose purpose is PURCHASE. Null while the market has no deed link. The product[] filter does not narrow it."},"n_investor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Of the cell's instruments, those whose borrower resolves to a registered investor. Null while the market has no borrower match. The product[] filter does not narrow it."},"n_foreclosed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of the cell's instruments, those followed by a take-back deed on the parcel. Those instruments carry foreclosed on the loan row. 0 where the registry does not carry the take-backs for the market. The product[] filter does not narrow it."},"as_of":{"type":"string","description":"The slice date, YYYY-MM-DD. The API measures the counts at it. Dated: see meta.dated[]."},"dated":{"type":"boolean","description":"True while the datasets are not in the current delivery, so the row is a snapshot at as_of."}},"required":["cell","n","volume","n_purchase_money","n_investor","n_foreclosed","as_of","dated"],"additionalProperties":false,"description":"One H3 cell the lender lent in over the period: the count, the volume, the purchase-money, investor and foreclosed counts. The zoomed-out map layer of one lender."},"LenderLoanDeed":{"type":"object","properties":{"dt":{"type":"string","description":"The date of the purchase deed the loan financed, YYYY-MM-DD. That deed is the priced deed on the parcel dated in the 45 days up to and including the recording date."},"price":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The price on that deed, whole dollars. It is $10,000 or more, the pairing floor."},"loan_to_price":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"loan_amount divided by price, 4 decimals, for example 1.12. A ratio above 1 is a rehab holdback on top of the price, not an error. Null when the loan carries no amount. Null also when the ratio is above 3 without a blanket group: that is a facility amount, not a loan on this parcel."}},"required":["dt","price","loan_to_price"],"additionalProperties":false,"description":"The purchase deed a purchase-money loan financed: its date, its price and the loan against it."},"LenderLoanDeal":{"type":"object","properties":{"deal_id":{"type":"string","pattern":"^deal_[0-9a-f]{32}$","description":"The deal: the key to GET `/v1/deals/{deal_id}`."},"kind":{"type":"string","enum":["flip","wholesale","hold","long_hold","other","build"],"description":"What occurred on the deal. flip: bought, fixed and resold within about a year at a profit-shaped margin; wholesale: bought and resold in under 30 days, or a chain resale or round trip within 90 (a double close); hold: bought and still owned at data_end, a confirmed holding or an un-resold purchase; long_hold: held over a year, then sold (a landlord exit); other: an investor resale that is not a clean flip. Reasons: a loss, a thin margin, a builder's new home resold, an iBuyer resale, or a chain resale of 3 to 12 months; build: a registered investor bought a lot or teardown, built a house on it during the hold, then sold. A builder's finished home bought and resold is other. On data built after 2026-09-17 the kind keeps only a single-family parcel held over 90 days, its house complete by the sale year. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."},"link_window":{"type":"string","enum":["STRICT","LOOSE"],"description":"How the registry tied the loan to its deal. STRICT: the recording date falls in the 45 days from the purchase date, the window every count uses. LOOSE: the recording date falls from 15 days before to 90 days after the purchase date. The row keeps a LOOSE link for reading, but no count uses it, and the registry never applies it to a wholesale deal."},"is_purchase_loan":{"type":"boolean","description":"True when this is the deal's purchase loan: the largest amount among the loans recorded in the window, then the earliest, then the lowest position. False on the others, which secondary_loans_n on the purchase loan counts. Every count of the profile reads the purchase loan alone."},"secondary_loans_n":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"On the purchase loan, how many other loans have a recording date in the deal's window, for example a second or a rehab draw. Null on a secondary loan."},"investor_id":{"anyOf":[{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"Investor id: inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The id is stable across data refreshes within a market. Store it as the investor's identity."},{"type":"null"}],"description":"The deal's buyer when it is a registered investor. Null otherwise. The loan row's own investor_id is the borrower's, which is the same on a DEAL match."},"investor_name":{"description":"That investor's registry name, the deed spelling, upper case, SURNAME GIVEN for a person, as the registry serves it. The API serves it to every key. Null when investor_id is null.","type":["string","null"]},"investor_display_name":{"description":"That investor's name to print (API 0.32.0): GIVEN [MIDDLE] SURNAME [SUFFIX] for a person whose deed spelling parsed cleanly, equal to investor_name otherwise. Null exactly when investor_name is null. Display only.","type":["string","null"]},"bought_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The deal's purchase date, YYYY-MM-DD."},"bought_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"What the investor paid, whole dollars. Null when the deed carries no price."},"sold_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The resale date, YYYY-MM-DD. Null while the investor still holds the parcel at the market's data_end."},"sold_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The resale price, whole dollars. Null while the investor still holds the parcel at the market's data_end, and null when the resale deed carries no price."},"gross_profit":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"sold_price less bought_price on a resold deal with both prices, whole dollars. Null otherwise. Not net of rehab or costs."},"hold_days":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days from purchase to resale. Null while the investor still holds the parcel at the market's data_end."}},"required":["deal_id","kind","link_window","is_purchase_loan","secondary_loans_n","investor_id","investor_name","investor_display_name","bought_on","bought_price","sold_on","sold_price","gross_profit","hold_days"],"additionalProperties":false,"description":"The investor deal linked to the loan: which deal, if this loan is its purchase loan, who bought, and the outcome the deeds show."},"LenderLoanForeclosed":{"type":"object","properties":{"instrument":{"type":"string","enum":["TRUSTEES_DEED","SHERIFFS_DEED","DEED_IN_LIEU"],"description":"The deed by which a lender took a property back. TRUSTEES_DEED: a trustee's deed after a non-judicial foreclosure sale, the certificate of title in Arizona. SHERIFFS_DEED: a sheriff's deed after a judicial sale, in an Arizona or Washington market. In Texas a sheriff's deed is a tax sale, never a take-back. DEED_IN_LIEU: the borrower deeded the property to the lender instead of a foreclosure."},"deed_date":{"type":"string","description":"The date of the take-back deed, YYYY-MM-DD. That deed is the earliest take-back deed on the parcel more than 90 days after the recording date. It also precedes any priced resale and any later mortgage of another lender. A shorter gap is the auction buyer's own deed, not a foreclosure of this loan."},"buyer_is_lender":{"type":"boolean","description":"True when the grantee of the take-back deed is this lender under any of its spellings. False when the grantee is another party: the trustee, the servicer or another lender named on the deed."}},"required":["instrument","deed_date","buyer_is_lender"],"additionalProperties":false,"description":"The take-back deed that followed the loan on its parcel: the instrument, its date and if this lender was the grantee. The event behind the FORECLOSED outcome of a captured loan."},"LenderLoan":{"type":"object","properties":{"market":{"type":"string","description":"Market code, for example phx."},"property_id":{"type":"string","pattern":"^prop_[0-9a-f]{32}$","description":"The parcel: the key to GET `/v1/properties/{property_id}` and its financing block."},"address_short":{"description":"Street address without city, for example \"7522 E Cholla St\". Null when the parcel is not in the parcel table.","type":["string","null"]},"city":{"description":"City, upper case. Null when the parcel is not in the parcel table.","type":["string","null"]},"zip":{"description":"5-digit ZIP. Null when the parcel is not in the parcel table.","type":["string","null"]},"source":{"type":"string","enum":["OPEN","RECORDED"],"description":"Which table the row comes from. OPEN: an open lien position at the slice date, 1 to 4 per parcel, with the balance, rate, term and maturity the open-lien table carries. RECORDED: a slot of the recorded mortgage history, the 5 newest per parcel, with older ones lost. The same instrument is in both tables when the dates and amounts match, and in_both says so."},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The row's slot in its source table. For OPEN it is the lien position (1 is senior). For RECORDED it is the history slot: 1 is the oldest kept, the highest filled slot is the newest."},"loan_key":{"type":"string","description":"The instrument's key, 32 hex characters, from the parcel, the recording date and the amount. It is the same on an open row and its recorded twin, so you can join rows across source. Not an id to store across refreshes."},"in_both":{"type":"boolean","description":"True when the instrument is in both tables. That is an open row and a recorded slot on the same parcel with the same recording date and amount."},"lender_id":{"type":"string","pattern":"^len_[0-9a-f]{12}$","description":"The lender of record: the recorded history's lender on an instrument in both tables, the row's own otherwise. Equals the path id on this route."},"lender_id_open":{"anyOf":[{"type":"string","pattern":"^len_[0-9a-f]{12}$","description":"Lender id: len_ followed by 12 hex characters, for example len_3f9a1c27b4e0. The registry mints the id from the lender's folded name, so the same lender carries the same id in every market, stable across data refreshes. A hand-kept dictionary row can merge two spellings into one lender. The API then follows the old id from the earlier registry run to that lender and lists it in meta.resolved_from. A retired id with no successor answers 410 gone. Store the whole id, prefix included, as the identity."},{"type":"null"}],"description":"The lender the open-lien table names for this instrument. It equals lender_id unless the two tables disagree (lender_disagrees). Null on a recorded row with no open twin, and when that lender is below the person gate."},"lender_disagrees":{"type":"boolean","description":"True when the recorded history and the open table name different lenders for this instrument. That is the insurer (HUD, the VA) against the servicer, or a spelling the registry at as_of does not yet join. False when the instrument is in one table only."},"lender_name_as_recorded":{"description":"The lender name on this row as the file writes it, for example LENDINGHOME FUNDING CORP under Kiavi's id. This is the spelling the parcel's financing block serves. Null when the file left it blank.","type":["string","null"]},"lender_class":{"anyOf":[{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},{"type":"null"}],"description":"How that spelling reads. Null when the name is blank. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"identity_basis":{"anyOf":[{"type":"string","enum":["NAME_FOLD","TRUNCATED_PREFIX","ALIAS_DICTIONARY"],"description":"How the registry ties the spelling to its lender: NAME_FOLD means the folded name alone joins them. The fold uses upper case, drops punctuation and entity suffixes and spells out abbreviations: WELLS FARGO BANK NA and WELLS FARGO BANK N.A. are one. TRUNCATED_PREFIX: the file cut the name at 30 or 40 characters, and the registry joined it to the one longer name that starts with it. ALIAS_DICTIONARY: a hand-kept row joined it, for a rename such as QUICKEN LOANS to ROCKET MORTGAGE, a trade name or a charter form. A row also covers a spelling the same instrument carries both ways. The registry never merges acquisitions."},{"type":"null"}],"description":"How the registry tied that spelling to the lender. Null when the name is blank. How the registry ties the spelling to its lender: NAME_FOLD means the folded name alone joins them. The fold uses upper case, drops punctuation and entity suffixes and spells out abbreviations: WELLS FARGO BANK NA and WELLS FARGO BANK N.A. are one. TRUNCATED_PREFIX: the file cut the name at 30 or 40 characters, and the registry joined it to the one longer name that starts with it. ALIAS_DICTIONARY: a hand-kept row joined it, for a rename such as QUICKEN LOANS to ROCKET MORTGAGE, a trade name or a charter form. A row also covers a spelling the same instrument carries both ways. The registry never merges acquisitions."},"recording_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The recording date, YYYY-MM-DD. Null when the file carries none."},"due_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The maturity date, YYYY-MM-DD. Null when the file carries none, as on most hard-money rows."},"loan_amount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The original loan amount, whole dollars. Null when the file carries none."},"amount_outlier":{"description":"True when loan_amount exceeds $5,000,000. Such an amount is a facility amount the file records on every parcel a commercial facility covers. The row keeps it, but the lender's volumes and amount quartiles leave it out, and n_amount_excluded_24m counts the excluded instruments. Null where loan_amount is null.","type":["boolean","null"]},"current_balance":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The estimated current balance at `as_of`, whole dollars. Open rows only: null on recorded rows and where the file carries none."},"balance_outlier":{"description":"True when current_balance exceeds $5,000,000. The lender's open_balance leaves such a balance out. Null where current_balance is null.","type":["boolean","null"]},"on_resold_parcel":{"description":"True when the deeds show a sale of the parcel more than 30 days after this open row's recording. The loan is probably paid off, so open_balance leaves the row out. Null on recorded rows and where the market has no deed table.","type":["boolean","null"]},"interest_rate":{"description":"The interest rate, percent as the file writes it. On open rows it is an estimate at `as_of`. On history rows it is the rate at recording. Null when not on file.","type":["number","null"]},"term_months":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The term in months as the file writes it. Null when not on file."},"term_band":{"type":"string","enum":["LE_24M","25_TO_120M","121_TO_359M","GE_360M","UNKNOWN"],"description":"The loan term in months, from the file's term where it carries one, else from the maturity date less the recording date. LE_24M: up to 24 months, the bridge and fix-and-flip range. 25_TO_120M: 25 to 120 months. 121_TO_359M: 121 to 359 months. GE_360M: 30 years and longer. UNKNOWN: neither a term nor a maturity on file, which is most hard-money rows."},"loan_type":{"description":"The loan type as the file writes it, for example \"New Conventional\", \"FHA\" or \"Credit Line (Revolving)\". Null when blank or \"Unknown (DEFAULT)\".","type":["string","null"]},"label":{"anyOf":[{"type":"string","enum":["REFI_OR_SECOND","HELOC","RESALE_PURCHASE_MONEY","NEW_PURCHASE_MONEY","CONSTRUCTION","NON_RESIDENTIAL"],"description":"The file's transaction label, mapped to a closed list. REFI_OR_SECOND: refinance loans and second trust deeds, purchase and non-purchase money lumped together. RESALE_PURCHASE_MONEY: a purchase-money loan on a resale. NEW_PURCHASE_MONEY: a purchase-money loan on a new home. HELOC, CONSTRUCTION and NON_RESIDENTIAL: the file's label of that name. The purchase labels stop in January 2022, and a label never decides if a loan financed a purchase."},{"type":"null"}],"description":"Null when the file's label is blank or unmapped, which it is on most open rows. The file's transaction label, mapped to a closed list. REFI_OR_SECOND: refinance loans and second trust deeds, purchase and non-purchase money lumped together. RESALE_PURCHASE_MONEY: a purchase-money loan on a resale. NEW_PURCHASE_MONEY: a purchase-money loan on a new home. HELOC, CONSTRUCTION and NON_RESIDENTIAL: the file's label of that name. The purchase labels stop in January 2022, and a label never decides if a loan financed a purchase."},"label_as_recorded":{"description":"The file's transaction label as written, for example \"Resale purchase money loans\". Null when blank.","type":["string","null"]},"product":{"type":"string","enum":["CONSTRUCTION","HELOC","OTHER"],"description":"What the file says the loan is, read from its flags and loan type and never from the label. CONSTRUCTION: the construction flag or a \"Building or Construction Loan\" type. HELOC: the credit-line flag or a \"Credit Line (Revolving)\" type. OTHER: everything else, that is a purchase-money or refinance mortgage of any kind."},"product_proxy":{"anyOf":[{"type":"string","enum":["BRIDGE","RENTAL_TERM","RETAIL"],"description":"An inference from the term, not a fact the file states. BRIDGE: an OTHER product with a term of 24 months or less, a bridge or fix-and-flip loan. RENTAL_TERM: a term of 30 years or more from a hard-money lender, a DSCR rental loan. RETAIL: any other known term. Null when the term band is UNKNOWN."},{"type":"null"}],"description":"Null when term_band is UNKNOWN. An inference from the term, not a fact the file states. BRIDGE: an OTHER product with a term of 24 months or less, a bridge or fix-and-flip loan. RENTAL_TERM: a term of 30 years or more from a hard-money lender, a DSCR rental loan. RETAIL: any other known term. Null when the term band is UNKNOWN."},"product_basis":{"anyOf":[{"type":"string","enum":["FILE","TERM"],"description":"Where the term behind term_band and product_proxy comes from. FILE: the file's own term in months. TERM: the registry computed it from the maturity date less the recording date. Null when the term band is UNKNOWN."},{"type":"null"}],"description":"Null when term_band is UNKNOWN. Where the term behind term_band and product_proxy comes from. FILE: the file's own term in months. TERM: the registry computed it from the maturity date less the recording date. Null when the term band is UNKNOWN."},"open_position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The open lien position of the instrument. On an open row it is the row's own. On a recorded row in both tables it is the open twin's. Null on a recorded row with no open twin."},"assigned_lender_name":{"description":"The lender the loan went to by assignment, as the file writes it. Open rows only. Null when the file records none.","type":["string","null"]},"blanket_group_id":{"description":"32 hex characters that the open rows of one blanket loan share. A blanket loan has the same lender, date and amount on 5 or more parcels. The grouping leaves out credit lines and banks. Null outside a group.","type":["string","null"]},"blanket_n_parcels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"How many parcels the blanket group spans. Null outside a group."},"county_fips":{"description":"The parcel's 5-digit county FIPS, for example 04013. Null when the parcel table carries none.","type":["string","null"]},"property_type_category":{"description":"The parcel's property type category as the assessor feed writes it, for example \"Residential\". Null when not on file.","type":["string","null"]},"purpose":{"anyOf":[{"type":"string","enum":["PURCHASE","NOT_PURCHASE","UNKNOWN"],"description":"The loan's purpose, that is if it financed a purchase, read from the recorded deeds and never from the file's label. PURCHASE: a priced deed on the parcel, $10,000 or more, is dated in the 45 days up to and including the recording date. A deed after the loan is a later sale, never this loan's purchase. NOT_PURCHASE: the deed registry covers those 45 days, the parcel has priced deeds, and none falls in them. Such a loan is a refinance, a second, a HELOC or a construction draw. UNKNOWN: the deed registry does not cover the window: its deeds or the parcel's deeds start after the loan, or the market has none."},{"type":"null"}],"description":"Null on a registry built before the deed link. The loan's purpose, that is if it financed a purchase, read from the recorded deeds and never from the file's label. PURCHASE: a priced deed on the parcel, $10,000 or more, is dated in the 45 days up to and including the recording date. A deed after the loan is a later sale, never this loan's purchase. NOT_PURCHASE: the deed registry covers those 45 days, the parcel has priced deeds, and none falls in them. Such a loan is a refinance, a second, a HELOC or a construction draw. UNKNOWN: the deed registry does not cover the window: its deeds or the parcel's deeds start after the loan, or the market has none."},"deed":{"anyOf":[{"$ref":"#/components/schemas/LenderLoanDeed"},{"type":"null"}],"description":"The purchase deed the loan financed, on a PURCHASE row. Null on every other row."},"deal":{"anyOf":[{"$ref":"#/components/schemas/LenderLoanDeal"},{"type":"null"}],"description":"The investor deal linked to the loan. The deal's purchase date is within 45 days before the recording, or under LOOSE from 15 days after to 90 days before. The loan is its purchase loan or a secondary. Null when the loan ties to no deal, and while the market has no deal link."},"outcome":{"anyOf":[{"type":"string","enum":["RESOLVED_BY_RESALE","REFINANCED","OPEN","FORECLOSED","UNKNOWN"],"description":"What became of a loan tied to a deal: a performance proxy read from the deed chain, never from a delinquency record or payment history. RESOLVED_BY_RESALE is a priced deed on the parcel after the loan, and REFINANCED is a later mortgage on it in either table before any resale. OPEN is an open lien position at the slice date and nothing later, and UNKNOWN is none of these because the chain runs out. FORECLOSED: a take-back deed on the parcel more than 90 days after the loan's recording, before any priced resale and any later mortgage. A take-back deed is a trustee's deed, a sheriff's deed or a deed in lieu, and the foreclosed block on the loan row carries it. A shorter gap is the auction buyer's own deed, not a foreclosure of this loan."},{"type":"null"}],"description":"Null when deal is null. What became of a loan tied to a deal: a performance proxy read from the deed chain, never from a delinquency record or payment history. RESOLVED_BY_RESALE is a priced deed on the parcel after the loan, and REFINANCED is a later mortgage on it in either table before any resale. OPEN is an open lien position at the slice date and nothing later, and UNKNOWN is none of these because the chain runs out. FORECLOSED: a take-back deed on the parcel more than 90 days after the loan's recording, before any priced resale and any later mortgage. A take-back deed is a trustee's deed, a sheriff's deed or a deed in lieu, and the foreclosed block on the loan row carries it. A shorter gap is the auction buyer's own deed, not a foreclosure of this loan."},"months_to_resolution":{"description":"Months from the recording date to the event that resolved the loan, 1 decimal. The event is the resale deed, the refinancing mortgage or the take-back deed. Null unless outcome is RESOLVED_BY_RESALE, REFINANCED or FORECLOSED.","type":["number","null"]},"foreclosed":{"anyOf":[{"$ref":"#/components/schemas/LenderLoanForeclosed"},{"type":"null"}],"description":"The earliest take-back deed on the parcel more than 90 days after the recording that precedes any resale or later mortgage. A take-back deed is a trustee's deed, a sheriff's deed or a deed in lieu. A shorter gap is the auction buyer's own deed, not a foreclosure of this loan. The flag buyer_is_lender is true when the grantee is this lender under any of its spellings. On a loan tied to a deal it is the FORECLOSED outcome. Null when none, and on a registry built before the take-back join: takebacks_measured false, or a registry built before the place rankings."},"investor_id":{"anyOf":[{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"Investor id: inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The id is stable across data refreshes within a market. Store it as the investor's identity."},{"type":"null"}],"description":"The registered investor the borrowers resolve to, the key to GET `/v1/investors/{id}`. When the borrowers resolve to several investors, the field carries the one with the most deals. Null when no borrower resolves to one, and while the market has no borrower match."},"co_borrower_investor_ids":{"anyOf":[{"type":"array","items":{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"Investor id: inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The id is stable across data refreshes within a market. Store it as the investor's identity."}},{"type":"null"}],"description":"The other registered investors the borrowers resolve to, most deals first. Empty when none. Null with borrower_keys."},"borrower_keys":{"anyOf":[{"type":"array","items":{"type":"string","pattern":"^[0-9a-f]{12}$","description":"Borrower key: 12 hex characters hashed from the borrower's folded name with the dataset salt. The same key appears on every lender's rows and in every market. It is not a name and not reversible, and it is stable across data refreshes. Use the key to compare borrowers across lenders."}},{"type":"null"}],"description":"The borrowers' keys, one per name the recorded mortgage carries, in the file's order. On an open lien that names none, one key for the owner of record. These are the keys to GET `/v1/lenders/{id}/borrowers`. They are not names, and the API serves them to every key. Null when the row has no borrower source, that is an open lien naming none whose owner does not qualify. Null also on a registry built before the borrower match."},"borrower_match":{"anyOf":[{"type":"string","enum":["DEAL","ENTITY_NAME","PERSON_NAME","PARTY","MORTGAGE_ONLY","OWNER_OF_RECORD"],"description":"How the registry resolved the borrower, by the first rule that applied. DEAL: the loan has a deal whose investor has a member with the borrower's key, or the deal's investor when no key matched. ENTITY_NAME: the key is an entity member of exactly one investor, and PERSON_NAME means a person member of exactly one investor. PARTY: the key is on a recorded deed but belongs to no investor, while MORTGAGE_ONLY means the key is on no deed. OWNER_OF_RECORD: an open lien that names no borrower resolves to the parcel's owner of record. The registry takes the owner only when the owner held the parcel on the recording date and no sale followed."},{"type":"null"}],"description":"Null with borrower_keys. How the registry resolved the borrower, by the first rule that applied. DEAL: the loan has a deal whose investor has a member with the borrower's key, or the deal's investor when no key matched. ENTITY_NAME: the key is an entity member of exactly one investor, and PERSON_NAME means a person member of exactly one investor. PARTY: the key is on a recorded deed but belongs to no investor, while MORTGAGE_ONLY means the key is on no deed. OWNER_OF_RECORD: an open lien that names no borrower resolves to the parcel's owner of record. The registry takes the owner only when the owner held the parcel on the recording date and no sale followed."},"as_of":{"type":"string","description":"The slice date, YYYY-MM-DD. The API reads the row at it. Dated: see meta.dated[]."},"dated":{"type":"boolean","description":"True while the datasets are not in the current delivery, so the row is a snapshot at as_of."}},"required":["market","property_id","address_short","city","zip","source","position","loan_key","in_both","lender_id","lender_id_open","lender_disagrees","lender_name_as_recorded","lender_class","identity_basis","recording_date","due_date","loan_amount","amount_outlier","current_balance","balance_outlier","on_resold_parcel","interest_rate","term_months","term_band","loan_type","label","label_as_recorded","product","product_proxy","product_basis","open_position","assigned_lender_name","blanket_group_id","blanket_n_parcels","county_fips","property_type_category","purpose","deed","deal","outcome","months_to_resolution","foreclosed","investor_id","co_borrower_investor_ids","borrower_keys","borrower_match","as_of","dated"],"additionalProperties":false,"description":"One loan of the lender. The row carries the parcel, which table the row comes from and if the other table has it too, and the lender as recorded. It carries the amount, balance, rate, term and maturity as the file carries them, and the product, term band and label read from them. It says if the loan financed a purchase and which deed, and names the investor deal linked to it and what became of it. It also carries the borrowers as keys and the investor they resolve to."},"LenderBorrower":{"type":"object","properties":{"market":{"type":"string","description":"Market code, for example phx."},"lender_id":{"type":"string","pattern":"^len_[0-9a-f]{12}$","description":"The lender: equals the path id on this route."},"borrower_key":{"type":"string","pattern":"^[0-9a-f]{12}$","description":"Borrower key: 12 hex characters hashed from the borrower's folded name with the dataset salt. The same key appears on every lender's rows and in every market. It is not a name and not reversible, and it is stable across data refreshes. Use the key to compare borrowers across lenders."},"name":{"description":"The borrower's name as the recorded mortgages write it, upper case, the most frequent spelling. For a person it is SURNAME GIVEN, the recorder's order the deeds use, for example \"RIVERA DANA\". For a company it is the name as recorded, for example \"SAGUARO HOLDINGS LLC\". When the borrower is a company (is_entity), this is a business name on a recorded instrument, and the API serves it to every key. When the borrower is a person (is_person) or a trust, the name is null on this host. Null when the file names none.","type":["string","null"]},"investor":{"anyOf":[{"$ref":"#/components/schemas/LenderInvestorRef"},{"type":"null"}],"description":"The registered investor the borrower belongs to. The API serves it to every key. Null when the key resolves to none."},"is_entity":{"type":"boolean","description":"True when the name reads as a company: an LLC, a corporation, a partnership or a similar entity. The API then serves the name to every key. A trust is neither this nor a person."},"is_person":{"type":"boolean","description":"True when the name reads as a person's: the name is then null on this host."},"borrower_match":{"type":"string","enum":["DEAL","ENTITY_NAME","PERSON_NAME","PARTY","MORTGAGE_ONLY","OWNER_OF_RECORD"],"description":"How the registry resolved the borrower, by the first rule that applied. DEAL: the loan has a deal whose investor has a member with the borrower's key, or the deal's investor when no key matched. ENTITY_NAME: the key is an entity member of exactly one investor, and PERSON_NAME means a person member of exactly one investor. PARTY: the key is on a recorded deed but belongs to no investor, while MORTGAGE_ONLY means the key is on no deed. OWNER_OF_RECORD: an open lien that names no borrower resolves to the parcel's owner of record. The registry takes the owner only when the owner held the parcel on the recording date and no sale followed."},"n_loans":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Loans from this lender carrying this borrower, all time, counted once per instrument."},"n_loans_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the 12 months ending on `as_of` (365 days, inclusive), as of `as_of`, the slice date, never the clock."},"n_loans_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock: what period=24m counts and sorts by."},"volume_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sum of the loan amounts of those in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock, whole dollars, with amounts above $5,000,000 left out. 0 when none carries a price."},"first_loan_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The recording date of the borrower's oldest loan from this lender, YYYY-MM-DD. A floor, because the history keeps 5 slots per parcel. Null when none is dated."},"last_loan_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The recording date of the borrower's newest loan from this lender, YYYY-MM-DD. Null when none is dated."},"n_lenders_used_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct lenders, this one included, the borrower took a loan from in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock."},"other_lender_ids":{"type":"array","items":{"type":"string","pattern":"^len_[0-9a-f]{12}$","description":"Lender id: len_ followed by 12 hex characters, for example len_3f9a1c27b4e0. The registry mints the id from the lender's folded name, so the same lender carries the same id in every market, stable across data refreshes. A hand-kept dictionary row can merge two spellings into one lender. The API then follows the old id from the earlier registry run to that lender and lists it in meta.resolved_from. A retired id with no successor answers 410 gone. Store the whole id, prefix included, as the identity."},"description":"The other lenders the borrower took a loan from in the 24 months ending on `as_of` (730 days, inclusive), as of `as_of`, the slice date, never the clock, most loans first, at most 10. Empty when none. Each is the key to GET `/v1/lenders/{id}`."},"other_lenders":{"type":"array","items":{"$ref":"#/components/schemas/LenderRef"},"description":"The same lenders as other_lender_ids, in the same order, each with its display name, class and hard-money flag. The API reads them from the registry at request time and leaves out a lender the market no longer serves. Empty when none."},"churned":{"type":"boolean","description":"True when the borrower's last loan here is 12 to 36 months before as_of and the recorded history holds a later loan from another lender. A third condition: this lender holds no open lien recorded after that later loan on any parcel of the borrower's investor group. A lower bound of leaving, because the history sees one loan in five. A borrower who stayed can read as gone only when this lender's later loan is in neither table. A borrower who left can read as staying. Never true when churn_measured is false."},"churn_measured":{"type":"boolean","description":"False when the borrower's investor group holds open lien positions the recorded history does not carry. That is a bridge borrower whose loans the history misses: the registry cannot read churn, and churned is false. True otherwise."},"moved_to_lender_id":{"anyOf":[{"type":"string","pattern":"^len_[0-9a-f]{12}$","description":"Lender id: len_ followed by 12 hex characters, for example len_3f9a1c27b4e0. The registry mints the id from the lender's folded name, so the same lender carries the same id in every market, stable across data refreshes. A hand-kept dictionary row can merge two spellings into one lender. The API then follows the old id from the earlier registry run to that lender and lists it in meta.resolved_from. A retired id with no successor answers 410 gone. Store the whole id, prefix included, as the identity."},{"type":"null"}],"description":"When churned is true, the lender of the borrower's first later loan elsewhere. Null otherwise."},"n_deals_financed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deals (purchases by a registered investor) whose purchase loan is this lender's and names this borrower, all time."},"as_of":{"type":"string","description":"The slice date, YYYY-MM-DD. The API measures the counts at it. Dated: see meta.dated[]."},"dated":{"type":"boolean","description":"True while the datasets are not in the current delivery, so the row is a snapshot at as_of."}},"required":["market","lender_id","borrower_key","name","investor","is_entity","is_person","borrower_match","n_loans","n_loans_12m","n_loans_24m","volume_24m","first_loan_on","last_loan_on","n_lenders_used_24m","other_lender_ids","other_lenders","churned","churn_measured","moved_to_lender_id","n_deals_financed","as_of","dated"],"description":"One borrower of the lender: the key, the name, the registered investor behind it, the loans from this lender by window, the other lenders used. This host serves a company's name. It does not serve a person's name. The row also says if the borrower moved on, as a lower bound. Over MCP a person's name is never on a list."},"StrCoverage":{"type":"object","properties":{"jurisdiction":{"type":"string","description":"The city whose roll covers the parcel, upper case, for example SCOTTSDALE. This is the city-limit polygon the parcel falls in, never the postal city: 560 Phoenix permits carry a SCOTTSDALE postal address. Its regime, freshness and counts are in meta.coverage[].str.jurisdictions."},"served":{"type":"boolean","description":"True when the API loads, matches and serves the city's roll, so it measures status (NONE included). False in a loaded city with no spot check: Tempe and Paradise Valley in release 1. Status is then null and every count is 0."},"licence_start":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The earliest date a licence can exist in this city, YYYY-MM-DD: the day its ordinance took effect, for example 2025-10-01 for Houston. Null when unknown."},"feed_stale":{"type":"boolean","description":"True when this week's city feed failed the freshness rule and the API serves the last good snapshot (data_as_of says which). False otherwise."}},"required":["jurisdiction","served","licence_start","feed_stale"],"additionalProperties":false,"description":"Which city's roll the API read the block from, and if the API serves that roll and the roll is fresh."},"ShortTermRental":{"type":"object","properties":{"status":{"anyOf":[{"type":"string","enum":["LICENSED","PENDING","EXPIRED","NONE"],"description":"The parcel's short-term rental status on the city's roll: the first value that applies over its matched records. LICENSED means an active licence or permit, and PENDING means an application on file with none active. EXPIRED means every record on the parcel is inactive: expired, withdrawn or dropped from the roll. NONE means the parcel is inside a served city and has no record at all. The API counts a parcel the city lists as advertised without a licence, and never serves that as a status. Null inside a loaded city the API does not serve in this release (coverage.served false)."},{"type":"null"}],"description":"Null inside a loaded city the API does not serve in this release (coverage.served false). The parcel's short-term rental status on the city's roll: the first value that applies over its matched records. LICENSED means an active licence or permit, and PENDING means an application on file with none active. EXPIRED means every record on the parcel is inactive: expired, withdrawn or dropped from the roll. NONE means the parcel is inside a served city and has no record at all. The API counts a parcel the city lists as advertised without a licence, and never serves that as a status. Null inside a loaded city the API does not serve in this release (coverage.served false)."},"coverage":{"$ref":"#/components/schemas/StrCoverage"},"active_permits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Active licence numbers on the parcel that the API attributes to the current owner through the purchase test or a name match, for example 1. The API does not count a prior owner's stale active record. 0 when status is NONE, EXPIRED or null."},"multi_unit":{"type":"boolean","description":"True when active_permits is 2 or more: several units licensed on one parcel."},"building":{"type":"boolean","description":"True when active_permits is 5 or more, or when the parcel is not a house or condo and carries 2 or more. A licensed building counts as one holding, never as that many."},"first_application":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The earliest application or issue date over every record on the parcel, whatever its status, YYYY-MM-DD (lifetime). Null when no source carries an application or issue date (dates_source EXPIRY_ONLY or NONE) and when status is NONE."},"current_application":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The current owner's earliest active or pending application, YYYY-MM-DD. This is the earliest active or pending date on or after the purchase date less 14 days, when one exists. Else it is the earliest active or pending date. Null when no active or pending record carries a date, and when status is NONE."},"licensed_since":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The issue date of the current licence, YYYY-MM-DD. Null under dates_source EXPIRY_ONLY and NONE, and when status is NONE or EXPIRED. In Houston the roll is EXPIRY_ONLY, and the API never derives this date from the expiry."},"expires_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"When the current licence expires, YYYY-MM-DD. Houston rolls carry only this date. Null when no record is active or the source carries no expiry."},"dates_source":{"type":"string","enum":["APPLICATION","ISSUE","EXPIRY_ONLY","NONE"],"description":"What the dates on the block are. APPLICATION: the application date the city recorded, as in Phoenix SHAPE PHX records and Scottsdale pending applications. ISSUE: the issue or renewal date, a later bound on the application, as in Scottsdale staff records, Phoenix active permits and Fountain Hills. EXPIRY_ONLY: the roll carries an expiry date alone, so first_application, current_application and licensed_since are null, as in Houston. NONE: the roll carries no dates at all, as in Tempe, Paradise Valley and Cave Creek, and every block with status NONE. APPLICATION and ISSUE dates drive the purchase test, but EXPIRY_ONLY and NONE dates do not."},"permit_after_purchase":{"description":"True when the current owner applied for the licence, or the city issued it, on or after the purchase, with 14 days of tolerance. Also true when the owner bought before the city's licence regime began (attribution_basis LICENCE_START). False when the application predates the purchase, or when the record was already on the roll before the purchase (a prior owner's licence). Null when no date, no regime bound and no name settles it, and when status is NONE.","type":["boolean","null"]},"days_purchase_to_permit":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days from the purchase date to current_application, signed, for example 412. Negative when the application came first. Null without an application or issue date, and when status is NONE."},"operator":{"type":"string","enum":["owner","manager","unknown"],"description":"Who operates the rental, from the city's record. With owner, a name on the record keys to the current owner of the parcel. With manager, the record names a property-management company and no name keys to the owner. With unknown, the record names nobody the test can use: every Houston record, and every record whose names match neither."},"owner_attributed":{"type":"boolean","description":"True when the licence belongs to the current owner. That is status LICENSED or PENDING, and either the purchase test is not false or a name on the record keys to the owner. False when status is NONE, EXPIRED or null, and on a prior owner's permit."},"attribution_basis":{"anyOf":[{"type":"string","enum":["PURCHASE_DATE","OWNER_NAME","LICENCE_START","ASSUMED"],"description":"Why the API attributes the licence to the current owner, strongest first. PURCHASE_DATE: the application or issue date falls on or after the owner's purchase, with 14 days of tolerance. OWNER_NAME: a name on the record keys to the owner. LICENCE_START: no date, no name, but the purchase (Houston: on or before 2025-10-15) predates the city's licence regime, so nobody else was able to apply. ASSUMED: no date, no name, no regime bound, but the record is present and not contradicted, and the API never serves owner identity under it. Null when the API does not attribute the licence to the owner: status NONE or EXPIRED, or a prior owner's permit."},{"type":"null"}],"description":"Null when owner_attributed is false. Why the API attributes the licence to the current owner, strongest first. PURCHASE_DATE: the application or issue date falls on or after the owner's purchase, with 14 days of tolerance. OWNER_NAME: a name on the record keys to the owner. LICENCE_START: no date, no name, but the purchase (Houston: on or before 2025-10-15) predates the city's licence regime, so nobody else was able to apply. ASSUMED: no date, no name, no regime bound, but the record is present and not contradicted, and the API never serves owner identity under it. Null when the API does not attribute the licence to the owner: status NONE or EXPIRED, or a prior owner's permit."},"business_use":{"type":"boolean","description":"True when the API attributes the licence to the current owner and the parcel is not a person's or a trust's own home. An own home is owner_occupied with owner kind PERSON or TRUST. This is the one predicate behind the investor counts, the RENTAL_SIGNAL holding kind and the owner identity rule. In Washington the operator's own declaration on the licence decides it in place of the home test. A Seattle unit declared not the operator's primary residence is a business use, and one declared primary is not. False when the API does not attribute the licence, and on an owner-occupied home with a casita permit."},"prior_owner_permit":{"type":"boolean","description":"True when someone other than the current owner applied for an active licence before the sale, and no name keys to the owner. This is a licence that must lapse on sale, a renewal kept under the old number, or a stale owner on the county roll. The API shows such a licence and never counts it toward the owner's holdings."},"manager":{"description":"The property-management company named on the city's record, as the city writes it, for example \"VACASA LLC\". Served to every key: the API stores only a company-shaped name, and nulls a person-shaped value before it serves the row. Null when the record names no manager or the value was person-shaped.","type":["string","null"]},"signals":{"type":"array","items":{"type":"string","description":"One signal code."},"description":"The short-term rental signals on the holding. Examples: STR_LICENSED, STR_PENDING, STR_EXPIRED, STR_PERMIT_AFTER_PURCHASE, STR_PERMIT_AT_PURCHASE, STR_PERMIT_PRIOR_OWNER, STR_LAPSED_ON_SALE, STR_CONVERTED_FROM_LTR, STR_OWNER_OCCUPIED, STR_OWNER_IS_LICENSEE, STR_MANAGED, STR_MULTI_UNIT, STR_LEGACY_2020, STR_ATTRIBUTION_ASSUMED. STR_PERMIT_AT_PURCHASE means the licence falls within 180 days of the purchase. STR_CONVERTED_FROM_LTR means the parcel was on the rental registry as a long-term rental before the licence. Empty when status is NONE."},"match_method":{"anyOf":[{"type":"string","enum":["APN","ADDRESS_EXACT","ADDRESS_STREET","POINT_UNIQUE"],"description":"How the API attached the city's record to the parcel, most reliable first. APN: the assessor parcel number on the record. ADDRESS_EXACT: the normalised address with its unit matched one parcel. ADDRESS_STREET: the address without its unit matched one parcel. POINT_UNIQUE: the record's coordinates fell within 25 m of exactly one parcel, and the API never matches a point near several parcels. Null when status is NONE (no record)."},{"type":"null"}],"description":"Null when status is NONE (no record to match). How the API attached the city's record to the parcel, most reliable first. APN: the assessor parcel number on the record. ADDRESS_EXACT: the normalised address with its unit matched one parcel. ADDRESS_STREET: the address without its unit matched one parcel. POINT_UNIQUE: the record's coordinates fell within 25 m of exactly one parcel, and the API never matches a point near several parcels. Null when status is NONE (no record)."},"data_as_of":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The snapshot date of the city roll the API read the block from, YYYY-MM-DD (meta.coverage[].str.jurisdictions[].snapshot_date for coverage.jurisdiction). Null only when the market row carries no entry for the city."}},"required":["status","coverage","active_permits","multi_unit","building","first_application","current_application","licensed_since","expires_on","dates_source","permit_after_purchase","days_purchase_to_permit","operator","owner_attributed","attribution_basis","business_use","prior_owner_permit","manager","signals","match_method","data_as_of"],"additionalProperties":false,"description":"The short-term rental licence facts of a parcel, read from the city's own licence and permit roll. The block says if the parcel is licensed and since when. It says if the licence belongs to the current owner and on what basis. It says if the use is a business and not a person's own home. Present on every parcel inside a loaded city, with NONE when it has no record. Null outside every loaded city, and where the market has no published short-term rental tables."},"InvestorStr":{"type":"object","properties":{"n_holdings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Holdings of this investor whose parcel carries a business-use short-term-rental licence attributed to them, for example 3. A licensed 116-unit building is one holding. 0 when none."},"n_permits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Attributed active licence numbers across those holdings, for example 3. A building counts every unit here."},"n_at_purchase":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of the holdings, the ones licensed within 180 days of the purchase: bought to be a short-term rental."},"n_assumed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of the holdings, the ones attributed on basis ASSUMED: no date, no name, no regime bound."},"n_owner_occupied_licences":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Parcels the investor's own people live in that carry a licence, for example a casita permit on a home. n_holdings does not count them. The block counts them here so the operator's whole footprint is visible."},"n_managed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of the holdings, the ones whose record names a property-management company (short_term_rental.manager)."},"share":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"n_holdings divided by the investor's holds inside the loaded area (n_holds), 4 decimals, for example 0.5. A share of 0.5 means half of what they hold is a licensed short-term rental. Null when n_holds is 0."},"manager_companies":{"type":"array","items":{"type":"string","description":"One company name as the city writes it."},"description":"The property-management companies named across the holdings, for example [\"VACASA LLC\"]. Empty when no record names one. Company names only, served to every key."},"jurisdictions":{"type":"array","items":{"type":"string","description":"One jurisdiction, upper case."},"description":"The cities the holdings fall in, for example [\"SCOTTSDALE\", \"PHOENIX\"]. Empty when n_holdings is 0."},"stale_jurisdictions":{"type":"array","items":{"type":"string","description":"One jurisdiction, upper case."},"description":"Of those cities, the ones whose feed is stale this week. For them the API serves the last good snapshot, and the failed week does not change the counts here. Empty when none."},"last_application_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The newest application or issue date across the holdings, YYYY-MM-DD. Null when no holding carries one, as for every Houston holding."}},"required":["n_holdings","n_permits","n_at_purchase","n_assumed","n_owner_occupied_licences","n_managed","share","manager_companies","jurisdictions","stale_jurisdictions","last_application_on"],"additionalProperties":false,"description":"How much of the investor's portfolio is licensed for short-term rental, from the cities' own rolls. The block counts holdings, not permits, and only where the API attributes the licence to the investor and the use is a business. Null where it sits when the market has no published short-term rental tables. Zeros when it has them and the investor holds no such parcel."},"WholesalerRef":{"type":"object","properties":{"id":{"type":"string","pattern":"^wsr_[0-9a-f]{12}$","description":"Wholesaler id (an Investorlift listing company): wsr_ followed by 12 hex characters, for example wsr_3f9a1c27b4e0. The id is stable per company across data refreshes. It is the key to GET `/v1/wholesalers/{id}`. The prefix is part of the id."},"name":{"type":"string","description":"The listing company's name as it appears on Investorlift, for example \"Home Team Investors\". The API serves it to every key, as a business name."}},"required":["id","name"],"additionalProperties":false,"description":"The company that listed the house on Investorlift: the key to GET `/v1/wholesalers/{id}` and the name to show."},"WholesalerSummary":{"type":"object","properties":{"id":{"type":"string","pattern":"^wsr_[0-9a-f]{12}$","description":"Wholesaler id (an Investorlift listing company): wsr_ followed by 12 hex characters, for example wsr_3f9a1c27b4e0. The id is stable per company across data refreshes. It is the key to GET `/v1/wholesalers/{id}`. The prefix is part of the id."},"name":{"type":"string","description":"The listing company's name as it appears on Investorlift, for example \"Home Team Investors\". The API serves it to every key, as a business name."},"brands":{"type":"array","items":{"type":"string","description":"One brand name."},"description":"The other names the company markets under on Investorlift, for example [\"OneRoof Deals\"]. Empty when none."}},"required":["id","name","brands"],"additionalProperties":false,"description":"The listing company with its brands."},"WholesaleBuyer":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"Investor id: inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The id is stable across data refreshes within a market. Store it as the investor's identity."},{"type":"null"}],"description":"The buyer's investor id when the buyer on the closing deed is a registry investor (tier REGISTRY_STRONG or REGISTRY_WEAK): the key to GET `/v1/investors/{id}`. Null on every other tier and without a closing deed."},"name":{"description":"The buyer's name. For a registry investor, the registry name, whatever its kind, as on every deal row. The registry name is the deed spelling in upper case, SURNAME GIVEN for a person. For an unregistered company, its name as written on the deed, \"not yet in the registry\". That covers tiers IL_BUYER_CONFIRMED and ENTITY_UNREGISTERED when the grantee is an entity. Null for a person, a trust or an owner-occupant that is not itself a registry investor, and without a closing deed.","type":["string","null"]},"display_name":{"description":"The name to print for the buyer. For a registry investor whose deed spelling is a cleanly parsed person's, GIVEN [MIDDLE] SURNAME [SUFFIX] in upper case. For example, \"DANA RIVERA\" from the deed's \"RIVERA DANA\". For an entity, a trust, a public body, an institutional investor, an ambiguous spelling or an unregistered company, it equals name. The API computes it from the buyer's current registry row. The name field keeps the spelling stored when the API matched the listing, so the two can differ between data refreshes. Display only: match and join on id and name. Null exactly when name is null.","type":["string","null"]},"kind":{"anyOf":[{"type":"string","enum":["ENTITY","TRUST","PERSON","MIXED"],"description":"The kind of the grantee or grantees on the closing deed. ENTITY: every grantee is an LLC, corporation or partnership. TRUST: a trust, and no entity. PERSON: every grantee is a person. MIXED: a person beside an entity or a trust."},{"type":"null"}],"description":"Null without a closing deed. The kind of the grantee or grantees on the closing deed. ENTITY: every grantee is an LLC, corporation or partnership. TRUST: a trust, and no entity. PERSON: every grantee is a person. MIXED: a person beside an entity or a trust."},"tier":{"type":"string","enum":["REGISTRY_STRONG","REGISTRY_WEAK","IL_BUYER_CONFIRMED","ENTITY_UNREGISTERED","PERSON_ABSENTEE","OWNER_OCCUPANT","UNRESOLVED"],"description":"Who the buyer on the closing deed is, strongest first. REGISTRY_STRONG: a registry investor at STRONG or PROBABLE confidence, named, with an investor id. REGISTRY_WEAK: a registry investor at WEAK confidence, named, with an id. IL_BUYER_CONFIRMED: not in the registry, but the accepted offer's buyer or an Investorlift buyer account keys to the deed. On that tier the API names an entity and never a person. ENTITY_UNREGISTERED: an LLC or corporation not yet in the registry, often a fresh single-deed entity, named, no id. PERSON_ABSENTEE: a person whose mailing address is not the house, never named: show \"individual buyer, not a known investor\". OWNER_OCCUPANT: the buyer moved in, never named. UNRESOLVED: no closing deed. The first three count as a known investor."},"market":{"description":"The market the buyer's investor id belongs to, the listing's market. Null when id is null.","type":["string","null"]}},"required":["id","name","display_name","kind","tier","market"],"additionalProperties":false,"description":"Who bought the house per the recorded closing deed. The API names the buyer when the deed names a registry investor, whatever its kind, or an unregistered company. The API describes a person, a trust or an owner-occupant that is not itself a registry investor by tier alone, never by name."},"WholesaleIntermediate":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"Investor id: inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The id is stable across data refreshes within a market. Store it as the investor's identity."},{"type":"null"}],"description":"The investor id of the party in the middle of a double close or a buy-then-sell, when it is a registry investor. That party is the grantee of the first deed and the grantor of the second. Null otherwise, and when the pattern has no intermediate."},"name":{"description":"That investor's registry name, the deed spelling, upper case, SURNAME GIVEN for a person. Null when id is null: the API names an intermediate only through a registry id.","type":["string","null"]},"display_name":{"description":"The name to print for the intermediate: given-first for a cleanly parsed person, otherwise equal to name. Null exactly when name is null.","type":["string","null"]},"is_lister":{"description":"True when the intermediate is the listing company itself, or a partner entity of its account: the company bought and resold the house. False when a third party did. Null when the pattern has no intermediate.","type":["boolean","null"]}},"required":["id","name","display_name","is_lister"],"additionalProperties":false,"description":"The party that held title between the homeowner and the end buyer on a chained pair of deeds, when one exists."},"WholesaleDeed":{"type":"object","properties":{"closed_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The date of the closing deed, YYYY-MM-DD: the transaction's own date. Null without a closing deed (verification OPEN or NONE)."},"pattern":{"type":"string","enum":["SINGLE","DOUBLE_CLOSE","BUY_THEN_SELL","DEED_THEN_RESALE","TWO_NOT_CHAIN","MULTI","NONE"],"description":"The shape of the deeds recorded on the parcel around the listing. SINGLE: one deed. DOUBLE_CLOSE: two chained deeds 0 to 14 days apart, so the intermediate bought and resold at once. BUY_THEN_SELL: two chained deeds 15 to 90 days apart. DEED_THEN_RESALE: the closing deed and the buyer's own resale more than 90 days later. TWO_NOT_CHAIN is two unrelated sales within 90 days, MULTI is three or more sales, and NONE is no attributable deed."},"chain_certain":{"description":"True when the parties or the prices establish the order of the deeds of a chained pair. False when the rules cannot order two same-day deeds, and the API then caps confidence at MEDIUM. Null on a single deed and without a deed.","type":["boolean","null"]},"price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"What the buyer paid per the closing deed, whole dollars, for example 245000. Null when the deed carries no price and no MLS sale matches it, as on most Texas deeds, and without a closing deed. Never 0."},"price_basis":{"anyOf":[{"type":"string","enum":["RECORDED","MLS_DERIVED"],"description":"Where the deed price comes from. RECORDED: the consideration stated on the deed, as in Arizona. MLS_DERIVED: a non-disclosure state such as Texas, where the deed carries no price and the price is the MLS sold price of the same sale."},{"type":"null"}],"description":"Null when price is null. Where the deed price comes from. RECORDED: the consideration stated on the deed, as in Arizona. MLS_DERIVED: a non-disclosure state such as Texas, where the deed carries no price and the price is the MLS sold price of the same sale."},"price_ratio":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"price divided by asking_price, for example 0.94 when the buyer paid 94% of the asking price. Null when either is unknown."}},"required":["closed_on","pattern","chain_certain","price","price_basis","price_ratio"],"additionalProperties":false,"description":"The recorded deed that closed the listing: when, in what shape, and for how much."},"WholesaleListingFacts":{"type":"object","properties":{"listed_on":{"type":"string","description":"The date the company published the listing on Investorlift, YYYY-MM-DD. Always set."},"accepted_offer_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The date of the earliest accepted offer on the listing, YYYY-MM-DD. The API serves it only on CONFIRMED rows: an accepted offer on a listing that never transferred is a claim, not a fact. Null otherwise, and when the listing had no accepted offer."},"contract_verified_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The date Investorlift verified the listing company's purchase contract, YYYY-MM-DD. Null when Investorlift verified no contract."},"asking_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The asking price on Investorlift, whole dollars, for example 260000. Null when the listing carried none. Never 0."},"arv_estimate":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The after-repair value the listing company estimated, whole dollars. Null when the company gave none."},"condition":{"anyOf":[{"type":"string","enum":["FULL_REHAB","MAJOR_REPAIR","LIGHT_REHAB","TURN_KEY"],"description":"The condition the listing company gave the house on Investorlift. FULL_REHAB: a gut job. MAJOR_REPAIR: heavy work. LIGHT_REHAB: cosmetic work. TURN_KEY: move-in ready. Null when the listing carried none."},{"type":"null"}],"description":"The condition the listing company gave the house on Investorlift. FULL_REHAB: a gut job. MAJOR_REPAIR: heavy work. LIGHT_REHAB: cosmetic work. TURN_KEY: move-in ready. Null when the listing carried none."}},"required":["listed_on","accepted_offer_on","contract_verified_on","asking_price","arv_estimate","condition"],"additionalProperties":false,"description":"What the listing said on Investorlift: dates and prices as the company published them. The API never serves the company's own purchase price."},"WholesaleParcel":{"type":"object","properties":{"id":{"type":"string","pattern":"^prop_[0-9a-f]{32}$","description":"Parcel id, prop_ followed by 32 hex characters: the key to GET `/v1/properties/{property_id}`."},"address_short":{"description":"Situs street address in title case, for example \"7522 E Cholla St\". Null when the parcel is not in the parcel table.","type":["string","null"]},"city":{"description":"City, upper case. Null when unknown.","type":["string","null"]},"state":{"description":"2-letter state. Null when unknown.","type":["string","null"]},"zip":{"description":"5-digit ZIP. Null when unknown.","type":["string","null"]},"latitude":{"anyOf":[{"type":"number","minimum":-90,"maximum":90,"description":"WGS84 latitude."},{"type":"null"}],"description":"WGS84 latitude of the parcel. Null when it has no geocode."},"longitude":{"anyOf":[{"type":"number","minimum":-180,"maximum":180,"description":"WGS84 longitude."},{"type":"null"}],"description":"WGS84 longitude of the parcel. Null when it has no geocode."},"segment":{"anyOf":[{"type":"string","enum":["SFR","CONDO_TH","OTHER"],"description":"Parcel segment: SFR, CONDO_TH (condo or townhouse) or OTHER, a mixed bucket of manufactured, multi-family, land and commercial parcels."},{"type":"null"}],"description":"Null when unknown. Parcel segment: SFR, CONDO_TH (condo or townhouse) or OTHER, a mixed bucket of manufactured, multi-family, land and commercial parcels."},"bedrooms":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Bedrooms per the assessor. Null when the assessor roll does not report them."},"sqft":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The living area in square feet. Null when the assessor roll does not report it."}},"required":["id","address_short","city","state","zip","latitude","longitude","segment","bedrooms","sqft"],"additionalProperties":false,"description":"The parcel the API matched the Investorlift listing to. Null on a hidden-address listing, where the company hid the address on its own site, with no closing deed by the deed data_end. Such a listing is reachable under the wholesaler only."},"LenderActive":{"type":"object","properties":{"id":{"type":"string","pattern":"^len_[0-9a-f]{12}$","description":"The lender: the key to GET `/v1/lenders/{id}`."},"name":{"type":"string","description":"The lender's display name in the market, upper case as the file writes it, for example KIAVI FUNDING INC. A business name, which the API serves to every key."},"lender_class":{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"A reading of the name, never a legal status. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"is_hard_money":{"type":"boolean","description":"True when the name carries hard-money vocabulary or is a known hard-money brand, or when the book behaves like one. The profile's hard_money_basis says which, and the behaviour test needs the market's deed link. A PRIVATE lender_class is a trust or a seller carry-back, not a hard-money lender."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Instruments the lender recorded in the listing's ZIP in the 24 months that end on as_of, counted once across the open-lien and recorded-history tables."},"n_investor":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, the instruments whose borrower resolves to a registered investor: the count that ranks the five."},"n_purchase_money":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Of those, the instruments whose purpose is PURCHASE: a priced deed on the parcel in the 45 days up to the recording. Null while the registry has no deed link for the market."},"share":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"n over every lender's instruments in the ZIP in the window, 0 to 1, and the denominator counts every lender."},"as_of":{"type":"string","description":"The lender registry's slice date, YYYY-MM-DD, at which the registry measures the counts. The block is dated: see meta.dated[]."},"dated":{"type":"boolean","description":"True while the financing slice behind the registry, dated as_of, is not in the current delivery."}},"required":["id","name","lender_class","is_hard_money","n","n_investor","n_purchase_money","share","as_of","dated"],"additionalProperties":false,"description":"One of the lenders most active with investors in a listing's ZIP. The lender stub with its instruments, investor loans, purchase-money loans and share there, over the registry's 24-month window."},"WholesaleListing":{"type":"object","properties":{"id":{"type":"string","pattern":"^wl_[0-9a-f]{32}$","description":"Investorlift listing id: wl_ followed by 32 hex characters, for example wl_9f2c1d0e8b7a6c5d4e3f2a1b0c9d8e7f. The id is stable per Investorlift listing and the same in every market. It is the key to GET `/v1/wholesale-listings/{id}`. The prefix is part of the id."},"market":{"type":"string","description":"Market code the listing belongs to, for example phx. The loaded markets are in meta.coverage[]."},"source_listing_id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The listing's id in the Investorlift app, for example 34905: the join key back to the app and to the feedback file."},"property":{"anyOf":[{"$ref":"#/components/schemas/WholesaleParcel"},{"type":"null"}],"description":"The parcel the API matched the listing to: the key to GET `/v1/properties/{property_id}` and the address to show. Null on a hidden-address listing, where the company hid the address on its own site, with no closing deed by the deed data_end. Such a row never matches a geometry, is absent from the parcel's wholesale_listings[], and is reachable under its wholesaler only."},"distance_miles":{"description":"Miles from the reference point, rounded to 2 decimals. The reference point is lat + lng, or the centre of the property_id parcel. Null when the request had no reference point, and on a hidden-address row.","type":["number","null"]},"wholesaler":{"description":"The company that listed the house on Investorlift, with its brands. The API always serves it, as a business name.","$ref":"#/components/schemas/WholesalerSummary"},"listing":{"$ref":"#/components/schemas/WholesaleListingFacts"},"outcome":{"type":"string","enum":["ASSIGNED","DOUBLE_CLOSED","LISTER_HELD_THEN_SOLD","LISTER_SOLD_FROM_INVENTORY","SOLD_OFF_MARKET_GRANTOR","SOLD_TO_OWNER_OCCUPANT","FAILED_THEN_RETAIL_MLS","DISTRESSED_TRANSFER","LATE_TRANSFER","NO_TRANSFER_400","NO_DEED_120","PENDING","SUPERSEDED","AMBIGUOUS_DEEDS"],"description":"What the county deeds record for the listing, in detail. The one-word verdict is verification. ASSIGNED: one deed from the homeowner to the buyer, and the listing company is not on title, so a contract assignment. DOUBLE_CLOSED: two chained deeds 0 to 14 days apart, with the company or its buyer in the middle. LISTER_HELD_THEN_SOLD: the company took title and resold within 90 days. LISTER_SOLD_FROM_INVENTORY: the company already owned the house and sold it. SOLD_OFF_MARKET_GRANTOR: one deed from a seller who is neither the homeowner of record nor the company, so an unrecorded step came before it. SOLD_TO_OWNER_OCCUPANT: the buyer moved in, so not an investor sale. FAILED_THEN_RETAIL_MLS: the homeowner sold on the MLS instead. DISTRESSED_TRANSFER: a sheriff's, trustee's or REO deed. LATE_TRANSFER: a deed 180 to 400 days after the listing that nothing ties to it. NO_TRANSFER_400: no deed within 400 days. NO_DEED_120: no deed by the deed data end, 120 to 400 days after the listing, so provisional. PENDING: the company listed the house fewer than 120 days before the deed data end, and no deed exists yet. SUPERSEDED: another Investorlift listing of the same parcel holds the credit for the deed. AMBIGUOUS_DEEDS: two or more unrelated sales that the rules cannot order."},"verification":{"type":"string","enum":["CONFIRMED","RETAIL","OPEN","NONE"],"description":"The API derives the one-word verdict of the deeds on the listing from outcome alone, and the Investorlift status plays no part. CONFIRMED: a recorded deed closed it to a buyer, so a verified wholesale transaction. RETAIL: it closed, but to an owner-occupant or through the MLS, so not an investor sale. OPEN: the deeds record no transfer yet, up to the deed data_end. NONE: no transfer within 400 days, a distressed deed, or a transfer the rules cannot tie to this listing. NONE also when the credit went to another listing of the parcel."},"outcome_text":{"type":"string","description":"One name-free sentence that says what the deeds show, ready to display. For example \"closed 2024-06-10: bought by a registered investor per the recorded deed\" or \"listed 2024-03-02; no recorded transfer yet\". Add the buyer's name from buyer.name when that field is not null."},"time_fit":{"description":"True when the closing deed sits inside the expected window of the listing. The window runs from 30 days before to 120 days after publication, or from 45 days before to 120 days after the accepted offer. False when it closed later or earlier than that, and the API then caps confidence at MEDIUM. Null without a closing deed.","type":["boolean","null"]},"closed_before_publish":{"description":"True when the county recorded the closing deed before the company published the listing: the company's own acquisition, or a listing published after closing. Null without a closing deed.","type":["boolean","null"]},"confidence":{"type":"string","enum":["HIGH","MEDIUM","LOW","NONE"],"description":"How sure the match between the listing and the deed is, to show as text beside the verdict. HIGH: the parcel matched exactly, and the deed sits inside the expected window with a corroborator. A corroborator is a price match, the company on title, the accepted offer's buyer on the deed, or a chained pair. MEDIUM: a deed inside the window without a corroborator, an off-market grantor, or a late or uncertain-order deed. LOW: a fuzzy parcel match or a guessed unit. NONE: below the floor, so the API serves the row without a buyer."},"buyer":{"$ref":"#/components/schemas/WholesaleBuyer"},"intermediate":{"$ref":"#/components/schemas/WholesaleIntermediate"},"deed":{"$ref":"#/components/schemas/WholesaleDeed"},"registry_deal_id":{"description":"The deal row the API serves the closing deed as, deal_ followed by 32 hex characters: the key to GET `/v1/deals/{id}`. That row's wholesale_listing block points back here. Null when the deed is not a served deal: a household buyer with no investor id, or no closing deed.","type":["string","null"]},"lenders_active":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/LenderActive"}},{"type":"null"}],"description":"The five lenders with the most investor loans in the listing's ZIP in the 24 months to the lender registry's slice date. They show who funds this deal kind here. The order is n_investor desc, then n, then id, from the registry's ZIP rankings. Empty when the ZIP has no investor lending. Null on a hidden-address row, and in a market without the lender registry or its borrower match. Also null on rows of a registry built before phase 3."},"lister_attribution":{"type":"string","description":"Who gets the credit for the closing deed when several Investorlift listings of the same parcel can claim it. PRIMARY: this listing, because its accepted offer's buyer is on the deed, its company is on title, or it sat closest before the deed. SHARED(n): n companies listed the house and nothing tells them apart, so \"listed by n companies\", and none carries \"sold by\". UNCERTAIN: a retail, distressed or ambiguous outcome. NONE: no closing deed. Wholesaler and investor counts use PRIMARY rows only."},"lister_on_title":{"type":"string","enum":["NONE","INTERMEDIATE","GRANTOR","PRIOR_OWNER"],"description":"How the listing company, or a partner entity of its account, appears on the deeds. NONE: an assignment, so the company never held title. INTERMEDIATE: it bought and resold, the middle of a double close. GRANTOR: it sold the house on the closing deed. PRIOR_OWNER: it already owned the house before the listing."},"lister_on_title_role":{"anyOf":[{"type":"string","enum":["OWN","PARTNER"],"description":"Which entity of the listing company's account is on title. OWN: the company's own entity, its title or a brand. PARTNER: a joint-venture partner entity listed under the account. Null when lister_on_title is NONE."},{"type":"null"}],"description":"Which entity of the listing company's account is on title. OWN: the company's own entity, its title or a brand. PARTNER: a joint-venture partner entity listed under the account. Null when lister_on_title is NONE."},"buyer_fate":{"anyOf":[{"type":"string","enum":["HELD","RESALE_15_90","RESALE_91_365","RESALE_366P","MLS_LISTED"],"description":"What the buyer did with the house after the closing deed, as of the deed data_end, or null without a closing deed. HELD: the buyer still owns it at the deed data_end. RESALE_15_90: the buyer resold within 90 days, and so behaved like a wholesaler. RESALE_91_365: the buyer resold within a year, a flip. RESALE_366P: the buyer resold after more than a year. MLS_LISTED: the house is on the market in the MLS feed, as of the market's listings_data_end."},{"type":"null"}],"description":"What the buyer did with the house after the closing deed, as of the deed data_end, or null without a closing deed. HELD: the buyer still owns it at the deed data_end. RESALE_15_90: the buyer resold within 90 days, and so behaved like a wholesaler. RESALE_91_365: the buyer resold within a year, a flip. RESALE_366P: the buyer resold after more than a year. MLS_LISTED: the house is on the market in the MLS feed, as of the market's listings_data_end."},"offer_buyer_match":{"anyOf":[{"type":"string","enum":["EXACT","TOKEN","DIFFERENT","UNNAMED"],"description":"How the buyer named on the accepted Investorlift offer compares with the buyer on the deed, or null without a closing deed. EXACT: the same name. TOKEN: the same words in another order. DIFFERENT: the offer named a different party than the deed, for example a disposition agent who bid for a client. Show DIFFERENT as text: the API never names the offer party. UNNAMED: the offer carried no buyer name, or the listing had no accepted offer."},{"type":"null"}],"description":"How the buyer named on the accepted Investorlift offer compares with the buyer on the deed, or null without a closing deed. EXACT: the same name. TOKEN: the same words in another order. DIFFERENT: the offer named a different party than the deed, for example a disposition agent who bid for a client. Show DIFFERENT as text: the API never names the offer party. UNNAMED: the offer carried no buyer name, or the listing had no accepted offer."},"retail_signals":{"type":"array","items":{"type":"string","description":"One signal code. For example R1 says the buyer's mailing address is the house, and R2 says the homeowner listed on the MLS."},"description":"The retail tests that fired on the closing deed. Empty when none did. Two signals make a RETAIL verdict. Show them as text beside the verdict, never as a colour alone."},"n_other_listings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Other Investorlift listings of the same parcel, at any time: n_listings_on_parcel minus 1. 0 when this is the only one."},"n_listings_on_parcel":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Every Investorlift listing of the parcel, this one included (n_other_listings + 1)."},"superseded_by_id":{"anyOf":[{"type":"string","pattern":"^wl_[0-9a-f]{32}$","description":"Investorlift listing id: wl_ followed by 32 hex characters, for example wl_9f2c1d0e8b7a6c5d4e3f2a1b0c9d8e7f. The id is stable per Investorlift listing and the same in every market. It is the key to GET `/v1/wholesale-listings/{id}`. The prefix is part of the id."},{"type":"null"}],"description":"On a SUPERSEDED row, the listing of the same parcel that holds the credit for the deed. Null otherwise."},"data_end":{"type":"string","description":"The deed data end date, YYYY-MM-DD, the same as meta.coverage[].data_end. The API measures every window on this row against it."},"as_of":{"type":"string","description":"The date of the Investorlift export behind this row, YYYY-MM-DD, the same as meta.coverage[].wholesale_as_of."}},"required":["id","market","source_listing_id","property","distance_miles","wholesaler","listing","outcome","verification","outcome_text","time_fit","closed_before_publish","confidence","buyer","intermediate","deed","registry_deal_id","lenders_active","lister_attribution","lister_on_title","lister_on_title_role","buyer_fate","offer_buyer_match","retail_signals","n_other_listings","n_listings_on_parcel","superseded_by_id","data_end","as_of"],"additionalProperties":false,"description":"One Investorlift listing as a wholesale transaction: what the company listed, what the county deeds record for it, and who bought it. The verdict is verification. outcome carries the detail, and outcome_text carries the sentence."},"WholesaleListingSummary":{"type":"object","properties":{"by_outcome":{"type":"object","propertyNames":{"type":"string","enum":["ASSIGNED","DOUBLE_CLOSED","LISTER_HELD_THEN_SOLD","LISTER_SOLD_FROM_INVENTORY","SOLD_OFF_MARKET_GRANTOR","SOLD_TO_OWNER_OCCUPANT","FAILED_THEN_RETAIL_MLS","DISTRESSED_TRANSFER","LATE_TRANSFER","NO_TRANSFER_400","NO_DEED_120","PENDING","SUPERSEDED","AMBIGUOUS_DEEDS"],"description":"What the county deeds record for the listing, in detail. The one-word verdict is verification. ASSIGNED: one deed from the homeowner to the buyer, and the listing company is not on title, so a contract assignment. DOUBLE_CLOSED: two chained deeds 0 to 14 days apart, with the company or its buyer in the middle. LISTER_HELD_THEN_SOLD: the company took title and resold within 90 days. LISTER_SOLD_FROM_INVENTORY: the company already owned the house and sold it. SOLD_OFF_MARKET_GRANTOR: one deed from a seller who is neither the homeowner of record nor the company, so an unrecorded step came before it. SOLD_TO_OWNER_OCCUPANT: the buyer moved in, so not an investor sale. FAILED_THEN_RETAIL_MLS: the homeowner sold on the MLS instead. DISTRESSED_TRANSFER: a sheriff's, trustee's or REO deed. LATE_TRANSFER: a deed 180 to 400 days after the listing that nothing ties to it. NO_TRANSFER_400: no deed within 400 days. NO_DEED_120: no deed by the deed data end, 120 to 400 days after the listing, so provisional. PENDING: the company listed the house fewer than 120 days before the deed data end, and no deed exists yet. SUPERSEDED: another Investorlift listing of the same parcel holds the credit for the deed. AMBIGUOUS_DEEDS: two or more unrelated sales that the rules cannot order."},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows with that outcome."},"description":"Rows inside the geometry after the filters, by outcome. Outcomes with no row are absent."},"by_verification":{"type":"object","propertyNames":{"type":"string","enum":["CONFIRMED","RETAIL","OPEN","NONE"],"description":"The API derives the one-word verdict of the deeds on the listing from outcome alone, and the Investorlift status plays no part. CONFIRMED: a recorded deed closed it to a buyer, so a verified wholesale transaction. RETAIL: it closed, but to an owner-occupant or through the MLS, so not an investor sale. OPEN: the deeds record no transfer yet, up to the deed data_end. NONE: no transfer within 400 days, a distressed deed, or a transfer the rules cannot tie to this listing. NONE also when the credit went to another listing of the parcel."},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows with that verdict."},"description":"The same rows by verification."},"by_buyer_tier":{"type":"object","propertyNames":{"type":"string","enum":["REGISTRY_STRONG","REGISTRY_WEAK","IL_BUYER_CONFIRMED","ENTITY_UNREGISTERED","PERSON_ABSENTEE","OWNER_OCCUPANT","UNRESOLVED"],"description":"Who the buyer on the closing deed is, strongest first. REGISTRY_STRONG: a registry investor at STRONG or PROBABLE confidence, named, with an investor id. REGISTRY_WEAK: a registry investor at WEAK confidence, named, with an id. IL_BUYER_CONFIRMED: not in the registry, but the accepted offer's buyer or an Investorlift buyer account keys to the deed. On that tier the API names an entity and never a person. ENTITY_UNREGISTERED: an LLC or corporation not yet in the registry, often a fresh single-deed entity, named, no id. PERSON_ABSENTEE: a person whose mailing address is not the house, never named: show \"individual buyer, not a known investor\". OWNER_OCCUPANT: the buyer moved in, never named. UNRESOLVED: no closing deed. The first three count as a known investor."},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows with that buyer tier."},"description":"The same rows by buyer tier. Rows without a closing deed count under UNRESOLVED."},"n_listings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows inside the geometry after the filters: the total the pages walk."},"n_wholesalers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct listing companies behind those rows."},"n_investor_buyers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct registry investors who bought (tiers REGISTRY_STRONG and REGISTRY_WEAK) among the CONFIRMED rows."},"median_asking_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median asking price over the priced rows, whole dollars. Null when no row carries a price."},"median_price_ratio":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Median of deed price divided by asking price over CONFIRMED rows with a recorded deed price, for example 0.94. Arizona records prices, and a non-disclosure state contributes nothing. Null when no row qualifies."}},"required":["by_outcome","by_verification","by_buyer_tier","n_listings","n_wholesalers","n_investor_buyers","median_asking_price","median_price_ratio"],"additionalProperties":false,"description":"Counts for the whole geometry after the filters (not just the page)."},"WholesalerTopBuyer":{"type":"object","properties":{"investor_id":{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"The buyer's investor id: the key to GET `/v1/investors/{id}`."},"name":{"type":"string","description":"The investor's registry name, the deed spelling, upper case, SURNAME GIVEN for a person. The API serves it to every key."},"display_name":{"type":"string","description":"The name to print: GIVEN [MIDDLE] SURNAME [SUFFIX] in upper case for a person whose deed spelling parsed cleanly. For example, \"DANA RIVERA\" from the deed's \"RIVERA DANA\". Equal to name for an entity, a trust, a public body, an institutional investor or an ambiguous spelling. Display only: join on investor_id."},"kind":{"anyOf":[{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},{"type":"null"}],"description":"The investor's primary kind. Null when the registry assigned none. Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},"confidence":{"anyOf":[{"type":"string","enum":["STRONG","PROBABLE","WEAK"],"description":"How sure the registry is of the kind. STRONG: several deals of that kind and a consistent pattern. PROBABLE: some evidence. WEAK: a single signal. The registry judges the confidence from the deeds inside the area loaded for the market (meta.coverage[].universe_kind). In a ZIP market an investor's deals outside the ZIP are unseen, so the confidence is a floor."},{"type":"null"}],"description":"Registry confidence in that kind. Null when kind is null."},"scale":{"anyOf":[{"type":"string","enum":["individual","small","mid","large","institutional"],"description":"Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."},{"type":"null"}],"description":"Null when the registry assigned none. Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."},"n_deals":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The investor's investment deals as buyer inside the area loaded for the market. Null when the registry has no row for the investor."},"last_bought_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The investor's last purchase anywhere in the market, YYYY-MM-DD."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many of this company's listings the investor bought (CONFIRMED, PRIMARY-credited closings)."}},"required":["investor_id","name","display_name","kind","confidence","scale","n_deals","last_bought_on","n"],"additionalProperties":false,"description":"One of the investors who bought most often from this listing company, with the investor's market-wide summary."},"WholesalerEntityNames":{"type":"object","properties":{"own":{"type":"array","items":{"type":"string","description":"One entity name."},"description":"The company's own legal entities as they appear on its verified purchase contracts and its Investorlift account, for example [\"HOME TEAM INVESTORS LLC\"]. Empty when none is known."},"partner":{"type":"array","items":{"type":"string","description":"One entity name."},"description":"Joint-venture partner entities listed under the account. Empty when none."}},"required":["own","partner"],"additionalProperties":false,"description":"The legal entities behind the listing company, as far as its contracts and account show them. Business names, which the API serves to every key."},"Wholesaler":{"type":"object","properties":{"id":{"type":"string","pattern":"^wsr_[0-9a-f]{12}$","description":"Wholesaler id (an Investorlift listing company): wsr_ followed by 12 hex characters, for example wsr_3f9a1c27b4e0. The id is stable per company across data refreshes. It is the key to GET `/v1/wholesalers/{id}`. The prefix is part of the id."},"market":{"type":"string","description":"Market code, for example phx. A company that lists in two markets has a row per market."},"name":{"type":"string","description":"The company's name as it appears on Investorlift, for example \"Home Team Investors\"."},"brands":{"type":"array","items":{"type":"string","description":"One brand name."},"description":"The other names the company markets under. Empty when none."},"entity_names":{"$ref":"#/components/schemas/WholesalerEntityNames"},"home_state":{"description":"The 2-letter state of the company's Investorlift account. Null when unknown.","type":["string","null"]},"investor_id":{"anyOf":[{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"Investor id: inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The id is stable across data refreshes within a market. Store it as the investor's identity."},{"type":"null"}],"description":"The company's own investor id when it is itself a registry investor: the key to its buying history at GET `/v1/investors/{id}`. That is when its title or its own entities appear as deed names of one investor. Null when the company never appears on a deed as an investor."},"source_account_id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The company's account id in the Investorlift app: the join key back to the app."},"n_listings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Every listing the company published in the market, matched to a parcel or not."},"n_verified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings closed by a recorded deed with the credit on this company (CONFIRMED, PRIMARY): the company's verified wholesale transactions."},"n_to_investors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of the verified transactions, the ones bought by a known investor (tiers REGISTRY_STRONG, REGISTRY_WEAK, IL_BUYER_CONFIRMED)."},"n_double_closed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings the company closed through a double close, that is two chained deeds 0 to 14 days apart."},"n_took_title":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings where the company held title at some point: as the intermediate, the seller, or the prior owner."},"n_retail":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings that closed to an owner-occupant or through the MLS (verification RETAIL)."},"n_open":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings with no recorded transfer by the deed data_end (verification OPEN)."},"n_no_transfer":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings with no transfer recorded within 400 days (outcome NO_TRANSFER_400)."},"n_none":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Every listing with verification NONE: no transfer, a distressed deed, an unattributable transfer, or the credit on another listing of the parcel."},"n_shared":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings that share their closing deed with another company's listing of the same parcel (lister_attribution SHARED(n))."},"first_listed_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The company's oldest listing in the market, YYYY-MM-DD. Null when it has no matched listing."},"last_listed_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The company's newest listing in the market, YYYY-MM-DD. Null when it has no matched listing."},"n_listed_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings published in the 365 days that end on the deed data_end."},"median_asking_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median asking price over the company's priced listings, whole dollars. Null when no listing carries a price."},"median_days_to_deed":{"description":"Median days from publication to the closing deed over the company's CONFIRMED listings, for example 31.5. Null when the company has no CONFIRMED listing.","type":["number","null"]},"top_buyers":{"type":"array","items":{"$ref":"#/components/schemas/WholesalerTopBuyer"},"description":"The investors who bought most often from this company, most first, at most 5. Empty when no known investor bought."},"data_end":{"type":"string","description":"The deed data end date, YYYY-MM-DD. The API measures the windows against it."}},"required":["id","market","name","brands","entity_names","home_state","investor_id","source_account_id","n_listings","n_verified","n_to_investors","n_double_closed","n_took_title","n_retail","n_open","n_no_transfer","n_none","n_shared","first_listed_on","last_listed_on","n_listed_12m","median_asking_price","median_days_to_deed","top_buyers","data_end"],"additionalProperties":false,"description":"One Investorlift listing company in one market: names and entities, listing counts by what the deeds show, and the investors who buy from it."},"WholesalerSearchResult":{"type":"object","properties":{"id":{"type":"string","pattern":"^wsr_[0-9a-f]{12}$","description":"Wholesaler id (an Investorlift listing company): wsr_ followed by 12 hex characters, for example wsr_3f9a1c27b4e0. The id is stable per company across data refreshes. It is the key to GET `/v1/wholesalers/{id}`. The prefix is part of the id."},"market":{"type":"string","description":"Market code the hit belongs to, for example phx. A search without market= runs over every loaded market with wholesale tables, so a company that lists in two markets appears once per market."},"name":{"type":"string","description":"The company's name as it appears on Investorlift."},"brands":{"type":"array","items":{"type":"string","description":"One brand name."},"description":"The other names the company markets under. Empty when none."},"n_listings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Every listing the company published in the market."},"n_verified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings closed by a recorded deed with the credit on this company."},"last_listed_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The company's newest listing in the market, YYYY-MM-DD. Null when none matched a parcel."},"matched_name":{"type":"string","description":"The name that matched the query: the company name, a brand or an entity name, as stored (upper case)."},"match":{"type":"string","enum":["exact","tokens","contains","trigram"],"description":"How the search found the hit, best first. With exact, the normalised query equals the company's name, a brand or an entity name. With tokens, every word of the query appears in one of those names, in any order. With contains, the query is a substring of one of them. With trigram, the match is fuzzy at similarity 0.55 or more. The search tries trigram only when fewer than 10 companies matched otherwise, and then sets similarity."},"similarity":{"description":"Trigram similarity of matched_name to the query, 0 to 1, on trigram hits only. Null otherwise.","type":["number","null"]}},"required":["id","market","name","brands","n_listings","n_verified","last_listed_on","matched_name","match","similarity"],"additionalProperties":false,"description":"One listing company found by name, brand or entity name, with enough to pick the right one."},"TopWholesaler":{"type":"object","properties":{"id":{"type":"string","pattern":"^wsr_[0-9a-f]{12}$","description":"Wholesaler id (an Investorlift listing company): wsr_ followed by 12 hex characters, for example wsr_3f9a1c27b4e0. The id is stable per company across data refreshes. It is the key to GET `/v1/wholesalers/{id}`. The prefix is part of the id."},"name":{"type":"string","description":"The company's name as it appears on Investorlift."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many of the investor's Investorlift purchases this company listed."}},"required":["id","name","n"],"additionalProperties":false,"description":"One of the companies this investor buys from most on Investorlift."},"InvestorWholesale":{"type":"object","properties":{"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Houses the investor bought off an Investorlift listing per a recorded deed, all time. The count takes CONFIRMED rows with the credit on one listing, as distinct closing deeds. 0 when none."},"n_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, closed in the 365 days ending on the deed data_end."},"n_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, closed in the 730 days ending on the deed data_end."},"n_5y":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, closed in the 5 years ending on the deed data_end."},"n_probable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of the all-time count, the ones matched at MEDIUM or LOW confidence. n minus n_probable is the HIGH-confidence count."},"last_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The closing date of the investor's newest Investorlift purchase, YYYY-MM-DD. Null when n is 0."},"n_wholesalers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct listing companies the investor bought from."},"top_wholesalers":{"type":"array","items":{"$ref":"#/components/schemas/TopWholesaler"},"description":"The companies the investor bought from most, most first, at most 3. Empty when n is 0."},"n_double_closed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of the all-time count, the ones closed through a double close."},"median_asking_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median asking price of the listings the investor bought, whole dollars. Null when no listing carried a price."},"data_end":{"type":"string","description":"The deed data end date, YYYY-MM-DD, the same as meta.coverage[].data_end. The API measures the windows against it. The Investorlift export date is meta.coverage[].wholesale_as_of."}},"required":["n","n_12m","n_24m","n_5y","n_probable","last_on","n_wholesalers","top_wholesalers","n_double_closed","median_asking_price","data_end"],"additionalProperties":false,"description":"What the investor bought off Investorlift listings, per the recorded deeds: counts by window, the last one, and the companies they buy from. Null where it sits when the market has no published wholesale tables. Zeros when it has them and the investor never bought one."},"DealWholesaleListing":{"type":"object","properties":{"id":{"type":"string","pattern":"^wl_[0-9a-f]{32}$","description":"Investorlift listing id: wl_ followed by 32 hex characters, for example wl_9f2c1d0e8b7a6c5d4e3f2a1b0c9d8e7f. The id is stable per Investorlift listing and the same in every market. It is the key to GET `/v1/wholesale-listings/{id}`. The prefix is part of the id."},"wholesaler":{"$ref":"#/components/schemas/WholesalerRef"},"listed_on":{"type":"string","description":"The date the wholesaler published the listing on Investorlift, YYYY-MM-DD."},"asking_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The asking price on Investorlift, whole dollars. Null when the listing carried none."},"outcome":{"type":"string","enum":["ASSIGNED","DOUBLE_CLOSED","LISTER_HELD_THEN_SOLD","LISTER_SOLD_FROM_INVENTORY","SOLD_OFF_MARKET_GRANTOR","SOLD_TO_OWNER_OCCUPANT","FAILED_THEN_RETAIL_MLS","DISTRESSED_TRANSFER","LATE_TRANSFER","NO_TRANSFER_400","NO_DEED_120","PENDING","SUPERSEDED","AMBIGUOUS_DEEDS"],"description":"What the county deeds record for the listing, in detail. The one-word verdict is verification. ASSIGNED: one deed from the homeowner to the buyer, and the listing company is not on title, so a contract assignment. DOUBLE_CLOSED: two chained deeds 0 to 14 days apart, with the company or its buyer in the middle. LISTER_HELD_THEN_SOLD: the company took title and resold within 90 days. LISTER_SOLD_FROM_INVENTORY: the company already owned the house and sold it. SOLD_OFF_MARKET_GRANTOR: one deed from a seller who is neither the homeowner of record nor the company, so an unrecorded step came before it. SOLD_TO_OWNER_OCCUPANT: the buyer moved in, so not an investor sale. FAILED_THEN_RETAIL_MLS: the homeowner sold on the MLS instead. DISTRESSED_TRANSFER: a sheriff's, trustee's or REO deed. LATE_TRANSFER: a deed 180 to 400 days after the listing that nothing ties to it. NO_TRANSFER_400: no deed within 400 days. NO_DEED_120: no deed by the deed data end, 120 to 400 days after the listing, so provisional. PENDING: the company listed the house fewer than 120 days before the deed data end, and no deed exists yet. SUPERSEDED: another Investorlift listing of the same parcel holds the credit for the deed. AMBIGUOUS_DEEDS: two or more unrelated sales that the rules cannot order."},"verification":{"type":"string","enum":["CONFIRMED","RETAIL","OPEN","NONE"],"description":"The API derives the one-word verdict of the deeds on the listing from outcome alone, and the Investorlift status plays no part. CONFIRMED: a recorded deed closed it to a buyer, so a verified wholesale transaction. RETAIL: it closed, but to an owner-occupant or through the MLS, so not an investor sale. OPEN: the deeds record no transfer yet, up to the deed data_end. NONE: no transfer within 400 days, a distressed deed, or a transfer the rules cannot tie to this listing. NONE also when the credit went to another listing of the parcel."},"days_listed_to_deed":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days from the Investorlift publication to this deal's closing deed, for example 32. Negative when the county recorded the deed before the wholesaler published the listing. Null when the listing has no closing deed."}},"required":["id","wholesaler","listed_on","asking_price","outcome","verification","days_listed_to_deed"],"additionalProperties":false,"description":"The Investorlift listing this deal closed: a wholesaler listed the house, and the buyer on this deal bought it off that listing. On deal rows only where a listing links to the deed. Null otherwise."},"PropertyWholesaleListing":{"type":"object","properties":{"id":{"type":"string","pattern":"^wl_[0-9a-f]{32}$","description":"Investorlift listing id: wl_ followed by 32 hex characters, for example wl_9f2c1d0e8b7a6c5d4e3f2a1b0c9d8e7f. The id is stable per Investorlift listing and the same in every market. It is the key to GET `/v1/wholesale-listings/{id}`. The prefix is part of the id."},"wholesaler":{"$ref":"#/components/schemas/WholesalerRef"},"listed_on":{"type":"string","description":"The date the wholesaler published the listing on Investorlift, YYYY-MM-DD."},"outcome":{"type":"string","enum":["ASSIGNED","DOUBLE_CLOSED","LISTER_HELD_THEN_SOLD","LISTER_SOLD_FROM_INVENTORY","SOLD_OFF_MARKET_GRANTOR","SOLD_TO_OWNER_OCCUPANT","FAILED_THEN_RETAIL_MLS","DISTRESSED_TRANSFER","LATE_TRANSFER","NO_TRANSFER_400","NO_DEED_120","PENDING","SUPERSEDED","AMBIGUOUS_DEEDS"],"description":"What the county deeds record for the listing, in detail. The one-word verdict is verification. ASSIGNED: one deed from the homeowner to the buyer, and the listing company is not on title, so a contract assignment. DOUBLE_CLOSED: two chained deeds 0 to 14 days apart, with the company or its buyer in the middle. LISTER_HELD_THEN_SOLD: the company took title and resold within 90 days. LISTER_SOLD_FROM_INVENTORY: the company already owned the house and sold it. SOLD_OFF_MARKET_GRANTOR: one deed from a seller who is neither the homeowner of record nor the company, so an unrecorded step came before it. SOLD_TO_OWNER_OCCUPANT: the buyer moved in, so not an investor sale. FAILED_THEN_RETAIL_MLS: the homeowner sold on the MLS instead. DISTRESSED_TRANSFER: a sheriff's, trustee's or REO deed. LATE_TRANSFER: a deed 180 to 400 days after the listing that nothing ties to it. NO_TRANSFER_400: no deed within 400 days. NO_DEED_120: no deed by the deed data end, 120 to 400 days after the listing, so provisional. PENDING: the company listed the house fewer than 120 days before the deed data end, and no deed exists yet. SUPERSEDED: another Investorlift listing of the same parcel holds the credit for the deed. AMBIGUOUS_DEEDS: two or more unrelated sales that the rules cannot order."},"verification":{"type":"string","enum":["CONFIRMED","RETAIL","OPEN","NONE"],"description":"The API derives the one-word verdict of the deeds on the listing from outcome alone, and the Investorlift status plays no part. CONFIRMED: a recorded deed closed it to a buyer, so a verified wholesale transaction. RETAIL: it closed, but to an owner-occupant or through the MLS, so not an investor sale. OPEN: the deeds record no transfer yet, up to the deed data_end. NONE: no transfer within 400 days, a distressed deed, or a transfer the rules cannot tie to this listing. NONE also when the credit went to another listing of the parcel."},"outcome_text":{"type":"string","description":"One name-free sentence that says what the deeds show for this listing, ready to display."}},"required":["id","wholesaler","listed_on","outcome","verification","outcome_text"],"additionalProperties":false,"description":"One Investorlift listing of the parcel and what the deeds record for it. Open GET `/v1/wholesale-listings/{id}` for the buyer and the deed."},"InvestorLenderUsed":{"type":"object","properties":{"id":{"type":"string","pattern":"^len_[0-9a-f]{12}$","description":"The lender: the key to GET `/v1/lenders/{id}`."},"name":{"type":"string","description":"The lender's display name in the market, upper case as the file writes it, for example KIAVI FUNDING INC. A business name, which the API serves to every key."},"lender_class":{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"A reading of the name, never a legal status. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"is_hard_money":{"type":"boolean","description":"True when the name carries hard-money vocabulary or is a known hard-money brand, or when the book behaves like one. The profile's hard_money_basis says which, and the behaviour test needs the market's deed link. A PRIVATE lender_class is a trust or a seller carry-back, not a hard-money lender."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Loans from this lender to the investor, all time. The registry counts each instrument once across the open-lien and recorded-history tables."},"n_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, recorded in the 24 months ending on the registry's slice date (as_of on the block)."},"last_loan_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The recording date of the investor's newest loan from this lender, YYYY-MM-DD. Null when no loan is dated."}},"required":["id","name","lender_class","is_hard_money","n","n_24m","last_loan_on"],"additionalProperties":false,"description":"One lender the investor borrows from: who it is, how often, and when last."},"InvestorLastLoan":{"type":"object","properties":{"lender_id":{"type":"string","pattern":"^len_[0-9a-f]{12}$","description":"The lender: the key to GET `/v1/lenders/{id}`."},"name":{"type":"string","description":"The lender's display name, upper case. The API serves it to every key."},"lender_class":{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"A reading of the name, never a legal status. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"is_hard_money":{"type":"boolean","description":"True when the lender is hard money by name or by behaviour."},"property_id":{"type":"string","pattern":"^prop_[0-9a-f]{32}$","description":"The parcel the loan is on: the key to GET `/v1/properties/{property_id}` and its financing block."},"recording_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The recording date, YYYY-MM-DD. Null when the file carries none."},"amount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The loan amount, whole dollars. Null when the file carries none."},"purpose":{"anyOf":[{"type":"string","enum":["PURCHASE","NOT_PURCHASE","UNKNOWN"],"description":"The loan's purpose, that is if it financed a purchase, read from the recorded deeds and never from the file's label. PURCHASE: a priced deed on the parcel, $10,000 or more, is dated in the 45 days up to and including the recording date. A deed after the loan is a later sale, never this loan's purchase. NOT_PURCHASE: the deed registry covers those 45 days, the parcel has priced deeds, and none falls in them. Such a loan is a refinance, a second, a HELOC or a construction draw. UNKNOWN: the deed registry does not cover the window: its deeds or the parcel's deeds start after the loan, or the market has none."},{"type":"null"}],"description":"Null on a registry built before the deed link. The loan's purpose, that is if it financed a purchase, read from the recorded deeds and never from the file's label. PURCHASE: a priced deed on the parcel, $10,000 or more, is dated in the 45 days up to and including the recording date. A deed after the loan is a later sale, never this loan's purchase. NOT_PURCHASE: the deed registry covers those 45 days, the parcel has priced deeds, and none falls in them. Such a loan is a refinance, a second, a HELOC or a construction draw. UNKNOWN: the deed registry does not cover the window: its deeds or the parcel's deeds start after the loan, or the market has none."}},"required":["lender_id","name","lender_class","is_hard_money","property_id","recording_date","amount","purpose"],"additionalProperties":false,"description":"The investor's newest loan: the lender, the parcel, the date, the amount and if it financed a purchase."},"InvestorFinancing":{"type":"object","properties":{"n_loans":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Loans whose borrowers resolve to this investor, as the main borrower or a co-borrower, all time. The registry counts each instrument once across the open-lien and recorded-history tables. The count is a floor. The recorded history sees about one loan in five. An open lien names no borrower unless the owner of record is the investor."},"n_loans_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, recorded in the 12 months ending on as_of."},"n_loans_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, recorded in the 24 months ending on as_of."},"n_lenders":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct lenders behind those loans, all time."},"lenders_used":{"type":"array","items":{"$ref":"#/components/schemas/InvestorLenderUsed"},"description":"The lenders the investor borrows from, at most 10. The list sorts by most loans in the 24 months ending on as_of first, then all time, then id. Empty when n_loans is 0."},"last_loan":{"anyOf":[{"$ref":"#/components/schemas/InvestorLastLoan"},{"type":"null"}],"description":"Of those loans, the one with the newest recording date. Null when n_loans is 0 or no loan is dated."},"n_deals_measured_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The denominator of share_deals_financed_24m: the investor's deals bought in the 24 months ending on as_of whose purchase-loan window is inside the slice. The window is inside the slice when the purchase date is at least 45 days before the newest recording."},"n_deals_financed_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, the deals with a purchase loan found. The deal row then carries purchase_loan_status FOUND."},"share_deals_financed_24m":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"n_deals_financed_24m over n_deals_measured_24m, 0 to 1. Null when the investor bought nothing measurable in the window. A floor of the investor's financed share, never a cash share. The open-lien table sees about one purchase loan in five on holds and one in fifteen on flips."},"uses_hard_money":{"type":"boolean","description":"True when a loan in the 24 months ending on as_of came from a hard-money lender (is_hard_money). A lender is hard money by name or by behaviour. The uses_private_lender filter of the investor routes reads a wider rule: a hard-money lender, an INDIVIDUAL or PRIVATE lender, or an investor lender by behaviour."},"as_of":{"type":"string","description":"The lender registry's slice date, YYYY-MM-DD. Every window in this block ends on it. It is the financing slice date, not the deed data end. The block is dated: see meta.dated[]."},"dated":{"type":"boolean","description":"True while the Recorder & Mortgage datasets are not in the feed's newest delivery: this block is then a snapshot at as_of."}},"required":["n_loans","n_loans_12m","n_loans_24m","n_lenders","lenders_used","last_loan","n_deals_measured_24m","n_deals_financed_24m","share_deals_financed_24m","uses_hard_money","as_of","dated"],"additionalProperties":false,"description":"What the investor borrows: how many loans the registry ties to it, from which lenders, and the last one. Also how many of its purchases in the 24 months before as_of had a loan found, and if it uses hard money. Every count is a floor of a partial feed. The block is null where it sits when the market publishes no lender registry or borrower match. It carries zeros when the market publishes them and no loan resolves to the investor."},"PriceBand":{"type":"object","properties":{"window":{"anyOf":[{"type":"string","enum":["5y","all"]},{"type":"null"}],"description":"Which purchases the band covers. The value 5y is the priced purchases in the 5 years before the data end date. The value all is every priced purchase, all time. The band uses all when fewer than 5 priced purchases fall in those 5 years. Null when no priced purchase exists."},"p25":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"25th percentile of what they paid, whole dollars."},"p50":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median of what they paid, whole dollars, for example 250000."},"p75":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"75th percentile of what they paid, whole dollars."},"n_priced_purchases":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Priced purchases behind the band. The band ignores a price under $20,000 as nominal. With 1 or 2 the band is a single point. Treat it as weak evidence."}},"required":["window","p25","p50","p75","n_priced_purchases"],"additionalProperties":false,"description":"What the investor pays: the quartiles of their priced purchases."},"SegmentMix":{"type":"object","properties":{"sfr":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Share of their deals on single-family houses, 0 to 1."},"condo_th":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Share on condos and townhouses, 0 to 1."},"other":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Share on everything else (manufactured, multi-family, land, commercial), 0 to 1. OTHER is a mixed bucket."}},"required":["sfr","condo_th","other"],"additionalProperties":false,"description":"Shares of the investor's deals by parcel segment. The three add up to 1."},"AuctionSummary":{"type":"object","properties":{"n_auction_buys":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Houses bought at a foreclosure auction inside the area loaded for the market, all time. The count is of distinct parcels bought at a TRUSTEE_SALE or SHERIFF_SALE by a third party. A lender that bids its own loan, a trustee and a bulk instrument never count. For example 12. The related n_distressed_buys on the profile counts deals whose purchase deed was any distressed instrument, deeds in lieu and feed-flagged REO included."},"n_auction_buys_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the 24 months before the data end date: what is_active_auction_buyer and the buys_at_auction filter read."},"last_auction_buy_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The date of their last auction purchase, YYYY-MM-DD: the sale day, when the buyer paid the cash. Null when they never bought at auction. The feed records a trustee's deed a median 1 day (Phoenix) to 7 days (Harris) after the sale. The 90th percentile in Harris is 23 days, so the newest purchases can be a few weeks behind."},"is_active_auction_buyer":{"type":"boolean","description":"True when n_auction_buys_24m is at least 1: a cash buyer who bought without an inspection in the 24 months before the data end date. Within that window the measured lift over other buyers held. The buys_at_auction filter reads this flag."},"auction_resale_share":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"The share of their auction purchases resold within 12 months to a third party, 0 to 1, for example 0.7 (7 of 10 flipped). The share counts only purchases made at least 12 months before the data end date. For the rest, the buyer held them through those 12 months, transferred them to its own next name, or lost them to a senior lender. Null under 3 such purchases."},"n_reo_buys":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Houses bought from a lender, servicer or agency after a foreclosure, all time since 2012, inside the area loaded for the market. Such a purchase is a bank-owned (REO) sale: the deed after the take-back, sold by an institution to a third party. For example 3. A weaker cash signal: the buyer had weeks and an inspection, and a loan is possible."},"n_reo_buys_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the 24 months before the data end date: what is_active_reo_buyer and the buys_reo filter read."},"last_reo_buy_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The date of their last REO purchase, YYYY-MM-DD. Null when they never bought REO."},"is_active_reo_buyer":{"type":"boolean","description":"True when n_reo_buys_24m is at least 1. The buys_reo filter."}},"required":["n_auction_buys","n_auction_buys_24m","last_auction_buy_on","is_active_auction_buyer","auction_resale_share","n_reo_buys","n_reo_buys_24m","last_reo_buy_on","is_active_reo_buyer"],"additionalProperties":false,"description":"The investor's purchases at foreclosure auction and from lenders after a foreclosure (REO): if it buys there, how often, and when last. Auction buyers pay cash within a day and buy without seeing the inside, and a trustee sale is final at the sale. Sheriff, HOA and tax sales are cash too, but they carry a redemption period and, for HOA sales, the first mortgage. So the profile shows them as separate kinds. Null where the market publishes no auction counts (meta.coverage[].auction_counted false). Zeros when it publishes them and the investor never bought that way."},"AuctionBlock":{"type":"object","properties":{"n_auction_buys":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Houses bought at a foreclosure auction inside the area loaded for the market, all time. The count is of distinct parcels bought at a TRUSTEE_SALE or SHERIFF_SALE by a third party. A lender that bids its own loan, a trustee and a bulk instrument never count. For example 12. The related n_distressed_buys on the profile counts deals whose purchase deed was any distressed instrument, deeds in lieu and feed-flagged REO included."},"n_auction_buys_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the 24 months before the data end date: what is_active_auction_buyer and the buys_at_auction filter read."},"last_auction_buy_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The date of their last auction purchase, YYYY-MM-DD: the sale day, when the buyer paid the cash. Null when they never bought at auction. The feed records a trustee's deed a median 1 day (Phoenix) to 7 days (Harris) after the sale. The 90th percentile in Harris is 23 days, so the newest purchases can be a few weeks behind."},"is_active_auction_buyer":{"type":"boolean","description":"True when n_auction_buys_24m is at least 1: a cash buyer who bought without an inspection in the 24 months before the data end date. Within that window the measured lift over other buyers held. The buys_at_auction filter reads this flag."},"auction_resale_share":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"The share of their auction purchases resold within 12 months to a third party, 0 to 1, for example 0.7 (7 of 10 flipped). The share counts only purchases made at least 12 months before the data end date. For the rest, the buyer held them through those 12 months, transferred them to its own next name, or lost them to a senior lender. Null under 3 such purchases."},"n_reo_buys":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Houses bought from a lender, servicer or agency after a foreclosure, all time since 2012, inside the area loaded for the market. Such a purchase is a bank-owned (REO) sale: the deed after the take-back, sold by an institution to a third party. For example 3. A weaker cash signal: the buyer had weeks and an inspection, and a loan is possible."},"n_reo_buys_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The same over the 24 months before the data end date: what is_active_reo_buyer and the buys_reo filter read."},"last_reo_buy_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The date of their last REO purchase, YYYY-MM-DD. Null when they never bought REO."},"is_active_reo_buyer":{"type":"boolean","description":"True when n_reo_buys_24m is at least 1. The buys_reo filter."},"auction_kinds":{"type":"array","items":{"type":"string","enum":["TRUSTEE_SALE","SHERIFF_SALE","HOA_TRUSTEE_SALE","TAX_SALE","TAX_LIEN_DEED"],"description":"The kind of auction the purchase deed records: TRUSTEE_SALE and SHERIFF_SALE count toward buys_at_auction, and the API shows the other three but never counts them. TRUSTEE_SALE: a lender's foreclosure sale by the trustee, cash and final on the day, without redemption. In Arizona the buyer pays a $10,000 deposit and the full bid by 5 pm the next business day. In Texas it is the first-Tuesday courthouse sale, in Washington the Friday sale at the county's designated place under RCW 61.24. SHERIFF_SALE: a judicial sale under court order. In Arizona it is an HOA or judgment-lien sale, cash but subject to the first mortgage and to a 30-day or 6-month redemption. In Washington it is a judicial mortgage foreclosure or lien sale under RCW 6.21, with an 8-month or 1-year redemption. In Washington the sale is subject to the senior lien only when it is a lien sale. HOA_TRUSTEE_SALE: a Texas homeowners association foreclosure recorded as a trustee's deed, cash, subject to the first lien and to a 180-day redemption. TAX_SALE: a Texas constable or taxing-unit tax sale, cash, with a 180-day or 2-year redemption. In Washington it is the county treasurer's deed after the tax foreclosure judgment, with no redemption after the sale. TAX_LIEN_DEED: an Arizona treasurer's deed to a tax-lien holder, mostly vacant land, not an auction of the house."},"description":"Every auction kind the investor bought at, most purchases first, for example [\"TRUSTEE_SALE\",\"TAX_LIEN_DEED\"]. Empty when none."},"n_auction_by_kind":{"type":"object","propertyNames":{"type":"string","enum":["TRUSTEE_SALE","SHERIFF_SALE","HOA_TRUSTEE_SALE","TAX_SALE","TAX_LIEN_DEED"],"description":"The kind of auction the purchase deed records: TRUSTEE_SALE and SHERIFF_SALE count toward buys_at_auction, and the API shows the other three but never counts them. TRUSTEE_SALE: a lender's foreclosure sale by the trustee, cash and final on the day, without redemption. In Arizona the buyer pays a $10,000 deposit and the full bid by 5 pm the next business day. In Texas it is the first-Tuesday courthouse sale, in Washington the Friday sale at the county's designated place under RCW 61.24. SHERIFF_SALE: a judicial sale under court order. In Arizona it is an HOA or judgment-lien sale, cash but subject to the first mortgage and to a 30-day or 6-month redemption. In Washington it is a judicial mortgage foreclosure or lien sale under RCW 6.21, with an 8-month or 1-year redemption. In Washington the sale is subject to the senior lien only when it is a lien sale. HOA_TRUSTEE_SALE: a Texas homeowners association foreclosure recorded as a trustee's deed, cash, subject to the first lien and to a 180-day redemption. TAX_SALE: a Texas constable or taxing-unit tax sale, cash, with a 180-day or 2-year redemption. In Washington it is the county treasurer's deed after the tax foreclosure judgment, with no redemption after the sale. TAX_LIEN_DEED: an Arizona treasurer's deed to a tax-lien holder, mostly vacant land, not an auction of the house."},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct parcels bought at that kind."},"description":"Distinct parcels bought by auction kind, all time, for example `{\"TRUSTEE_SALE\": 11, \"TAX_LIEN_DEED\": 3}`. The map shows HOA_TRUSTEE_SALE, TAX_SALE and TAX_LIEN_DEED here, and n_auction_buys never counts them."},"n_auction_by_venue":{"type":"object","propertyNames":{"type":"string","enum":["AUCTION_COM","SERVICELINK","XOME"],"description":"The auction platform the lender appointed as trustee, read off the deed: AUCTION_COM (Auction.com), SERVICELINK (ServiceLink Auction), XOME. Texas only. A Texas servicer can appoint the platform as substitute trustee, so the platform signs the deed. Arizona deeds name only the trustee, so no Arizona purchase carries a venue. The venue changes no count."},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Counted purchases whose deed names that platform as trustee."},"description":"Counted auction purchases by the platform that ran the sale, for example `{\"AUCTION_COM\": 3}`. Empty when no deed named a platform, as on every Arizona purchase: Arizona deeds name only the trustee."},"n_auction_events":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct acquisition events behind n_auction_buys: one sale day and instrument, so a bulk buy of 4 houses on one day counts once. For example 10."},"n_auction_resold_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Auction purchases made 12 months or more before the deed data end (meta.coverage[].data_end) and resold within 12 months to a third party. The numerator of auction_resale_share."},"n_auction_transferred_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Auction purchases made 12 months or more before the deed data end (meta.coverage[].data_end), then moved within 12 months without a sale. The move is an unpriced transfer, usually to the buyer's own next LLC. A group whose transfers always go to different names is a bidding service that buys for clients."},"n_auction_lost":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Auction purchases made 12 months or more before the deed data end (meta.coverage[].data_end) that a later foreclosure took within 12 months. That foreclosure is the senior lender's sale after an HOA-lien purchase."},"n_auction_held":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Auction purchases made 12 months or more before the deed data end (meta.coverage[].data_end) with no later deed on record within 12 months. \"No later deed on record\", not \"kept\": the feed has chain gaps."},"n_auction_parcels":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct parcels bought at any auction kind, all time, the shown-but-not-counted kinds included: the sum of n_auction_by_kind. Equals n_auction_buys for a buyer of trustee and sheriff sales only. It stays the raw count when lender_note zeroes the counted fields."},"median_auction_discount":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"The median of 1 minus the winning bid divided by the resale price, over their trustee's-sale purchases resold within 12 months. For example 0.19: they paid 81% of the resale price. Trustee sales only. A sheriff's-sale bid is the price over the HOA judgment and is never comparable. Tax deeds carry no price. Null under 3 pairs."},"lender_note":{"description":"\"AUCTION_LENDER_BY_BEHAVIOUR\" when the group looked like a lender at auction. The rule: a lender or servicer other than the group later sold off half or more of its auction parcels. Those parcels were credit bids and take-backs. Its auction counts above are then 0, and it never passes buys_at_auction. Null otherwise.","type":["string","null"]},"n_reo_by_grantor":{"type":"object","propertyNames":{"type":"string","enum":["SERVICER","GSE_HUD_VA"],"description":"Who sold the bank-owned house. SERVICER: a lender, a servicer or a securitisation trust that sells its own take-back, often within a few months. GSE_HUD_VA: Fannie Mae, Freddie Mac, HUD or the VA, which sell through their retail programmes, usually after the servicer conveyed the house to them."},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"REO purchases from that class of seller."},"description":"REO purchases by the class of seller, for example `{\"SERVICER\": 2, \"GSE_HUD_VA\": 1}`. Empty when none."},"n_reo_resold_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"REO purchases made 12 months or more before the deed data end (meta.coverage[].data_end) and resold within 12 months to a third party. The numerator of reo_resale_share."},"n_reo_transferred_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"REO purchases made 12 months or more before the deed data end (meta.coverage[].data_end), then moved within 12 months without a sale."},"n_reo_lost":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"REO purchases made 12 months or more before the deed data end (meta.coverage[].data_end) that a later foreclosure took within 12 months."},"n_reo_held":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"REO purchases made 12 months or more before the deed data end (meta.coverage[].data_end) with no later deed on record within 12 months."},"reo_resale_share":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"The share of their REO purchases resold within 12 months to a third party, 0 to 1. The share counts only purchases made at least 12 months before the data end date. Null under 3 such purchases. Across every REO buyer the share measured 10% in Phoenix and 23% in Harris, against about 60% for auction buyers. Most REO buyers keep the house."}},"required":["n_auction_buys","n_auction_buys_24m","last_auction_buy_on","is_active_auction_buyer","auction_resale_share","n_reo_buys","n_reo_buys_24m","last_reo_buy_on","is_active_reo_buyer","auction_kinds","n_auction_by_kind","n_auction_by_venue","n_auction_events","n_auction_resold_12m","n_auction_transferred_12m","n_auction_lost","n_auction_held","n_auction_parcels","median_auction_discount","lender_note","n_reo_by_grantor","n_reo_resold_12m","n_reo_transferred_12m","n_reo_lost","n_reo_held","reo_resale_share"],"additionalProperties":false,"description":"The profile's auction and REO block: the summary every list row carries plus the kinds, venues, outcomes and the discount. Null where the market publishes no auction counts."},"BuyerSignal":{"type":"object","properties":{"operator_id":{"anyOf":[{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"Investor id: inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The id is stable across data refreshes within a market. Store it as the investor's identity."},{"type":"null"}],"description":"Id of the operator this investor belongs to, always set when the block is present. Shared mailing addresses (deed and tax bill) and shared names tie LLCs, trusts and people together as one buying operation. The operator id is the member id with the most purchases, and it equals the investor's own id when no link exists. Rows that share an operator_id are the same buyer: collapse them in a list and reach them once. The id belongs to the busiest member, so it can move to another member after a data refresh: group by it within one response. Do not store it as an identity: store the investor ids."},"n_operator_members":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"How many investor ids the operator spans, for example 4: three LLCs and the person behind them. 1 for an investor with no links. Always set when the block is present."},"operator_member_ids":{"anyOf":[{"type":"array","items":{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"One investor id."}},{"type":"null"}],"description":"Every investor id of the operator, this one included, sorted. The list carries ids only. Open `/v1/investors/{id}` for each to see its names. Always set when the block is present."},"is_anchor":{"description":"True on the operator_id row itself: the member with the most purchases, the one to show when you collapse the others. Always set when the block is present.","type":["boolean","null"]},"merge_confidence":{"anyOf":[{"type":"string","enum":["SINGLE","MERGED_STRONG","MERGED_WEAK"],"description":"How sure the operator link is. SINGLE: one investor id, nothing linked. MERGED_STRONG: a strong sign backs every linked id as the same operation. Such a sign is a shared name token, the ids on one deed together, or two entities at the same address. MERGED_WEAK: only a shared mailing address links the ids, for example a mailbox store. Treat such a collapse with more care."},{"type":"null"}],"description":"Null on a block built without it. How sure the operator link is. SINGLE: one investor id, nothing linked. MERGED_STRONG: a strong sign backs every linked id as the same operation. Such a sign is a shared name token, the ids on one deed together, or two entities at the same address. MERGED_WEAK: only a shared mailing address links the ids, for example a mailbox store. Treat such a collapse with more care."},"activity_p_180":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Probability, 0 to 1, that the operator buys at least one house in the 180 days after the data end date, for example 0.36. The registry fitted the model, a cell model with shrinkage to its parent cell, on three years of monthly snapshots. The inputs at each snapshot: the age of the last purchase and the last sale, the depth of the history, the houses held. Null when the operator never bought, or last bought more than 3 years before the data end date. Such dormant operators re-activated at about 3.4% within 180 days in the Phoenix measurement. The w_activity parameter scores a null at that measured rate, and its description gives the number."},"activity_p_365":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"The same probability over the 365 days after the data end date. Null under the same rule as activity_p_180."},"cell_n":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"How many operator-months the registry fitted the cell behind activity_p_180 on, for example 412. Under 50 the probability leans on its parent cell. Treat it as weak evidence. Null when activity_p_180 is null."},"activity_model":{"description":"Which fitted model produced the probabilities, for example CYCLE_v1. The value changes when the registry refits the model. Null when activity_p_180 is null.","type":["string","null"]},"cycle_state":{"anyOf":[{"type":"string","enum":["FRESH_CASH","LOADED","STEADY","DORMANT"],"description":"Where the operator sits in its capital cycle at the data end date, the first of these that applies. FRESH_CASH (cash is back): the operator sold something in the 60 days before the data end date, and a purchase usually follows. For repeat flippers the median next purchase lands 14 days after their own resale. LOADED (capital tied up): 3 or more houses held at the data end date and no resale in the 180 days before it. DORMANT (no purchase in a year): no purchase in the 365 days before data_end and no resale in the 60 days before it. STEADY (none of those): the operator buys and sells without any of those signals."},{"type":"null"}],"description":"Null when the operator never bought. Where the operator sits in its capital cycle at the data end date, the first of these that applies. FRESH_CASH (cash is back): the operator sold something in the 60 days before the data end date, and a purchase usually follows. For repeat flippers the median next purchase lands 14 days after their own resale. LOADED (capital tied up): 3 or more houses held at the data end date and no resale in the 180 days before it. DORMANT (no purchase in a year): no purchase in the 365 days before data_end and no resale in the 60 days before it. STEADY (none of those): the operator buys and sells without any of those signals."},"capital_freed_60d":{"description":"True when the operator sold a house it held in the 60 days before the data end date. Such a sale is a flip resale, a wholesale resale, or the exit of an older holding. Cash is then back, and for repeat flippers the next purchase usually follows within a month. False otherwise. Always set when the block is present.","type":["boolean","null"]},"days_since_last_purchase":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days from the operator's last purchase (under any of its ids) to the data end date, for example 21. Can be smaller than the investor's own days_since_last_purchase when a sibling id bought after the investor's own last purchase. Null when the operator never bought."},"days_since_last_resale":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days from the operator's last sale of a house it held to the data end date, for example 12. Such a sale is a flip resale, a wholesale resale, or the exit of an older holding. Null when it never sold."},"open_inventory":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Houses the operator bought and did not resell by the data end date, for example 3. 0 when none. Always set when the block is present."},"n_purchases_36m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Purchases by the operator in the 36 months before the data end date, one per house. A bulk buy of 5 houses on one day counts 5. 0 when none. Always set when the block is present."},"median_gap_days":{"description":"Median days between the operator's consecutive purchase days, for example 45. A same-day bulk buy counts once. Null with fewer than 2 purchase days.","type":["number","null"]},"share_within_30d_of_resale":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"The share of the operator's purchases that closed within 30 days of one of its sales, 0 to 1, for example 0.67. The share counts only purchases made after the operator's first sale. It shows how strongly its buying follows its selling. Null when it has no such purchase: it never sold, or never bought again after its sales."},"data_end":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The market's data end date, YYYY-MM-DD: the API measures every \"days since\" value and probability in this block from it. Always set when the block is present."}},"required":["operator_id","n_operator_members","operator_member_ids","is_anchor","merge_confidence","activity_p_180","activity_p_365","cell_n","activity_model","cycle_state","capital_freed_60d","days_since_last_purchase","days_since_last_resale","open_inventory","n_purchases_36m","median_gap_days","share_within_30d_of_resale","data_end"],"additionalProperties":false,"description":"The buyer signal of an investor: the operator its ids belong to, and where that operator sits in its capital cycle. Also how likely the operator is to buy again in the 180 or 365 days after the data end date. The API measures the block at the data end date. Ids and numbers only, no names."},"InvestorSummary":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"Investor id: inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The id is stable across data refreshes within a market. Store it as the investor's identity."},{"type":"null"}],"description":"Investor id, inv_<12 hex>, stable across data refreshes and the identity to store. Null when the buyer is not a registered investor (see buyer_status)."},"market":{"description":"Market code the id belongs to, for example phx. The loaded markets are in meta.coverage[]. Null when id is null.","type":["string","null"]},"name":{"description":"Buyer name as recorded on the deed, upper case. For a registered investor it is the deed spelling, the one most often on their deeds, SURNAME GIVEN for a person. For example \"ZAK VENTURES LLC\" or \"RIVERA DANA\". The deed spelling can change under a stable id when another of their names overtakes, so it is never a key. Match, join and search on it. Print display_name. Null when the buyer has no investor id.","type":["string","null"]},"display_name":{"description":"The name to print. For a registered investor that is a cleanly parsed person, it has the form GIVEN [MIDDLE] SURNAME [SUFFIX] in upper case. For example, \"DANA RIVERA\" from the deed's \"RIVERA DANA\". For an entity, a trust, a public body, an institutional investor or an ambiguous spelling it equals name. For a buyer without an investor id it is the deed name as recorded. Display only: match, join and search on name. Null exactly when name is null.","type":["string","null"]},"state":{"description":"For a registered investor, the 2-letter state of the market. The loaded markets and their states are in meta.coverage[]. For a buyer without an investor id, the state of their mailing address when the deed carries one. Null when the buyer has no investor id.","type":["string","null"]},"kind":{"anyOf":[{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},{"type":"null"}],"description":"Primary kind, display only. Filters and scoring read kinds[] instead. Null when id is null. Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},"confidence":{"anyOf":[{"type":"string","enum":["STRONG","PROBABLE","WEAK"],"description":"How sure the registry is of the kind. STRONG: several deals of that kind and a consistent pattern. PROBABLE: some evidence. WEAK: a single signal. The registry judges the confidence from the deeds inside the area loaded for the market (meta.coverage[].universe_kind). In a ZIP market an investor's deals outside the ZIP are unseen, so the confidence is a floor."},{"type":"null"}],"description":"Registry confidence in the primary kind. Null when id is null. How sure the registry is of the kind. STRONG: several deals of that kind and a consistent pattern. PROBABLE: some evidence. WEAK: a single signal. The registry judges the confidence from the deeds inside the area loaded for the market (meta.coverage[].universe_kind). In a ZIP market an investor's deals outside the ZIP are unseen, so the confidence is a floor."},"scale":{"anyOf":[{"type":"string","enum":["individual","small","mid","large","institutional"],"description":"Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."},{"type":"null"}],"description":"Scale tier. Null when id is null. Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."},"institutional":{"description":"True for iBuyers, production builders, 500+ holding bulk landlords and the brand list. Lists hide them unless scale includes institutional. Null when id is null.","type":["boolean","null"]},"is_public":{"description":"True for a public body: a county, a city, a housing authority or a school district. Lists hide them unless include_public=true. Null when id is null.","type":["boolean","null"]},"last_bought_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Date of their last purchase anywhere inside the area loaded for the market, YYYY-MM-DD. Sales and transfers never count. Null when they never bought or id is null."},"n_deals":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Investment deals as buyer inside the area loaded for the market (meta.coverage[].universe_kind), all kinds and years, for example 755. The count is a floor in a ZIP market. Null when id is null."},"buyer_status":{"type":"string","enum":["registered","unclassified","excluded","unknown"],"description":"registered when the row carries an id. Otherwise why the buyer has no id."}},"required":["id","market","name","display_name","state","kind","confidence","scale","institutional","is_public","last_bought_on","n_deals","buyer_status"],"additionalProperties":false,"description":"The investor behind a deal. When id is null, only buyer_status always carries a value. name and state are then null."},"InvestorListItem":{"type":"object","properties":{"id":{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"Investor id, inv_<12 hex>. List rows always carry an id."},"market":{"type":"string","description":"Market code, for example phx. The loaded markets are in meta.coverage[]."},"name":{"type":"string","description":"The deed spelling, the one most often on their deeds, upper case, SURNAME GIVEN for a person, for example \"ZAK VENTURES LLC\" or \"RIVERA DANA\". Never a key. Print display_name."},"display_name":{"type":"string","description":"The name to print. For a cleanly parsed person, it has the form GIVEN [MIDDLE] SURNAME [SUFFIX] in upper case. For example, \"DANA RIVERA\" from the deed's \"RIVERA DANA\". For an entity, a trust, a public body, an institutional investor or an ambiguous spelling it equals name. Display only: match, join and search on name."},"state":{"type":"string","description":"2-letter state of the market. The loaded markets and their states are in meta.coverage[]."},"kind":{"anyOf":[{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},{"type":"null"}],"description":"Primary kind, display only. Filters and scoring read kinds[] instead. Null when id is null. Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},"confidence":{"anyOf":[{"type":"string","enum":["STRONG","PROBABLE","WEAK"],"description":"How sure the registry is of the kind. STRONG: several deals of that kind and a consistent pattern. PROBABLE: some evidence. WEAK: a single signal. The registry judges the confidence from the deeds inside the area loaded for the market (meta.coverage[].universe_kind). In a ZIP market an investor's deals outside the ZIP are unseen, so the confidence is a floor."},{"type":"null"}],"description":"Registry confidence in the primary kind. Null when id is null. How sure the registry is of the kind. STRONG: several deals of that kind and a consistent pattern. PROBABLE: some evidence. WEAK: a single signal. The registry judges the confidence from the deeds inside the area loaded for the market (meta.coverage[].universe_kind). In a ZIP market an investor's deals outside the ZIP are unseen, so the confidence is a floor."},"scale":{"anyOf":[{"type":"string","enum":["individual","small","mid","large","institutional"],"description":"Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."},{"type":"null"}],"description":"Scale tier. Null when id is null. Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."},"institutional":{"description":"True for iBuyers, production builders, 500+ holding bulk landlords and the brand list. Lists hide them unless scale includes institutional. Null when id is null.","type":["boolean","null"]},"is_public":{"description":"True for a public body: a county, a city, a housing authority or a school district. Lists hide them unless include_public=true. Null when id is null.","type":["boolean","null"]},"last_bought_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Date of their last purchase anywhere inside the area loaded for the market, YYYY-MM-DD. Sales and transfers never count. Null when they never bought or id is null."},"n_deals":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Investment deals as buyer inside the area loaded for the market (meta.coverage[].universe_kind), all kinds and years, for example 755. The count is a floor in a ZIP market. Null when id is null."},"buyer_status":{"type":"string","enum":["registered","unclassified","excluded","unknown"],"description":"registered when the row carries an id. Otherwise why the buyer has no id."},"kinds":{"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},"description":"Every kind the investor qualifies for, for example [\"LANDLORD\",\"FLIPPER\",\"BUILDER\",\"WHOLESALER\"]. The investor_kind filters and the strategy factor read this list."},"days_since_last_purchase":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days between their last purchase and the data end date (meta.coverage[].data_end), for example 7. Null when they never bought."},"n_purchase_events_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct purchase days in the 12 months before the data end date. A bulk same-day buy counts once."},"n_purchase_events_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct purchase days in the 24 months before the data end date."},"n_flips":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Flips completed inside the area loaded for the market. In a ZIP market the count is a floor."},"n_wholesales":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Wholesale resales inside the area loaded for the market. A wholesale resale is a resale in under 30 days, or a chain resale or round trip within 90 days."},"n_holds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Parcels they hold at the deed data end (meta.coverage[].data_end): confirmed holdings plus un-resold purchases."},"n_long_holds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Parcels held over a year, then resold: landlord exits."},"n_bought_from_wholesaler_5y":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Purchases in the 5 years ending on the deed data end (meta.coverage[].data_end) that the deeds document as bought from a wholesaler. The evidence is a double close or a known wholesaler seller. A lower bound: contract assignments leave no deed."},"price_band":{"description":"What they pay: the quartiles of their priced purchases.","$ref":"#/components/schemas/PriceBand"},"p50_flip_sold_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median resale price of their flips, whole dollars. Null with fewer than 3 flips."},"segment_mix":{"anyOf":[{"$ref":"#/components/schemas/SegmentMix"},{"type":"null"}],"description":"Shares of their deals by parcel segment. Null when they have no deals."},"has_person_member":{"type":"boolean","description":"True when a natural person appears among the deed names. A skip trace then has someone to look for."},"has_home_address":{"type":"boolean","description":"True when a person member has a non-generic house address on a deed."},"has_suite_address":{"type":"boolean","description":"True when a suite or unit address is on file."},"member_names":{"type":"array","items":{"type":"string","description":"One deed name, raw spelling."},"description":"Every deed name that belongs to this investor, entities first. This host omits person names. Raw spelling (SURNAME GIVEN for persons). This list is the input for a name join on the Investorlift side."},"operator_id":{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"Id of the operator this investor belongs to: the investor id with the most purchases among the ids tied together as one buying operation. Shared mailing addresses (deed and tax bill) and shared names tie ids together, often a fresh LLC per deal. The operator id equals id when nothing links this investor, and when the market has no buyer signal. Rows that share an operator_id are one buyer: collapse the others behind the row whose id equals operator_id (the busiest member) and reach them once. The API ranks, pages, counts and scores each id on its own, so an operator with 3 ids can appear 3 times and across pages. The busiest member can change after a data refresh: group by operator_id within one response and store the investor ids, not this id."},"n_operator_members":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many investor ids the operator spans, for example 4: three LLCs and the person behind them. 1 for an investor with no links, and 1 when the market has no buyer signal."},"auction":{"anyOf":[{"$ref":"#/components/schemas/AuctionSummary"},{"type":"null"}],"description":"If, how often and how recently they buy at foreclosure auction and from lenders after a foreclosure, measured to the deed data end (meta.coverage[].data_end). An auction buy is cash within a day, with no inspection. The block carries the counts, the last dates and the two active flags the buys_at_auction and buys_reo filters read. It also carries the share of auction purchases resold within a year. Null where the market publishes no auction counts (meta.coverage[].auction_counted false), zeros where it does and the investor never bought at auction or from a lender. The profile carries the kinds, venues, outcomes and the discount."}},"required":["id","market","name","display_name","state","kind","confidence","scale","institutional","is_public","last_bought_on","n_deals","buyer_status","kinds","days_since_last_purchase","n_purchase_events_12m","n_purchase_events_24m","n_flips","n_wholesales","n_holds","n_long_holds","n_bought_from_wholesaler_5y","price_band","p50_flip_sold_price","segment_mix","has_person_member","has_home_address","has_suite_address","member_names","operator_id","n_operator_members","auction"],"additionalProperties":false,"description":"The investor as a list row: who they are and what they do inside the area loaded for the market."},"InRadius":{"type":"object","properties":{"n_events":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deal rows of this investor inside the geometry after the filters (every kind)."},"n_purchase_events":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct purchase days inside the geometry: what investor_deals_min counts and the proximity factor scores."},"n_parcels":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct parcels inside the geometry."},"n_held_parcels":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Parcels inside the geometry they still own at the deed data end (meta.coverage[].data_end). The API shows this count and does not score it."},"n_flips":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Flips inside the geometry."},"n_holds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Holdings and un-resold purchases inside the geometry at the deed data end (meta.coverage[].data_end)."},"n_long_holds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Long holds (held over a year, resold) inside the geometry."},"volume":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Sum of their bought prices inside the geometry, whole dollars, over priced rows. Null when no row carries a price."},"last_bought_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Their last purchase inside the geometry, YYYY-MM-DD. Null when no row is a purchase."},"last_deal_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Their last purchase, sale or transfer inside the geometry (display only, never scored)."},"nearest_distance_miles":{"description":"Miles from the reference point to their nearest deal here, rounded to 2 decimals. Null without a reference point.","type":["number","null"]},"median_bought_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median of what they paid inside the geometry, whole dollars, over priced rows."},"n_unpriced":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows inside the geometry with no price on the deed."},"n_undated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows inside the geometry with no purchase date."}},"required":["n_events","n_purchase_events","n_parcels","n_held_parcels","n_flips","n_holds","n_long_holds","volume","last_bought_on","last_deal_on","nearest_distance_miles","median_bought_price","n_unpriced","n_undated"],"additionalProperties":false,"description":"What this investor did inside the requested geometry, after the shared filters."},"InvestorListRow":{"type":"object","properties":{"investor":{"$ref":"#/components/schemas/InvestorListItem"},"in_radius":{"$ref":"#/components/schemas/InRadius"},"listings":{"anyOf":[{"$ref":"#/components/schemas/InvestorListings"},{"type":"null"}],"description":"What the investor has on the market right now, measured at listings_data_end: their holdings listed ACTIVE or PENDING in the MLS feed. The API serves this block to every key. Null when the market publishes no listing tables, zeros when it does and no holding is listed."},"wholesale_purchases":{"anyOf":[{"$ref":"#/components/schemas/InvestorWholesale"},{"type":"null"}],"description":"What the investor bought off Investorlift listings per the recorded deeds: the counts by window, the last one and the companies they buy from. The API serves this block to every key. Null when the market publishes no wholesale tables (meta.coverage[].wholesale_as_of is null), zeros when it does and the investor never bought off Investorlift."},"str":{"anyOf":[{"$ref":"#/components/schemas/InvestorStr"},{"type":"null"}],"description":"How many of the investor's holdings carry a business-use short-term-rental licence attributed to them, from the cities' rolls. The block carries the holdings, the permits, the share of their holds, the managers and the cities. The API serves this block to every key. Null when the market publishes no short-term rental tables (meta.coverage[].str_as_of is null), zeros when it does and the investor holds no such parcel."}},"required":["investor","in_radius","listings","wholesale_purchases","str"],"description":"One investor active inside the geometry: who they are, what they did here, and how to reach them."},"MatchReason":{"type":"object","properties":{"factor":{"type":"string","enum":["proximity","recency","price_fit","strategy","segment","wholesale_buyer","resale_fit","financing"],"description":"Which factor: proximity scores purchases near the subject, and recency scores how recently and how often they buy, measured to the deed data end. Also, price_fit scores the subject price against their band, strategy their kinds against the subject condition, and segment their deal share in the subject segment. The factor wholesale_buyer scores documented wholesale purchases, and resale_fit scores the subject ARV against their flip resale median, at weight 0 by default. The factor financing shows if the investor borrows from a lender active in the subject parcel's ZIP. Its window is the 24 months ending on the lender registry's slice date (financing.as_of on the profile). It is present with a property_id geometry where the market publishes the registry, at weight 0 always: shown, never scored, in this release."},"weight":{"type":"number","description":"Effective weight of the factor for this row, 0 to 1, rounded to 4 decimals. The weights of the scored factors sum to 1. The financing weight is always 0 and outside the sum."},"value":{"type":"number","description":"How well the investor scores on this factor, 0 (poor) to 1 (perfect), rounded to 4 decimals."},"detail":{"type":"string","description":"One plain sentence that explains the value, for example \"9 purchases (12 parcels) within 2 mi, nearest 0.10 mi\"."}},"required":["factor","weight","value","detail"],"additionalProperties":false,"description":"One scored factor with its weight, value and a sentence for the user."},"InvestorAgentLink":{"type":"object","properties":{"agent_id":{"type":"string","pattern":"^agt_[0-9a-f]{12}$","description":"The listing agent: the key to GET `/v1/agents/{id}`."},"link_basis":{"type":"string","enum":["SELF_LISTING","LICENSE_MAILING"],"description":"What ties the agent to the investor. SELF_LISTING: the agent listed a parcel held by an investor whose person member carries the agent's name, so they sell their own inventory. LICENSE_MAILING: the licensee's mailing address on the state roll equals a mailing address of a person member with the agent's name."},"confidence":{"type":"string","enum":["HIGH","MEDIUM"],"description":"How sure the link is. HIGH: surname and given name equal, middle initials compatible. MEDIUM: surname equal and the given names share their first three letters, for example DOUG and DOUGLAS."},"n_self_listings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Listings by this agent on parcels the investor holds: the inventory they list themselves. 0 for a LICENSE_MAILING link with none."}},"required":["agent_id","link_basis","confidence","n_self_listings"],"description":"One listing agent who is, by name, one of this investor's people."},"IdHistoryEntry":{"type":"object","properties":{"registry_run":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The data refresh (registry run number) this entry describes."},"assign_method":{"type":"string","enum":["NEW","INHERITED","NEW_REHASHED"],"description":"How the refresh assigned the id. NEW: the refresh saw this group of names for the first time. INHERITED: the refresh kept the id from the previous refresh because most of the names stayed together. NEW_REHASHED: the names changed too much to inherit, so the refresh minted a new id. These are the only three values."},"jaccard":{"description":"How much the set of names overlaps with the previous refresh's group, 0 to 1 (1 = identical). Null on a NEW entry.","type":["number","null"]},"prev_group_id":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Diagnostic: the internal group number in the previous refresh, which changes between refreshes. Null on a NEW entry. You can ignore it."}},"required":["registry_run","assign_method","jaccard","prev_group_id"],"additionalProperties":false,"description":"What one data refresh did to this id."},"InvestorProfile":{"type":"object","properties":{"id":{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"Investor id: inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The id is stable across data refreshes within a market. Store it as the investor's identity."},"market":{"type":"string","description":"Market code, for example phx. The loaded markets are in meta.coverage[]."},"name":{"type":"string","description":"The deed spelling, the one most often on their deeds, upper case, SURNAME GIVEN for a person, for example \"ZAK VENTURES LLC\" or \"RIVERA DANA\". Never a key. Print display_name."},"display_name":{"type":"string","description":"The name to print. For a cleanly parsed person, it has the form GIVEN [MIDDLE] SURNAME [SUFFIX] in upper case. For example, \"DANA RIVERA\" from the deed's \"RIVERA DANA\". For an entity, a trust, a public body, an institutional investor or an ambiguous spelling it equals name. Display only: match, join and search on name."},"state":{"type":"string","description":"2-letter state of the market. The loaded markets and their states are in meta.coverage[]."},"kind":{"anyOf":[{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},{"type":"null"}],"description":"Primary kind, display only. Filters and scoring read kinds[] instead. Null when id is null. Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},"confidence":{"anyOf":[{"type":"string","enum":["STRONG","PROBABLE","WEAK"],"description":"How sure the registry is of the kind. STRONG: several deals of that kind and a consistent pattern. PROBABLE: some evidence. WEAK: a single signal. The registry judges the confidence from the deeds inside the area loaded for the market (meta.coverage[].universe_kind). In a ZIP market an investor's deals outside the ZIP are unseen, so the confidence is a floor."},{"type":"null"}],"description":"Registry confidence in the primary kind. Null when id is null. How sure the registry is of the kind. STRONG: several deals of that kind and a consistent pattern. PROBABLE: some evidence. WEAK: a single signal. The registry judges the confidence from the deeds inside the area loaded for the market (meta.coverage[].universe_kind). In a ZIP market an investor's deals outside the ZIP are unseen, so the confidence is a floor."},"scale":{"anyOf":[{"type":"string","enum":["individual","small","mid","large","institutional"],"description":"Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."},{"type":"null"}],"description":"Scale tier. Null when id is null. Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."},"institutional":{"description":"True for iBuyers, production builders, 500+ holding bulk landlords and the brand list. Lists hide them unless scale includes institutional. Null when id is null.","type":["boolean","null"]},"is_public":{"description":"True for a public body: a county, a city, a housing authority or a school district. Lists hide them unless include_public=true. Null when id is null.","type":["boolean","null"]},"last_bought_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Date of their last purchase anywhere inside the area loaded for the market, YYYY-MM-DD. Sales and transfers never count. Null when they never bought or id is null."},"n_deals":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Investment deals as buyer inside the area loaded for the market (meta.coverage[].universe_kind), all kinds and years, for example 755. The count is a floor in a ZIP market. Null when id is null."},"buyer_status":{"type":"string","enum":["registered","unclassified","excluded","unknown"],"description":"registered when the row carries an id. Otherwise why the buyer has no id."},"mailing_states":{"type":"array","items":{"type":"string","description":"A 2-letter state."},"description":"Distinct states of their non-generic mailing addresses, most deeds first, for example [\"AZ\",\"CA\"]."},"registry_version":{"description":"Which registry code version produced this profile. Informational: use meta.coverage[].dataset_version for caching. Null when not recorded.","type":["string","null"]},"registry_run":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Which data refresh (registry run number) produced this profile (informational). Null when not recorded."},"id_history":{"type":"array","items":{"$ref":"#/components/schemas/IdHistoryEntry"},"description":"What each data refresh did to this id, oldest first."},"kinds":{"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},"description":"Every kind the investor qualifies for."},"confidence_by_kind":{"anyOf":[{"type":"object","propertyNames":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},"additionalProperties":{"type":"object","properties":{"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deals that support this kind."},"confidence":{"type":"string","enum":["STRONG","PROBABLE","WEAK"],"description":"Confidence in this kind. How sure the registry is of the kind. STRONG: several deals of that kind and a consistent pattern. PROBABLE: some evidence. WEAK: a single signal. The registry judges the confidence from the deeds inside the area loaded for the market (meta.coverage[].universe_kind). In a ZIP market an investor's deals outside the ZIP are unseen, so the confidence is a floor."}},"required":["n","confidence"],"additionalProperties":false,"description":"The evidence for one kind."},"description":"Per-kind evidence: how many deals support each kind and the confidence in it."},{"type":"null"}],"description":"Per-kind evidence: how many deals support each kind and the confidence in it. Null when the registry recorded none."},"classification_reasons":{"type":"array","items":{"type":"string","description":"One classifier code."},"description":"Diagnostic codes from the classifier, for example \"FLIPPER:STRICT_FLIPS_2P\". Not for display, and distinct from the match reasons[]. You can ignore them."},"is_entity":{"type":"boolean","description":"True when the investor's main name is an entity (an LLC, corporation or partnership), not a person."},"flipper_first":{"type":"boolean","description":"Diagnostic: when the classifier chose the primary kind, the flipping evidence outranked the holdings. You can ignore it."},"holdings_first":{"type":"boolean","description":"Diagnostic: when the classifier chose the primary kind, the holdings outranked the flipping evidence. You can ignore it."},"flipper_demoted":{"type":"boolean","description":"Diagnostic: the investor looked like a flipper first, but the classifier made another kind primary. You can ignore it."},"has_builder_name":{"type":"boolean","description":"True when one of their names carries builder vocabulary (HOMES, CONSTRUCTION, DEVELOPMENT)."},"is_ibuyer":{"type":"boolean","description":"True for an iBuyer brand (Opendoor, Offerpad, Zillow)."},"n_strict_flips":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Diagnostic: flips that met the strict flip test, as the classifier counted them. The strict test is a resale within a year at a profit-shaped margin. You can ignore it: n_flips is the number to show."},"n_quick_resales":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Diagnostic: resales in under 30 days, or a chain resale or round trip within 90 days, as the classifier counted them. You can ignore it: n_wholesales is the number to show."},"n_lot_to_build_built":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Lots they bought and then built on, as the registry's builder test counts them. That test also counts a finished home bought in its completion year, and it applies none of the build kind's bounds. The count can exceed n_builds, the served count of build deals."},"n_sales_new_construction":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sales of newly built homes (the production-builder test)."},"n_current_holdings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Diagnostic: the holdings at data_end as the classifier counted them (the bulk-holder test at 500). You can ignore it: n_holds is the number to show."},"is_production_builder":{"type":"boolean","description":"True for a volume homebuilder. The test: 100+ new-construction sales, or a builder name with 10+, and at least twice their flips."},"is_sfr_bulk_holder":{"type":"boolean","description":"True at 500 or more holdings at data_end."},"institutional_reason":{"description":"Diagnostic: the rule that made them institutional, for example \"IBUYER\" or \"PATTERN:PRODUCTION_BUILDER:FULTON HOMES CORP\". Null when not institutional.","type":["string","null"]},"institutional_reasons":{"type":"array","items":{"type":"string","description":"One institutional rule."},"description":"Diagnostic: every institutional rule that applied. Empty when not institutional."},"public_name":{"description":"The deed name that marked them as a public body (county, city, housing authority). Null when not public.","type":["string","null"]},"n_flips":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Flips inside the area loaded for the market. Every count on the profile covers that area only (meta.coverage[].universe_kind). In a ZIP market the count is a floor."},"n_wholesales":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Wholesale resales inside the area loaded for the market."},"n_long_holds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Long holds (held over a year, resold)."},"n_holds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Parcels they still own at data_end."},"median_purchase_year":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The median year the investor bought the parcels it still holds at data_end, a whole year, for example 2021. The API computes this holdings statistic over the n_holds rows inside the area loaded for the market, from their purchase dates at request time. For an even count whose two middle years differ, the API rounds the midpoint up to the later year: 2020 and 2021 read 2021. Null when the investor holds nothing or when no holding carries a purchase date. The median leaves out holdings without a purchase date. Read it with n_holds: 300 parcels bought around 2021 is a young portfolio, around 2009 a seasoned one."},"n_other":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Other investor resales: a loss, a thin margin, a builder's new home resold, or an iBuyer resale."},"n_builds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Builds: lots or teardowns bought, built on, then sold, under the bounds of the build kind. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."},"n_acquisitions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"All-time distinct purchase events inside the area loaded for the market. A purchase event is a day on which the investor bought."},"n_priced_deals":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deals with a purchase price on the deed."},"n_unpriced_deals":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deals without a purchase price. These are holdings, builder lots, and most off-market purchases in a non-disclosure state such as Texas."},"n_purchases":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deeds as buyer, every parcel and kind. This is a deed count, larger than n_deals."},"n_sales":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deeds as seller. Seller-only builders have n_deals = 0 and n_sales > 0."},"first_deed":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"First deed under any member name, YYYY-MM-DD."},"last_deed":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Last deed under any member name."},"last_sold_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Their last sale of any kind."},"last_flip_sold_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Their last flip resale (a just-sold flipper has cash)."},"last_deal_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Last purchase, sale or transfer (display only)."},"days_since_last_purchase":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days from last_bought_on to the data end date. Null when they never bought."},"n_purchase_events_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct purchase days in the 12 months before the data end date."},"n_purchase_events_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct purchase days in the 24 months before the data end date."},"n_flips_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Flips resold in the 24 months before data_end."},"n_holds_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Purchases in the 24 months ending on data_end, still held at it."},"n_sales_12m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sales in the 12 months before data_end."},"bought_12m":{"type":"boolean","description":"True when they bought in the 12 months before the data end date."},"bought_24m":{"type":"boolean","description":"True when they bought in the 24 months before the data end date."},"price_band":{"description":"What they pay: the quartiles of their priced purchases.","$ref":"#/components/schemas/PriceBand"},"p50_flip_sold_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median flip resale price, whole dollars. Null with fewer than 3 flips."},"p50_buy_to_resale_ratio":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Median bought / sold over their priced flips. At 0.72 they pay 72% of resale. Null with fewer than 3 priced flips. In a non-disclosure state most flips carry no purchase price. The market median is meta.coverage[].metro_buy_to_resale_ratio."},"median_hold_days":{"description":"Median days between purchase and resale over their resold deals.","type":["number","null"]},"median_spread_ratio":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Median resale margin as a ratio (0.53 = +53%)."},"median_gross_profit":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median sold minus bought over their resold deals, whole dollars."},"median_bought_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median of what they paid, whole dollars, priced deals only."},"segment_mix":{"anyOf":[{"$ref":"#/components/schemas/SegmentMix"},{"type":"null"}],"description":"Shares of their deals by parcel segment. Null when they have no deals."},"segment_sfr_share":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Share of their deals on single-family houses, 0 to 1. Null when they have no deals."},"cities_active":{"type":"array","items":{"type":"string","description":"A city name, upper case."},"description":"Cities where they have deals, most first, upper case."},"n_bought_from_wholesaler":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"All-time purchases documented as bought from a wholesaler."},"n_bought_from_wholesaler_5y":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Same, the 5 years ending on data_end."},"n_bought_from_wholesaler_24m":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Same, the 24 months ending on data_end."},"share_bought_from_wholesaler":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"Share of their purchases documented as bought from a wholesaler, 0 to 1."},"last_bought_from_wholesaler_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Last documented wholesale purchase."},"buys_wholesale":{"type":"boolean","description":"True when they bought from a wholesaler in the 36 months before the data end date."},"n_bought_from_investor":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Purchases where the seller carried an investor id."},"n_distressed_buys":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deals whose purchase deed was a distressed instrument of any kind, whoever the buyer. The instruments: a trustee's, sheriff's or tax deed, a deed in lieu, or a deed the feed flags as REO or foreclosure. Wider than auction.n_auction_buys, the third-party auction purchases by parcel, and auction.n_reo_buys, the purchases from a lender after a foreclosure. None of the three is a subset of another."},"auction":{"anyOf":[{"$ref":"#/components/schemas/AuctionBlock"},{"type":"null"}],"description":"The auction and REO block: the list-row summary plus the kinds bought at and the platform that ran the sale (Texas). It also carries the outcomes of the purchases at 12 months, the median discount to the later resale and the lender note. Null where the market publishes no auction counts (meta.coverage[].auction_counted false). Zeros and empty maps where it does and the investor never bought at auction or from a lender."},"member_names":{"type":"array","items":{"type":"string","description":"One deed name, raw spelling."},"description":"Every deed name that belongs to this investor, entities first. This host omits person names. Raw spelling (SURNAME GIVEN for persons)."},"n_members":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of deed names that belong to this investor."},"n_addresses_by_kind":{"anyOf":[{"type":"object","properties":{"house":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"House addresses: no suite, unit or box marker."},"suite":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Suite or unit addresses."},"pobox":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Post office boxes."}},"required":["house","suite","pobox"],"additionalProperties":false},{"type":"null"}],"description":"Mailing addresses on file by kind. Null when none is on file."},"has_mailing_address":{"type":"boolean","description":"True when any mailing address is on file."},"buyer_signal":{"anyOf":[{"$ref":"#/components/schemas/BuyerSignal"},{"type":"null"}],"description":"The operator this investor belongs to, that operator's capital cycle and its probability of buying in the next 180 days, measured at data_end. Its \"days since\" values, measured at data_end, are the operator's, not this id's alone. Null when the market has no buyer signal, or when this investor has no signal row. An id minted after the signal build has no signal row."},"listings":{"anyOf":[{"$ref":"#/components/schemas/InvestorListings"},{"type":"null"}],"description":"What the investor has on the market right now, measured at listings_data_end (later than data_end). The block carries their holdings listed ACTIVE or PENDING in the MLS feed, with the asking prices. The per-parcel blocks are on the hold rows of `/v1/investors/{id}/deals`, and their counted rows equal n_active + n_pending here. The API serves this block to every key. Null when the market publishes no listing tables, zeros when it does and no holding is listed."},"has_licensed_member":{"description":"True when one of the investor's people is a listing agent keyed on a state licence, and agent_links carries the link. Such an investor can list its own inventory. False when no such agent has a link. Null when the market publishes no agent registry (meta.coverage[].agents_data_end is null). The API serves this field to every key.","type":["boolean","null"]},"agent_links":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/InvestorAgentLink"}},{"type":"null"}],"description":"The listing agents that are, by name, this investor's people, HIGH confidence first. Each carries the link basis and how many of the investor's parcels the agent listed. Empty when none, null when the market publishes no agent registry. Open GET `/v1/agents/{agent_id}` for the agent's profile and history. The API serves agent_id, link_basis, confidence and n_self_listings to every key."},"wholesale_purchases":{"anyOf":[{"$ref":"#/components/schemas/InvestorWholesale"},{"type":"null"}],"description":"What the investor bought off Investorlift listings per the recorded deeds. The block carries counts by window (n, n_12m, n_24m, n_5y) and how many at high confidence (n minus n_probable). It also carries the last closing and the companies they buy from. The rows themselves are GET `/v1/investors/{id}/wholesale-purchases`. The API serves this block to every key. Null when the market publishes no wholesale tables (meta.coverage[].wholesale_as_of is null), zeros when it does and the investor never bought off Investorlift."},"str":{"anyOf":[{"$ref":"#/components/schemas/InvestorStr"},{"type":"null"}],"description":"How many of the investor's holdings carry a business-use short-term-rental licence attributed to them, from the cities' rolls. The block carries holdings and permits, how many got a licence within 180 days of the purchase, and how many rest on an assumed attribution. It also carries the share of their holds, the property managers named and the cities. The per-parcel blocks are on the hold rows of `/v1/investors/{id}/deals` (str_status=LICENSED,PENDING lists them). The API serves this block to every key. Null when the market publishes no short-term rental tables (meta.coverage[].str_as_of is null), zeros when it does and the investor holds no such parcel."},"financing":{"anyOf":[{"$ref":"#/components/schemas/InvestorFinancing"},{"type":"null"}],"description":"What the investor borrows, from the lender registry: the loans the recorded mortgages and open liens tie to it, and the lenders behind them. The block carries the last loan, how many of its recent purchases (measured to financing.as_of) had a loan found, and if it uses hard money. Every count is a floor of a partial feed, and its windows end on the registry's own slice date (financing.as_of), not on data_end. The API serves this block to every key. Null when the market publishes no lender registry or borrower match: meta.coverage[].lenders is null or investor_lending_measured is false. Zeros when it does and no loan resolves to the investor."},"data_end":{"type":"string","description":"The date from which the API measures every \"days since\" value and every window (12m, 24m, 5y) on this profile."}},"required":["id","market","name","display_name","state","kind","confidence","scale","institutional","is_public","last_bought_on","n_deals","buyer_status","mailing_states","registry_version","registry_run","id_history","kinds","confidence_by_kind","classification_reasons","is_entity","flipper_first","holdings_first","flipper_demoted","has_builder_name","is_ibuyer","n_strict_flips","n_quick_resales","n_lot_to_build_built","n_sales_new_construction","n_current_holdings","is_production_builder","is_sfr_bulk_holder","institutional_reason","institutional_reasons","public_name","n_flips","n_wholesales","n_long_holds","n_holds","median_purchase_year","n_other","n_builds","n_acquisitions","n_priced_deals","n_unpriced_deals","n_purchases","n_sales","first_deed","last_deed","last_sold_on","last_flip_sold_on","last_deal_on","days_since_last_purchase","n_purchase_events_12m","n_purchase_events_24m","n_flips_24m","n_holds_24m","n_sales_12m","bought_12m","bought_24m","price_band","p50_flip_sold_price","p50_buy_to_resale_ratio","median_hold_days","median_spread_ratio","median_gross_profit","median_bought_price","segment_mix","segment_sfr_share","cities_active","n_bought_from_wholesaler","n_bought_from_wholesaler_5y","n_bought_from_wholesaler_24m","share_bought_from_wholesaler","last_bought_from_wholesaler_on","buys_wholesale","n_bought_from_investor","n_distressed_buys","auction","member_names","n_members","n_addresses_by_kind","has_mailing_address","buyer_signal","listings","has_licensed_member","agent_links","wholesale_purchases","str","financing","data_end"],"description":"The full profile of one investor: identity, activity, price band, buyer signal and listings. It also carries the linked listing agents, Investorlift purchases, short-term rental holdings, financing and id history."},"InvestorSearchResult":{"type":"object","properties":{"id":{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"Investor id: inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The id is stable across data refreshes within a market. Store it as the investor's identity."},"market":{"type":"string","description":"Market code the hit belongs to, for example phx. A search without market= runs over every loaded market, so the same id can appear once per market."},"name":{"type":"string","description":"The deed spelling, the one most often on their deeds, upper case, SURNAME GIVEN for a person, for example \"ZAK VENTURES LLC\" or \"RIVERA DANA\". Never a key. Read the spelling the query hit from matched_name. Print display_name."},"display_name":{"type":"string","description":"The name to print. For a cleanly parsed person, it has the form GIVEN [MIDDLE] SURNAME [SUFFIX] in upper case. For example, \"DANA RIVERA\" from the deed's \"RIVERA DANA\". For an entity, a trust, a public body, an institutional investor or an ambiguous spelling it equals name. Display only: match, join and search on name."},"state":{"type":"string","description":"2-letter state of the market. The loaded markets and their states are in meta.coverage[]."},"kind":{"anyOf":[{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},{"type":"null"}],"description":"Primary kind, display only. Null when the registry assigned none. Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},"confidence":{"anyOf":[{"type":"string","enum":["STRONG","PROBABLE","WEAK"],"description":"How sure the registry is of the kind. STRONG: several deals of that kind and a consistent pattern. PROBABLE: some evidence. WEAK: a single signal. The registry judges the confidence from the deeds inside the area loaded for the market (meta.coverage[].universe_kind). In a ZIP market an investor's deals outside the ZIP are unseen, so the confidence is a floor."},{"type":"null"}],"description":"Registry confidence in the primary kind. Null when kind is null. How sure the registry is of the kind. STRONG: several deals of that kind and a consistent pattern. PROBABLE: some evidence. WEAK: a single signal. The registry judges the confidence from the deeds inside the area loaded for the market (meta.coverage[].universe_kind). In a ZIP market an investor's deals outside the ZIP are unseen, so the confidence is a floor."},"scale":{"type":"string","enum":["individual","small","mid","large","institutional"],"description":"Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."},"institutional":{"type":"boolean","description":"True for iBuyers, production builders, 500+ holding bulk landlords and the brand list. The search never hides them."},"is_public":{"type":"boolean","description":"True for a public body (county, city, housing authority). The search hides them unless include_public=true."},"n_deals":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Investment deals as buyer inside the area loaded for the market."},"n_sales":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deeds as seller."},"last_bought_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Last purchase, YYYY-MM-DD."},"last_deal_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Last purchase, sale or transfer."},"matched_name":{"description":"The member name that matched the query, raw spelling (SURNAME GIVEN for persons), for example \"RIVERA DANA\". Null when the match was on a person.","type":["string","null"]},"matched_party_key":{"description":"The normalised key that matched. Null under the same rule as matched_name.","type":["string","null"]},"matched_is_person":{"type":"boolean","description":"True when the match was on a person member, not the entity name."},"match":{"type":"string","enum":["exact","tokens","contains","trigram"],"description":"How it matched, best first. The exact step: the normalised query equals a deed name. The tokens step: every query word appears in a deed name, in any order. The contains step: the query is a substring. The trigram step: fuzzy, with a similarity of 0.55 or more. The search tries trigram only when fewer than 10 names matched by the better methods."},"similarity":{"description":"Fuzzy similarity, 0 to 1, for trigram matches. Null otherwise.","type":["number","null"]}},"required":["id","market","name","display_name","state","kind","confidence","scale","institutional","is_public","n_deals","n_sales","last_bought_on","last_deal_on","matched_name","matched_party_key","matched_is_person","match","similarity"],"description":"One search hit: the investor and how its name matched."},"DealPurchaseLoan":{"type":"object","properties":{"id":{"type":"string","pattern":"^len_[0-9a-f]{12}$","description":"The lender: the key to GET `/v1/lenders/{id}`."},"name":{"type":"string","description":"The lender's display name in the market, upper case as the file writes it, for example KIAVI FUNDING INC. A business name, which the API serves to every key."},"lender_class":{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"A reading of the name, never a legal status. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"is_hard_money":{"type":"boolean","description":"True when the name carries hard-money vocabulary or is a known hard-money brand, or when the book behaves like one. The profile's hard_money_basis says which, and the behaviour test needs the market's deed link. A PRIVATE lender_class is a trust or a seller carry-back, not a hard-money lender."},"amount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The loan amount, whole dollars. Null when the file carries none."},"recording_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The recording date of the loan, YYYY-MM-DD. Under STRICT it falls within 45 days after bought_on. Under LOOSE it falls from 15 days before bought_on to 90 days after it."},"loan_to_price":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"amount divided by bought_price, 4 decimals, for example 0.88. With a rehab holdback on top of the price it can be above 1, for example 1.12. Null when either value is unknown. Also null when the ratio is above 3 without a blanket group: that amount is a facility amount, not a loan on this parcel."},"source":{"type":"string","enum":["OPEN","RECORDED"],"description":"The table where the registry found the loan. Which table the row comes from. OPEN: an open lien position at the slice date, 1 to 4 per parcel, with the balance, rate, term and maturity the open-lien table carries. RECORDED: a slot of the recorded mortgage history, the 5 newest per parcel, with older ones lost. The same instrument is in both tables when the dates and amounts match, and in_both says so."},"property_id":{"type":"string","pattern":"^prop_[0-9a-f]{32}$","description":"The parcel the loan is on, the deal's parcel. It is the key to the financing block of that parcel. The block lists the loan among the open liens or the recorded history."}},"required":["id","name","lender_class","is_hard_money","amount","recording_date","loan_to_price","source","property_id"],"additionalProperties":false,"description":"The loan that financed the purchase: the lender, the amount, the date, the loan against the price and which table it came from."},"DealFinancing":{"type":"object","properties":{"purchase_loan_status":{"type":"string","enum":["FOUND","NONE_CAPTURED","NOT_MEASURED"],"description":"The deal's purchase-loan status: FOUND means a loan of either table has a recording date in the 45 days from the purchase date. The largest amount, then the earliest, is the purchase loan. NONE_CAPTURED: the registry covers the window and no loan has a recording date in it. NONE_CAPTURED is not evidence of a cash purchase: the open-lien table sees about one purchase loan in five on holds, one in fifteen on flips. The cash-buyer quicklist keeps its own signal. NOT_MEASURED: the purchase date is unknown or later than 45 days before the newest recording, or the market has no registry."},"purchase_loan":{"anyOf":[{"$ref":"#/components/schemas/DealPurchaseLoan"},{"type":"null"}],"description":"The purchase loan when purchase_loan_status is FOUND. The registry takes the largest loan recorded in the 45 days from bought_on, then the earliest. Null otherwise."},"secondary_loans_n":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Other loans recorded in the same window, for example 1. A second loan or a rehab draw counts here. Null unless purchase_loan_status is FOUND."},"link_window":{"anyOf":[{"type":"string","enum":["STRICT","LOOSE"],"description":"How the registry tied the loan to its deal. STRICT: the recording date falls in the 45 days from the purchase date, the window every count uses. LOOSE: the recording date falls from 15 days before to 90 days after the purchase date. The row keeps a LOOSE link for reading, but no count uses it, and the registry never applies it to a wholesale deal."},{"type":"null"}],"description":"Null unless purchase_loan_status is FOUND. How the registry tied the loan to its deal. STRICT: the recording date falls in the 45 days from the purchase date, the window every count uses. LOOSE: the recording date falls from 15 days before to 90 days after the purchase date. The row keeps a LOOSE link for reading, but no count uses it, and the registry never applies it to a wholesale deal."},"outcome":{"anyOf":[{"type":"string","enum":["RESOLVED_BY_RESALE","REFINANCED","OPEN","FORECLOSED","UNKNOWN"],"description":"What became of a loan tied to a deal: a performance proxy read from the deed chain, never from a delinquency record or payment history. RESOLVED_BY_RESALE is a priced deed on the parcel after the loan, and REFINANCED is a later mortgage on it in either table before any resale. OPEN is an open lien position at the slice date and nothing later, and UNKNOWN is none of these because the chain runs out. FORECLOSED: a take-back deed on the parcel more than 90 days after the loan's recording, before any priced resale and any later mortgage. A take-back deed is a trustee's deed, a sheriff's deed or a deed in lieu, and the foreclosed block on the loan row carries it. A shorter gap is the auction buyer's own deed, not a foreclosure of this loan."},{"type":"null"}],"description":"Null unless purchase_loan_status is FOUND. What became of a loan tied to a deal: a performance proxy read from the deed chain, never from a delinquency record or payment history. RESOLVED_BY_RESALE is a priced deed on the parcel after the loan, and REFINANCED is a later mortgage on it in either table before any resale. OPEN is an open lien position at the slice date and nothing later, and UNKNOWN is none of these because the chain runs out. FORECLOSED: a take-back deed on the parcel more than 90 days after the loan's recording, before any priced resale and any later mortgage. A take-back deed is a trustee's deed, a sheriff's deed or a deed in lieu, and the foreclosed block on the loan row carries it. A shorter gap is the auction buyer's own deed, not a foreclosure of this loan."},"as_of":{"type":"string","description":"The slice date of the lender registry, YYYY-MM-DD. The registry measures the status at this date. It is the financing slice date, not the deed data end. The block is dated: see meta.dated[]."},"dated":{"type":"boolean","description":"True while the Recorder & Mortgage datasets are not in the current delivery: this block is a snapshot at as_of."}},"required":["purchase_loan_status","purchase_loan","secondary_loans_n","link_window","outcome","as_of","dated"],"additionalProperties":false,"description":"How the investor financed the purchase, as far as the slice can tell. It says if the registry found a purchase loan, which lender made it, and what became of it. NONE_CAPTURED is not cash: the open-lien table sees about one purchase loan in five. Null where it sits for a market without a published lender registry or without its deal link."},"DealProperty":{"type":"object","properties":{"id":{"type":"string","pattern":"^prop_[0-9a-f]{32}$","description":"Parcel id, prop_ followed by 32 hex characters: pass it to `/v1/properties/{property_id}` or as property_id geometry."},"market":{"type":"string","description":"Market code the parcel belongs to, for example phx. The loaded markets are in meta.coverage[]."},"apn":{"description":"Assessor parcel number as recorded, for example \"131-28-253\". Null when the county did not supply one.","type":["string","null"]},"apn_norm":{"description":"APN with punctuation removed, upper case, for example \"13128253\": the lookup key for /v1/properties/resolve.","type":["string","null"]},"county_fips":{"description":"County FIPS, 5 digits, for example 04013 Maricopa, 04021 Pinal or 48201 Harris.","type":["string","null"]},"address_short":{"description":"Situs street address in title case including the unit, for example \"7522 E Cholla St\".","type":["string","null"]},"street_no_unit":{"description":"The street address without the unit.","type":["string","null"]},"unit":{"description":"Unit designation, for example \"UNIT 8\". Null for most parcels.","type":["string","null"]},"city":{"description":"City, upper case.","type":["string","null"]},"state":{"description":"2-letter state.","type":["string","null"]},"zip":{"description":"5-digit ZIP.","type":["string","null"]},"latitude":{"anyOf":[{"type":"number","minimum":-90,"maximum":90,"description":"WGS84 latitude."},{"type":"null"}],"description":"WGS84 latitude of the parcel. Null when the parcel has no geocode."},"longitude":{"anyOf":[{"type":"number","minimum":-180,"maximum":180,"description":"WGS84 longitude."},{"type":"null"}],"description":"WGS84 longitude of the parcel. Null when the parcel has no geocode."},"segment":{"anyOf":[{"type":"string","enum":["SFR","CONDO_TH","OTHER"],"description":"Parcel segment: SFR, CONDO_TH (condo or townhouse) or OTHER, a mixed bucket of manufactured, multi-family, land and commercial parcels."},{"type":"null"}],"description":"Parcel segment: SFR (a house), CONDO_TH (condo or townhouse) or OTHER (manufactured, multi-family, land, commercial). Null when unknown."},"bedrooms":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Bedrooms per the assessor. Null when the assessor did not report them."},"bathrooms":{"description":"Bathrooms per the assessor. The value can be fractional, for example 2.5. Null when the assessor did not report them.","type":["number","null"]},"sqft":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Living area in square feet. Null when the assessor did not report it."},"year_built":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Year built. Null when the assessor did not report it."},"pool":{"description":"True for a private pool, false for community pool or spa only, null when the assessor did not report it (most parcels).","type":["boolean","null"]}},"required":["id","market","apn","apn_norm","county_fips","address_short","street_no_unit","unit","city","state","zip","latitude","longitude","segment","bedrooms","bathrooms","sqft","year_built","pool"],"additionalProperties":false,"description":"The parcel the deal is on: address, coordinates and the assessor facts."},"Party":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"Investor id: inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The id is stable across data refreshes within a market. Store it as the investor's identity."},{"type":"null"}],"description":"Investor id when the party is a registered investor. Null otherwise."},"name":{"description":"The party's deed spelling, upper case, SURNAME GIVEN for a person, only when id is not null. The API never names a retail household. Print display_name.","type":["string","null"]},"display_name":{"description":"The name to print for the party, only when id is not null. For a person whose deed spelling parsed cleanly, GIVEN [MIDDLE] SURNAME [SUFFIX] in upper case. For example, \"DANA RIVERA\" from the deed's \"RIVERA DANA\". Otherwise equal to name. Null exactly when name is null.","type":["string","null"]},"kind":{"anyOf":[{"type":"string","enum":["PERSON","TRUST","ENTITY"],"description":"Kind of the party on the deed: PERSON, TRUST or ENTITY (an LLC, corporation or partnership)."},{"type":"null"}],"description":"On every row that has the party. Null when the deed carries none. Kind of the party on the deed: PERSON, TRUST or ENTITY (an LLC, corporation or partnership)."},"kinds":{"anyOf":[{"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."}},{"type":"null"}],"description":"The investor kinds of the party, only when id is not null. Null otherwise."}},"required":["id","name","display_name","kind","kinds"],"additionalProperties":false,"description":"The counterparty of a deal (seller or end buyer). Named only when it carries an investor id."},"Owner":{"type":"object","properties":{"name_order":{"type":"string","enum":["surname_first","given_first","unknown"],"description":"Always given_first for owner names. The word order of the raw name. A deed name is surname_first, for example \"RIVERA DANA\". A parsed owner name is given_first, for example \"Dana Rivera\". The order is unknown for one token, a truncated name, \"&\" or ET AL: the split fields are then null."},"kind":{"anyOf":[{"type":"string","enum":["PERSON","TRUST","ENTITY","PUBLIC_INSTITUTIONAL"],"description":"Kind of the owner at the deed data end: PERSON, TRUST, ENTITY or PUBLIC_INSTITUTIONAL (a public body)."},{"type":"null"}],"description":"Null when the county roll does not say. Kind of the owner at the deed data end: PERSON, TRUST, ENTITY or PUBLIC_INSTITUTIONAL (a public body)."},"is_trust":{"description":"True when the owner is a trust. Null when unknown.","type":["boolean","null"]},"is_public":{"description":"True when the owner is a public body. Null when unknown.","type":["boolean","null"]},"owner_occupied":{"description":"True when the owner's mailing address is the parcel itself. Null when the county roll does not say.","type":["boolean","null"]},"absentee":{"description":"True when the owner's mailing address is elsewhere. Null when the county roll does not say.","type":["boolean","null"]},"rental_registered":{"description":"True when the parcel is on the county rental registry. Null when unknown.","type":["boolean","null"]},"held_since":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"When the ownership at the deed data end started, YYYY-MM-DD. Null when no dated record exists."},"months_held":{"description":"Months since held_since, measured at the data end date, for example 44.4. Null without held_since.","type":["number","null"]},"permits_last_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Building permits filed on the parcel in the 24 months before the data end date. Null when permit data is unavailable."}},"required":["name_order","kind","is_trust","is_public","owner_occupied","absentee","rental_registered","held_since","months_held","permits_last_24m"],"description":"The owner at the deed data end of a confirmed investor holding. Set only on a confirmed holding, deal_type HOLDING with ownership_confirmed true. Null elsewhere."},"Deal":{"type":"object","properties":{"id":{"type":"string","pattern":"^deal_[0-9a-f]{32}$","description":"Deal id: deal_ followed by 32 hex characters, for example deal_5d1b2c3d4e5f60718293a4b5c6d7e8f9. The prefix is part of the id."},"market":{"type":"string","description":"Market code the deal belongs to, for example phx. The loaded markets are in meta.coverage[]."},"kind":{"type":"string","enum":["flip","wholesale","hold","long_hold","other","build"],"description":"What occurred on the deal. flip: bought, fixed and resold within about a year at a profit-shaped margin; wholesale: bought and resold in under 30 days, or a chain resale or round trip within 90 (a double close); hold: bought and still owned at data_end, a confirmed holding or an un-resold purchase; long_hold: held over a year, then sold (a landlord exit); other: an investor resale that is not a clean flip. Reasons: a loss, a thin margin, a builder's new home resold, an iBuyer resale, or a chain resale of 3 to 12 months; build: a registered investor bought a lot or teardown, built a house on it during the hold, then sold. A builder's finished home bought and resold is other. On data built after 2026-09-17 the kind keeps only a single-family parcel held over 90 days, its house complete by the sale year. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."},"deal_type":{"type":"string","enum":["PAIR","HOLDING","PURCHASE"],"description":"What kind of record the row is. PAIR: a purchase and its resale, two deeds. HOLDING: a confirmed current holding, where the owner of record at the deed data end (meta.coverage[].data_end) matches the investor. PURCHASE: an investor purchase deed with no resale and no ownership confirmation at the deed data end."},"deal_kind":{"type":"string","enum":["FLIP","WHOLESALE","INVESTOR_HOLD","INVESTOR_OTHER","CURRENT_HOLDING","BUILD"],"description":"The label of the classifier behind kind, for diagnostics: use kind for display. FLIP: a clean flip held 30 to 365 days, both deeds priced and resold for 10 to 150% over the purchase price. FLIP also covers an unpriced purchase deed in that window, the usual Texas shape, that a registry investor resold at a price. About one flip in six has no investor id. WHOLESALE: resold in under 30 days, or a chain resale or a round trip within 90 days. INVESTOR_HOLD: held over a year and then sold, or bought and not resold by the deed data end. INVESTOR_OTHER: resold by an investor but not a clean flip. A loss, a margin under 10%, a resale over 150%, a builder's resold new home, an iBuyer resale, a 3 to 12 month chain resale. CURRENT_HOLDING means a confirmed holding at the deed data end. BUILD means a registered investor bought a lot or a teardown, built a house, and sold. The Deal page lists the bounds and their as-of."},"ownership_confirmed":{"description":"True on a confirmed holding: the owner of record at the deed data end matches the investor. False on a purchase with no ownership confirmation at the deed data end. Null on resold rows.","type":["boolean","null"]},"buyer_status":{"type":"string","enum":["registered","unclassified","excluded","unknown"],"description":"The buyer's standing in the registry: registered (has an investor id), unclassified, excluded or unknown (the deed names no buyer). Unclassified: a named buyer the registry did not classify as an investor, usually a household. Excluded: a named buyer the registry deliberately left out. Those are custodian trusts, relocation companies, auction houses and ambiguous surnames."},"buyer_exclusion":{"anyOf":[{"type":"string","enum":["INSTITUTION","AMBIGUOUS_NAME","POOLED_NAME"],"description":"Why an excluded buyer has no investor id. INSTITUTION: a custodian, a relocation company or an auction house. AMBIGUOUS_NAME: a bare surname. POOLED_NAME: a name that many unrelated people share."},{"type":"null"}],"description":"Only when buyer_status is excluded. Null otherwise. Why an excluded buyer has no investor id. INSTITUTION: a custodian, a relocation company or an auction house. AMBIGUOUS_NAME: a bare surname. POOLED_NAME: a name that many unrelated people share."},"property":{"$ref":"#/components/schemas/DealProperty"},"distance_miles":{"description":"Miles from the reference point, rounded to 2 decimals. The reference point is lat and lng, or the centre of the property_id parcel. Null when the request had no reference point.","type":["number","null"]},"bought_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Purchase date, YYYY-MM-DD. Null on holdings with no dated record (date_quality unknown)."},"date_quality":{"type":"string","enum":["deed","ownership_record","assessor","unknown","implausible"],"description":"Where bought_on comes from. With deed it comes from the acquisition or transfer deed, the best source. With ownership_record it comes from the county ownership start, and with assessor from the assessor's last-sold date. With unknown no date exists and bought_on is null. With implausible the source date lay in the future, so bought_on is null."},"held_since_source":{"type":"string","enum":["DEED_ACQUISITION","DEED_TRANSFER","CORE_OWNERSHIP_START","CORE_LAST_SOLD","SECMASTER_DEED","NONE"],"description":"The record bought_on comes from. DEED_ACQUISITION: the purchase deed, on purchases and resales. DEED_TRANSFER: an unpriced transfer deed to the owner. CORE_OWNERSHIP_START means the county ownership start date, and CORE_LAST_SOLD the assessor's last-sold date. SECMASTER_DEED: a deed in the county secondary records. NONE: no dated record, so bought_on is null."},"bought_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"What the investor paid, whole dollars, for example 610000. Null, never 0, when the deed carries no price: an unpriced transfer or holding, or a deed in a non-disclosure state (Texas). Most off-market purchases in such a state carry no price. The field price_quality says which prices the row has."},"sold_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Resale date. Null while the investor holds the parcel at the deed data end."},"sold_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Resale price, whole dollars. Null while the investor holds the parcel at the deed data end, or when the resale deed carries no price (non-disclosure states)."},"hold_days":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days between purchase and resale. Null while the investor holds the parcel at the deed data end."},"gross_profit":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"sold_price minus bought_price, whole dollars, on resold rows. Null while the investor holds the parcel at the deed data end. Also null when either price is unknown, price_quality other than BOTH: a Texas flip bought off-market carries only its resale price. Not net of rehab or costs."},"spread_ratio":{"anyOf":[{"type":"number","description":"Decimal ratio, never a percentage (0.53 = +53%)."},{"type":"null"}],"description":"sold_price / bought_price minus 1, a ratio (0.336 = +33.6%). Null while the investor holds the parcel at the deed data end, or when either price is unknown (price_quality other than BOTH)."},"price_quality":{"type":"string","enum":["BOTH","SELL_ONLY","BUY_ONLY","NONE"],"description":"Which of the two prices the deed record carries. BOTH: the purchase and the resale carry a price. SELL_ONLY: the resale carries a price and the purchase does not, the normal shape of a Texas flip bought off-market and sold through the MLS. BUY_ONLY: the purchase carries a price, and the investor holds the parcel at the deed data end or resold it without a price. NONE: neither carries a price. Non-disclosure states (Texas) record no price on most off-market deeds, so bought_price, gross_profit and spread_ratio are null there while sold_price is known."},"days_held_to_data_end":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"On hold rows: days from bought_on to the data end date. Null on resold rows and on undated holdings."},"sold_to_wholesaler":{"description":"True when the end buyer resold within 90 days (180 for an entity): a fact about the counterparty.","type":["boolean","null"]},"round_trip":{"description":"True when the parcel came back to the seller within the window: a financing round trip, not a real sale.","type":["boolean","null"]},"is_purchase_event":{"type":"boolean","description":"True when the row is real purchase evidence, a purchase deed. False for transfers and for undeeded or unmatched holdings, which the map shows too."},"n_parcels_in_event":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Parcels the investor bought on the same day: 21 means \"1 of 21 bought 2023-12-18\", a bulk buy."},"bought_from_wholesaler":{"description":"True when the investor bought through a documented double close from a wholesaler, or from a known wholesaler. Contract assignments leave no deed, so false is not evidence of a retail purchase.","type":["boolean","null"]},"bought_from_wholesaler_via":{"anyOf":[{"type":"string","enum":["DOUBLE_CLOSE","SELLER_KIND"],"description":"How the registry detected the wholesale purchase. DOUBLE_CLOSE: a wholesaler bought the parcel and resold it to this investor within 90 days, two deeds. SELLER_KIND: the seller is a registered WHOLESALER."},{"type":"null"}],"description":"Only when bought_from_wholesaler is true. Null otherwise. How the registry detected the wholesale purchase. DOUBLE_CLOSE: a wholesaler bought the parcel and resold it to this investor within 90 days, two deeds. SELLER_KIND: the seller is a registered WHOLESALER."},"wholesaler_investor_id":{"anyOf":[{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"Investor id: inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The id is stable across data refreshes within a market. Store it as the investor's identity."},{"type":"null"}],"description":"The wholesaler's investor id when known."},"bought_from_investor":{"description":"True when the seller carried an investor id.","type":["boolean","null"]},"bought_distressed":{"description":"True when the purchase deed was a distressed sale (foreclosure, trustee, tax). Null when the buy deed is unknown.","type":["boolean","null"]},"bought_auction_kind":{"anyOf":[{"type":"string","enum":["TRUSTEE_SALE","SHERIFF_SALE","HOA_TRUSTEE_SALE","TAX_SALE","TAX_LIEN_DEED"],"description":"The kind of auction the purchase deed records: TRUSTEE_SALE and SHERIFF_SALE count toward buys_at_auction, and the API shows the other three but never counts them. TRUSTEE_SALE: a lender's foreclosure sale by the trustee, cash and final on the day, without redemption. In Arizona the buyer pays a $10,000 deposit and the full bid by 5 pm the next business day. In Texas it is the first-Tuesday courthouse sale, in Washington the Friday sale at the county's designated place under RCW 61.24. SHERIFF_SALE: a judicial sale under court order. In Arizona it is an HOA or judgment-lien sale, cash but subject to the first mortgage and to a 30-day or 6-month redemption. In Washington it is a judicial mortgage foreclosure or lien sale under RCW 6.21, with an 8-month or 1-year redemption. In Washington the sale is subject to the senior lien only when it is a lien sale. HOA_TRUSTEE_SALE: a Texas homeowners association foreclosure recorded as a trustee's deed, cash, subject to the first lien and to a 180-day redemption. TAX_SALE: a Texas constable or taxing-unit tax sale, cash, with a 180-day or 2-year redemption. In Washington it is the county treasurer's deed after the tax foreclosure judgment, with no redemption after the sale. TAX_LIEN_DEED: an Arizona treasurer's deed to a tax-lien holder, mostly vacant land, not an auction of the house."},{"type":"null"}],"description":"The kind of auction when the purchase deed was a third-party auction purchase, for example TRUSTEE_SALE. A third party is not the lender, the trustee, a bulk instrument or a former owner of the parcel. Null on every other purchase and when the buy deed is unknown. Also null on every row of a market without published auction counts (meta.coverage[].auction_counted false). The bought_auction_kind filter reads it. The kind of auction the purchase deed records: TRUSTEE_SALE and SHERIFF_SALE count toward buys_at_auction, and the API shows the other three but never counts them. TRUSTEE_SALE: a lender's foreclosure sale by the trustee, cash and final on the day, without redemption. In Arizona the buyer pays a $10,000 deposit and the full bid by 5 pm the next business day. In Texas it is the first-Tuesday courthouse sale, in Washington the Friday sale at the county's designated place under RCW 61.24. SHERIFF_SALE: a judicial sale under court order. In Arizona it is an HOA or judgment-lien sale, cash but subject to the first mortgage and to a 30-day or 6-month redemption. In Washington it is a judicial mortgage foreclosure or lien sale under RCW 6.21, with an 8-month or 1-year redemption. In Washington the sale is subject to the senior lien only when it is a lien sale. HOA_TRUSTEE_SALE: a Texas homeowners association foreclosure recorded as a trustee's deed, cash, subject to the first lien and to a 180-day redemption. TAX_SALE: a Texas constable or taxing-unit tax sale, cash, with a 180-day or 2-year redemption. In Washington it is the county treasurer's deed after the tax foreclosure judgment, with no redemption after the sale. TAX_LIEN_DEED: an Arizona treasurer's deed to a tax-lien holder, mostly vacant land, not an auction of the house."},"holding_kind":{"anyOf":[{"type":"string","enum":["OWNER_OCCUPIED","ABSENTEE_INDIVIDUAL","ABSENTEE_ENTITY","RENTAL_REGISTERED","RENTAL_SIGNAL","UNKNOWN"],"description":"How the owner holds the parcel at the deed data end (meta.coverage[].data_end), read from the county owner roll behind the row. OWNER_OCCUPIED means the owner lives there, ABSENTEE_INDIVIDUAL a person whose mailing address is elsewhere, and ABSENTEE_ENTITY an LLC or trust. RENTAL_REGISTERED means the parcel is on the county rental registry. RENTAL_SIGNAL means an owner-attributed business-use short-term-rental licence in any market. In Texas it also means an absentee owner with no homestead exemption or a rental listing. The short_term_rental block says which. UNKNOWN means the county roll does not say."},{"type":"null"}],"description":"Only on confirmed holdings. Null otherwise. How the owner holds the parcel at the deed data end (meta.coverage[].data_end), read from the county owner roll behind the row. OWNER_OCCUPIED means the owner lives there, ABSENTEE_INDIVIDUAL a person whose mailing address is elsewhere, and ABSENTEE_ENTITY an LLC or trust. RENTAL_REGISTERED means the parcel is on the county rental registry. RENTAL_SIGNAL means an owner-attributed business-use short-term-rental licence in any market. In Texas it also means an absentee owner with no homestead exemption or a rental listing. The short_term_rental block says which. UNKNOWN means the county roll does not say."},"acquisition_kind":{"anyOf":[{"type":"string","enum":["PURCHASE","TRANSFER","NO_DEED","UNMATCHED"],"description":"How the owner at the deed data end got the parcel. PURCHASE (an arm's-length deed, priced where the state records prices). TRANSFER (an unpriced deed between related parties). NO_DEED: no deed found. UNMATCHED: a deed exists but its buyer name does not match the owner."},{"type":"null"}],"description":"Only on confirmed holdings. Null otherwise. How the owner at the deed data end got the parcel. PURCHASE (an arm's-length deed, priced where the state records prices). TRANSFER (an unpriced deed between related parties). NO_DEED: no deed found. UNMATCHED: a deed exists but its buyer name does not match the owner."},"investor":{"description":"The buyer on the deal: the investor when it has an id, otherwise the name and buyer_status only.","$ref":"#/components/schemas/InvestorSummary"},"seller":{"description":"Who sold to the investor.","$ref":"#/components/schemas/Party"},"end_buyer":{"description":"Who bought from the investor on a resold row. Every field is null while the investor holds the parcel at the deed data end.","$ref":"#/components/schemas/Party"},"owner":{"anyOf":[{"$ref":"#/components/schemas/Owner"},{"type":"null"}],"description":"The owner of record at the deed data end, only on a confirmed holding. Null on every other row. This host never names the holder."},"listing":{"anyOf":[{"$ref":"#/components/schemas/Listing"},{"type":"null"}],"description":"The MLS listing on the parcel, on hold rows only (kind hold). It carries the latest listing the feed knows at listings_data_end, its status and prices, if it belongs to this investor (owner_test) and the listing agent. Null on resold rows, where a listing belongs to the end buyer, and on hold rows whose parcel carries no listing record. Also null on every row of a market without published listing tables: meta.coverage[].listings_data_end is null then. This host does not name the agents."},"short_term_rental":{"anyOf":[{"$ref":"#/components/schemas/ShortTermRental"},{"type":"null"}],"description":"The short-term rental licence facts of the parcel, on hold rows only (kind hold), served to every key. It says if the parcel is licensed on the city roll and since when. It also says if the licence belongs to this investor and is a business use. Null on resold rows and on hold rows whose parcel lies outside every loaded city. Also null on every row of a market without published short-term rental tables: meta.coverage[].str_as_of is null then. NONE, not null, inside a served city with no record."},"wholesale_listing":{"anyOf":[{"$ref":"#/components/schemas/DealWholesaleListing"},{"type":"null"}],"description":"The Investorlift listing this deal closed, served to every key. The API fills it when a wholesaler listed the house on Investorlift and the deed of this deal closed the listing. It carries the listing company, the listed date and asking price, and what the deeds show (outcome, verification). Null when no Investorlift listing links to the deed. Also null on every row of a market without published wholesale tables: meta.coverage[].wholesale_as_of is null then. Open GET `/v1/wholesale-listings/{id}` for the whole record."},"financing":{"anyOf":[{"$ref":"#/components/schemas/DealFinancing"},{"type":"null"}],"description":"How the investor financed the purchase, from the lender registry, served to every key. It says if a purchase loan has a recording date in the 45 days from bought_on. It names the lender, the loan against the price and the outcome. NONE_CAPTURED is not evidence of cash: the open-lien table sees about one purchase loan in five. A deal bought after 45 days before the newest recording is NOT_MEASURED. Null on every row of a market without a published lender registry or deal link: meta.coverage[].lenders is null or investor_lending_measured is false."}},"required":["id","market","kind","deal_type","deal_kind","ownership_confirmed","buyer_status","buyer_exclusion","property","distance_miles","bought_on","date_quality","held_since_source","bought_price","sold_on","sold_price","hold_days","gross_profit","spread_ratio","price_quality","days_held_to_data_end","sold_to_wholesaler","round_trip","is_purchase_event","n_parcels_in_event","bought_from_wholesaler","bought_from_wholesaler_via","wholesaler_investor_id","bought_from_investor","bought_distressed","bought_auction_kind","holding_kind","acquisition_kind","investor","seller","end_buyer","owner","listing","short_term_rental","wholesale_listing","financing"],"description":"One deal: what occurred on a parcel, when, for how much, who took part and how the investor financed it. Every field is present on every row. Fields that apply only to holdings are null elsewhere."},"SampleDeal":{"type":"object","properties":{"id":{"type":"string","pattern":"^deal_[0-9a-f]{32}$","description":"Deal id. It opens `/v1/deals/{id}`."},"kind":{"type":"string","enum":["flip","wholesale","hold","long_hold","other","build"],"description":"What occurred on the deal. flip: bought, fixed and resold within about a year at a profit-shaped margin; wholesale: bought and resold in under 30 days, or a chain resale or round trip within 90 (a double close); hold: bought and still owned at data_end, a confirmed holding or an un-resold purchase; long_hold: held over a year, then sold (a landlord exit); other: an investor resale that is not a clean flip. Reasons: a loss, a thin margin, a builder's new home resold, an iBuyer resale, or a chain resale of 3 to 12 months; build: a registered investor bought a lot or teardown, built a house on it during the hold, then sold. A builder's finished home bought and resold is other. On data built after 2026-09-17 the kind keeps only a single-family parcel held over 90 days, its house complete by the sale year. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."},"address_short":{"description":"Situs street address in title case, for example \"7522 E Cholla St\". Null when the parcel has no address.","type":["string","null"]},"latitude":{"anyOf":[{"type":"number","minimum":-90,"maximum":90,"description":"WGS84 latitude."},{"type":"null"}],"description":"WGS84 latitude of the parcel. Null when the parcel has no geocode."},"longitude":{"anyOf":[{"type":"number","minimum":-180,"maximum":180,"description":"WGS84 longitude."},{"type":"null"}],"description":"WGS84 longitude of the parcel. Null when the parcel has no geocode."},"bought_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Purchase date, YYYY-MM-DD. Null when undated."},"bought_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Purchase price in whole dollars. Null when the deed records no price: every off-market purchase in a non-disclosure state such as Texas."},"sold_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Resale date. Null while the investor holds the parcel at the deed data end."},"sold_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Resale price in whole dollars. Null while the investor holds the parcel at the deed data end, or when the resale deed carries no price."},"gross_profit":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Resale price minus purchase price in dollars. Null while the investor holds the parcel at the deed data end, or when either price is unknown."},"distance_miles":{"description":"Miles from the reference point, rounded to 2 decimals. Null when the request had no reference point.","type":["number","null"]},"bought_from_wholesaler":{"description":"True when the investor bought from a wholesaler: a documented double close or a known wholesaler seller. Null when the purchase deed is unknown.","type":["boolean","null"]},"bought_distressed":{"description":"True when the purchase was a distressed sale (foreclosure, trustee, tax). Null when the purchase deed is unknown.","type":["boolean","null"]},"bought_auction_kind":{"anyOf":[{"type":"string","enum":["TRUSTEE_SALE","SHERIFF_SALE","HOA_TRUSTEE_SALE","TAX_SALE","TAX_LIEN_DEED"],"description":"The kind of auction the purchase deed records: TRUSTEE_SALE and SHERIFF_SALE count toward buys_at_auction, and the API shows the other three but never counts them. TRUSTEE_SALE: a lender's foreclosure sale by the trustee, cash and final on the day, without redemption. In Arizona the buyer pays a $10,000 deposit and the full bid by 5 pm the next business day. In Texas it is the first-Tuesday courthouse sale, in Washington the Friday sale at the county's designated place under RCW 61.24. SHERIFF_SALE: a judicial sale under court order. In Arizona it is an HOA or judgment-lien sale, cash but subject to the first mortgage and to a 30-day or 6-month redemption. In Washington it is a judicial mortgage foreclosure or lien sale under RCW 6.21, with an 8-month or 1-year redemption. In Washington the sale is subject to the senior lien only when it is a lien sale. HOA_TRUSTEE_SALE: a Texas homeowners association foreclosure recorded as a trustee's deed, cash, subject to the first lien and to a 180-day redemption. TAX_SALE: a Texas constable or taxing-unit tax sale, cash, with a 180-day or 2-year redemption. In Washington it is the county treasurer's deed after the tax foreclosure judgment, with no redemption after the sale. TAX_LIEN_DEED: an Arizona treasurer's deed to a tax-lien holder, mostly vacant land, not an auction of the house."},{"type":"null"}],"description":"The kind of auction when the purchase was a third-party auction purchase, for example TRUSTEE_SALE. Null otherwise, and in a market without published auction counts."}},"required":["id","kind","address_short","latitude","longitude","bought_on","bought_price","sold_on","sold_price","gross_profit","distance_miles","bought_from_wholesaler","bought_distressed","bought_auction_kind"],"additionalProperties":false,"description":"A trimmed deal used as proof on a buyer row: the nearest deals of that investor inside the geometry."},"ByBuyerStatus":{"type":"object","properties":{"registered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows whose buyer carries an investor id."},"unclassified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows whose buyer has a name but no investor classification (usually a household)."},"excluded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows whose buyer the registry deliberately left out: custodian trusts, relocation companies, auction houses and ambiguous surnames."},"unknown":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows with no named buyer on the deed."}},"required":["registered","unclassified","excluded","unknown"],"additionalProperties":false,"description":"Deal rows inside the geometry after the shared filters, by buyer status."},"ByChannel":{"type":"object","properties":{"from_wholesaler":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows whose bought_from_wholesaler is true: bought through a documented double close from a wholesaler, or from a known wholesaler. A contract assignment leaves no deed, so a row outside this count can be a wholesale buy too."},"from_investor":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows whose bought_from_investor is true: the seller carried an investor id."},"distressed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows whose bought_distressed is true: the purchase deed was a distressed sale (foreclosure, trustee, tax)."},"auction":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Rows whose bought_auction_kind is not null: the purchase deed was a third-party auction purchase of any kind. The shown-but-not-counted kinds HOA_TRUSTEE_SALE, TAX_SALE and TAX_LIEN_DEED count here, so this is not the count behind buys_at_auction. Null, never 0, where any market the location covers has meta.coverage[].auction_counted false. That market has no published auction counts, and such a purchase counts under distressed alone."},"other_or_unknown":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows in none of the four buckets: bought_from_wholesaler, bought_from_investor and bought_distressed each false or null, and bought_auction_kind null. A deal whose purchase deed is unknown lands here. Not a count of purchases from a homeowner: a contract assignment leaves no deed, so a wholesale buy can sit here too."}},"required":["from_wholesaler","from_investor","distressed","auction","other_or_unknown"],"additionalProperties":false,"description":"Deal rows inside the geometry after the shared filters, by the channel the investor bought through. Each named bucket counts the rows whose own flag is true. So one deal can sit in several, and the five do not sum to n_deals. Examples: a known wholesaler who is also a registered investor, or a distressed deed bought at auction. The bucket other_or_unknown is the rows in none of the four, so n_deals minus it is the rows in at least one."},"ParcelAddress":{"type":"object","properties":{"street":{"description":"Situs street line as the delivery formats it, for example \"4120 E Saguaro Blossom Dr\"; null when the delivery does not record it.","type":["string","null"]},"unit":{"description":"Unit, for example \"Unit 12\"; null on a single house.","type":["string","null"]},"city":{"description":"City, upper case; null when the delivery does not record it.","type":["string","null"]},"state":{"description":"State, 2 letters; null when the delivery does not record it.","type":["string","null"]},"zip":{"description":"5-digit ZIP; null when the delivery does not record it.","type":["string","null"]},"county_fips":{"description":"5-digit county FIPS; null when the delivery does not record it.","type":["string","null"]},"apn":{"description":"Assessor parcel number as recorded; null when the delivery does not record it.","type":["string","null"]},"latitude":{"anyOf":[{"type":"number","minimum":-90,"maximum":90,"description":"WGS84 latitude."},{"type":"null"}],"description":"WGS84 latitude of the parcel centre."},"longitude":{"anyOf":[{"type":"number","minimum":-180,"maximum":180,"description":"WGS84 longitude."},{"type":"null"}],"description":"WGS84 longitude of the parcel centre."},"census_tract":{"description":"Census tract; null when the delivery does not record it.","type":["string","null"]},"school_district":{"description":"School district as the delivery names it; null when the delivery does not record it.","type":["string","null"]}},"required":["street","unit","city","state","zip","county_fips","apn","latitude","longitude","census_tract","school_district"],"additionalProperties":false,"description":"The situs address and location keys of a parcel."},"ParcelGeneral":{"type":"object","properties":{"segment":{"anyOf":[{"type":"string","enum":["SFR","CONDO_TH","OTHER"],"description":"Parcel segment: SFR, CONDO_TH (condo or townhouse) or OTHER, a mixed bucket of manufactured, multi-family, land and commercial parcels."},{"type":"null"}],"description":"Parcel segment: SFR, CONDO_TH or OTHER. Null when the use code is unknown."},"property_type_category":{"description":"BatchData property type category, for example \"Residential\"; null when the delivery does not record it.","type":["string","null"]},"property_type_detail":{"description":"BatchData property type detail, for example \"Single Family Residential\"; null when the delivery does not record it.","type":["string","null"]},"land_use_code":{"description":"Standardised land use code; null when the delivery does not record it.","type":["string","null"]},"vacant":{"description":"True when the USPS marks the situs address vacant; null when the delivery does not record it.","type":["boolean","null"]},"mailing_address_vacant":{"description":"True when the delivery marks the owner's mailing address vacant; null when the delivery does not record it.","type":["boolean","null"]},"parcel_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Parcels under the same address; null when the delivery does not record it."}},"required":["segment","property_type_category","property_type_detail","land_use_code","vacant","mailing_address_vacant","parcel_count"],"additionalProperties":false,"description":"Classification and occupancy flags."},"ParcelBuilding":{"type":"object","properties":{"bedrooms":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Bedrooms; null when the delivery does not record it."},"bathrooms":{"description":"Bathrooms, halves allowed; null when the delivery does not record it.","type":["number","null"]},"sqft":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The living area, square feet; null when the delivery does not record it."},"total_building_sqft":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Total building area, square feet; null when the delivery does not record it."},"year_built":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Year built; null when the delivery does not record it."},"effective_year_built":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Effective year built after a major renovation; null when the assessor records no renovation."},"stories":{"description":"Stories; null when the delivery does not record it.","type":["number","null"]},"pool":{"description":"True when the assessor records a private pool; null when the delivery does not record it.","type":["boolean","null"]},"garage_spaces":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Garage parking spaces; null when the delivery does not record it."},"building_condition":{"description":"Assessor condition label; null when the delivery does not record it.","type":["string","null"]},"construction_type":{"description":"Construction type; null when the delivery does not record it.","type":["string","null"]},"building_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Buildings on the parcel; null when the delivery does not record it."},"unit_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Units on the parcel; null when the delivery does not record it."},"fireplace_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Fireplaces; null when the delivery does not record it."},"roof_type":{"description":"Roof type; null when the delivery does not record it.","type":["string","null"]},"heat_source":{"description":"Heat source; null when the delivery does not record it.","type":["string","null"]},"ac_source":{"description":"Air conditioning source; null when the delivery does not record it.","type":["string","null"]}},"required":["bedrooms","bathrooms","sqft","total_building_sqft","year_built","effective_year_built","stories","pool","garage_spaces","building_condition","construction_type","building_count","unit_count","fireplace_count","roof_type","heat_source","ac_source"],"additionalProperties":false,"description":"The structure as the assessor records it."},"ParcelLot":{"type":"object","properties":{"lot_sqft":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Lot size, square feet; null when the delivery does not record it."},"lot_acres":{"description":"Lot size, acres; null when the delivery does not record it.","type":["number","null"]},"zoning_code":{"description":"Zoning code; null when the delivery does not record it.","type":["string","null"]},"subdivision":{"description":"Subdivision name; null when the delivery does not record it.","type":["string","null"]},"section_township_range":{"description":"Section, township, range and meridian; null when the delivery does not record it.","type":["string","null"]}},"required":["lot_sqft","lot_acres","zoning_code","subdivision","section_township_range"],"additionalProperties":false,"description":"The lot and its legal description keys."},"OwnerProfile":{"type":"object","properties":{"as_of":{"type":"string","description":"The weekly delivery that carries the profile."},"properties_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Properties the owner holds across the country, as BatchData links them; null when the delivery does not record it."},"total_equity":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Estimated equity across the owner's properties; null when the delivery does not record it."},"total_estimated_value":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Estimated value across the owner's properties; null when the delivery does not record it."},"mortgages_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Open mortgages across the owner's properties; null when the delivery does not record it."},"mortgages_total_balance":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Estimated balance of those mortgages; null when the delivery does not record it."},"average_purchase_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Average purchase price across the owner's properties; null when the delivery does not record it."},"average_year_built":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Average year built across the owner's properties; null when the delivery does not record it."}},"required":["as_of","properties_count","total_equity","total_estimated_value","mortgages_count","mortgages_total_balance","average_purchase_price","average_year_built"],"additionalProperties":false,"description":"The owner's portfolio as the weekly delivery describes it in the Owner Profile block. It carries counts, equity and mortgages across every property the owner holds, not only this parcel."},"ParcelOwner":{"type":"object","properties":{"kind":{"anyOf":[{"type":"string","enum":["PERSON","TRUST","ENTITY","PUBLIC_INSTITUTIONAL"],"description":"Kind of the owner at the deed data end: PERSON, TRUST, ENTITY or PUBLIC_INSTITUTIONAL (a public body)."},{"type":"null"}],"description":"Null when the county roll does not say. Kind of the owner at the deed data end: PERSON, TRUST, ENTITY or PUBLIC_INSTITUTIONAL (a public body)."},"owner_occupied":{"description":"True when the owner's mailing address is the parcel itself; null when the delivery does not record it.","type":["boolean","null"]},"absentee":{"description":"True when the owner's mailing address is elsewhere; null when the delivery does not record it.","type":["boolean","null"]},"is_trust":{"description":"True when the owner is a trust; null when the delivery does not record it.","type":["boolean","null"]},"is_public":{"description":"True when the owner is a public body; null when the delivery does not record it.","type":["boolean","null"]},"holding_kind":{"anyOf":[{"type":"string","enum":["OWNER_OCCUPIED","ABSENTEE_INDIVIDUAL","ABSENTEE_ENTITY","RENTAL_REGISTERED","RENTAL_SIGNAL","UNKNOWN"],"description":"How the owner holds the parcel at the deed data end (meta.coverage[].data_end), read from the county owner roll behind the row. OWNER_OCCUPIED means the owner lives there, ABSENTEE_INDIVIDUAL a person whose mailing address is elsewhere, and ABSENTEE_ENTITY an LLC or trust. RENTAL_REGISTERED means the parcel is on the county rental registry. RENTAL_SIGNAL means an owner-attributed business-use short-term-rental licence in any market. In Texas it also means an absentee owner with no homestead exemption or a rental listing. The short_term_rental block says which. UNKNOWN means the county roll does not say."},{"type":"null"}],"description":"Null when unknown. How the owner holds the parcel at the deed data end (meta.coverage[].data_end), read from the county owner roll behind the row. OWNER_OCCUPIED means the owner lives there, ABSENTEE_INDIVIDUAL a person whose mailing address is elsewhere, and ABSENTEE_ENTITY an LLC or trust. RENTAL_REGISTERED means the parcel is on the county rental registry. RENTAL_SIGNAL means an owner-attributed business-use short-term-rental licence in any market. In Texas it also means an absentee owner with no homestead exemption or a rental listing. The short_term_rental block says which. UNKNOWN means the county roll does not say."},"held_since":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"When the current ownership started, YYYY-MM-DD."},"mailing_state":{"description":"The owner's mailing state, 2 letters (the full mailing address is not served on this host); null when the delivery does not record it.","type":["string","null"]},"profile":{"anyOf":[{"$ref":"#/components/schemas/OwnerProfile"},{"type":"null"}],"description":"The owner's portfolio from the Owner Profile block. Null when the parcel carries none, or when you did not request the owner_profile dataset."}},"required":["kind","owner_occupied","absentee","is_trust","is_public","holding_kind","held_since","mailing_state","profile"],"additionalProperties":false,"description":"The current owner: the facts, and the portfolio when requested. This host never names the holder."},"ParcelSale":{"type":"object","properties":{"last_sale_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The last sale date the deed feed summarises."},"last_sale_recording_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Its recording date."},"last_sale_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Its price; null when the deed carries no price. Also null when it carries a Washington recorder's nominal consideration ($200, $313, $370) on an excise-exempt transfer. The API serves that as no price."},"last_sale_document_type":{"description":"The deed type, for example \"Warranty Deed\"; null when the delivery does not record it.","type":["string","null"]},"last_sale_transaction_type":{"description":"The transaction type as the feed classifies it; null when the delivery does not record it.","type":["string","null"]},"last_sale_price_per_sqft":{"description":"Price per living square foot; null when the deed carries no price. Also null when it carries a Washington recorder's nominal consideration ($200, $313, $370) on an excise-exempt transfer. The API serves that as no price. Also null when the living area is unknown.","type":["number","null"]},"last_sale_mortgage_amount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The purchase mortgage recorded on the last sale; null when the deed feed records no purchase mortgage. Also null on every parcel of a market whose delivery does not record the column (meta.coverage[].parcel.sale_mortgage_measured false)."},"last_sale_lender":{"description":"Its lender; null when the deed feed records no purchase mortgage, and on every parcel where meta.coverage[].parcel.sale_mortgage_measured is false.","type":["string","null"]},"cash_sale_proxy":{"description":"True when the last sale carries a price and no purchase mortgage: a proxy for a cash sale, as the name says; null when the last sale carries no price, or when the parcel has no sale summary. Also null on every parcel of a market whose delivery records a purchase mortgage on fewer than one priced last sale in five. That market carries meta.coverage[].parcel.sale_mortgage_measured false. There the sale.cash_sale filter and the cash-buyer quicklist answer 422 cash_sale_unavailable.","type":["boolean","null"]},"prior_sale_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The sale before the last one."},"prior_sale_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Its price; null when the deed carries no price. Also null when it carries a Washington recorder's nominal consideration ($200, $313, $370) on an excise-exempt transfer. The API serves that as no price."},"last_purchase_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The registry's last arm's-length purchase deed on the parcel. This is God Mode's own rule, distinct from the feed's last sale."},"last_purchase_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Its price; null when the deed carries no price."}},"required":["last_sale_date","last_sale_recording_date","last_sale_price","last_sale_document_type","last_sale_transaction_type","last_sale_price_per_sqft","last_sale_mortgage_amount","last_sale_lender","cash_sale_proxy","prior_sale_date","prior_sale_price","last_purchase_date","last_purchase_price"],"additionalProperties":false,"description":"The last and prior sales as the deed feed summarises them, plus the registry's own last purchase."},"ParcelTax":{"type":"object","properties":{"assessed_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Total assessed value; null when the delivery does not record it."},"assessed_land":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Assessed land value; null when the delivery does not record it."},"assessed_improvement":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Assessed improvement value; null when the delivery does not record it."},"assessment_year":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Assessment year; null when the delivery does not record it."},"market_value_total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The assessor's total market value; null when the delivery does not record it."},"tax_amount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Annual tax amount; null when the delivery does not record it."},"tax_year":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Tax year; null when the delivery does not record it."},"tax_delinquent_year":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The year taxes went delinquent; null when the taxes are current."},"tax_exemptions":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Exemptions as the roll lists them, for example [\"Homestead\"]."}},"required":["assessed_total","assessed_land","assessed_improvement","assessment_year","market_value_total","tax_amount","tax_year","tax_delinquent_year","tax_exemptions"],"additionalProperties":false,"description":"Assessment and tax as the county roll carries them."},"ParcelListing":{"type":"object","properties":{"status":{"description":"The MLS status as the feed writes it, for example \"Active\", \"Pending\", \"Sold\", \"Off Market\"; null when the delivery does not record it.","type":["string","null"]},"status_category":{"description":"The feed's status category; null when the delivery does not record it.","type":["string","null"]},"price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The list price; null when off market."},"listed_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The original listing date of the current record."},"status_updated_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"When the status last changed."},"sold_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The sold date when the record is a sale."},"sold_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The sold price; null unless the record is a sale."},"is_rental":{"description":"True when the record is a rental listing; null when the delivery does not record it.","type":["boolean","null"]},"mls_number":{"description":"The MLS number; null when the delivery does not record it.","type":["string","null"]},"brokerage":{"description":"The listing brokerage; null when the delivery does not record it.","type":["string","null"]}},"required":["status","status_category","price","listed_on","status_updated_on","sold_on","sold_price","is_rental","mls_number","brokerage"],"additionalProperties":false,"description":"The newest MLS record the feed carries for the parcel."},"ParcelValuation":{"type":"object","properties":{"as_of":{"type":"string","description":"The delivery the AVM comes from. Dated: see meta.dated[]."},"estimated_value":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"BatchData's automated valuation; null when the slice carries no AVM for the parcel."},"range_low":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The low end of the valuation range; null when the slice carries no AVM for the parcel."},"range_high":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The high end; null when the slice carries no AVM for the parcel."},"confidence":{"description":"The valuation confidence score; null when the slice carries no AVM for the parcel.","type":["number","null"]},"avm_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The valuation date the file carried."},"equity_balance":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Estimated equity: value minus open lien balances; null without an AVM."},"equity_percent":{"description":"Equity as a percent of value; null without an AVM.","type":["number","null"]},"ltv":{"description":"Loan-to-value, percent; null without an AVM.","type":["number","null"]}},"required":["as_of","estimated_value","range_low","range_high","confidence","avm_date","equity_balance","equity_percent","ltv"],"additionalProperties":false,"description":"The AVM, equity and LTV at the slice date. A dated block: every response that carries it lists it in meta.dated[]."},"OpenLien":{"type":"object","properties":{"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Lien position, 1 is senior."},"lender_name":{"description":"The lender as recorded; null when the delivery does not record it.","type":["string","null"]},"lender_class":{"anyOf":[{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},{"type":"null"}],"description":"Null when lender_name is null. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"lender_id":{"anyOf":[{"type":"string","pattern":"^len_[0-9a-f]{12}$"},{"type":"null"}],"description":"The lender in the lender registry: the key to GET `/v1/lenders/{id}`, len_ followed by 12 hex characters. Null when the lender's spelling has no registry row. Three cases: a person-named lender below the person gate, a placeholder such as NOT AVAILABLE, or a market with no published lender registry (meta.coverage[].lenders null)."},"assigned_lender_name":{"description":"The lender named on the recorded assignment of the loan; null when the file records no assignment.","type":["string","null"]},"loan_amount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Original loan amount; null when the delivery does not record it."},"current_balance":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Estimated current balance at as_of; null when the delivery does not record it."},"interest_rate":{"description":"Estimated current rate at as_of, percent; null when the delivery does not record it.","type":["number","null"]},"estimated_payment":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Estimated monthly payment; null when the delivery does not record it."},"term_months":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Loan term, months; null when the delivery does not record it."},"due_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Maturity date."},"loan_type":{"description":"Loan type, for example \"New Conventional\", \"FHA\", \"VA\"; null when the delivery does not record it.","type":["string","null"]},"ltv":{"description":"This lien's LTV, percent; null without an AVM.","type":["number","null"]},"heloc":{"description":"True when the lien is a home equity line of credit; null when the delivery does not record it.","type":["boolean","null"]},"cash_purchase":{"description":"The file's cash-purchase flag on this lien; null when the file leaves it blank, which is most rows.","type":["boolean","null"]},"construction_loan":{"description":"True when a construction loan; null when the delivery does not record it.","type":["boolean","null"]},"standalone_refi":{"description":"True when a stand-alone refinance; null when the delivery does not record it.","type":["boolean","null"]},"transaction_type":{"description":"The transaction type recorded; null when the delivery does not record it.","type":["string","null"]},"recording_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Recording date."}},"required":["position","lender_name","lender_class","lender_id","assigned_lender_name","loan_amount","current_balance","interest_rate","estimated_payment","term_months","due_date","loan_type","ltv","heloc","cash_purchase","construction_loan","standalone_refi","transaction_type","recording_date"],"additionalProperties":false,"description":"One open lien at the slice date."},"MortgageRecord":{"type":"object","properties":{"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Slot in the recorded history. Slot 1 is the oldest kept slot, and the highest filled slot is the newest. A parcel with slot 5 filled lost older mortgages from the record."},"recording_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Recording date."},"sale_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The loan's own date as the file writes it."},"due_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Maturity date."},"lender_name":{"description":"The lender as recorded; null when the delivery does not record it.","type":["string","null"]},"lender_class":{"anyOf":[{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},{"type":"null"}],"description":"Null when lender_name is null. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"lender_id":{"anyOf":[{"type":"string","pattern":"^len_[0-9a-f]{12}$"},{"type":"null"}],"description":"The lender in the lender registry: the key to GET `/v1/lenders/{id}`, len_ followed by 12 hex characters. Null when the lender's spelling has no registry row. Three cases: a person-named lender below the person gate, a placeholder such as NOT AVAILABLE, or a market with no published lender registry (meta.coverage[].lenders null)."},"loan_amount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Loan amount; null when the delivery does not record it."},"interest_rate":{"description":"Rate at recording, percent; null when the delivery does not record it.","type":["number","null"]},"term_months":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Term, months; null when the delivery does not record it."},"loan_type":{"description":"Loan type; null when the delivery does not record it.","type":["string","null"]},"transaction_type":{"description":"The transaction type, for example purchase money or refinance; null when the delivery does not record it.","type":["string","null"]}},"required":["position","recording_date","sale_date","due_date","lender_name","lender_class","lender_id","loan_amount","interest_rate","term_months","loan_type","transaction_type"],"additionalProperties":false,"description":"One recorded mortgage in the parcel's history."},"InvoluntaryLien":{"type":"object","properties":{"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Slot, 1 is the newest."},"lien_type":{"description":"Lien type, for example \"Tax Lien\", \"Judgement\", \"Economic Lien\"; null when the delivery does not record it.","type":["string","null"]},"document_type":{"description":"Document type, for example \"Financing Statement\"; null when the delivery does not record it.","type":["string","null"]},"document_number":{"description":"Recorder document number; null when the delivery does not record it.","type":["string","null"]},"recording_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Recording date."},"filing_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Filing date."},"lien_amount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Lien amount; null when the file records no amount."},"judgement_amount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Judgement amount; null when the file records no amount."},"tax_period_end_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The tax period a tax lien covers."}},"required":["position","lien_type","document_type","document_number","recording_date","filing_date","lien_amount","judgement_amount","tax_period_end_date"],"additionalProperties":false,"description":"One involuntary lien at the slice date: a UCC filing, a judgement or a tax lien."},"FinancingSummary":{"type":"object","properties":{"as_of":{"type":"string","description":"The delivery the slice comes from. Dated: see meta.dated[]."},"open_lien_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Open liens at as_of. 0 is a value (free and clear); null when the slice carries no lien data for the parcel."},"open_lien_balance":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Estimated total open balance; null when the slice carries no lien data for the parcel."},"first_lien_lender":{"description":"The senior lien's lender; null when the parcel has no open lien.","type":["string","null"]},"first_lien_lender_class":{"anyOf":[{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},{"type":"null"}],"description":"Null when the parcel has no senior lien. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"first_lien_rate":{"description":"The senior lien's estimated rate, percent; null when the parcel has no open lien, or when the file carries no rate.","type":["number","null"]},"first_lien_balance":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The senior lien's estimated balance; null when the parcel has no open lien."},"has_heloc":{"description":"True when any open lien is a HELOC; null when the slice carries no lien data for the parcel.","type":["boolean","null"]},"cash_purchase":{"description":"The file's cash-purchase flag on the senior lien; null when the file leaves it blank, which is most rows.","type":["boolean","null"]},"free_and_clear":{"description":"True when open_lien_count is 0; null when the slice carries no lien data for the parcel.","type":["boolean","null"]},"involuntary_lien_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Involuntary liens on record at as_of; null when the slice carries no lien data for the parcel."},"last_mortgage_recording_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The recording date of the newest recorded mortgage."},"last_mortgage_lender":{"description":"Its lender; null when the file records no mortgage.","type":["string","null"]},"last_mortgage_lender_class":{"anyOf":[{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},{"type":"null"}],"description":"Null when the file records no mortgage. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"last_mortgage_amount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Its amount; null when the file records no mortgage."},"last_mortgage_rate":{"description":"Its rate, percent; null when the file records no mortgage, or when it carries no rate.","type":["number","null"]}},"required":["as_of","open_lien_count","open_lien_balance","first_lien_lender","first_lien_lender_class","first_lien_rate","first_lien_balance","has_heloc","cash_purchase","free_and_clear","involuntary_lien_count","last_mortgage_recording_date","last_mortgage_lender","last_mortgage_lender_class","last_mortgage_amount","last_mortgage_rate"],"additionalProperties":false,"description":"The financing summary of a parcel at the slice date, in one block. Dated: every response that serves it lists it in meta.dated[]."},"FinancingSummaryDetail":{"type":"object","properties":{"as_of":{"type":"string","description":"The delivery the slice comes from. Dated: see meta.dated[]."},"open_lien_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Open liens at as_of. 0 is a value (free and clear); null when the slice carries no lien data for the parcel."},"open_lien_balance":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Estimated total open balance; null when the slice carries no lien data for the parcel."},"first_lien_lender":{"description":"The senior lien's lender; null when the parcel has no open lien.","type":["string","null"]},"first_lien_lender_class":{"anyOf":[{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},{"type":"null"}],"description":"Null when the parcel has no senior lien. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"first_lien_rate":{"description":"The senior lien's estimated rate, percent; null when the parcel has no open lien, or when the file carries no rate.","type":["number","null"]},"first_lien_balance":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The senior lien's estimated balance; null when the parcel has no open lien."},"has_heloc":{"description":"True when any open lien is a HELOC; null when the slice carries no lien data for the parcel.","type":["boolean","null"]},"cash_purchase":{"description":"The file's cash-purchase flag on the senior lien; null when the file leaves it blank, which is most rows.","type":["boolean","null"]},"free_and_clear":{"description":"True when open_lien_count is 0; null when the slice carries no lien data for the parcel.","type":["boolean","null"]},"involuntary_lien_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Involuntary liens on record at as_of; null when the slice carries no lien data for the parcel."},"last_mortgage_recording_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The recording date of the newest recorded mortgage."},"last_mortgage_lender":{"description":"Its lender; null when the file records no mortgage.","type":["string","null"]},"last_mortgage_lender_class":{"anyOf":[{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},{"type":"null"}],"description":"Null when the file records no mortgage. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."},"last_mortgage_amount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Its amount; null when the file records no mortgage."},"last_mortgage_rate":{"description":"Its rate, percent; null when the file records no mortgage, or when it carries no rate.","type":["number","null"]},"first_lien_lender_id":{"anyOf":[{"type":"string","pattern":"^len_[0-9a-f]{12}$"},{"type":"null"}],"description":"The senior lien's lender in the lender registry: the key to GET `/v1/lenders/{id}`, len_ followed by 12 hex characters. Null when the lender's spelling has no registry row. Three cases: a person-named lender below the person gate, a placeholder such as NOT AVAILABLE, or a market with no published lender registry (meta.coverage[].lenders null)."},"last_mortgage_lender_id":{"anyOf":[{"type":"string","pattern":"^len_[0-9a-f]{12}$"},{"type":"null"}],"description":"The last recorded mortgage's lender in the lender registry: the key to GET `/v1/lenders/{id}`, len_ followed by 12 hex characters. Null when the lender's spelling has no registry row. Three cases: a person-named lender below the person gate, a placeholder such as NOT AVAILABLE, or a market with no published lender registry (meta.coverage[].lenders null)."}},"required":["as_of","open_lien_count","open_lien_balance","first_lien_lender","first_lien_lender_class","first_lien_rate","first_lien_balance","has_heloc","cash_purchase","free_and_clear","involuntary_lien_count","last_mortgage_recording_date","last_mortgage_lender","last_mortgage_lender_class","last_mortgage_amount","last_mortgage_rate","first_lien_lender_id","last_mortgage_lender_id"],"additionalProperties":false,"description":"The financing summary of a parcel at the slice date, in one block. It adds the registry id of the senior lien's lender and of the last recorded mortgage's lender beside their names. Dated: every response that serves it lists it in meta.dated[]."},"Financing":{"type":"object","properties":{"property_id":{"type":"string","pattern":"^prop_[0-9a-f]{32}$","description":"The parcel."},"as_of":{"type":"string","description":"The delivery the slice comes from."},"dated":{"type":"boolean","description":"True while the datasets are not in the current delivery."},"valuation":{"anyOf":[{"$ref":"#/components/schemas/ParcelValuation"},{"type":"null"}],"description":"The AVM block. Null when the slice carries no valuation for the parcel."},"summary":{"description":"The one-block summary, with the registry ids of its two lenders.","$ref":"#/components/schemas/FinancingSummaryDetail"},"open_liens":{"type":"array","items":{"$ref":"#/components/schemas/OpenLien"},"description":"Every open lien at as_of, senior first."},"mortgage_history":{"type":"array","items":{"$ref":"#/components/schemas/MortgageRecord"},"description":"The recorded mortgages, newest first."},"involuntary_liens":{"type":"array","items":{"$ref":"#/components/schemas/InvoluntaryLien"},"description":"The involuntary liens on record, newest first."}},"required":["property_id","as_of","dated","valuation","summary","open_liens","mortgage_history","involuntary_liens"],"additionalProperties":false,"description":"`GET /v1/properties/{id}/financing`: the parcel's valuation, open liens, mortgage history and involuntary liens at the slice date."},"Permit":{"type":"object","properties":{"id":{"type":"string","description":"Permit id, stable across snapshots (32 hex)."},"jurisdiction":{"description":"The issuing city or county, upper case; null when the delivery does not record it.","type":["string","null"]},"permit_number":{"description":"The jurisdiction's own number; null when the delivery does not record it.","type":["string","null"]},"type":{"description":"The jurisdiction's own type label; null when the delivery does not record it.","type":["string","null"]},"subtype":{"description":"The jurisdiction's own subtype; null when the delivery does not record it.","type":["string","null"]},"status":{"anyOf":[{"type":"string","enum":["final","active","inactive","in_review"],"description":"Permit status as the jurisdiction reports it. The values: final (closed out), active (issued, work under way), inactive (lapsed or closed, no final), in_review (applied for, not issued)."},{"type":"null"}],"description":"Null when the jurisdiction reports none. Permit status as the jurisdiction reports it. The values: final (closed out), active (issued, work under way), inactive (lapsed or closed, no final), in_review (applied for, not issued)."},"description":{"description":"The permit description as filed; null when the delivery does not record it.","type":["string","null"]},"tags":{"type":"array","items":{"type":"string"},"description":"The normalised work tags that apply, for example [\"Solar\"], [\"Pool and Hot Tub\"], [\"New Construction\"]. Empty when none."},"major_work":{"type":"boolean","description":"True when the tags include Addition, ADU, New Construction, Pool and Hot Tub or Solar."},"file_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Application date."},"issue_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Issue date."},"final_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Final inspection or close-out date."},"job_value":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Declared job value; null when the jurisdiction reports none. Most jurisdictions report none."},"fees":{"description":"Fees paid; null when the delivery does not record it.","type":["number","null"]},"inspection_pass_rate":{"description":"Share of inspections passed, 0 to 1; null when the jurisdiction reports no inspections.","type":["number","null"]},"approval_duration_days":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days from filing to issue; null when either date is null."},"construction_duration_days":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days from issue to final; null when either date is null."},"total_duration_days":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days from filing to final; null when either date is null."}},"required":["id","jurisdiction","permit_number","type","subtype","status","description","tags","major_work","file_date","issue_date","final_date","job_value","fees","inspection_pass_rate","approval_duration_days","construction_duration_days","total_duration_days"],"additionalProperties":false,"description":"One building permit on the parcel. The API never serves applicant names, phones and addresses."},"PermitSummary":{"type":"object","properties":{"as_of":{"type":"string","description":"The permit snapshot date."},"n_permits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Permits on the parcel, all time; null when the build has nothing to compute it from."},"n_permits_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Permits issued in the 24 months before as_of; null when the build has nothing to compute it from, or when the parcel's jurisdiction issued no permit in the 12 months before as_of. Then meta.coverage[].parcel.permits.jurisdictions[].windows_measured is false: the jurisdiction's feed is stale, so the API does not measure the window. Null there means unmeasured, not empty."},"last_permit_issue_date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The newest issue date."},"n_open_permits_12m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Permits active or in review that are older than 12 months at as_of; null when the build has nothing to compute it from, or when the parcel's jurisdiction issued no permit in the 12 months before as_of. Then meta.coverage[].parcel.permits.jurisdictions[].windows_measured is false: the jurisdiction's feed is stale, so the API does not measure the window. Null there means unmeasured, not empty."},"major_work_36m":{"description":"True when the jurisdiction issued a major-work permit in the 36 months before as_of. A major-work permit carries the tag Addition, ADU, New Construction, Pool and Hot Tub or Solar; null when the build has nothing to compute it from, or when the parcel's jurisdiction issued no permit in the 12 months before as_of. Then meta.coverage[].parcel.permits.jurisdictions[].windows_measured is false: the jurisdiction's feed is stale, so the API does not measure the window. Null there means unmeasured, not empty.","type":["boolean","null"]},"tags_24m":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"The distinct tags of the permits issued in the 24 months before as_of. Empty when none carries a tag; null when the parcel's jurisdiction issued no permit in the 12 months before as_of. Then meta.coverage[].parcel.permits.jurisdictions[].windows_measured is false: the jurisdiction's feed is stale, so the API does not measure the window. Null there means unmeasured, not empty."},"job_value_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The sum of the declared job values of those permits; null when none of them reported one, or when the parcel's jurisdiction issued no permit in the 12 months before as_of. Then meta.coverage[].parcel.permits.jurisdictions[].windows_measured is false: the jurisdiction's feed is stale, so the API does not measure the window. Null there means unmeasured, not empty."}},"required":["as_of","n_permits","n_permits_24m","last_permit_issue_date","n_open_permits_12m","major_work_36m","tags_24m","job_value_24m"],"additionalProperties":false,"description":"The parcel's permit activity in one block."},"Permits":{"type":"object","properties":{"property_id":{"type":"string","pattern":"^prop_[0-9a-f]{32}$","description":"The parcel."},"as_of":{"type":"string","description":"The permit snapshot date."},"summary":{"anyOf":[{"$ref":"#/components/schemas/PermitSummary"},{"type":"null"}],"description":"The aggregates. Null when the parcel carries no permit."},"permits":{"type":"array","items":{"$ref":"#/components/schemas/Permit"},"description":"Every permit on the parcel, newest issue date first."}},"required":["property_id","as_of","summary","permits"],"additionalProperties":false,"description":"`GET /v1/properties/{id}/permits`: every building permit on the parcel with the aggregates."},"HistoryEvent":{"type":"object","properties":{"id":{"type":"string","description":"Event id (32 hex)."},"week":{"type":"string","description":"The weekly file in which the change first appears, YYYY-MM-DD. Across a delivery gap the API dates the event to the first file after the gap, never to a fabricated week. The field span_weeks says how long the gap was."},"domain":{"type":"string","enum":["ownership","mailing","occupancy","vacancy","classification","structure","assessment","tax","sale","deed","listing","owner_profile","valuation","financing"],"description":"The domain of the weekly file an event comes from."},"kind":{"type":"string","enum":["owner_change","first_seen","deleted","removed","mailing_change","occupancy_change","classification_change","vacancy","vacancy_cleared","mailing_vacancy","structure_change","assessment","sale","deed","tax_delinquent","tax_cured","tax_change","listed","relist","price_cut","price_rise","sold","delist","status","portfolio_change","avm","new_mortgage","lien_released","involuntary_lien","financing_change"],"description":"What changed, listed by domain. Ownership has owner_change, first_seen, deleted and removed. Vacancy has vacancy, vacancy_cleared and mailing_vacancy, and tax has tax_delinquent, tax_cured and tax_change. Listing has listed, relist, price_cut, price_rise, sold, delist and status. Financing has new_mortgage, lien_released, involuntary_lien and financing_change. The other domains have one kind each: mailing_change, occupancy_change, classification_change, structure_change, assessment, sale, deed, portfolio_change (owner_profile), avm (valuation)."},"before":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The domain's columns before the change, keyed by the file's own column names. Null on a first sighting. This host does not serve owner names, mailing address, agent names, licences and keys, the listing office, borrowers or lien parties. The payload omits those columns."},"after":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"The domain's columns after the change. Null on a deletion. A deals-only key's payload omits the same columns."},"deed":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"On an owner_change, the deed that the same week's file carried: the document type, the sale price and the recording date. Null otherwise."},"span_weeks":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Weeks from the previous observation of the parcel to this one. The value is 1 on a normal week; null on the first sighting."}},"required":["id","week","domain","kind","before","after","deed","span_weeks"],"additionalProperties":false,"description":"One typed change on a parcel, from the week-over-week diff of the delivery files."},"HistoryCoverageEntry":{"type":"object","properties":{"first_week":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}]},"last_week":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}]}},"required":["first_week","last_week"],"additionalProperties":false,"description":"The weeks the lake covers one domain for."},"PropertyHistory":{"type":"object","properties":{"property_id":{"type":"string","pattern":"^prop_[0-9a-f]{32}$","description":"The parcel."},"coverage":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/HistoryCoverageEntry"},"description":"Per domain, the first and last week on record."},"summary":{"type":"object","properties":{"first_week":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The first week the history lake observed the parcel."},"last_week":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The last week the history lake recorded an event."},"n_events":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Events returned before the filters; null when the build has nothing to compute it from."},"owner_changes_3y":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Owner changes in the 3 years before the market's data end; null when the build has nothing to compute it from."},"last_owner_change":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The week of the last owner change."},"listing_cycles_1y":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Listings that started in the year before the market's data end; null when the build has nothing to compute it from."},"price_cuts_current_listing":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Price cuts since the current listing started; null when the build has nothing to compute it from."},"vacant_since":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The week the parcel became vacant, when it is still vacant at the market's data end. Null otherwise."},"delinquent_since":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The week taxes went delinquent, when they are still delinquent at the market's data end. Null otherwise."}},"required":["first_week","last_week","n_events","owner_changes_3y","last_owner_change","listing_cycles_1y","price_cuts_current_listing","vacant_since","delinquent_since"],"additionalProperties":false,"description":"The history summary the search filters read."},"events":{"type":"array","items":{"$ref":"#/components/schemas/HistoryEvent"},"description":"The events, newest first, after the domains and since filters."}},"required":["property_id","coverage","summary","events"],"additionalProperties":false,"description":"`GET /v1/properties/{id}/history`: what changed on the parcel, week by week, since the history lake began."},"ListingCycle":{"type":"object","properties":{"id":{"type":"string","description":"Cycle id (32 hex)."},"cycle_no":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"1 for the first cycle observed on the parcel."},"first_week":{"type":"string","description":"The week the history lake first saw the cycle."},"last_week":{"type":"string","description":"The week of its last event."},"listing_id":{"description":"The feed's listing id; null when the delivery does not record it.","type":["string","null"]},"listed_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The original listing date the feed carried."},"original_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The first list price seen; null when no event of the cycle carried a price."},"last_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The last list price seen; null when no event of the cycle carried a price."},"min_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The lowest list price seen; null when no event of the cycle carried a price."},"n_price_cuts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Price cuts in the cycle."},"n_price_rises":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Price rises in the cycle."},"status_path":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"The distinct statuses in order."},"outcome":{"type":"string","enum":["sold","canceled","expired","withdrawn","off_market","active","unknown"],"description":"How the cycle ended. The value sold means the cycle sold. The values canceled, expired, withdrawn and off_market mean the listing came off without a sale. The value active means the listing was still on the market at the last week. The value unknown means the last status was neither active nor terminal."},"sold_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The sold price; null unless the cycle sold with a price."},"sold_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The sold date."},"days_on_market":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days from listed_on to sold_on. Without sold_on, days from listed_on to the last event week; null without listed_on."},"price_path":{"type":"array","items":{"type":"object","properties":{"week":{"type":"string","description":"Calendar date, YYYY-MM-DD."},"price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The list price that week; null when the event carried no price."},"status":{"description":"The status that week; null when the delivery does not record it.","type":["string","null"]},"kind":{"type":"string","enum":["owner_change","first_seen","deleted","removed","mailing_change","occupancy_change","classification_change","vacancy","vacancy_cleared","mailing_vacancy","structure_change","assessment","sale","deed","tax_delinquent","tax_cured","tax_change","listed","relist","price_cut","price_rise","sold","delist","status","portfolio_change","avm","new_mortgage","lien_released","involuntary_lien","financing_change"],"description":"What changed, listed by domain. Ownership has owner_change, first_seen, deleted and removed. Vacancy has vacancy, vacancy_cleared and mailing_vacancy, and tax has tax_delinquent, tax_cured and tax_change. Listing has listed, relist, price_cut, price_rise, sold, delist and status. Financing has new_mortgage, lien_released, involuntary_lien and financing_change. The other domains have one kind each: mailing_change, occupancy_change, classification_change, structure_change, assessment, sale, deed, portfolio_change (owner_profile), avm (valuation)."}},"required":["week","price","status","kind"],"additionalProperties":false},"description":"Every listing event of the cycle in order."}},"required":["id","cycle_no","first_week","last_week","listing_id","listed_on","original_price","last_price","min_price","n_price_cuts","n_price_rises","status_path","outcome","sold_price","sold_on","days_on_market","price_path"],"additionalProperties":false,"description":"One listing cycle: from the first active sighting to sold, off market or still active at its last week."},"ListingHistory":{"type":"object","properties":{"property_id":{"type":"string","pattern":"^prop_[0-9a-f]{32}$","description":"The parcel."},"cycles":{"type":"array","items":{"$ref":"#/components/schemas/ListingCycle"},"description":"The cycles, newest first."}},"required":["property_id","cycles"],"additionalProperties":false,"description":"`GET /v1/properties/{id}/listing-history`: every listing cycle observed on the parcel."},"ChangeWeek":{"type":"object","properties":{"week":{"type":"string","description":"The weekly file."},"file_kind":{"description":"FULL or DELTA; null when the delivery does not record it.","type":["string","null"]},"parcels_observed":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Rows of the ZIP in that week's file. A FULL carries every parcel, a DELTA the changed ones; null when the build has nothing to compute it from."},"n_events":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Events of the week."},"metrics":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["number","null"]},"description":"The requested metrics for the week."}},"required":["week","file_kind","parcels_observed","n_events","metrics"],"additionalProperties":false,"description":"One week of a ZIP's change series."},"MarketChanges":{"type":"object","properties":{"market":{"type":"string","description":"The market."},"zip":{"type":"string","description":"The ZIP the series is for."},"first_week":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The first week in the returned window (weeks[0]). Null when the ZIP has no weeks. The lake's own first week is meta.coverage[].parcel.history.first_week."},"last_week":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The last week in the returned window (the last entry of weeks[]). Null when the ZIP has no weeks. The lake's own last week is meta.coverage[].parcel.history.last_week."},"weeks_applied":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The window the API applied: the weeks you asked for, or 52 on Free and Starter (the plan clamp). The list weeks[] holds at most this many entries. It holds fewer when the lake has fewer weeks for the ZIP."},"weeks":{"type":"array","items":{"$ref":"#/components/schemas/ChangeWeek"},"description":"The weeks, oldest first."},"totals":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["number","null"]},"description":"Each requested metric, summed over the weeks. For the median AVM move the API averages the weeks instead."}},"required":["market","zip","first_week","last_week","weeks_applied","weeks","totals"],"additionalProperties":false,"description":"`GET /v1/markets/{market}/changes`: the weekly change series of one ZIP."},"ParcelHistorySummary":{"type":"object","properties":{"first_week":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The first week the history lake observed the parcel."},"last_week":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The last week the history lake recorded an event."},"n_events":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Events on record; null when the build has nothing to compute it from."},"owner_changes_3y":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Owner changes in the 3 years before the data end; null when the build has nothing to compute it from."},"last_owner_change":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The week of the last owner change."},"listing_cycles_1y":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Listings started in the year before the data end; null when the build has nothing to compute it from."},"price_cuts_current_listing":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Price cuts since the current listing started; null when the build has nothing to compute it from."},"last_delist":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The week of the last delisting."},"vacant_since":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The week the parcel became vacant, when it is still vacant at the data end."},"delinquent_since":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The week taxes went delinquent, when they are still delinquent at the data end."},"last_new_mortgage":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The week of the last new mortgage (dated window)."}},"required":["first_week","last_week","n_events","owner_changes_3y","last_owner_change","listing_cycles_1y","price_cuts_current_listing","last_delist","vacant_since","delinquent_since","last_new_mortgage"],"additionalProperties":false,"description":"The parcel's history in one block. Null outside the history lake's ZIP set."},"ParcelSearchRow":{"type":"object","properties":{"id":{"type":"string","pattern":"^prop_[0-9a-f]{32}$","description":"Parcel id, the key to every other property route."},"market":{"type":"string","description":"The market the parcel belongs to."},"distance_miles":{"description":"Miles from the point or the property_id centre. Null without one.","type":["number","null"]},"address":{"$ref":"#/components/schemas/ParcelAddress"},"general":{"$ref":"#/components/schemas/ParcelGeneral"},"building":{"$ref":"#/components/schemas/ParcelBuilding"},"lot":{"$ref":"#/components/schemas/ParcelLot"},"owner":{"anyOf":[{"$ref":"#/components/schemas/ParcelOwner"},{"type":"null"}],"description":"Null when you did not request the owner dataset."},"sale":{"anyOf":[{"$ref":"#/components/schemas/ParcelSale"},{"type":"null"}],"description":"Null when you did not request the sale dataset."},"tax":{"anyOf":[{"$ref":"#/components/schemas/ParcelTax"},{"type":"null"}],"description":"Null when you did not request the tax dataset."},"listing":{"anyOf":[{"$ref":"#/components/schemas/ParcelListing"},{"type":"null"}],"description":"Null when you did not request the listing dataset, or the parcel carries no MLS record."},"valuation":{"anyOf":[{"$ref":"#/components/schemas/ParcelValuation"},{"type":"null"}],"description":"Dated. Null when you did not request it, or the slice carries no AVM for the parcel."},"financing":{"anyOf":[{"$ref":"#/components/schemas/FinancingSummary"},{"type":"null"}],"description":"Dated. Null when you did not request it, or the slice carries no row for the parcel."},"permits":{"anyOf":[{"$ref":"#/components/schemas/PermitSummary"},{"type":"null"}],"description":"Null when you did not request it, or the parcel carries no permit."},"history":{"anyOf":[{"$ref":"#/components/schemas/ParcelHistorySummary"},{"type":"null"}],"description":"Null when you did not request it, or the parcel is outside the history lake's ZIP set."},"quicklists":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Every quicklist the parcel matches, when you requested the quicklists dataset. Null otherwise."}},"required":["id","market","distance_miles","address","general","building","lot","owner","sale","tax","listing","valuation","financing","permits","history","quicklists"],"additionalProperties":false,"description":"One parcel of a search result: the address and assessor blocks always, the other blocks when datasets names them."},"ParcelSearchSummary":{"type":"object","properties":{"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The count of matching parcels when count_only is true. Null on a paged request (page the rows instead)."},"datasets":{"type":"array","items":{"type":"string"},"description":"The datasets the rows carry."},"dated_filters":{"type":"array","items":{"type":"string"},"description":"The filter groups, quicklists and sorts of this request that read dated columns. Empty when none do."}},"required":["total","datasets","dated_filters"],"additionalProperties":false,"description":"What the request asked for and, on count_only, how many parcels match."},"BuyerMatch":{"type":"object","properties":{"investor":{"description":"Who the buyer is and what they do across the market, with member_names[] for the name join.","$ref":"#/components/schemas/InvestorListItem"},"in_radius":{"$ref":"#/components/schemas/InRadius"},"score":{"type":"number","description":"Fit for the subject, 0 to 1, best first, rounded to 4 decimals: base_score x activity_multiplier. With the default w_activity=0 the multiplier is 1 and score equals base_score, gate x the weighted mean of the factor values in reasons[]. Compare within one response only. A different subject, radius, weight set or w_activity is a different scale."},"gate":{"type":"number","description":"1 when the investor bought in the last 3 years before the data end date. 0.5 otherwise, which includes an investor that never bought. The API multiplies the score by it, so a dormant investor never outranks an active one with the same factors."},"base_score":{"type":"number","description":"The score before the activity signal, 0 to 1, rounded to 4 decimals: gate x sum(weight x value) over reasons[]. The weights sum to 1."},"activity_multiplier":{"type":"number","description":"What the activity signal did to the score, 0.01 to 1, rounded to 4 decimals: buyer_signal.activity_p_180 raised to the power w_activity. When that probability is null, the API uses the dormant rate the w_activity parameter documents. 1 with the default w_activity=0. The formula is score = base_score x activity_multiplier."},"reasons":{"type":"array","items":{"$ref":"#/components/schemas/MatchReason"},"description":"One entry per factor the API can score, in plan order: proximity, recency, price_fit, strategy, segment, wholesale_buyer, resale_fit. A factor without its input is absent, and the API redistributes its weight. Such an input is an asking price, a condition or priced purchases. The activity signal is not a factor and has no entry. Show detail to the user as it is."},"sample_deals":{"type":"array","items":{"$ref":"#/components/schemas/SampleDeal"},"description":"Up to 5 of their deals inside the geometry. Nearest first, or newest first when the request has no reference point. They are the proof shown under the row. id opens `/v1/deals/{id}`."},"buyer_signal":{"anyOf":[{"$ref":"#/components/schemas/BuyerSignal"},{"type":"null"}],"description":"The operator this investor belongs to (investor.operator_id), its capital cycle and its probability of buying in the next 180 days after the data end. Served to every key. Null for a market without a built buyer signal, and when the investor has no signal row."},"listings":{"anyOf":[{"$ref":"#/components/schemas/InvestorListings"},{"type":"null"}],"description":"What the investor has on the market right now, measured at listings_data_end: their holdings listed ACTIVE or PENDING in the MLS feed. Not a factor of the score. Served to every key. Null for a market without published listing tables. Zeros when the market has them and nothing is listed."},"wholesale_purchases":{"anyOf":[{"$ref":"#/components/schemas/InvestorWholesale"},{"type":"null"}],"description":"What the investor bought off Investorlift listings per the recorded deeds: counts by window, the last one and the companies they buy from. Not a factor of the score. Served to every key. Null for a market without published wholesale tables. Zeros when the market has them and the investor never bought one."},"str":{"anyOf":[{"$ref":"#/components/schemas/InvestorStr"},{"type":"null"}],"description":"How many holdings of the investor carry a business-use short-term-rental licence attributed to them, from the rolls of the cities. Not a factor of the score. Served to every key. Null for a market without published short-term rental tables. Zeros when the market has them and the investor holds no such parcel."}},"required":["investor","in_radius","score","gate","base_score","activity_multiplier","reasons","sample_deals","buyer_signal","listings","wholesale_purchases","str"],"description":"One ranked buyer for the subject property."},"UnregisteredBuyer":{"type":"object","properties":{"state":{"description":"2-letter state of the mailing address of the buyer, when known. Null otherwise.","type":["string","null"]},"n_events":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Their deal rows inside the geometry after the filters (usually 1)."},"last_bought_on":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Their last purchase inside the geometry, YYYY-MM-DD. Null when none was a purchase."},"nearest_distance_miles":{"description":"Miles from the reference point to their nearest deal here, rounded to 2 decimals. Null without a reference point.","type":["number","null"]},"buyer_status":{"type":"string","enum":["registered","unclassified","excluded","unknown"],"description":"Here only unclassified, a named buyer that is not an investor, or excluded with include_excluded=true. The buyer's standing in the registry: registered (has an investor id), unclassified, excluded or unknown (the deed names no buyer). Unclassified: a named buyer the registry did not classify as an investor, usually a household. Excluded: a named buyer the registry deliberately left out. Those are custodian trusts, relocation companies, auction houses and ambiguous surnames."},"buyer_exclusion":{"anyOf":[{"type":"string","enum":["INSTITUTION","AMBIGUOUS_NAME","POOLED_NAME"],"description":"Why an excluded buyer has no investor id. INSTITUTION: a custodian, a relocation company or an auction house. AMBIGUOUS_NAME: a bare surname. POOLED_NAME: a name that many unrelated people share."},{"type":"null"}],"description":"Null for unclassified buyers. Why an excluded buyer has no investor id. INSTITUTION: a custodian, a relocation company or an auction house. AMBIGUOUS_NAME: a bare surname. POOLED_NAME: a name that many unrelated people share."},"score":{"type":"number","description":"Proximity and recency only, best first, rounded to 4 decimals. The scale is 0 to 1, the same as data[].base_score with the other weights set to 0. The weight w_activity does not apply to the unregistered tail: nothing here has a buyer signal."}},"required":["state","n_events","last_bought_on","nearest_distance_miles","buyer_status","buyer_exclusion","score"],"description":"An id-less buyer inside the geometry: a household or an unclassified name that bought here. A lead, not a ranked investor."},"MatchSummary":{"type":"object","properties":{"by_buyer_status":{"type":"object","properties":{"registered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deal rows inside the geometry after the filters whose buyer carries an investor id."},"unclassified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows whose buyer has a name but no investor classification (usually a household)."},"excluded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows whose buyer the registry deliberately left out: custodian trusts, relocation companies, auction houses and ambiguous surnames."},"unknown":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows with no named buyer on the deed."}},"required":["registered","unclassified","excluded","unknown"],"additionalProperties":false,"description":"Deal rows inside the geometry after the shared filters, by buyer status. Buyers without an investor id count here too, but the API does not rank them."},"n_investors_ranked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Investors with an id that passed the filters and got a score: the total the pages walk. Paged lists carry no total."},"n_unpriced":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deal rows inside the geometry with no price on the deed."},"n_undated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deal rows inside the geometry with no purchase date."},"unregistered":{"description":"Only with include_unregistered=true: the id-less buyers inside the geometry, best first, at most 200. Excluded groups need include_excluded=true.","type":"array","items":{"$ref":"#/components/schemas/UnregisteredBuyer"}}},"required":["by_buyer_status","n_investors_ranked","n_unpriced","n_undated"],"additionalProperties":false,"description":"Counts for the whole geometry, not only the page, plus the unregistered tail when you ask for it."},"CoverageScopeItem":{"type":"object","properties":{"key":{"type":"string","description":"The item's key at the dataset's grain: a 5-digit county FIPS, an upper-case jurisdiction or permit issuer name, or a 5-digit ZIP. A blank issuer is the empty string."},"name":{"description":"The county name for a county item; null for a jurisdiction or a ZIP.","type":["string","null"]},"status":{"type":"string","enum":["served","partial","not_measured","not_published","not_applicable"],"description":"The item's own status. Served: the API publishes the dataset for the whole market, or for every item of its scope it can serve. Partial: the API serves at least one item of the scope and not every item it can serve. Not_measured: the build ran and the delivery cannot measure the fact. No build fixes it, so do not wait. Not_published: the tables are absent or unbuilt for the market. A later build fixes it, so wait. Not_applicable: a scope item the API can never serve, for example a city with no licence requirement. It is never the status of a whole dataset."},"gate":{"anyOf":[{"type":"string","enum":["outside_coverage","listings_unavailable","agents_unavailable","wholesale_unavailable","auction_unavailable","str_unavailable","parcels_unavailable","history_unavailable","cash_sale_unavailable","lenders_unavailable","addresses_unavailable","dated_refused"]},{"type":"null"}],"description":"The error code a data call meets for this item alone. A county outside the lender registry reads outside_coverage. A ZIP outside the lake reads history_unavailable. Null where the API serves the item. Also null for an unserved short-term rental jurisdiction, because the filters answer an empty page there, not an error."},"as_of":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The item's own date: a county's last deed date, a jurisdiction's snapshot date, or a permit issuer's newest issue date. Null where nothing is loaded."},"reason":{"description":"For a short-term rental jurisdiction, its coverage_reason: LOADED_SERVED, LOADED_UNVALIDATED, LOADED_COUNTS_ONLY, REQUIRED_NOT_PUBLISHED, NO_REQUIREMENT or NOT_SURVEYED. Null elsewhere.","type":["string","null"]},"regime":{"description":"For a short-term rental jurisdiction, if it requires a licence: REQUIRED, NOT_REQUIRED or UNKNOWN. Null elsewhere.","type":["string","null"]},"feed_stale":{"description":"For a short-term rental jurisdiction, true when this week's feed failed its freshness rule and the API serves the last good snapshot. Null elsewhere.","type":["boolean","null"]},"licence_start":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"For a short-term rental jurisdiction, the earliest date a licence can exist there. Null elsewhere, and null when unknown."},"counts":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},{"type":"null"}],"description":"The counts the source row records for the item. A jurisdiction carries n_licensed, n_pending, n_expired and n_advertised. A permit issuer carries n_permits. Null for a county and for a ZIP. A count itself is null where the jurisdiction is not loaded, because a missing measurement is not a zero."}},"required":["key","name","status","gate","as_of","reason","regime","feed_stale","licence_start","counts"],"additionalProperties":false,"description":"One item of a dataset's scope, at the grain of the dataset: a county, a city-limit jurisdiction, a permit issuer or a ZIP. Each item carries its own status, gate and date."},"DatasetCoverage":{"type":"object","properties":{"status":{"type":"string","enum":["served","partial","not_measured","not_published"],"description":"The dataset's status for the market. Served: the API publishes the dataset for the whole market, or for every item of its scope it can serve. Partial: the API serves at least one item of the scope and not every item it can serve. Not_measured: the build ran and the delivery cannot measure the fact. No build fixes it, so do not wait. Not_published: the tables are absent or unbuilt for the market. A later build fixes it, so wait. Not_applicable: a scope item the API can never serve, for example a city with no licence requirement. It is never the status of a whole dataset."},"dated":{"type":"boolean","description":"True when the dataset is a snapshot valued at as_of and every response that carries a value from it stamps meta.dated[]. The financing slice is dated, and so is the lender registry built from it. Independent of status: a dataset can be partial and dated at once. A dated set never refreshes. With require_current it answers 422 dated_refused."},"stale":{"description":"True when the as-of date failed its freshness rule against the clock of the request. Deeds follow the 45-day rule, and short-term rentals the weekly feed rule of a served jurisdiction. Null where no rule exists: listings, agents, wholesale, parcels and lenders. A dated set never refreshes, and a stale one is late.","type":["boolean","null"]},"as_of":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The dataset's date, one per dataset. Deeds carry the last deed date, listings the end of the listing feed, and wholesale the Investorlift export date. Short-term rentals carry the snapshot date, parcels the deed end of the layer, and financing the slice date. Permits carry the snapshot date, owner_profile the delivery date, history the last week of the lake, and lenders the slice date. Null where the API does not publish the dataset. Also null for the auction counts, which carry no date of their own."},"gate":{"anyOf":[{"type":"string","enum":["outside_coverage","listings_unavailable","agents_unavailable","wholesale_unavailable","auction_unavailable","str_unavailable","parcels_unavailable","history_unavailable","cash_sale_unavailable","lenders_unavailable","addresses_unavailable","dated_refused"]},{"type":"null"}],"description":"For not_published and not_measured, the error code a data call meets when it needs the dataset. The codes are listings_unavailable, agents_unavailable, wholesale_unavailable, auction_unavailable, str_unavailable, parcels_unavailable, history_unavailable, cash_sale_unavailable, lenders_unavailable and addresses_unavailable. Null for served and partial. Each scope item then carries its own code."},"granularity":{"type":"string","enum":["market","county","jurisdiction","zip"],"description":"The grain of the dataset. Deeds and lenders are decided at county grain. Short-term rentals and permits are decided at jurisdiction grain. The history lake is decided at zip grain. Every other dataset is decided at market grain."},"scope":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["counties","jurisdictions","zips"],"description":"counties, jurisdictions or zips."},"items":{"type":"array","items":{"$ref":"#/components/schemas/CoverageScopeItem"},"description":"Every item, served or not."}},"required":["kind","items"],"additionalProperties":false},{"type":"null"}],"description":"The list of items at the grain of the dataset, with a status per item. Deeds lists the counties of the market with their deed ends. Lenders lists every county of the market and the registry's cover. Short-term rentals lists every jurisdiction, permits every issuer, and history every ZIP the lake covers. Null for a market-grain dataset, and null where the API publishes nothing."},"features":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"boolean"}},{"type":"null"}],"description":"Lenders only: the per-market *_measured flags of the registry: purchase_measured, investor_lending_measured, flips_measured, borrowers_measured, takebacks_measured and counties_measured. They are features of one dataset, not statuses. Null elsewhere."},"place_status":{"description":"Present only when you gave a place: what this place gets from this dataset at the grain of the dataset. served or outside. Null when the input cannot decide the grain. A bare point decides neither the lender registry nor a jurisdiction. A ZIP and a county decide no jurisdiction.","anyOf":[{"type":"string","enum":["served","outside"]},{"type":"null"}]}},"required":["status","dated","stale","as_of","gate","granularity","scope","features"],"additionalProperties":false,"description":"One dataset of one market: its status, its dated and stale flags and its as-of date. It also carries the error a call meets where the API does not serve it, and its scope."},"CoverageMarket":{"type":"object","properties":{"market":{"type":"string","minLength":1,"maxLength":16,"description":"Market code; the loaded markets are in meta.coverage[]."},"state":{"type":"string","description":"2-letter state of the market. The loaded markets and their states are in meta.coverage[]."},"label":{"type":"string","description":"The display name of the market, for example \"Phoenix metro\". The county names and the state where none is set."},"stage":{"type":"string","enum":["general","beta"],"description":"general, or beta while the pricing pages label the market so."},"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. 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; null for county and metro markets."},"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","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 last deed date."},"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."},"point_tolerance_miles":{"type":"number","description":"How far outside bbox a point can lie and still get an answer, in miles."},"n_parcels":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Parcels in the loaded area; null when not recorded."},"data_end":{"type":"string","description":"The last deed date in the market, YYYY-MM-DD."},"dataset_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Version of the loaded data for this market; the same value meta.coverage[].dataset_version carries."},"loaded_at":{"type":"string","description":"When this data version went live, ISO 8601."},"stale":{"type":"boolean","description":"True when data_end is more than 45 days before the time of the request."},"datasets":{"type":"object","properties":{"deeds":{"$ref":"#/components/schemas/DatasetCoverage"},"listings":{"$ref":"#/components/schemas/DatasetCoverage"},"agents":{"$ref":"#/components/schemas/DatasetCoverage"},"wholesale":{"$ref":"#/components/schemas/DatasetCoverage"},"auction":{"$ref":"#/components/schemas/DatasetCoverage"},"str":{"$ref":"#/components/schemas/DatasetCoverage"},"parcels":{"$ref":"#/components/schemas/DatasetCoverage"},"financing":{"$ref":"#/components/schemas/DatasetCoverage"},"permits":{"$ref":"#/components/schemas/DatasetCoverage"},"owner_profile":{"$ref":"#/components/schemas/DatasetCoverage"},"history":{"$ref":"#/components/schemas/DatasetCoverage"},"cash_sale":{"$ref":"#/components/schemas/DatasetCoverage"},"lenders":{"$ref":"#/components/schemas/DatasetCoverage"},"addresses":{"$ref":"#/components/schemas/DatasetCoverage"}},"required":["deeds","listings","agents","wholesale","auction","str","parcels","financing","permits","owner_profile","history","cash_sale","lenders","addresses"],"additionalProperties":false,"description":"The matrix row of this market: one cell per dataset key, in the order of the keys."}},"required":["market","state","label","stage","universe_kind","universe_zips","counties","bbox","point_tolerance_miles","n_parcels","data_end","dataset_version","loaded_at","stale","datasets"],"additionalProperties":false,"description":"One loaded market with its coverage matrix: the area, the version, the freshness, and one cell per dataset with its status there."},"CoveragePlace":{"type":"object","properties":{"input":{"type":"object","properties":{"kind":{"type":"string","enum":["point","county","zip","market"],"description":"The lookup that ran: point (lat and lng), county, zip or market."},"value":{"type":"string","description":"The value the API resolved: \"lat,lng\", the county as you gave it, the ZIP, or the market code."}},"required":["kind","value"],"additionalProperties":false,"description":"The place that was asked about."},"status":{"type":"string","enum":["covered","outside"],"description":"covered when at least one loaded market admits the place. outside when none does. Never a 422: this route answers the question the data routes refuse."},"markets":{"type":"array","items":{"type":"string","minLength":1,"maxLength":16},"description":"The market codes that cover the place, in load order. [] when outside."},"counties":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"fips":{"type":"string","description":"5-digit county FIPS."},"name":{"type":"string","description":"County name."}},"required":["fips","name"],"additionalProperties":false}},{"type":"null"}],"description":"The counties the input resolved to, by ascending FIPS. A county name that two served states share gives one county per state, so read the FIPS, not the first row. A ZIP input gives every county the ZIP touches, largest land share first, through the public ZIP-to-county crosswalk. Null for a point or a market code."}},"required":["input","status","markets","counties"],"additionalProperties":false,"description":"The place lookup: the place you asked about, if a loaded market covers it, which markets, and the counties it resolved to."},"PlannedMarket":{"type":"object","properties":{"market":{"type":"string","minLength":1,"maxLength":16,"description":"The code the market will load under."},"label":{"type":"string","description":"The market's display name."},"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":"5-digit county FIPS."},"name":{"type":"string","description":"County name."}},"required":["fips","name"],"additionalProperties":false},"description":"The counties the build intends to load."},"datasets":{"type":"array","items":{"type":"string","enum":["deeds","listings","agents","wholesale","auction","str","parcels","financing","permits","owner_profile","history","cash_sale","lenders","addresses"],"description":"A dataset a market can lack. The keys are deeds, listings, agents, wholesale, auction, str, parcels, financing, permits, owner_profile, history, cash_sale, lenders and addresses. Deeds carries the deals, the investors and the registry, and listings the MLS listings. Agents carries the listing agents, wholesale the Investorlift listings, and auction the foreclosure-auction and REO counts. Str carries the short-term rental rolls, and parcels the parcel layer and the property search. Financing carries the dated financing, lien and valuation slice, and history the weekly history lake. Cash_sale carries the cash-sale proxy, lenders the lender registry, and addresses the lookup by street address."},"description":"The datasets the build intends to serve."},"status":{"type":"string","enum":["planned","building"],"description":"planned: decided, not started. building: the chain runs on a build database, and the production publish is a separate step."},"since":{"type":"string","description":"The day the row was listed, YYYY-MM-DD."},"target":{"description":"A quarter such as 2027-Q1 when one is decided; null otherwise.","type":["string","null"]},"label_kind":{"type":"string","const":"intent","description":"Always \"intent\": a planned row is intent, not a commitment. The Developer Agreement promises no refresh cadence and no continuity, and the list can change without notice."},"note":{"description":"One sentence of context, or null.","type":["string","null"]}},"required":["market","label","state","counties","datasets","status","since","target","label_kind","note"],"additionalProperties":false,"description":"A market Investorlift intends to serve and this host does not serve yet, as labelled intent. It leaves this list the day its tables are published, and appears in markets[] instead."},"CoverageData":{"type":"object","properties":{"markets":{"type":"array","items":{"$ref":"#/components/schemas/CoverageMarket"},"description":"Every loaded market with its matrix. With a place, only the markets that cover it, and [] when none does."},"place":{"anyOf":[{"$ref":"#/components/schemas/CoveragePlace"},{"type":"null"}],"description":"The place lookup that ran. Null when you gave no place."},"planned":{"type":"array","items":{"$ref":"#/components/schemas/PlannedMarket"},"description":"The markets Investorlift intends to serve and this host does not serve yet, as labelled intent. A code this host has loaded is never listed here."}},"required":["markets","place","planned"],"additionalProperties":false,"description":"Which data is available where: the coverage matrix of every loaded market, the place lookup when you asked one, and the planned markets."},"DealCells":{"type":"object","properties":{"res":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The H3 resolution the cells are at: 7 or 8, as requested."},"cells":{"type":"array","items":{"type":"string"},"description":"H3 cell ids as hex strings, for example \"8829a1d0e5fffff\", in cell-id order. Every array below has one entry per cell at the same position."},"n":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":"Deals in the cell after the filters."},"n_flips":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":"Of those, flips."},"n_wholesales":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":"Of those, wholesales. A wholesale is a resale in under 30 days, or a chain resale or a round trip within 90 days."},"n_holds":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":"Of those, parcels an investor still holds."},"n_long_holds":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":"Of those, held over a year and then resold."},"n_other":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":"Of those, other investor resales. Examples: a loss, a thin margin, a builder's new home resold, an iBuyer resale."},"n_builds":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":"Of those, builds: lots or teardowns a registered investor bought, built on, then sold, under the bounds of the build kind. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."},"n_investors":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":"Distinct registered investors behind the deals in the cell. The count leaves out buyers without an investor id."}},"required":["res","cells","n","n_flips","n_wholesales","n_holds","n_long_holds","n_other","n_builds","n_investors"],"additionalProperties":false,"description":"Deal counts per H3 cell as parallel arrays: the zoomed-out map layer."},"SummaryYear":{"type":"object","properties":{"year":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Four-digit purchase year, for example 2024. Null for the bucket of deals with no purchase date. That bucket comes last."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deals bought that year after the filters."},"flip":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, flips."},"wholesale":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, wholesales."},"hold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, parcels an investor still holds."},"long_hold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, held over a year and then resold."},"other":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, other investor resales."},"build":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of those, builds, under the bounds of the build kind. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."}},"required":["year","n","flip","wholesale","hold","long_hold","other","build"],"additionalProperties":false,"description":"Deals bought in one year, by kind."},"DealSummaryStats":{"type":"object","properties":{"n_deals":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deal rows inside the geometry after the filters."},"by_kind":{"type":"object","properties":{"flip":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Flips: bought, fixed and resold within about a year."},"wholesale":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Wholesales: resold in under 30 days, or a chain resale or round trip within 90."},"hold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Holds: bought and held at the deed data end."},"long_hold":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Long holds: held over a year, then sold."},"other":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Other investor resales: not a clean flip."},"build":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Builds: lots or teardowns a registered investor bought, built on, then sold, under the bounds of the build kind. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."}},"required":["flip","wholesale","hold","long_hold","other","build"],"additionalProperties":false,"description":"Rows per deal kind."},"by_buyer_status":{"$ref":"#/components/schemas/ByBuyerStatus"},"by_channel":{"$ref":"#/components/schemas/ByChannel"},"n_investors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct registered investors behind those rows."},"n_parcels":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Distinct parcels: a parcel with several deals counts once."},"n_unpriced":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows with no price on the deed."},"n_undated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows with no purchase date."},"median_bought_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median purchase price over priced rows, whole dollars."},"median_sold_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median resale price over priced resold rows."},"total_volume":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Sum of purchase prices over priced rows, whole dollars."},"median_hold_days":{"description":"Median days from purchase to resale over resold rows.","type":["number","null"]},"median_gross_profit":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Median sold minus bought over resold rows, whole dollars."},"by_year":{"type":"array","items":{"$ref":"#/components/schemas/SummaryYear"},"description":"Deals per purchase year and kind, oldest year first. Undated deals form one bucket with year null at the end. The buckets sum to n_deals."},"by_scale":{"type":"array","items":{"type":"object","properties":{"scale":{"anyOf":[{"type":"string","enum":["individual","small","mid","large","institutional"],"description":"Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."},{"type":"null"}],"description":"Investor scale tier. Null for buyers without an investor id. Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deals whose buyer is in this tier."}},"required":["scale","n"],"additionalProperties":false,"description":"One scale tier."},"description":"Rows per investor scale tier, individual first. Buyers without an investor id form a scale: null bucket last. The buckets sum to n_deals."},"by_investor_kind":{"type":"array","items":{"type":"object","properties":{"kind":{"anyOf":[{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},{"type":"null"}],"description":"Investor kind. Null for buyers without an investor id. Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deals whose buyer carries this kind."}},"required":["kind","n"],"additionalProperties":false,"description":"One investor kind."},"description":"Rows per investor kind, largest first. Buyers without an investor id form a kind: null bucket. A deal counts under every kind its investor carries, so the buckets overlap and do not sum to n_deals."}},"required":["n_deals","by_kind","by_buyer_status","by_channel","n_investors","n_parcels","n_unpriced","n_undated","median_bought_price","median_sold_price","total_volume","median_hold_days","median_gross_profit","by_year","by_scale","by_investor_kind"],"additionalProperties":false,"description":"Headline numbers for the geometry after the filters, with the per-year breakdown by kind."},"InvestorListSummary":{"type":"object","properties":{"by_buyer_status":{"$ref":"#/components/schemas/ByBuyerStatus"},"n_investors_ranked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Investors with an id that passed the filters. This is the total the pages walk. A paged list carries no other total."},"n_unpriced":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deal rows inside the geometry with no price on the deed."},"n_undated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deal rows inside the geometry with no purchase date."}},"required":["by_buyer_status","n_investors_ranked","n_unpriced","n_undated"],"additionalProperties":false,"description":"Totals over the geometry after the shared filters, the same on every page."},"Parcel":{"type":"object","properties":{"id":{"type":"string","pattern":"^prop_[0-9a-f]{32}$","description":"Parcel id, prop_ followed by 32 hex characters: pass it to `/v1/properties/{property_id}` or as property_id geometry."},"market":{"type":"string","description":"Market code the parcel belongs to, for example phx. The loaded markets are in meta.coverage[]."},"apn":{"description":"Assessor parcel number as recorded, for example \"131-28-253\". Null when the county did not supply one.","type":["string","null"]},"apn_norm":{"description":"APN with punctuation removed, upper case, for example \"13128253\": the lookup key for /v1/properties/resolve.","type":["string","null"]},"county_fips":{"description":"County FIPS, 5 digits, for example 04013 Maricopa, 04021 Pinal or 48201 Harris.","type":["string","null"]},"address_short":{"description":"Situs street address in title case including the unit, for example \"7522 E Cholla St\".","type":["string","null"]},"street_no_unit":{"description":"The street address without the unit.","type":["string","null"]},"unit":{"description":"Unit designation, for example \"UNIT 8\". Null for most parcels.","type":["string","null"]},"city":{"description":"City, upper case.","type":["string","null"]},"state":{"description":"2-letter state.","type":["string","null"]},"zip":{"description":"5-digit ZIP.","type":["string","null"]},"latitude":{"anyOf":[{"type":"number","minimum":-90,"maximum":90,"description":"WGS84 latitude."},{"type":"null"}],"description":"WGS84 latitude of the centre of the parcel. Null when the parcel has no coordinates."},"longitude":{"anyOf":[{"type":"number","minimum":-180,"maximum":180,"description":"WGS84 longitude."},{"type":"null"}],"description":"WGS84 longitude of the centre of the parcel. Null when the parcel has no coordinates."},"segment":{"anyOf":[{"type":"string","enum":["SFR","CONDO_TH","OTHER"],"description":"Parcel segment: SFR, CONDO_TH (condo or townhouse) or OTHER, a mixed bucket of manufactured, multi-family, land and commercial parcels."},{"type":"null"}],"description":"Parcel segment: SFR, CONDO_TH (condo or townhouse) or OTHER (manufactured, multi-family, land, commercial). Null when the assessor use code is unknown."},"bedrooms":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Bedrooms per the assessor. Null when the assessor did not report them."},"bathrooms":{"description":"Bathrooms per the assessor. The value can be fractional, for example 2.5. Null when the assessor did not report them.","type":["number","null"]},"sqft":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Living area in square feet. Null when the assessor did not report it."},"year_built":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Year built. Null when the assessor did not report it."},"pool":{"description":"True for a private pool, false for community pool or spa only, null when the assessor did not report it (most parcels).","type":["boolean","null"]},"pool_type":{"description":"Pool detail as the assessor wrote it, for example `Pool - Yes`. Null when the assessor did not report it (most parcels).","type":["string","null"]}},"required":["id","market","apn","apn_norm","county_fips","address_short","street_no_unit","unit","city","state","zip","latitude","longitude","segment","bedrooms","bathrooms","sqft","year_built","pool","pool_type"],"additionalProperties":false,"description":"One parcel: its id, county, APN, situs address, coordinates and the assessor facts used as subject-property defaults."},"LastPurchase":{"type":"object","properties":{"date":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"Date of the most recent purchase deed on the parcel, YYYY-MM-DD. Null when the API finds no arm's-length deed."},"price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Price on that deed, whole dollars. Null when the deed carries no price (non-disclosure states such as Texas)."}},"required":["date","price"],"additionalProperties":false,"description":"The most recent purchase deed on the parcel, whoever the buyer was."},"PropertyOwner":{"type":"object","properties":{"kind":{"anyOf":[{"type":"string","enum":["PERSON","TRUST","ENTITY","PUBLIC_INSTITUTIONAL"],"description":"Kind of the owner at the deed data end: PERSON, TRUST, ENTITY or PUBLIC_INSTITUTIONAL (a public body)."},{"type":"null"}],"description":"Null when the county roll does not say. Kind of the owner at the deed data end: PERSON, TRUST, ENTITY or PUBLIC_INSTITUTIONAL (a public body)."},"owner_occupied":{"description":"True when the owner's mailing address is the parcel itself. Null when the county roll does not say.","type":["boolean","null"]},"absentee":{"description":"True when the owner's mailing address is elsewhere. Null when the county roll does not say.","type":["boolean","null"]},"is_trust":{"description":"True when the owner is a trust. Null when unknown.","type":["boolean","null"]},"is_public":{"description":"True when the owner is a public body, for example a city, the state or a school district. Null when unknown.","type":["boolean","null"]},"holding_kind":{"anyOf":[{"type":"string","enum":["OWNER_OCCUPIED","ABSENTEE_INDIVIDUAL","ABSENTEE_ENTITY","RENTAL_REGISTERED","RENTAL_SIGNAL","UNKNOWN"],"description":"How the owner holds the parcel at the deed data end (meta.coverage[].data_end), read from the county owner roll behind the row. OWNER_OCCUPIED means the owner lives there, ABSENTEE_INDIVIDUAL a person whose mailing address is elsewhere, and ABSENTEE_ENTITY an LLC or trust. RENTAL_REGISTERED means the parcel is on the county rental registry. RENTAL_SIGNAL means an owner-attributed business-use short-term-rental licence in any market. In Texas it also means an absentee owner with no homestead exemption or a rental listing. The short_term_rental block says which. UNKNOWN means the county roll does not say."},{"type":"null"}],"description":"Null when unknown. How the owner holds the parcel at the deed data end (meta.coverage[].data_end), read from the county owner roll behind the row. OWNER_OCCUPIED means the owner lives there, ABSENTEE_INDIVIDUAL a person whose mailing address is elsewhere, and ABSENTEE_ENTITY an LLC or trust. RENTAL_REGISTERED means the parcel is on the county rental registry. RENTAL_SIGNAL means an owner-attributed business-use short-term-rental licence in any market. In Texas it also means an absentee owner with no homestead exemption or a rental listing. The short_term_rental block says which. UNKNOWN means the county roll does not say."},"acquisition_kind":{"anyOf":[{"type":"string","enum":["PURCHASE","TRANSFER","NO_DEED","UNMATCHED"],"description":"How the owner at the deed data end got the parcel. PURCHASE (an arm's-length deed, priced where the state records prices). TRANSFER (an unpriced deed between related parties). NO_DEED: no deed found. UNMATCHED: a deed exists but its buyer name does not match the owner."},{"type":"null"}],"description":"Null when unknown. How the owner at the deed data end got the parcel. PURCHASE (an arm's-length deed, priced where the state records prices). TRANSFER (an unpriced deed between related parties). NO_DEED: no deed found. UNMATCHED: a deed exists but its buyer name does not match the owner."},"held_since":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"When the current ownership started, YYYY-MM-DD. Null when no dated source exists."},"months_held":{"description":"Months since held_since, measured at the data end date, for example 44.4. Null without held_since.","type":["number","null"]},"last_purchase":{"$ref":"#/components/schemas/LastPurchase"},"rental_registered":{"description":"True when the parcel is on the county rental registry.","type":["boolean","null"]},"permits_last_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Building permits filed on the parcel in the 24 months before the data end date."},"permits_reno_last_24m":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Renovation permits (remodel, addition, roof, pool) in the same 24 months. A subset of permits_last_24m."},"name_order":{"type":"string","enum":["surname_first","given_first","unknown"],"description":"Always given_first for owner names. The word order of the raw name. A deed name is surname_first, for example \"RIVERA DANA\". A parsed owner name is given_first, for example \"Dana Rivera\". The order is unknown for one token, a truncated name, \"&\" or ET AL: the split fields are then null."},"redacted_reason":{"anyOf":[{"type":"string","enum":["not_an_investor_hold","public"],"description":"Why names and mailing are null: not_an_investor_hold or public. With not_an_investor_hold, the parcel is not a confirmed investor holding and not a business-use short-term rental with a dated or named basis. The API then treats the owner as a household and never names them. With public, the owner is a public body."},{"type":"null"}],"description":"Why this host does not name the holder: not_an_investor_hold or public. With not_an_investor_hold, the parcel is not a confirmed investor holding and not a business-use short-term rental with a dated or named basis. The API then treats the owner as a household and never names them. With public, the owner is a public body."}},"required":["kind","owner_occupied","absentee","is_trust","is_public","holding_kind","acquisition_kind","held_since","months_held","last_purchase","rental_registered","permits_last_24m","permits_reno_last_24m","name_order","redacted_reason"],"description":"The current owner of the parcel. The API always serves the facts (kind, owner_occupied, absentee, holding_kind, permits). It serves the identity (names, mailing) only on two kinds of parcel. One is a confirmed investor holding. The other is a business-use short-term rental attributed to the owner by a date or a name."},"Property":{"type":"object","properties":{"id":{"type":"string","pattern":"^prop_[0-9a-f]{32}$","description":"Parcel id, prop_ followed by 32 hex characters: pass it to `/v1/properties/{property_id}` or as property_id geometry."},"market":{"type":"string","description":"Market code the parcel belongs to, for example phx. The loaded markets are in meta.coverage[]."},"apn":{"description":"Assessor parcel number as recorded, for example \"131-28-253\". Null when the county did not supply one.","type":["string","null"]},"apn_norm":{"description":"APN with punctuation removed, upper case, for example \"13128253\": the lookup key for /v1/properties/resolve.","type":["string","null"]},"county_fips":{"description":"County FIPS, 5 digits, for example 04013 Maricopa, 04021 Pinal or 48201 Harris.","type":["string","null"]},"address_short":{"description":"Situs street address in title case including the unit, for example \"7522 E Cholla St\".","type":["string","null"]},"street_no_unit":{"description":"The street address without the unit.","type":["string","null"]},"unit":{"description":"Unit designation, for example \"UNIT 8\". Null for most parcels.","type":["string","null"]},"city":{"description":"City, upper case.","type":["string","null"]},"state":{"description":"2-letter state.","type":["string","null"]},"zip":{"description":"5-digit ZIP.","type":["string","null"]},"latitude":{"anyOf":[{"type":"number","minimum":-90,"maximum":90,"description":"WGS84 latitude."},{"type":"null"}],"description":"WGS84 latitude of the centre of the parcel. Null when the parcel has no coordinates."},"longitude":{"anyOf":[{"type":"number","minimum":-180,"maximum":180,"description":"WGS84 longitude."},{"type":"null"}],"description":"WGS84 longitude of the centre of the parcel. Null when the parcel has no coordinates."},"segment":{"anyOf":[{"type":"string","enum":["SFR","CONDO_TH","OTHER"],"description":"Parcel segment: SFR, CONDO_TH (condo or townhouse) or OTHER, a mixed bucket of manufactured, multi-family, land and commercial parcels."},{"type":"null"}],"description":"Parcel segment: SFR, CONDO_TH (condo or townhouse) or OTHER (manufactured, multi-family, land, commercial). Null when the assessor use code is unknown."},"bedrooms":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Bedrooms per the assessor. Null when the assessor did not report them."},"bathrooms":{"description":"Bathrooms per the assessor. The value can be fractional, for example 2.5. Null when the assessor did not report them.","type":["number","null"]},"sqft":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Living area in square feet. Null when the assessor did not report it."},"year_built":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Year built. Null when the assessor did not report it."},"pool":{"description":"True for a private pool, false for community pool or spa only, null when the assessor did not report it (most parcels).","type":["boolean","null"]},"pool_type":{"description":"Pool detail as the assessor wrote it, for example `Pool - Yes`. Null when the assessor did not report it (most parcels).","type":["string","null"]},"owner":{"description":"Who holds the parcel at the deed data end date (meta.coverage[].data_end) and how. This host never names the holder.","$ref":"#/components/schemas/PropertyOwner"},"listing":{"anyOf":[{"$ref":"#/components/schemas/Listing"},{"type":"null"}],"description":"The MLS listing on the parcel: the latest listing the feed knows, its status, prices and agent. Its owner_test says if it belongs to the parcel's current holder, and is null when no investor holds the parcel. Its list_to_bought_ratio is null here. Null when the parcel carries no listing record, and when the market has no published listing tables (meta.coverage[].listings_data_end is null then). This host does not name the agents."},"short_term_rental":{"anyOf":[{"$ref":"#/components/schemas/ShortTermRental"},{"type":"null"}],"description":"The short-term rental licence facts of the parcel from the city's own roll. The block says if the parcel is licensed and since when. It says if the licence belongs to the current owner and on what basis, and if the use is a business. Served to every key. Present on every parcel inside a loaded city: status NONE when it has no record, status null where coverage.served is false. Null outside every loaded city (meta.coverage[].str.jurisdictions says why), and when the market has no published short-term rental tables (meta.coverage[].str_as_of is null then)."},"deals":{"type":"array","items":{"$ref":"#/components/schemas/Deal"},"description":"Every deal on the parcel: every kind and every year, public-body investors included, because a parcel lookup is not a list. Newest purchase first, undated deals last."},"wholesale_listings":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/PropertyWholesaleListing"}},{"type":"null"}],"description":"Every Investorlift listing of the house, newest first, each with the listing company and what the deeds show occurred. The API does not attach a hidden-address listing without a closing deed to the parcel, so it does not appear. Empty when the house was never listed. Null when the wholesale tables are not published (meta.coverage[].wholesale_as_of is null then). Served to every key."}},"required":["id","market","apn","apn_norm","county_fips","address_short","street_no_unit","unit","city","state","zip","latitude","longitude","segment","bedrooms","bathrooms","sqft","year_built","pool","pool_type","owner","listing","short_term_rental","deals","wholesale_listings"],"description":"One parcel with its owner facts, its short-term rental licence, its deal history and its Investorlift listings."},"ResolveCandidate":{"type":"object","properties":{"id":{"type":"string","pattern":"^prop_[0-9a-f]{32}$","description":"Parcel id of this row."},"apn":{"description":"APN as recorded on this row, for example \"101-08-158B\". Two rows can differ only in punctuation.","type":["string","null"]},"county_fips":{"description":"5-digit county FIPS, for example 04013 Maricopa, 04021 Pinal or 48201 Harris.","type":["string","null"]},"city":{"description":"City, upper case.","type":["string","null"]},"zip":{"description":"5-digit ZIP.","type":["string","null"]},"unit":{"description":"Unit designator as the county records it on this row, for example \"# 2007\", \"UNIT 5C\" or \"B\": the same value as the parcel block's unit. Null on a single-unit parcel. Pass it as unit= to pick this row from an ambiguous_address. The bare value, \"2007\", does as well.","type":["string","null"]},"latitude":{"anyOf":[{"type":"number","minimum":-90,"maximum":90,"description":"WGS84 latitude."},{"type":"null"}],"description":"WGS84 latitude of the centre of this row's parcel. Null without coordinates."},"longitude":{"anyOf":[{"type":"number","minimum":-180,"maximum":180,"description":"WGS84 longitude."},{"type":"null"}],"description":"WGS84 longitude of the centre of this row's parcel. Null without coordinates."},"n_deals":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deals recorded on this row. The row with the most deals wins when twins are the same parcel."},"same_parcel":{"type":"boolean","description":"True when this row is a spelling twin of the resolved property (same county, within 100 m): use the resolved property_id and ignore this row. False on an ambiguous_apn or ambiguous_address error, where the rows are different parcels."}},"required":["id","apn","county_fips","city","zip","unit","latitude","longitude","n_deals","same_parcel"],"additionalProperties":false,"description":"Another parcel row matching the APN or the address."},"ResolveResult":{"type":"object","properties":{"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 resolved parcel id to pass as property_id to every other endpoint. Null only on an error."},"property":{"anyOf":[{"$ref":"#/components/schemas/Parcel"},{"type":"null"}],"description":"The resolved parcel block. Null only on an error."},"candidates":{"type":"array","items":{"$ref":"#/components/schemas/ResolveCandidate"},"description":"Spelling twins of the resolved parcel (same_parcel: true). Empty for a point lookup, a unique APN and a unique address."}},"required":["property_id","property","candidates"],"additionalProperties":false,"description":"The parcel behind a point, an APN or an address."},"CompSubject":{"type":"object","properties":{"property_id":{"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."},"market":{"type":"string","description":"The market the subject and every comp belong to."},"address_short":{"description":"Situs street line as the delivery formats it; null when the delivery does not record it.","type":["string","null"]},"city":{"description":"City, upper case; null when the delivery does not record it.","type":["string","null"]},"zip":{"description":"5-digit ZIP; null when the delivery does not record it.","type":["string","null"]},"latitude":{"type":"number","minimum":-90,"maximum":90,"description":"WGS84 latitude."},"longitude":{"type":"number","minimum":-180,"maximum":180,"description":"WGS84 longitude."},"bedrooms":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Bedrooms; null when unknown, and then the API does not apply the bedroom tolerance."},"bathrooms":{"description":"Bathrooms; null when the delivery does not record it.","type":["number","null"]},"sqft":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The living area in square feet; null when unknown, and then the API does not apply the size tolerance and price_per_sqft_value is null."},"year_built":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Year built; null when unknown, and then the API does not apply the year tolerance."},"last_sale":{"anyOf":[{"type":"object","properties":{"sold_on":{"type":"string","description":"The date of the subject's own arm's-length last purchase."},"sold_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"Whole US dollars. Null when the price is unknown, for example a deed that carries no price. Non-disclosure states record no price on most off-market deeds."}},"required":["sold_on","sold_price"],"additionalProperties":false},{"type":"null"}],"description":"The subject's own last purchase from the deed registry, for the reader's reference. It is never one of the comps. Null when the registry records none."}},"required":["property_id","market","address_short","city","zip","latitude","longitude","bedrooms","bathrooms","sqft","year_built","last_sale"],"additionalProperties":false,"description":"The parcel the API measures the comps against, with the facts the tolerances read."},"CompDeal":{"type":"object","properties":{"id":{"type":"string","pattern":"^deal_[0-9a-f]{32}$","description":"The deal id, for the deal lookup route."},"kind":{"type":"string","enum":["flip","wholesale","hold","long_hold","other","build"],"description":"What occurred on the deal. flip: bought, fixed and resold within about a year at a profit-shaped margin; wholesale: bought and resold in under 30 days, or a chain resale or round trip within 90 (a double close); hold: bought and still owned at data_end, a confirmed holding or an un-resold purchase; long_hold: held over a year, then sold (a landlord exit); other: an investor resale that is not a clean flip. Reasons: a loss, a thin margin, a builder's new home resold, an iBuyer resale, or a chain resale of 3 to 12 months; build: a registered investor bought a lot or teardown, built a house on it during the hold, then sold. A builder's finished home bought and resold is other. On data built after 2026-09-17 the kind keeps only a single-family parcel held over 90 days, its house complete by the sale year. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."},"investor_id":{"anyOf":[{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"Investor id: inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The id is stable across data refreshes within a market. Store it as the investor's identity."},{"type":"null"}],"description":"The exiting investor's id. Null when the registry keeps no profile for it."},"gross_profit":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Resale price minus purchase price on a paired deal, whole dollars. Null on an unpaired deal, or where a price is null."},"hold_days":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days between the deal's purchase and its recorded resale. Null where a date is null."}},"required":["id","kind","investor_id","gross_profit","hold_days"],"additionalProperties":false,"description":"The investor exit this sale was, when the deal registry records an exit on the parcel within 45 days of the sale date. The API takes the nearest exit. The window covers an MLS close that precedes its recording. The block shows the rehab economics a plain comp cannot show."},"Comp":{"type":"object","properties":{"property_id":{"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."},"market":{"type":"string","description":"The comp's market (the subject's)."},"address_short":{"description":"Situs street line as the delivery formats it; null when the delivery does not record it.","type":["string","null"]},"city":{"description":"City, upper case; null when the delivery does not record it.","type":["string","null"]},"zip":{"description":"5-digit ZIP; null when the delivery does not record it.","type":["string","null"]},"distance_miles":{"type":"number","description":"Distance from the subject parcel in miles, two decimals."},"sold_on":{"type":"string","description":"The sale date: the deed's recording date on a DEED comp, the close date on an MLS comp."},"sold_price":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The sale price, whole dollars. A comp always carries one, because unpriced sales are not comps."},"price_per_sqft":{"description":"sold_price over the parcel's living area, two decimals. Null when the sqft is unknown.","type":["number","null"]},"bedrooms":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Bedrooms; null when the delivery does not record it."},"bathrooms":{"description":"Bathrooms; null when the delivery does not record it.","type":["number","null"]},"sqft":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The living area in square feet; null when the delivery does not record it."},"year_built":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Year built; null when the delivery does not record it."},"source":{"type":"string","enum":["DEED","MLS"],"description":"DEED: the parcel's arm's-length last purchase from the deed registry. MLS: a SOLD listing record. A parcel keeps its newest sale. An MLS record wins over a deed recorded within 45 days of it."},"days_on_market":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Days on market of the MLS record. Null on a DEED comp."},"list_price":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Whole US dollars."},{"type":"null"}],"description":"The last list price of the MLS record. Null on a DEED comp, or when the feed carries none."},"cash_sale_proxy":{"description":"True when the sale carried a price and no purchase mortgage is on record for it. The API reads it from the parcel layer where the market has one and the layer's last sale is this one (45 days). Null where the layer is absent, the sale is not the layer's last sale, or the market does not measure the proxy. That last case is meta.coverage[].parcel.sale_mortgage_measured false.","type":["boolean","null"]},"last_sale_lender":{"description":"The lender of the purchase mortgage recorded on the sale, read the same way. Null where none is on record, or the layer is absent.","type":["string","null"]},"deal":{"anyOf":[{"$ref":"#/components/schemas/CompDeal"},{"type":"null"}],"description":"The investor exit this sale was, or null when the deal registry records no exit on the parcel within 45 days of the sale date."},"similarity":{"type":"number","minimum":0,"maximum":1,"description":"How close the comp is to the subject, 0 to 1, three decimals: one minus a weighted sum of five ratios. The first three: the distance over the radius (0.35), the size gap over the size tolerance (0.25), the bedroom gap over its tolerance (0.15). The last two: the age gap over its tolerance (0.10), and the sale's age over the window (0.15). A tolerance the subject cannot apply contributes nothing. The API orders the comps by it."}},"required":["property_id","market","address_short","city","zip","distance_miles","sold_on","sold_price","price_per_sqft","bedrooms","bathrooms","sqft","year_built","source","days_on_market","list_price","cash_sale_proxy","last_sale_lender","deal","similarity"],"additionalProperties":false,"description":"One comparable sale: the parcel, the sale, the source, the parcel-layer facts where served, the investor exit where recorded, and the similarity."},"CompsSummary":{"type":"object","properties":{"n":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Comps returned (at most limit)."},"n_deed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of them, DEED comps."},"n_mls":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Of them, MLS comps."},"median_price":{"description":"Median sold_price over the comps returned. Null when n is 0.","type":["number","null"]},"median_price_per_sqft":{"description":"Median price_per_sqft over the comps that carry one. Null when none does.","type":["number","null"]},"price_per_sqft_value":{"description":"median_price_per_sqft times the subject's sqft, rounded to whole dollars. An indication, not a valuation: the API makes no time or condition adjustment. Null when either is unknown.","type":["number","null"]},"min_price":{"description":"The lowest sold_price returned. Null when n is 0.","type":["number","null"]},"max_price":{"description":"The highest sold_price returned. Null when n is 0.","type":["number","null"]},"radius_miles":{"type":"number","description":"The radius the API drew the comps from."},"window_start":{"type":"string","description":"The first sale date in the window (the market's data_end minus days_back)."},"window_end":{"type":"string","description":"The last sale date in the window: the market's data_end."},"sources":{"type":"array","items":{"type":"string","enum":["DEED","MLS"],"description":"DEED: the parcel's arm's-length last purchase from the deed registry. MLS: a SOLD listing record. A parcel keeps its newest sale. An MLS record wins over a deed recorded within 45 days of it."},"description":"The sources the API read: DEED, MLS, or both. MLS is absent when the market has no listing tables (meta.coverage[].listings_data_end null) and source was both."},"tolerances":{"type":"object","properties":{"bedrooms":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The bedroom tolerance applied. Null when the subject's bedrooms are unknown."},"sqft_pct":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The size tolerance applied, percent. Null when the subject's sqft is unknown."},"year_built":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The year tolerance applied. Null when the subject's year_built is unknown."}},"required":["bedrooms","sqft_pct","year_built"],"additionalProperties":false,"description":"Which tolerances the query applied: a fact the subject lacks cannot bound the comps."}},"required":["n","n_deed","n_mls","median_price","median_price_per_sqft","price_per_sqft_value","min_price","max_price","radius_miles","window_start","window_end","sources","tolerances"],"additionalProperties":false,"description":"The comps in aggregate, over the comps returned: counts, the medians, the range, the window and the tolerances applied."},"Comps":{"type":"object","properties":{"subject":{"$ref":"#/components/schemas/CompSubject"},"comps":{"type":"array","items":{"$ref":"#/components/schemas/Comp"},"description":"The comps, most similar first."},"summary":{"$ref":"#/components/schemas/CompsSummary"}},"required":["subject","comps","summary"],"additionalProperties":false,"description":"`GET /v1/properties/{id}/comps`: the subject, its comparable sales within the radius, the window and the tolerances, and the summary."},"Dataset":{"type":"object","properties":{"dataset_version":{"description":"Every loaded market with its version, one market=version pair per market, joined by commas, for example \"phx=1788469819\" for one market. The value of the X-Dataset-Version header on every response, and the string to add to a cache key. Null when the API has no loaded market.","type":["string","null"]},"data_end":{"anyOf":[{"type":"string","description":"Calendar date, YYYY-MM-DD."},{"type":"null"}],"description":"The latest last deed date across the loaded markets, YYYY-MM-DD. Each market has its own in markets[]. Null when the API has no loaded market."},"markets":{"type":"array","items":{"type":"object","properties":{"market":{"type":"string","description":"The market code, for example phx."},"state":{"type":"string","description":"2-letter state of the market. The loaded markets and their states are in meta.coverage[]."},"dataset_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The version of the loaded data for this market. It changes only on a rebuild of the market's tables. Every response carries the same value in meta.coverage[].dataset_version."},"data_end":{"type":"string","description":"The last deed date in the market, YYYY-MM-DD."},"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","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 last deed date."},"loaded_at":{"type":"string","description":"When this data version went live, ISO 8601."}},"required":["market","state","dataset_version","data_end","counties","loaded_at"],"additionalProperties":false,"description":"One loaded market and how fresh it is."},"description":"The loaded markets, one row each."}},"required":["dataset_version","data_end","markets"],"additionalProperties":false,"description":"The loaded data: the dataset version and the last deed date of every market, and the one-line version label every response repeats."},"StrParcelInvestor":{"type":"object","properties":{"id":{"type":"string","pattern":"^inv_[0-9a-f]{12}$","description":"The investor that holds the parcel: the key to GET `/v1/investors/{id}`, and the buyer on the parcel's hold row in GET /v1/deals."},"kinds":{"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."},"description":"Every kind the investor qualifies for, for example [\"LANDLORD\"]. An empty list when the registry assigned none."},"confidence":{"anyOf":[{"type":"string","enum":["STRONG","PROBABLE","WEAK"],"description":"How sure the registry is of the kind. STRONG: several deals of that kind and a consistent pattern. PROBABLE: some evidence. WEAK: a single signal. The registry judges the confidence from the deeds inside the area loaded for the market (meta.coverage[].universe_kind). In a ZIP market an investor's deals outside the ZIP are unseen, so the confidence is a floor."},{"type":"null"}],"description":"The registry's confidence in the investor's primary kind. Null when the registry assigned none."}},"required":["id","kinds","confidence"],"additionalProperties":false,"description":"The registered investor that holds the parcel, when one exists. Open GET `/v1/investors/{id}` for the name and the str roll-up."},"StrParcelRow":{"type":"object","properties":{"property":{"description":"The parcel: its id (the key to GET `/v1/properties/{property_id}`), address, coordinates and assessor facts.","$ref":"#/components/schemas/Parcel"},"distance_miles":{"description":"Miles from the reference point, rounded to 2 decimals. The reference point is lat + lng, or the centre of the property_id parcel. Null when the request had no reference point.","type":["number","null"]},"short_term_rental":{"description":"The parcel's licence facts. Never null here, because every listed parcel carries a record.","$ref":"#/components/schemas/ShortTermRental"},"owner":{"description":"Who holds the parcel and how. This host never names the holder. redacted_reason says why the internal tier does not name them either: a prior owner's permit, a person's own home and an ASSUMED attribution keep redacted_reason not_an_investor_hold.","$ref":"#/components/schemas/PropertyOwner"},"investor":{"anyOf":[{"$ref":"#/components/schemas/StrParcelInvestor"},{"type":"null"}],"description":"The registered investor that holds the parcel. Null when no registered investor holds it. You then reach the owner through owner.names and owner.mailing under the identity rule."}},"required":["property","distance_miles","short_term_rental","owner","investor"],"description":"One parcel with a short-term rental record inside the geometry. The row carries the parcel, its licence facts, its owner under the identity rule and the investor that holds it, if any."}},"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"}},"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}},"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"}},"X-Row-Cap":{"description":"The most rows an export streams, 50,000. The API counts the filtered set before the first row. It refuses a larger set as 422 csv_cap_exceeded, with cap and n_rows_at_least in the body. On every export answer and on that refusal.","schema":{"type":"integer","minimum":1}},"X-Credits-Charged":{"description":"The origin sets this header: the credits this response cost. It is 0 when the account already unlocked every record on it. The plans page of the documentation site says what counts.","schema":{"type":"integer","minimum":0}},"X-Credits-Remaining":{"description":"The edge sets this header: the credits left in the billing period after this response, recent to within a minute. It is negative on a plan with overage, down to its ceiling. Absent on Enterprise.","schema":{"type":"integer"}}},"responses":{"RateLimitNoRetryAfter":{"description":"Rate Limiting Response","content":{"application/json":{"schema":{"type":"object","required":["type","title","status"],"examples":[{"type":"https://httpproblems.com/http-status/429","title":"Too Many Requests","status":429,"instance":"/foo/bar"}],"properties":{"type":{"type":"string","example":"https://httpproblems.com/http-status/429","description":"A URI reference that identifies the problem."},"title":{"type":"string","example":"Too Many Requests","description":"A short, human-readable summary of the problem."},"status":{"type":"number","example":429,"description":"The HTTP status code."},"instance":{"type":"string","example":"/foo/bar"}}}}}},"RateLimitWithRetryAfter":{"description":"Rate Limiting Response","content":{"application/json":{"schema":{"type":"object","required":["type","title","status"],"examples":[{"type":"https://httpproblems.com/http-status/429","title":"Too Many Requests","status":429,"instance":"/foo/bar"}],"properties":{"type":{"type":"string","example":"https://httpproblems.com/http-status/429","description":"A URI reference that identifies the problem."},"title":{"type":"string","example":"Too Many Requests","description":"A short, human-readable summary of the problem."},"status":{"type":"number","example":429,"description":"The HTTP status code."},"instance":{"type":"string","example":"/foo/bar"}}}}},"headers":{"retry-after":{"description":"The number of seconds to wait before making a new request.","schema":{"type":"integer","example":60}}}}}},"paths":{"/v1/deals":{"get":{"operationId":"listDeals","summary":"List investor deals around a location","tags":["deals"],"description":"Every investor purchase, flip, wholesale, current holding and resale in a radius, a viewport, around a parcel, or in a ZIP list or postal city. Each row has the address, the dates, the prices, the profit and the investor behind it.\n\nUse it for a table of deals. For a map use `/v1/deals/cells`. For the totals above the table use `/v1/deals/summary`, and for one investor's history use `/v1/investors/{id}/deals`.\n\n[Reading the response and the filters](https://developers.investorlift.com/api-reference/endpoints/deals-list).","parameters":[{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["flip","wholesale","hold","long_hold","other","build"],"description":"What occurred on the deal. flip: bought, fixed and resold within about a year at a profit-shaped margin; wholesale: bought and resold in under 30 days, or a chain resale or round trip within 90 (a double close); hold: bought and still owned at data_end, a confirmed holding or an un-resold purchase; long_hold: held over a year, then sold (a landlord exit); other: an investor resale that is not a clean flip. Reasons: a loss, a thin margin, a builder's new home resold, an iBuyer resale, or a chain resale of 3 to 12 months; build: a registered investor bought a lot or teardown, built a house on it during the hold, then sold. A builder's finished home bought and resold is other. On data built after 2026-09-17 the kind keeps only a single-family parcel held over 90 days, its house complete by the sale year. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."}},"in":"query","name":"kind","required":false,"description":"Deal kinds to keep (comma list or repeated key). Default: every kind."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"price_min","required":false,"description":"Minimum bought price, inclusive, integer dollars. When you set price_min or price_max, the API drops null-priced rows unless include_unpriced=true."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"price_max","required":false,"description":"Maximum bought price, inclusive, integer dollars."},{"schema":{"type":"string"},"in":"query","name":"bought_after","required":false,"description":"Keep deals bought on or after this date. When you set bought_after or bought_before, the API drops null-date rows unless include_undated=true."},{"schema":{"type":"string"},"in":"query","name":"bought_before","required":false,"description":"Keep deals bought on or before this date."},{"schema":{"type":"string"},"in":"query","name":"sold_after","required":false,"description":"Resold deals only: sold on or after this date."},{"schema":{"type":"string"},"in":"query","name":"sold_before","required":false,"description":"Resold deals only: sold on or before this date."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["SFR","CONDO_TH","OTHER"],"description":"Parcel segment: SFR, CONDO_TH (condo or townhouse) or OTHER, a mixed bucket of manufactured, multi-family, land and commercial parcels."}},"in":"query","name":"segment","required":false,"description":"Parcel segments to keep. Default: every segment."},{"schema":{"type":"integer","minimum":0,"maximum":50},"in":"query","name":"beds_min","required":false,"description":"Minimum bedrooms, inclusive."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"sqft_min","required":false,"description":"Minimum living area in square feet, inclusive, 0 to 1,000,000."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"sqft_max","required":false,"description":"Maximum living area in square feet, inclusive, 0 to 1,000,000."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."}},"in":"query","name":"investor_kind","required":false,"description":"Keep investors that carry at least one listed kind. The check reads any of their kinds[], never the primary kind. Default: every kind. Buyers without an investor id pass unless registered_only=true."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."}},"in":"query","name":"investor_kind_exclude","required":false,"description":"Drop investors that carry any listed kind. The API checks kinds[] after investor_kind. investor_kind_exclude=WHOLESALER removes investors who also wholesale."},{"schema":{"type":"string","enum":["STRONG","PROBABLE","WEAK"]},"in":"query","name":"investor_confidence_min","required":false,"description":"Minimum registry confidence in the investor kind: STRONG, PROBABLE or WEAK (WEAK admits everything)."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["individual","small","mid","large","institutional"],"description":"Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."}},"in":"query","name":"scale","required":false,"description":"Scale tiers to keep. Default: every tier except institutional. An explicit list replaces the default entirely. scale=institutional alone returns only institutional. scale=individual,small,mid,large,institutional returns everyone."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_public","required":false,"description":"Include public-body investors (counties, cities, housing authorities) and their deals. Default false: every list endpoint hides them."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_unpriced","required":false,"description":"Keep null-priced rows when you set price_min or price_max (default false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_undated","required":false,"description":"Keep null-date rows when you set bought_after or bought_before (default false)."},{"schema":{"type":"integer","minimum":1,"maximum":600},"in":"query","name":"active_within_months","required":false,"description":"Keep investors whose last purchase is at most this many months before data_end (data_end minus last_bought_on). Sales and transfers do not count. No default."},{"schema":{"type":"integer","minimum":1,"maximum":1000000},"in":"query","name":"investor_deals_min","required":false,"description":"Minimum purchase events of that investor inside the geometry, 1 to 1,000,000. The API applies it after the other filters."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"holds_min","required":false,"description":"Investor filter: keep investors who hold at least this many parcels across the whole market at the deed data end (meta.coverage[].data_end). The count is the investor's n_holds: confirmed holdings plus un-resold purchases inside the area loaded for the market, not the holdings inside the geometry. Range 0 to 1,000,000, inclusive. For example, holds_min=20 keeps the larger portfolios. Buyers without an investor id pass unless registered_only=true."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"holds_max","required":false,"description":"Investor filter: keep investors who hold at most this many parcels across the whole market at the deed data end (n_holds). Range 0 to 1,000,000, inclusive. holds_max=0 keeps the investors that hold nothing. Beside holds_min the pair is a band. Buyers without an investor id pass unless registered_only=true."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"buys_wholesale","required":false,"description":"Investor filter: at least one bought-from-wholesaler deal in the 36 months before data_end."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"buys_at_auction","required":false,"description":"Investor filter: true keeps investors who bought at least one house at a foreclosure auction in the 24 months before data_end. A foreclosure auction is a trustee's sale or an Arizona sheriff's sale, and the filter reads investor.auction.is_active_auction_buyer. These buyers pay cash within a day and buy without an inspection. False keeps registered investors who did not. Buyers without an investor id pass unless registered_only=true. The API answers 422 auction_unavailable in a market that does not publish its auction counts (meta.coverage[].auction_counted false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"buys_reo","required":false,"description":"Investor filter: true keeps investors who bought at least one house from a lender, servicer or agency after a foreclosure. The window is the 24 months before data_end, and the filter reads investor.auction.is_active_reo_buyer. A bank-owned (REO) sale gave the buyer weeks, an inspection and the option to finance: the weaker cash signal beside buys_at_auction. False keeps registered investors who did not, and buys_at_auction=true&buys_reo=false is the cash-only set. Buyers without an investor id pass unless registered_only=true. The API answers 422 auction_unavailable where the market does not publish its auction counts."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["TRUSTEE_SALE","SHERIFF_SALE","HOA_TRUSTEE_SALE","TAX_SALE","TAX_LIEN_DEED"],"description":"The kind of auction the purchase deed records: TRUSTEE_SALE and SHERIFF_SALE count toward buys_at_auction, and the API shows the other three but never counts them. TRUSTEE_SALE: a lender's foreclosure sale by the trustee, cash and final on the day, without redemption. In Arizona the buyer pays a $10,000 deposit and the full bid by 5 pm the next business day. In Texas it is the first-Tuesday courthouse sale, in Washington the Friday sale at the county's designated place under RCW 61.24. SHERIFF_SALE: a judicial sale under court order. In Arizona it is an HOA or judgment-lien sale, cash but subject to the first mortgage and to a 30-day or 6-month redemption. In Washington it is a judicial mortgage foreclosure or lien sale under RCW 6.21, with an 8-month or 1-year redemption. In Washington the sale is subject to the senior lien only when it is a lien sale. HOA_TRUSTEE_SALE: a Texas homeowners association foreclosure recorded as a trustee's deed, cash, subject to the first lien and to a 180-day redemption. TAX_SALE: a Texas constable or taxing-unit tax sale, cash, with a 180-day or 2-year redemption. In Washington it is the county treasurer's deed after the tax foreclosure judgment, with no redemption after the sale. TAX_LIEN_DEED: an Arizona treasurer's deed to a tax-lien holder, mostly vacant land, not an auction of the house."}},"in":"query","name":"bought_auction_kind","required":false,"description":"Deal filter: keep deals whose purchase deed was a third-party auction purchase of one of the listed kinds (comma list or repeated key). For example, bought_auction_kind=TRUSTEE_SALE keeps houses bought at a foreclosure sale. The API drops deals bought any other way and deals without a buy deed. The API answers 422 auction_unavailable where the market does not publish its auction counts."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"bought_from_wholesaler","required":false,"description":"Deal filter: bought through a documented double close from a wholesaler, or from a known wholesaler. Assignments leave no deed, so absence is not evidence."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"bought_distressed","required":false,"description":"Deal filter: the buy leg was a distressed sale. That is a foreclosure, trustee, sheriff or tax instrument, a deed in lieu, or a deed the feed flags as REO. It is wider than bought_auction_kind, which keeps only third-party auction purchases."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"registered_only","required":false,"description":"Keep only rows whose buyer carries an investor id (investor.id is not null)."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["registered","unclassified","excluded","unknown"],"description":"The buyer's standing in the registry: registered (has an investor id), unclassified, excluded or unknown (the deed names no buyer). Unclassified: a named buyer the registry did not classify as an investor, usually a household. Excluded: a named buyer the registry deliberately left out. Those are custodian trusts, relocation companies, auction houses and ambiguous surnames."}},"in":"query","name":"buyer_status","required":false,"description":"Buyer statuses to keep."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"str_operator","required":false,"description":"Investor filter: true keeps investors that hold at least one parcel with a business-use short-term-rental licence attributed to them. That is the str roll-up's n_holdings at 1 or more. False keeps investors with none. Buyers without an investor id pass unless registered_only=true. The API answers 422 str_unavailable when a market in play has no short-term rental tables (meta.coverage[].str_as_of null)."},{"schema":{"type":"integer","minimum":1,"maximum":100000},"in":"query","name":"str_holdings_min","required":false,"description":"Investor filter: at least this many of the investor's holdings carry a business-use short-term-rental licence attributed to them (the str roll-up's n_holdings), 1 or more. Buyers without an investor id pass unless registered_only=true. The API answers 422 str_unavailable when a market in play has no short-term rental tables."},{"schema":{"type":"string","pattern":"^len_[0-9a-f]{12}$"},"in":"query","name":"financed_by","required":false,"description":"Investor filter: keep investors with at least one recorded loan from this lender, as the main borrower of the mortgage or the open lien. The value is a lender id, len_ followed by 12 hex characters, for example len_d2028f0766fc from GET /v1/lenders/search. The match is investor_id on the lender's loan rows. The count is a floor: the recorded history sees about one loan in five. Buyers without an investor id pass unless registered_only=true. The API answers 422 lenders_unavailable when a market in play has no lender registry with the borrower match (meta.coverage[].lenders null or borrowers_measured false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"uses_private_lender","required":false,"description":"Investor filter: true keeps investors with a loan from a private lender, recorded in the 24 months before the lender registry's slice date (meta.coverage[].lenders.as_of). A private lender is a hard-money lender by name or behaviour (is_hard_money) or an investor lender by behaviour (is_investor_lender). A lender whose class reads INDIVIDUAL or PRIVATE also counts as private. False keeps registered investors with none such, and the result is a floor of a partial feed. Buyers without an investor id pass unless registered_only=true. The API answers 422 lenders_unavailable when a market in play has no lender registry with the borrower match."},{"schema":{"type":"string","pattern":"^inv_[0-9a-f]{12}$"},"in":"query","name":"investor_id","required":false,"description":"Scope the rows to one buyer (the drawer's \"Activity here\"). The API follows an old id from an earlier data refresh to the investor that superseded it and echoes the old id in meta.resolved_from. A retired id is 410 gone."},{"schema":{"type":"string","pattern":"^deal_[0-9a-f]{32}$"},"in":"query","name":"deal_id","required":false,"description":"Scope the rows to one deal."},{"schema":{"type":"number","minimum":-90,"maximum":90},"in":"query","name":"lat","required":false,"description":"Point latitude (with lng). With radius_miles it is the search geometry. With bbox it is the reference point only."},{"schema":{"type":"number","minimum":-180,"maximum":180},"in":"query","name":"lng","required":false,"description":"Point longitude (with lat)."},{"schema":{"type":"number","minimum":0.25,"maximum":20},"in":"query","name":"radius_miles","required":false,"description":"Search radius in miles around the point or around the centre of the property_id parcel, 0.25 to 20 (default 2). Not allowed with bbox."},{"schema":{"type":"string"},"in":"query","name":"bbox","required":false,"description":"Viewport as west,south,east,north (WGS84 degrees). West must be less than east, south less than north, and the diagonal at most 40 mi. It must intersect a loaded market's coverage bbox (422 outside_coverage otherwise). It can carry lat + lng (without radius_miles) as the reference point for distances and sort=distance."},{"schema":{"type":"string","pattern":"^prop_[0-9a-f]{32}$"},"in":"query","name":"property_id","required":false,"description":"Parcel geometry: search around the centre of that parcel, with radius_miles. Not allowed with lat, lng or bbox."},{"schema":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","pattern":"^\\d{5}$"}},"in":"query","name":"zip","required":false,"description":"Place geometry: the parcels of these 5-digit ZIP codes, as a comma list or a repeated key, up to 50. On the deal and investor routes the Free and Starter plans take exactly one ZIP, and more is 403 plan_limit. You can add lat + lng as the reference point for distances. Not with radius_miles, bbox, property_id or city. A ZIP that no parcel of a loaded market carries is 422 outside_coverage (zips_unknown in the body)."},{"schema":{"type":"string","minLength":1,"maxLength":100},"in":"query","name":"city","required":false,"description":"Place geometry: the parcels whose postal city is this one, as the county records it (\"Scottsdale\"). Case does not matter: the API compares the value folded upper case. Never the short-term rental jurisdiction (meta.coverage[].str.jurisdictions[]). You can add lat + lng as the reference point, but not radius_miles, bbox, property_id or zip. On the deal and investor routes of the Free and Starter plans a city-wide search is 403 plan_limit. A city that no parcel of a loaded market carries is 422 outside_coverage."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"bought_on_investorlift","required":false,"description":"Keep only deals whose closing deed closed an Investorlift listing. Those rows carry a wholesale_listing block. The API answers 422 wholesale_unavailable when the market has no wholesale tables (meta.coverage[].wholesale_as_of null)."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["LICENSED","PENDING","EXPIRED"],"description":"The short-term rental status a holding must carry for the API to keep the row: the block's status. LICENSED means an active licence or permit, PENDING an application on file with none active, and EXPIRED every record on the parcel inactive. The API keeps a row when any of the values matches. Rows that are not holdings (flips, wholesales, resold purchases) carry no block and never match. The API serves NONE on rows, but NONE is not filterable in this release (400 for the value)."}},"in":"query","name":"str_status","required":false,"description":"Keep only holdings whose short-term rental status matches one of the values (comma list or repeated key): LICENSED, PENDING or EXPIRED, the block's status. The API serves NONE on rows, but NONE is not filterable in this release (400 for the value). The API applies the filter before it cuts the page. Rows that are not holdings never match. 422 str_unavailable when a market in play has no short-term rental tables (meta.coverage[].str_as_of null). Default: every row."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"str_business_use","required":false,"description":"With true, keep only hold rows whose licence is a business use attributed to the current owner: the UI's short-term rental deal type. With false, keep only hold rows whose licence is not one: a person's own home with a casita permit, or a prior owner's permit. Without str_status the test covers LICENSED and PENDING records, the only ones where business_use is true. Combine it with str_status to widen or narrow. The API applies the filter before it cuts the page. Rows that are not holdings never match. 422 str_unavailable when a market in play has no short-term rental tables (meta.coverage[].str_as_of null). Default: every row."},{"schema":{"type":"string","enum":["distance","date_desc","date_asc","price_desc","price_asc"]},"in":"query","name":"sort","required":false,"description":"Row order: distance (nearest first), date_desc (newest purchase first), date_asc (oldest purchase first), price_desc or price_asc (on the purchase price). With a reference point the default is distance, which needs lat + lng or property_id. With bbox alone the default is date_desc. Undated rows come last under both date sorts, and unpriced rows last under both price sorts."},{"schema":{"default":500,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false,"description":"Page size, 1-500 (default 500)."},{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1."}],"responses":{"200":{"description":"One page of deals inside the geometry after the filters, in the requested sort, with the cursor for the next page.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Deal"},"description":"The rows of this page."},"page":{"$ref":"#/components/schemas/Page"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","page","meta"],"additionalProperties":false,"description":"Deals inside the geometry, one page."},"example":{"data":[{"id":"deal_3d737e533571e3d9a95e071392860320","market":"phx","kind":"flip","deal_type":"PAIR","deal_kind":"FLIP","ownership_confirmed":null,"buyer_status":"registered","buyer_exclusion":null,"property":{"id":"prop_d58780568cc908831cf5a059808d6e9e","market":"phx","apn":"131-28-197","apn_norm":"13128197","county_fips":"04013","address_short":"7424 E Cambridge Ave","street_no_unit":"7424 E Cambridge Ave","unit":null,"city":"SCOTTSDALE","state":"AZ","zip":"85257","latitude":33.478319,"longitude":-111.920385,"segment":"SFR","bedrooms":3,"bathrooms":2,"sqft":1371,"year_built":1959,"pool":true},"distance_miles":0.1,"bought_on":"2025-07-09","date_quality":"deed","held_since_source":"DEED_ACQUISITION","bought_price":575000,"sold_on":"2026-02-17","sold_price":930000,"hold_days":223,"gross_profit":355000,"spread_ratio":0.617391,"price_quality":"BOTH","days_held_to_data_end":null,"sold_to_wholesaler":false,"round_trip":false,"is_purchase_event":true,"n_parcels_in_event":1,"bought_from_wholesaler":false,"bought_from_wholesaler_via":null,"wholesaler_investor_id":null,"bought_from_investor":false,"bought_distressed":false,"bought_auction_kind":null,"holding_kind":null,"acquisition_kind":null,"investor":{"id":"inv_5494f8b4fb59","market":"phx","name":"VICSDALE HOME DESIGNS LLC","display_name":"VICSDALE HOME DESIGNS LLC","state":"AZ","kind":"FLIPPER","confidence":"STRONG","scale":"mid","institutional":false,"is_public":false,"last_bought_on":"2026-04-22","n_deals":37,"buyer_status":"registered"},"seller":{"id":null,"name":null,"display_name":null,"kind":"TRUST","kinds":null},"end_buyer":{"id":null,"name":null,"display_name":null,"kind":"PERSON","kinds":null},"owner":null,"listing":null,"short_term_rental":null,"wholesale_listing":null,"financing":{"purchase_loan_status":"NONE_CAPTURED","purchase_loan":null,"secondary_loans_n":null,"link_window":null,"outcome":null,"as_of":"2026-06-25","dated":true}},{"id":"deal_46f741afdfd3a1be57bbf5afa8ed6e58","market":"phx","kind":"flip","deal_type":"PAIR","deal_kind":"FLIP","ownership_confirmed":null,"buyer_status":"registered","buyer_exclusion":null,"property":{"id":"prop_a2818176007027aee8d47996b448609a","market":"phx","apn":"131-28-196","apn_norm":"13128196","county_fips":"04013","address_short":"7428 E Cambridge Ave","street_no_unit":"7428 E Cambridge Ave","unit":null,"city":"SCOTTSDALE","state":"AZ","zip":"85257","latitude":33.478329,"longitude":-111.920155,"segment":"SFR","bedrooms":3,"bathrooms":2,"sqft":1683,"year_built":1959,"pool":true},"distance_miles":0.1,"bought_on":"2025-03-05","date_quality":"deed","held_since_source":"DEED_ACQUISITION","bought_price":540000,"sold_on":"2025-09-18","sold_price":690000,"hold_days":197,"gross_profit":150000,"spread_ratio":0.277778,"price_quality":"BOTH","days_held_to_data_end":null,"sold_to_wholesaler":false,"round_trip":false,"is_purchase_event":true,"n_parcels_in_event":1,"bought_from_wholesaler":false,"bought_from_wholesaler_via":null,"wholesaler_investor_id":null,"bought_from_investor":false,"bought_distressed":false,"bought_auction_kind":null,"holding_kind":null,"acquisition_kind":null,"investor":{"id":"inv_0d079771ae62","market":"phx","name":"KREATIVE HOME SOLUTIONS LLC","display_name":"KREATIVE HOME SOLUTIONS LLC","state":"AZ","kind":"FLIPPER","confidence":"WEAK","scale":"small","institutional":false,"is_public":false,"last_bought_on":"2025-03-05","n_deals":1,"buyer_status":"registered"},"seller":{"id":null,"name":null,"display_name":null,"kind":"PERSON","kinds":null},"end_buyer":{"id":null,"name":null,"display_name":null,"kind":"PERSON","kinds":null},"owner":null,"listing":null,"short_term_rental":null,"wholesale_listing":null,"financing":{"purchase_loan_status":"NONE_CAPTURED","purchase_loan":null,"secondary_loans_n":null,"link_window":null,"outcome":null,"as_of":"2026-06-25","dated":true}}],"page":{"next_cursor":"eyJ2IjoxLCJydW4iOiIxNzg4NDY5ODE5IiwicSI6IjRlNzcwNGQyMjljY2E1NGNjYWFjYzFmYzJjNzkwMGM2NTkwZDUzMzU4Zjg4YWJhZWVkZTgzZWRmOGJlMzZmZjkiLCJrIjpbMTU4LjQ0OTk3ODY0MjAzNzUsIjQ2Zjc0MWFmZGZkM2ExYmU1N2JiZjVhZmE4ZWQ2ZTU4Il19","limit":2,"returned":2},"meta":{"generated_at":"2026-09-03T21:40:00.000Z","reference_point":{"lat":33.476917,"lng":-111.920385},"geometry":{"kind":"radius","lat":33.476917,"lng":-111.920385,"radius_miles":2,"bbox":null,"property_id":null,"zip":null,"city":null},"coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":7,"registry_version":"v4-metro-review-fixes","dataset_version":1788469819,"loaded_at":"2026-09-03T21:10:18.682Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":null,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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"},"X-Credits-Charged":{"$ref":"#/components/headers/X-Credits-Charged"},"X-Credits-Remaining":{"$ref":"#/components/headers/X-Credits-Remaining"}}},"400":{"description":"Bad request (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/deals","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":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/deals","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":"/v1/deals","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":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/deals","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":"/v1/deals","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":"/v1/deals","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, ledger_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":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/deals","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":"/v1/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/deals/cells":{"get":{"operationId":"listDealCells","summary":"Count deals per hex cell for a zoomed-out map","tags":["deals"],"description":"Counts per H3 hexagon over a radius, a viewport, a parcel's surroundings, or a ZIP list or postal city. Each cell says how many deals, of which kinds, by how many investors.\n\nUse it for the map at every zoom. `res=8` suits a city or county view, `res=7` a whole metro. At neighbourhood zoom, list the deals in view with `/v1/deals` instead.\n\n[Choosing a resolution and reading the counts](https://developers.investorlift.com/api-reference/endpoints/deals-cells).","parameters":[{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["flip","wholesale","hold","long_hold","other","build"],"description":"What occurred on the deal. flip: bought, fixed and resold within about a year at a profit-shaped margin; wholesale: bought and resold in under 30 days, or a chain resale or round trip within 90 (a double close); hold: bought and still owned at data_end, a confirmed holding or an un-resold purchase; long_hold: held over a year, then sold (a landlord exit); other: an investor resale that is not a clean flip. Reasons: a loss, a thin margin, a builder's new home resold, an iBuyer resale, or a chain resale of 3 to 12 months; build: a registered investor bought a lot or teardown, built a house on it during the hold, then sold. A builder's finished home bought and resold is other. On data built after 2026-09-17 the kind keeps only a single-family parcel held over 90 days, its house complete by the sale year. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."}},"in":"query","name":"kind","required":false,"description":"Deal kinds to keep (comma list or repeated key). Default: every kind."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"price_min","required":false,"description":"Minimum bought price, inclusive, integer dollars. When you set price_min or price_max, the API drops null-priced rows unless include_unpriced=true."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"price_max","required":false,"description":"Maximum bought price, inclusive, integer dollars."},{"schema":{"type":"string"},"in":"query","name":"bought_after","required":false,"description":"Keep deals bought on or after this date. When you set bought_after or bought_before, the API drops null-date rows unless include_undated=true."},{"schema":{"type":"string"},"in":"query","name":"bought_before","required":false,"description":"Keep deals bought on or before this date."},{"schema":{"type":"string"},"in":"query","name":"sold_after","required":false,"description":"Resold deals only: sold on or after this date."},{"schema":{"type":"string"},"in":"query","name":"sold_before","required":false,"description":"Resold deals only: sold on or before this date."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["SFR","CONDO_TH","OTHER"],"description":"Parcel segment: SFR, CONDO_TH (condo or townhouse) or OTHER, a mixed bucket of manufactured, multi-family, land and commercial parcels."}},"in":"query","name":"segment","required":false,"description":"Parcel segments to keep. Default: every segment."},{"schema":{"type":"integer","minimum":0,"maximum":50},"in":"query","name":"beds_min","required":false,"description":"Minimum bedrooms, inclusive."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"sqft_min","required":false,"description":"Minimum living area in square feet, inclusive, 0 to 1,000,000."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"sqft_max","required":false,"description":"Maximum living area in square feet, inclusive, 0 to 1,000,000."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."}},"in":"query","name":"investor_kind","required":false,"description":"Keep investors that carry at least one listed kind. The check reads any of their kinds[], never the primary kind. Default: every kind. Buyers without an investor id pass unless registered_only=true."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."}},"in":"query","name":"investor_kind_exclude","required":false,"description":"Drop investors that carry any listed kind. The API checks kinds[] after investor_kind. investor_kind_exclude=WHOLESALER removes investors who also wholesale."},{"schema":{"type":"string","enum":["STRONG","PROBABLE","WEAK"]},"in":"query","name":"investor_confidence_min","required":false,"description":"Minimum registry confidence in the investor kind: STRONG, PROBABLE or WEAK (WEAK admits everything)."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["individual","small","mid","large","institutional"],"description":"Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."}},"in":"query","name":"scale","required":false,"description":"Scale tiers to keep. Default: every tier except institutional. An explicit list replaces the default entirely. scale=institutional alone returns only institutional. scale=individual,small,mid,large,institutional returns everyone."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_public","required":false,"description":"Include public-body investors (counties, cities, housing authorities) and their deals. Default false: every list endpoint hides them."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_unpriced","required":false,"description":"Keep null-priced rows when you set price_min or price_max (default false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_undated","required":false,"description":"Keep null-date rows when you set bought_after or bought_before (default false)."},{"schema":{"type":"integer","minimum":1,"maximum":600},"in":"query","name":"active_within_months","required":false,"description":"Keep investors whose last purchase is at most this many months before data_end (data_end minus last_bought_on). Sales and transfers do not count. No default."},{"schema":{"type":"integer","minimum":1,"maximum":1000000},"in":"query","name":"investor_deals_min","required":false,"description":"Minimum purchase events of that investor inside the geometry, 1 to 1,000,000. The API applies it after the other filters."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"holds_min","required":false,"description":"Investor filter: keep investors who hold at least this many parcels across the whole market at the deed data end (meta.coverage[].data_end). The count is the investor's n_holds: confirmed holdings plus un-resold purchases inside the area loaded for the market, not the holdings inside the geometry. Range 0 to 1,000,000, inclusive. For example, holds_min=20 keeps the larger portfolios. Buyers without an investor id pass unless registered_only=true."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"holds_max","required":false,"description":"Investor filter: keep investors who hold at most this many parcels across the whole market at the deed data end (n_holds). Range 0 to 1,000,000, inclusive. holds_max=0 keeps the investors that hold nothing. Beside holds_min the pair is a band. Buyers without an investor id pass unless registered_only=true."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"buys_wholesale","required":false,"description":"Investor filter: at least one bought-from-wholesaler deal in the 36 months before data_end."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"buys_at_auction","required":false,"description":"Investor filter: true keeps investors who bought at least one house at a foreclosure auction in the 24 months before data_end. A foreclosure auction is a trustee's sale or an Arizona sheriff's sale, and the filter reads investor.auction.is_active_auction_buyer. These buyers pay cash within a day and buy without an inspection. False keeps registered investors who did not. Buyers without an investor id pass unless registered_only=true. The API answers 422 auction_unavailable in a market that does not publish its auction counts (meta.coverage[].auction_counted false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"buys_reo","required":false,"description":"Investor filter: true keeps investors who bought at least one house from a lender, servicer or agency after a foreclosure. The window is the 24 months before data_end, and the filter reads investor.auction.is_active_reo_buyer. A bank-owned (REO) sale gave the buyer weeks, an inspection and the option to finance: the weaker cash signal beside buys_at_auction. False keeps registered investors who did not, and buys_at_auction=true&buys_reo=false is the cash-only set. Buyers without an investor id pass unless registered_only=true. The API answers 422 auction_unavailable where the market does not publish its auction counts."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["TRUSTEE_SALE","SHERIFF_SALE","HOA_TRUSTEE_SALE","TAX_SALE","TAX_LIEN_DEED"],"description":"The kind of auction the purchase deed records: TRUSTEE_SALE and SHERIFF_SALE count toward buys_at_auction, and the API shows the other three but never counts them. TRUSTEE_SALE: a lender's foreclosure sale by the trustee, cash and final on the day, without redemption. In Arizona the buyer pays a $10,000 deposit and the full bid by 5 pm the next business day. In Texas it is the first-Tuesday courthouse sale, in Washington the Friday sale at the county's designated place under RCW 61.24. SHERIFF_SALE: a judicial sale under court order. In Arizona it is an HOA or judgment-lien sale, cash but subject to the first mortgage and to a 30-day or 6-month redemption. In Washington it is a judicial mortgage foreclosure or lien sale under RCW 6.21, with an 8-month or 1-year redemption. In Washington the sale is subject to the senior lien only when it is a lien sale. HOA_TRUSTEE_SALE: a Texas homeowners association foreclosure recorded as a trustee's deed, cash, subject to the first lien and to a 180-day redemption. TAX_SALE: a Texas constable or taxing-unit tax sale, cash, with a 180-day or 2-year redemption. In Washington it is the county treasurer's deed after the tax foreclosure judgment, with no redemption after the sale. TAX_LIEN_DEED: an Arizona treasurer's deed to a tax-lien holder, mostly vacant land, not an auction of the house."}},"in":"query","name":"bought_auction_kind","required":false,"description":"Deal filter: keep deals whose purchase deed was a third-party auction purchase of one of the listed kinds (comma list or repeated key). For example, bought_auction_kind=TRUSTEE_SALE keeps houses bought at a foreclosure sale. The API drops deals bought any other way and deals without a buy deed. The API answers 422 auction_unavailable where the market does not publish its auction counts."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"bought_from_wholesaler","required":false,"description":"Deal filter: bought through a documented double close from a wholesaler, or from a known wholesaler. Assignments leave no deed, so absence is not evidence."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"bought_distressed","required":false,"description":"Deal filter: the buy leg was a distressed sale. That is a foreclosure, trustee, sheriff or tax instrument, a deed in lieu, or a deed the feed flags as REO. It is wider than bought_auction_kind, which keeps only third-party auction purchases."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"registered_only","required":false,"description":"Keep only rows whose buyer carries an investor id (investor.id is not null)."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["registered","unclassified","excluded","unknown"],"description":"The buyer's standing in the registry: registered (has an investor id), unclassified, excluded or unknown (the deed names no buyer). Unclassified: a named buyer the registry did not classify as an investor, usually a household. Excluded: a named buyer the registry deliberately left out. Those are custodian trusts, relocation companies, auction houses and ambiguous surnames."}},"in":"query","name":"buyer_status","required":false,"description":"Buyer statuses to keep."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"str_operator","required":false,"description":"Investor filter: true keeps investors that hold at least one parcel with a business-use short-term-rental licence attributed to them. That is the str roll-up's n_holdings at 1 or more. False keeps investors with none. Buyers without an investor id pass unless registered_only=true. The API answers 422 str_unavailable when a market in play has no short-term rental tables (meta.coverage[].str_as_of null)."},{"schema":{"type":"integer","minimum":1,"maximum":100000},"in":"query","name":"str_holdings_min","required":false,"description":"Investor filter: at least this many of the investor's holdings carry a business-use short-term-rental licence attributed to them (the str roll-up's n_holdings), 1 or more. Buyers without an investor id pass unless registered_only=true. The API answers 422 str_unavailable when a market in play has no short-term rental tables."},{"schema":{"type":"string","pattern":"^len_[0-9a-f]{12}$"},"in":"query","name":"financed_by","required":false,"description":"Investor filter: keep investors with at least one recorded loan from this lender, as the main borrower of the mortgage or the open lien. The value is a lender id, len_ followed by 12 hex characters, for example len_d2028f0766fc from GET /v1/lenders/search. The match is investor_id on the lender's loan rows. The count is a floor: the recorded history sees about one loan in five. Buyers without an investor id pass unless registered_only=true. The API answers 422 lenders_unavailable when a market in play has no lender registry with the borrower match (meta.coverage[].lenders null or borrowers_measured false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"uses_private_lender","required":false,"description":"Investor filter: true keeps investors with a loan from a private lender, recorded in the 24 months before the lender registry's slice date (meta.coverage[].lenders.as_of). A private lender is a hard-money lender by name or behaviour (is_hard_money) or an investor lender by behaviour (is_investor_lender). A lender whose class reads INDIVIDUAL or PRIVATE also counts as private. False keeps registered investors with none such, and the result is a floor of a partial feed. Buyers without an investor id pass unless registered_only=true. The API answers 422 lenders_unavailable when a market in play has no lender registry with the borrower match."},{"schema":{"type":"string","pattern":"^inv_[0-9a-f]{12}$"},"in":"query","name":"investor_id","required":false,"description":"Scope the rows to one buyer (the drawer's \"Activity here\"). The API follows an old id from an earlier data refresh to the investor that superseded it and echoes the old id in meta.resolved_from. A retired id is 410 gone."},{"schema":{"type":"string","pattern":"^deal_[0-9a-f]{32}$"},"in":"query","name":"deal_id","required":false,"description":"Scope the rows to one deal."},{"schema":{"type":"number","minimum":-90,"maximum":90},"in":"query","name":"lat","required":false,"description":"Point latitude (with lng). With radius_miles it is the search geometry. With bbox it is the reference point only."},{"schema":{"type":"number","minimum":-180,"maximum":180},"in":"query","name":"lng","required":false,"description":"Point longitude (with lat)."},{"schema":{"type":"number","minimum":0.25,"maximum":20},"in":"query","name":"radius_miles","required":false,"description":"Search radius in miles around the point or around the centre of the property_id parcel, 0.25 to 20 (default 2). Not allowed with bbox."},{"schema":{"type":"string"},"in":"query","name":"bbox","required":false,"description":"Viewport as west,south,east,north (WGS84 degrees). West must be less than east, south less than north, and the diagonal at most 40 mi. It must intersect a loaded market's coverage bbox (422 outside_coverage otherwise). It can carry lat + lng (without radius_miles) as the reference point for distances and sort=distance."},{"schema":{"type":"string","pattern":"^prop_[0-9a-f]{32}$"},"in":"query","name":"property_id","required":false,"description":"Parcel geometry: search around the centre of that parcel, with radius_miles. Not allowed with lat, lng or bbox."},{"schema":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","pattern":"^\\d{5}$"}},"in":"query","name":"zip","required":false,"description":"Place geometry: the parcels of these 5-digit ZIP codes, as a comma list or a repeated key, up to 50. On the deal and investor routes the Free and Starter plans take exactly one ZIP, and more is 403 plan_limit. You can add lat + lng as the reference point for distances. Not with radius_miles, bbox, property_id or city. A ZIP that no parcel of a loaded market carries is 422 outside_coverage (zips_unknown in the body)."},{"schema":{"type":"string","minLength":1,"maxLength":100},"in":"query","name":"city","required":false,"description":"Place geometry: the parcels whose postal city is this one, as the county records it (\"Scottsdale\"). Case does not matter: the API compares the value folded upper case. Never the short-term rental jurisdiction (meta.coverage[].str.jurisdictions[]). You can add lat + lng as the reference point, but not radius_miles, bbox, property_id or zip. On the deal and investor routes of the Free and Starter plans a city-wide search is 403 plan_limit. A city that no parcel of a loaded market carries is 422 outside_coverage."},{"schema":{"default":"8","type":"string","enum":["7","8"]},"in":"query","name":"res","required":false,"description":"H3 cell resolution: 8 or 7. Resolution 8 (the default) has cells of about 0.3 square miles, a city or county view. Resolution 7 has cells of about 2 square miles, the whole metro."}],"responses":{"200":{"description":"Deal counts per H3 cell inside the geometry.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DealCells"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"Deal counts per H3 cell inside the geometry."},"example":{"data":{"res":8,"cells":["8829b6da45fffff","8829b6da4dfffff","8829b6da69fffff","8829b6da6dfffff","8848eba437fffff","8848eba4a1fffff","8848eba4a5fffff","8848eba4a7fffff","8848eba4adfffff","8848eba581fffff","8848eba583fffff","8848eba585fffff","8848eba587fffff","8848eba589fffff","8848eba58bfffff","8848eba58dfffff","8848eba591fffff","8848eba593fffff","8848eba595fffff","8848eba597fffff","8848eba599fffff","8848eba59bfffff","8848eba59dfffff","8848eba5a3fffff","8848eba5abfffff","8848eba5b1fffff","8848eba5b3fffff","8848eba5b5fffff","8848eba5b7fffff","8848eba5b9fffff","8848eba5bbfffff","8848eba5bdfffff","8848eba5c1fffff","8848eba5c3fffff","8848eba5c5fffff","8848eba5c7fffff","8848eba5cbfffff","8848eba5d1fffff","8848eba5d3fffff","8848eba5d5fffff","8848eba5d7fffff","8848eba5d9fffff","8848eba5dbfffff","8848eba5ddfffff","8848eba5e3fffff","8848eba5ebfffff"],"n":[36,197,94,363,38,42,143,153,4,362,269,306,299,187,152,281,642,286,220,187,296,230,275,25,103,405,781,179,2,534,690,309,2,242,40,365,180,345,187,184,443,230,40,395,78,159],"n_flips":[3,28,6,10,5,15,33,25,0,75,41,85,52,35,29,47,65,11,17,1,52,16,51,7,17,64,90,31,0,59,61,73,0,43,2,40,28,59,43,33,43,53,14,72,23,25],"n_wholesales":[0,8,0,2,5,4,11,11,1,34,17,40,17,18,8,21,17,4,3,3,17,2,22,1,12,18,30,7,0,32,5,25,0,18,0,10,12,24,12,16,20,15,4,34,5,5],"n_holds":[15,75,56,268,22,14,60,62,2,169,128,102,144,83,74,166,414,159,144,166,165,145,156,13,53,237,525,105,1,287,490,125,2,125,30,235,100,195,94,104,317,120,16,220,36,102],"n_long_holds":[7,61,19,54,4,8,32,33,1,68,61,55,60,35,29,35,92,59,39,9,41,35,29,4,18,66,105,27,0,109,100,56,0,29,6,62,24,41,27,20,41,30,6,49,10,21],"n_other":[2,15,7,25,2,1,5,11,0,15,20,23,24,14,11,12,48,18,12,8,21,25,14,0,1,20,31,9,1,44,34,23,0,22,2,18,14,24,9,10,21,12,0,19,4,6],"n_builds":[9,10,6,4,0,0,2,11,0,1,2,1,2,2,1,0,6,35,5,0,0,7,3,0,2,0,0,0,0,3,0,7,0,5,0,0,2,2,2,1,1,0,0,1,0,0],"n_investors":[33,163,71,216,37,39,124,128,4,261,235,249,260,162,133,193,433,213,161,99,255,157,218,25,88,322,375,118,2,400,347,247,2,205,21,240,155,267,151,151,195,199,37,265,73,115]},"meta":{"generated_at":"2026-09-03T21:40:00.000Z","reference_point":{"lat":33.476917,"lng":-111.920385},"geometry":{"kind":"radius","lat":33.476917,"lng":-111.920385,"radius_miles":2,"bbox":null,"property_id":null,"zip":null,"city":null},"coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":7,"registry_version":"v4-metro-review-fixes","dataset_version":1788469819,"loaded_at":"2026-09-03T21:10:18.682Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":null,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/deals/cells","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":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/deals/cells","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":"/v1/deals/cells","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":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/deals/cells","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":"/v1/deals/cells","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":"/v1/deals/cells","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, ledger_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":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/deals/cells","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":"/v1/deals/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/deals/summary":{"get":{"operationId":"getDealSummary","summary":"Summarise deal activity around a location","tags":["deals"],"description":"The headline numbers for an area: deals by kind, investors, parcels, typical prices, hold time and profit. Also the breakdown by year, by investor scale, by investor kind and by purchase channel.\n\nIt takes exactly the location and the filters of `/v1/deals`, so the header and the table below it agree. The location is a radius, a viewport, a parcel, or a ZIP list or postal city. A paged list carries no totals, so this route serves them.\n\n[Which totals sum to what, and the median rules](https://developers.investorlift.com/api-reference/endpoints/deals-summary).","parameters":[{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["flip","wholesale","hold","long_hold","other","build"],"description":"What occurred on the deal. flip: bought, fixed and resold within about a year at a profit-shaped margin; wholesale: bought and resold in under 30 days, or a chain resale or round trip within 90 (a double close); hold: bought and still owned at data_end, a confirmed holding or an un-resold purchase; long_hold: held over a year, then sold (a landlord exit); other: an investor resale that is not a clean flip. Reasons: a loss, a thin margin, a builder's new home resold, an iBuyer resale, or a chain resale of 3 to 12 months; build: a registered investor bought a lot or teardown, built a house on it during the hold, then sold. A builder's finished home bought and resold is other. On data built after 2026-09-17 the kind keeps only a single-family parcel held over 90 days, its house complete by the sale year. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."}},"in":"query","name":"kind","required":false,"description":"Deal kinds to keep (comma list or repeated key). Default: every kind."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"price_min","required":false,"description":"Minimum bought price, inclusive, integer dollars. When you set price_min or price_max, the API drops null-priced rows unless include_unpriced=true."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"price_max","required":false,"description":"Maximum bought price, inclusive, integer dollars."},{"schema":{"type":"string"},"in":"query","name":"bought_after","required":false,"description":"Keep deals bought on or after this date. When you set bought_after or bought_before, the API drops null-date rows unless include_undated=true."},{"schema":{"type":"string"},"in":"query","name":"bought_before","required":false,"description":"Keep deals bought on or before this date."},{"schema":{"type":"string"},"in":"query","name":"sold_after","required":false,"description":"Resold deals only: sold on or after this date."},{"schema":{"type":"string"},"in":"query","name":"sold_before","required":false,"description":"Resold deals only: sold on or before this date."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["SFR","CONDO_TH","OTHER"],"description":"Parcel segment: SFR, CONDO_TH (condo or townhouse) or OTHER, a mixed bucket of manufactured, multi-family, land and commercial parcels."}},"in":"query","name":"segment","required":false,"description":"Parcel segments to keep. Default: every segment."},{"schema":{"type":"integer","minimum":0,"maximum":50},"in":"query","name":"beds_min","required":false,"description":"Minimum bedrooms, inclusive."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"sqft_min","required":false,"description":"Minimum living area in square feet, inclusive, 0 to 1,000,000."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"sqft_max","required":false,"description":"Maximum living area in square feet, inclusive, 0 to 1,000,000."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."}},"in":"query","name":"investor_kind","required":false,"description":"Keep investors that carry at least one listed kind. The check reads any of their kinds[], never the primary kind. Default: every kind. Buyers without an investor id pass unless registered_only=true."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."}},"in":"query","name":"investor_kind_exclude","required":false,"description":"Drop investors that carry any listed kind. The API checks kinds[] after investor_kind. investor_kind_exclude=WHOLESALER removes investors who also wholesale."},{"schema":{"type":"string","enum":["STRONG","PROBABLE","WEAK"]},"in":"query","name":"investor_confidence_min","required":false,"description":"Minimum registry confidence in the investor kind: STRONG, PROBABLE or WEAK (WEAK admits everything)."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["individual","small","mid","large","institutional"],"description":"Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."}},"in":"query","name":"scale","required":false,"description":"Scale tiers to keep. Default: every tier except institutional. An explicit list replaces the default entirely. scale=institutional alone returns only institutional. scale=individual,small,mid,large,institutional returns everyone."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_public","required":false,"description":"Include public-body investors (counties, cities, housing authorities) and their deals. Default false: every list endpoint hides them."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_unpriced","required":false,"description":"Keep null-priced rows when you set price_min or price_max (default false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_undated","required":false,"description":"Keep null-date rows when you set bought_after or bought_before (default false)."},{"schema":{"type":"integer","minimum":1,"maximum":600},"in":"query","name":"active_within_months","required":false,"description":"Keep investors whose last purchase is at most this many months before data_end (data_end minus last_bought_on). Sales and transfers do not count. No default."},{"schema":{"type":"integer","minimum":1,"maximum":1000000},"in":"query","name":"investor_deals_min","required":false,"description":"Minimum purchase events of that investor inside the geometry, 1 to 1,000,000. The API applies it after the other filters."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"holds_min","required":false,"description":"Investor filter: keep investors who hold at least this many parcels across the whole market at the deed data end (meta.coverage[].data_end). The count is the investor's n_holds: confirmed holdings plus un-resold purchases inside the area loaded for the market, not the holdings inside the geometry. Range 0 to 1,000,000, inclusive. For example, holds_min=20 keeps the larger portfolios. Buyers without an investor id pass unless registered_only=true."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"holds_max","required":false,"description":"Investor filter: keep investors who hold at most this many parcels across the whole market at the deed data end (n_holds). Range 0 to 1,000,000, inclusive. holds_max=0 keeps the investors that hold nothing. Beside holds_min the pair is a band. Buyers without an investor id pass unless registered_only=true."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"buys_wholesale","required":false,"description":"Investor filter: at least one bought-from-wholesaler deal in the 36 months before data_end."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"buys_at_auction","required":false,"description":"Investor filter: true keeps investors who bought at least one house at a foreclosure auction in the 24 months before data_end. A foreclosure auction is a trustee's sale or an Arizona sheriff's sale, and the filter reads investor.auction.is_active_auction_buyer. These buyers pay cash within a day and buy without an inspection. False keeps registered investors who did not. Buyers without an investor id pass unless registered_only=true. The API answers 422 auction_unavailable in a market that does not publish its auction counts (meta.coverage[].auction_counted false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"buys_reo","required":false,"description":"Investor filter: true keeps investors who bought at least one house from a lender, servicer or agency after a foreclosure. The window is the 24 months before data_end, and the filter reads investor.auction.is_active_reo_buyer. A bank-owned (REO) sale gave the buyer weeks, an inspection and the option to finance: the weaker cash signal beside buys_at_auction. False keeps registered investors who did not, and buys_at_auction=true&buys_reo=false is the cash-only set. Buyers without an investor id pass unless registered_only=true. The API answers 422 auction_unavailable where the market does not publish its auction counts."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["TRUSTEE_SALE","SHERIFF_SALE","HOA_TRUSTEE_SALE","TAX_SALE","TAX_LIEN_DEED"],"description":"The kind of auction the purchase deed records: TRUSTEE_SALE and SHERIFF_SALE count toward buys_at_auction, and the API shows the other three but never counts them. TRUSTEE_SALE: a lender's foreclosure sale by the trustee, cash and final on the day, without redemption. In Arizona the buyer pays a $10,000 deposit and the full bid by 5 pm the next business day. In Texas it is the first-Tuesday courthouse sale, in Washington the Friday sale at the county's designated place under RCW 61.24. SHERIFF_SALE: a judicial sale under court order. In Arizona it is an HOA or judgment-lien sale, cash but subject to the first mortgage and to a 30-day or 6-month redemption. In Washington it is a judicial mortgage foreclosure or lien sale under RCW 6.21, with an 8-month or 1-year redemption. In Washington the sale is subject to the senior lien only when it is a lien sale. HOA_TRUSTEE_SALE: a Texas homeowners association foreclosure recorded as a trustee's deed, cash, subject to the first lien and to a 180-day redemption. TAX_SALE: a Texas constable or taxing-unit tax sale, cash, with a 180-day or 2-year redemption. In Washington it is the county treasurer's deed after the tax foreclosure judgment, with no redemption after the sale. TAX_LIEN_DEED: an Arizona treasurer's deed to a tax-lien holder, mostly vacant land, not an auction of the house."}},"in":"query","name":"bought_auction_kind","required":false,"description":"Deal filter: keep deals whose purchase deed was a third-party auction purchase of one of the listed kinds (comma list or repeated key). For example, bought_auction_kind=TRUSTEE_SALE keeps houses bought at a foreclosure sale. The API drops deals bought any other way and deals without a buy deed. The API answers 422 auction_unavailable where the market does not publish its auction counts."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"bought_from_wholesaler","required":false,"description":"Deal filter: bought through a documented double close from a wholesaler, or from a known wholesaler. Assignments leave no deed, so absence is not evidence."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"bought_distressed","required":false,"description":"Deal filter: the buy leg was a distressed sale. That is a foreclosure, trustee, sheriff or tax instrument, a deed in lieu, or a deed the feed flags as REO. It is wider than bought_auction_kind, which keeps only third-party auction purchases."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"registered_only","required":false,"description":"Keep only rows whose buyer carries an investor id (investor.id is not null)."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["registered","unclassified","excluded","unknown"],"description":"The buyer's standing in the registry: registered (has an investor id), unclassified, excluded or unknown (the deed names no buyer). Unclassified: a named buyer the registry did not classify as an investor, usually a household. Excluded: a named buyer the registry deliberately left out. Those are custodian trusts, relocation companies, auction houses and ambiguous surnames."}},"in":"query","name":"buyer_status","required":false,"description":"Buyer statuses to keep."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"str_operator","required":false,"description":"Investor filter: true keeps investors that hold at least one parcel with a business-use short-term-rental licence attributed to them. That is the str roll-up's n_holdings at 1 or more. False keeps investors with none. Buyers without an investor id pass unless registered_only=true. The API answers 422 str_unavailable when a market in play has no short-term rental tables (meta.coverage[].str_as_of null)."},{"schema":{"type":"integer","minimum":1,"maximum":100000},"in":"query","name":"str_holdings_min","required":false,"description":"Investor filter: at least this many of the investor's holdings carry a business-use short-term-rental licence attributed to them (the str roll-up's n_holdings), 1 or more. Buyers without an investor id pass unless registered_only=true. The API answers 422 str_unavailable when a market in play has no short-term rental tables."},{"schema":{"type":"string","pattern":"^len_[0-9a-f]{12}$"},"in":"query","name":"financed_by","required":false,"description":"Investor filter: keep investors with at least one recorded loan from this lender, as the main borrower of the mortgage or the open lien. The value is a lender id, len_ followed by 12 hex characters, for example len_d2028f0766fc from GET /v1/lenders/search. The match is investor_id on the lender's loan rows. The count is a floor: the recorded history sees about one loan in five. Buyers without an investor id pass unless registered_only=true. The API answers 422 lenders_unavailable when a market in play has no lender registry with the borrower match (meta.coverage[].lenders null or borrowers_measured false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"uses_private_lender","required":false,"description":"Investor filter: true keeps investors with a loan from a private lender, recorded in the 24 months before the lender registry's slice date (meta.coverage[].lenders.as_of). A private lender is a hard-money lender by name or behaviour (is_hard_money) or an investor lender by behaviour (is_investor_lender). A lender whose class reads INDIVIDUAL or PRIVATE also counts as private. False keeps registered investors with none such, and the result is a floor of a partial feed. Buyers without an investor id pass unless registered_only=true. The API answers 422 lenders_unavailable when a market in play has no lender registry with the borrower match."},{"schema":{"type":"string","pattern":"^inv_[0-9a-f]{12}$"},"in":"query","name":"investor_id","required":false,"description":"Scope the rows to one buyer (the drawer's \"Activity here\"). The API follows an old id from an earlier data refresh to the investor that superseded it and echoes the old id in meta.resolved_from. A retired id is 410 gone."},{"schema":{"type":"string","pattern":"^deal_[0-9a-f]{32}$"},"in":"query","name":"deal_id","required":false,"description":"Scope the rows to one deal."},{"schema":{"type":"number","minimum":-90,"maximum":90},"in":"query","name":"lat","required":false,"description":"Point latitude (with lng). With radius_miles it is the search geometry. With bbox it is the reference point only."},{"schema":{"type":"number","minimum":-180,"maximum":180},"in":"query","name":"lng","required":false,"description":"Point longitude (with lat)."},{"schema":{"type":"number","minimum":0.25,"maximum":20},"in":"query","name":"radius_miles","required":false,"description":"Search radius in miles around the point or around the centre of the property_id parcel, 0.25 to 20 (default 2). Not allowed with bbox."},{"schema":{"type":"string"},"in":"query","name":"bbox","required":false,"description":"Viewport as west,south,east,north (WGS84 degrees). West must be less than east, south less than north, and the diagonal at most 40 mi. It must intersect a loaded market's coverage bbox (422 outside_coverage otherwise). It can carry lat + lng (without radius_miles) as the reference point for distances and sort=distance."},{"schema":{"type":"string","pattern":"^prop_[0-9a-f]{32}$"},"in":"query","name":"property_id","required":false,"description":"Parcel geometry: search around the centre of that parcel, with radius_miles. Not allowed with lat, lng or bbox."},{"schema":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","pattern":"^\\d{5}$"}},"in":"query","name":"zip","required":false,"description":"Place geometry: the parcels of these 5-digit ZIP codes, as a comma list or a repeated key, up to 50. On the deal and investor routes the Free and Starter plans take exactly one ZIP, and more is 403 plan_limit. You can add lat + lng as the reference point for distances. Not with radius_miles, bbox, property_id or city. A ZIP that no parcel of a loaded market carries is 422 outside_coverage (zips_unknown in the body)."},{"schema":{"type":"string","minLength":1,"maxLength":100},"in":"query","name":"city","required":false,"description":"Place geometry: the parcels whose postal city is this one, as the county records it (\"Scottsdale\"). Case does not matter: the API compares the value folded upper case. Never the short-term rental jurisdiction (meta.coverage[].str.jurisdictions[]). You can add lat + lng as the reference point, but not radius_miles, bbox, property_id or zip. On the deal and investor routes of the Free and Starter plans a city-wide search is 403 plan_limit. A city that no parcel of a loaded market carries is 422 outside_coverage."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["LICENSED","PENDING","EXPIRED"],"description":"The short-term rental status a holding must carry for the API to keep the row: the block's status. LICENSED means an active licence or permit, PENDING an application on file with none active, and EXPIRED every record on the parcel inactive. The API keeps a row when any of the values matches. Rows that are not holdings (flips, wholesales, resold purchases) carry no block and never match. The API serves NONE on rows, but NONE is not filterable in this release (400 for the value)."}},"in":"query","name":"str_status","required":false,"description":"Keep only holdings whose short-term rental status matches one of the values (comma list or repeated key): LICENSED, PENDING or EXPIRED, the block's status. The API serves NONE on rows, but NONE is not filterable in this release (400 for the value). The API applies the filter before it cuts the page. Rows that are not holdings never match. 422 str_unavailable when a market in play has no short-term rental tables (meta.coverage[].str_as_of null). Default: every row."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"str_business_use","required":false,"description":"With true, keep only hold rows whose licence is a business use attributed to the current owner: the UI's short-term rental deal type. With false, keep only hold rows whose licence is not one: a person's own home with a casita permit, or a prior owner's permit. Without str_status the test covers LICENSED and PENDING records, the only ones where business_use is true. Combine it with str_status to widen or narrow. The API applies the filter before it cuts the page. Rows that are not holdings never match. 422 str_unavailable when a market in play has no short-term rental tables (meta.coverage[].str_as_of null). Default: every row."}],"responses":{"200":{"description":"Header statistics for the geometry.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DealSummaryStats"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"Header statistics for the geometry."},"example":{"data":{"n_deals":1200,"by_kind":{"flip":214,"wholesale":92,"hold":822,"long_hold":31,"other":33,"build":8},"by_buyer_status":{"registered":1176,"unclassified":14,"excluded":9,"unknown":1},"by_channel":{"from_wholesaler":125,"from_investor":242,"distressed":28,"auction":20,"other_or_unknown":925},"n_investors":871,"n_parcels":1028,"n_unpriced":159,"n_undated":0,"median_bought_price":490000,"median_sold_price":569500,"total_volume":682783819,"median_hold_days":134,"median_gross_profit":106000,"by_year":[{"year":2024,"n":461,"flip":97,"wholesale":32,"hold":287,"long_hold":24,"other":14,"build":7},{"year":2025,"n":451,"flip":103,"wholesale":33,"hold":294,"long_hold":7,"other":13,"build":1},{"year":2026,"n":288,"flip":14,"wholesale":27,"hold":241,"long_hold":0,"other":6,"build":0}],"by_scale":[{"scale":"individual","n":140},{"scale":"small","n":680},{"scale":"mid","n":243},{"scale":"large","n":113},{"scale":null,"n":24}],"by_investor_kind":[{"kind":"LANDLORD","n":1089},{"kind":"FLIPPER","n":449},{"kind":"WHOLESALER","n":261},{"kind":"BUILDER","n":152},{"kind":null,"n":24}]},"meta":{"generated_at":"2026-09-03T21:40:00.000Z","reference_point":{"lat":33.476917,"lng":-111.920385},"geometry":{"kind":"radius","lat":33.476917,"lng":-111.920385,"radius_miles":2,"bbox":null,"property_id":null,"zip":null,"city":null},"coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":7,"registry_version":"v4-metro-review-fixes","dataset_version":1788469819,"loaded_at":"2026-09-03T21:10:18.682Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":null,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/deals/summary","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":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/deals/summary","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":"/v1/deals/summary","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":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/deals/summary","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":"/v1/deals/summary","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":"/v1/deals/summary","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, ledger_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":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/deals/summary","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":"/v1/deals/summary","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/deals/{id}":{"get":{"operationId":"getDeal","summary":"Get one deal by id","tags":["deals"],"description":"One deal: the parcel, the dates and prices, the investor, the counterparties, and, on a confirmed current holding, the owner of record.\n\nUse it for the card behind a table row or a map marker, and for deep links. To list deals around a location use `/v1/deals`.\n\n[When the owner block is present, and the id rules](https://developers.investorlift.com/api-reference/endpoints/deals-get).","parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"The deal id as the API serves it, deal_ followed by 32 hex characters, for example deal_5d1b2c3d4e5f60718293a4b5c6d7e8f9. The prefix is part of the id. The API answers 400 invalid_id to any other shape."}],"responses":{"200":{"description":"The deal, in the same shape as a /v1/deals row, with distance_miles null.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Deal"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The deal, in the same shape as a /v1/deals row, with distance_miles null."},"examples":{"phoenix_recorded":{"summary":"Recorded at the Phoenix golden point, as a deals-only key gets it","value":{"data":{"id":"deal_0057a742ff88160e961dfc73fbefb687","market":"phx","kind":"hold","deal_type":"HOLDING","deal_kind":"CURRENT_HOLDING","ownership_confirmed":true,"buyer_status":"registered","buyer_exclusion":null,"property":{"id":"prop_e672d15ae9e8e7bdcbc15c3f1235d48a","market":"phx","apn":"501-44-328","apn_norm":"50144328","county_fips":"04013","address_short":"12105 N 129th Dr","street_no_unit":"12105 N 129th Dr","unit":null,"city":"EL MIRAGE","state":"AZ","zip":"85335","latitude":33.593424,"longitude":-112.337933,"segment":"SFR","bedrooms":null,"bathrooms":2,"sqft":1090,"year_built":2001,"pool":null},"distance_miles":null,"bought_on":"2026-08-05","date_quality":"deed","held_since_source":"DEED_ACQUISITION","bought_price":205000,"sold_on":null,"sold_price":null,"hold_days":null,"gross_profit":null,"spread_ratio":null,"price_quality":"BUY_ONLY","days_held_to_data_end":7,"sold_to_wholesaler":null,"round_trip":null,"is_purchase_event":true,"n_parcels_in_event":1,"bought_from_wholesaler":false,"bought_from_wholesaler_via":null,"wholesaler_investor_id":null,"bought_from_investor":false,"bought_distressed":false,"bought_auction_kind":null,"holding_kind":"OWNER_OCCUPIED","acquisition_kind":"PURCHASE","investor":{"id":"inv_abaf618f44a3","market":"phx","name":"ZAK VENTURES LLC","display_name":"ZAK VENTURES LLC","state":"AZ","kind":"LANDLORD","confidence":"STRONG","scale":"large","institutional":false,"is_public":false,"last_bought_on":"2026-08-05","n_deals":775,"buyer_status":"registered"},"seller":{"id":null,"name":null,"display_name":null,"kind":"PERSON","kinds":null},"end_buyer":{"id":null,"name":null,"display_name":null,"kind":null,"kinds":null},"owner":{"names":null,"name_order":"given_first","kind":"ENTITY","is_trust":false,"is_public":false,"owner_occupied":true,"absentee":false,"mailing":null,"rental_registered":false,"held_since":"2026-08-05","months_held":0.2,"permits_last_24m":0},"listing":null,"short_term_rental":null,"wholesale_listing":null,"financing":{"purchase_loan_status":"NOT_MEASURED","purchase_loan":null,"secondary_loans_n":null,"link_window":null,"outcome":null,"as_of":"2026-06-25","dated":true}},"meta":{"generated_at":"2026-09-03T21:40:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":7,"registry_version":"v4-metro-review-fixes","dataset_version":1788469819,"loaded_at":"2026-09-03T21:10:18.682Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":null,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}},"texas":{"summary":"A Texas flip bought off-market (market hou, price_quality SELL_ONLY, bought_price null)","value":{"data":{"id":"deal_7a3c0d9e5b1f4e2a8c6d0b9f1e3a5c7d","market":"hou","kind":"flip","deal_type":"PAIR","deal_kind":"FLIP","ownership_confirmed":null,"buyer_status":"registered","buyer_exclusion":null,"property":{"id":"prop_4f1e9b2c7d8a4e6f9b0c1d2e3f4a5b6c","market":"hou","apn":"1092340000012","apn_norm":"1092340000012","county_fips":"48201","address_short":"1 Example St","street_no_unit":"1 Example St","unit":null,"city":"HOUSTON","state":"TX","zip":"77088","latitude":29.8752,"longitude":-95.4504,"segment":"SFR","bedrooms":3,"bathrooms":2,"sqft":1412,"year_built":1978,"pool":null},"distance_miles":null,"bought_on":"2025-02-21","date_quality":"deed","held_since_source":"DEED_ACQUISITION","bought_price":null,"sold_on":"2025-08-15","sold_price":249900,"hold_days":175,"gross_profit":null,"spread_ratio":null,"price_quality":"SELL_ONLY","days_held_to_data_end":null,"sold_to_wholesaler":false,"round_trip":false,"is_purchase_event":true,"n_parcels_in_event":1,"bought_from_wholesaler":false,"bought_from_wholesaler_via":null,"wholesaler_investor_id":null,"bought_from_investor":false,"bought_distressed":false,"bought_auction_kind":null,"holding_kind":null,"acquisition_kind":null,"investor":{"id":"inv_5b7d19c2e4a6","market":"hou","name":"EXAMPLE HOLDINGS LLC","display_name":"EXAMPLE HOLDINGS LLC","state":"TX","kind":"FLIPPER","confidence":"PROBABLE","scale":"small","institutional":false,"is_public":false,"last_bought_on":"2026-05-08","n_deals":7,"buyer_status":"registered"},"seller":{"id":null,"name":null,"display_name":null,"kind":"PERSON","kinds":null},"end_buyer":{"id":null,"name":null,"display_name":null,"kind":"PERSON","kinds":null},"owner":null,"listing":null,"short_term_rental":null,"wholesale_listing":null,"financing":null},"meta":{"generated_at":"2026-09-04T12:00:00.000Z","coverage":[{"market":"hou","state":"TX","counties":[{"fips":"48201","name":"Harris","data_end":"2026-08-10"}],"bbox":[-95.4989,29.8523,-95.4171,29.9034],"data_end":"2026-08-10","build_run_id":1,"registry_run":1,"registry_version":"v4-metro-review-fixes","dataset_version":1757073600,"loaded_at":"2026-09-05T12:00:00.000Z","metro_buy_to_resale_ratio":null,"universe_kind":"zip","universe_zips":["77088"],"point_tolerance_miles":2,"n_parcels":18055,"listings_data_end":"2026-08-31","agents_data_end":null,"wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}},"investorlift":{"summary":"A deal whose deed closed an Investorlift listing (the wholesale_listing block: Investorlift listing 29121, DOUBLE_CLOSED)","value":{"data":{"id":"deal_6caa4fc2180e7a3feb572d8c95cc2b15","market":"phx","kind":"hold","deal_type":"HOLDING","deal_kind":"CURRENT_HOLDING","ownership_confirmed":true,"buyer_status":"registered","buyer_exclusion":null,"property":{"id":"prop_39bff26662a6bb02899027c254a407f1","market":"phx","apn":"101-07-060","apn_norm":"10107060","county_fips":"04013","address_short":"121 S 92nd Ave","street_no_unit":"121 S 92nd Ave","unit":null,"city":"TOLLESON","state":"AZ","zip":"85353","latitude":33.44487,"longitude":-112.257329,"segment":"SFR","bedrooms":3,"bathrooms":1,"sqft":1280,"year_built":1952,"pool":null},"distance_miles":null,"bought_on":"2022-07-01","date_quality":"deed","held_since_source":"DEED_ACQUISITION","bought_price":360000,"sold_on":null,"sold_price":null,"hold_days":null,"gross_profit":null,"spread_ratio":null,"price_quality":"BUY_ONLY","days_held_to_data_end":1503,"sold_to_wholesaler":null,"round_trip":null,"is_purchase_event":true,"n_parcels_in_event":1,"bought_from_wholesaler":true,"bought_from_wholesaler_via":"DOUBLE_CLOSE","wholesaler_investor_id":"inv_bd8f38fd855b","bought_from_investor":true,"bought_distressed":false,"bought_auction_kind":null,"holding_kind":"ABSENTEE_INDIVIDUAL","acquisition_kind":"PURCHASE","investor":{"id":"inv_e7c486427687","market":"phx","name":"RIVERA DANA","display_name":"DANA RIVERA","state":"AZ","kind":"FLIPPER","confidence":"PROBABLE","scale":"small","institutional":false,"is_public":false,"last_bought_on":"2022-07-01","n_deals":8,"buyer_status":"registered"},"seller":{"id":"inv_bd8f38fd855b","name":"CHENNY PROPERTIES LLC","display_name":"CHENNY PROPERTIES LLC","kind":"ENTITY","kinds":["FLIPPER","WHOLESALER","LANDLORD"]},"end_buyer":{"id":null,"name":null,"display_name":null,"kind":null,"kinds":null},"owner":{"names":null,"name_order":"given_first","kind":"PERSON","is_trust":false,"is_public":false,"owner_occupied":false,"absentee":true,"mailing":null,"rental_registered":false,"held_since":"2022-07-01","months_held":49.4,"permits_last_24m":0},"listing":{"status":"SOLD","status_detail":null,"status_raw":"Sold","off_market_reason":null,"is_rental":false,"on_market":false,"owner_test":"FAILED","counted":false,"list_price":null,"price_low":null,"price_low_on":null,"price_high":null,"price_high_on":null,"listed_on":"2013-10-31","status_updated_on":null,"off_market_on":null,"sold_on":"2022-07-05","sold_price":360000,"days_on_market":3169,"list_to_bought_ratio":null,"mls_number":null,"brokerage_name":null,"agents":[{"name":null,"role":"Listing Agent","phone":null,"office_phone":null,"email":null,"agent_id":"agt_6b9390237b09","identity_basis":"LICENSE_NAME","agent_is_holder_member":false,"license_state":null,"license_number":null}]},"short_term_rental":null,"wholesale_listing":{"id":"wl_9a400cf479a21c309a0526e1fd25f1d5","wholesaler":{"id":"wsr_4b8d1df516b9","name":"Pulse Capital LLC"},"listed_on":"2022-06-15","asking_price":360000,"outcome":"DOUBLE_CLOSED","verification":"CONFIRMED","days_listed_to_deed":16},"financing":null},"meta":{"generated_at":"2026-09-10T00:34:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788999683,"loaded_at":"2026-09-10T00:21:23.302Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}}}},"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"},"X-Credits-Charged":{"$ref":"#/components/headers/X-Credits-Charged"},"X-Credits-Remaining":{"$ref":"#/components/headers/X-Credits-Remaining"}}},"400":{"description":"Bad request (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/deals/{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":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/deals/{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":"/v1/deals/{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":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/deals/{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":"/v1/deals/{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":"/v1/deals/{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, ledger_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":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/deals/{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":"/v1/deals/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/buyers/match":{"get":{"operationId":"matchBuyers","summary":"Rank nearby investors as buyers for a property","tags":["buyers"],"description":"The investors who bought near a subject property, ranked by how well they fit it. Each carries the reasons behind its score and proof deals. Give a point, a viewport or a parcel, not a ZIP or city: it ranks near a point. You can add the deal's price, ARV, condition and segment.\n\nUse `/v1/investors` for the same investors without a subject, sorted by activity instead of fit, and `/v1/investors/{id}` when you already know the buyer.\n\n[How the score is built, the factors, and the activity weight](https://developers.investorlift.com/api-reference/endpoints/buyers-match).","parameters":[{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["flip","wholesale","hold","long_hold","other","build"],"description":"What occurred on the deal. flip: bought, fixed and resold within about a year at a profit-shaped margin; wholesale: bought and resold in under 30 days, or a chain resale or round trip within 90 (a double close); hold: bought and still owned at data_end, a confirmed holding or an un-resold purchase; long_hold: held over a year, then sold (a landlord exit); other: an investor resale that is not a clean flip. Reasons: a loss, a thin margin, a builder's new home resold, an iBuyer resale, or a chain resale of 3 to 12 months; build: a registered investor bought a lot or teardown, built a house on it during the hold, then sold. A builder's finished home bought and resold is other. On data built after 2026-09-17 the kind keeps only a single-family parcel held over 90 days, its house complete by the sale year. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."}},"in":"query","name":"kind","required":false,"description":"Deal kinds to keep (comma list or repeated key). Default: every kind."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"price_min","required":false,"description":"Minimum bought price, inclusive, integer dollars. When you set price_min or price_max, the API drops null-priced rows unless include_unpriced=true."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"price_max","required":false,"description":"Maximum bought price, inclusive, integer dollars."},{"schema":{"type":"string"},"in":"query","name":"bought_after","required":false,"description":"Keep deals bought on or after this date. When you set bought_after or bought_before, the API drops null-date rows unless include_undated=true."},{"schema":{"type":"string"},"in":"query","name":"bought_before","required":false,"description":"Keep deals bought on or before this date."},{"schema":{"type":"string"},"in":"query","name":"sold_after","required":false,"description":"Resold deals only: sold on or after this date."},{"schema":{"type":"string"},"in":"query","name":"sold_before","required":false,"description":"Resold deals only: sold on or before this date."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["SFR","CONDO_TH","OTHER"],"description":"Parcel segment: SFR, CONDO_TH (condo or townhouse) or OTHER, a mixed bucket of manufactured, multi-family, land and commercial parcels."}},"in":"query","name":"segment","required":false,"description":"Parcel segments to keep. Default: every segment."},{"schema":{"type":"integer","minimum":0,"maximum":50},"in":"query","name":"beds_min","required":false,"description":"Minimum bedrooms, inclusive."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"sqft_min","required":false,"description":"Minimum living area in square feet, inclusive, 0 to 1,000,000."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"sqft_max","required":false,"description":"Maximum living area in square feet, inclusive, 0 to 1,000,000."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."}},"in":"query","name":"investor_kind","required":false,"description":"Keep investors that carry at least one listed kind. The check reads any of their kinds[], never the primary kind. Default: every kind. Buyers without an investor id pass unless registered_only=true."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."}},"in":"query","name":"investor_kind_exclude","required":false,"description":"Drop investors that carry any listed kind. The API checks kinds[] after investor_kind. investor_kind_exclude=WHOLESALER removes investors who also wholesale."},{"schema":{"type":"string","enum":["STRONG","PROBABLE","WEAK"]},"in":"query","name":"investor_confidence_min","required":false,"description":"Minimum registry confidence in the investor kind: STRONG, PROBABLE or WEAK (WEAK admits everything)."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["individual","small","mid","large","institutional"],"description":"Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."}},"in":"query","name":"scale","required":false,"description":"Scale tiers to keep. Default: every tier except institutional. An explicit list replaces the default entirely. scale=institutional alone returns only institutional. scale=individual,small,mid,large,institutional returns everyone."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_public","required":false,"description":"Include public-body investors (counties, cities, housing authorities) and their deals. Default false: every list endpoint hides them."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_unpriced","required":false,"description":"Keep null-priced rows when you set price_min or price_max (default false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_undated","required":false,"description":"Keep null-date rows when you set bought_after or bought_before (default false)."},{"schema":{"type":"integer","minimum":1,"maximum":600},"in":"query","name":"active_within_months","required":false,"description":"Keep investors whose last purchase is at most this many months before data_end (data_end minus last_bought_on). Sales and transfers do not count. No default."},{"schema":{"type":"integer","minimum":1,"maximum":1000000},"in":"query","name":"investor_deals_min","required":false,"description":"Minimum purchase events of that investor inside the geometry, 1 to 1,000,000. The API applies it after the other filters."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"holds_min","required":false,"description":"Investor filter: keep investors who hold at least this many parcels across the whole market at the deed data end (meta.coverage[].data_end). The count is the investor's n_holds: confirmed holdings plus un-resold purchases inside the area loaded for the market, not the holdings inside the geometry. Range 0 to 1,000,000, inclusive. For example, holds_min=20 keeps the larger portfolios. Buyers without an investor id pass unless registered_only=true."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"holds_max","required":false,"description":"Investor filter: keep investors who hold at most this many parcels across the whole market at the deed data end (n_holds). Range 0 to 1,000,000, inclusive. holds_max=0 keeps the investors that hold nothing. Beside holds_min the pair is a band. Buyers without an investor id pass unless registered_only=true."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"buys_wholesale","required":false,"description":"Investor filter: at least one bought-from-wholesaler deal in the 36 months before data_end."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"buys_at_auction","required":false,"description":"Investor filter: true keeps investors who bought at least one house at a foreclosure auction in the 24 months before data_end. A foreclosure auction is a trustee's sale or an Arizona sheriff's sale, and the filter reads investor.auction.is_active_auction_buyer. These buyers pay cash within a day and buy without an inspection. False keeps registered investors who did not. Buyers without an investor id pass unless registered_only=true. The API answers 422 auction_unavailable in a market that does not publish its auction counts (meta.coverage[].auction_counted false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"buys_reo","required":false,"description":"Investor filter: true keeps investors who bought at least one house from a lender, servicer or agency after a foreclosure. The window is the 24 months before data_end, and the filter reads investor.auction.is_active_reo_buyer. A bank-owned (REO) sale gave the buyer weeks, an inspection and the option to finance: the weaker cash signal beside buys_at_auction. False keeps registered investors who did not, and buys_at_auction=true&buys_reo=false is the cash-only set. Buyers without an investor id pass unless registered_only=true. The API answers 422 auction_unavailable where the market does not publish its auction counts."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["TRUSTEE_SALE","SHERIFF_SALE","HOA_TRUSTEE_SALE","TAX_SALE","TAX_LIEN_DEED"],"description":"The kind of auction the purchase deed records: TRUSTEE_SALE and SHERIFF_SALE count toward buys_at_auction, and the API shows the other three but never counts them. TRUSTEE_SALE: a lender's foreclosure sale by the trustee, cash and final on the day, without redemption. In Arizona the buyer pays a $10,000 deposit and the full bid by 5 pm the next business day. In Texas it is the first-Tuesday courthouse sale, in Washington the Friday sale at the county's designated place under RCW 61.24. SHERIFF_SALE: a judicial sale under court order. In Arizona it is an HOA or judgment-lien sale, cash but subject to the first mortgage and to a 30-day or 6-month redemption. In Washington it is a judicial mortgage foreclosure or lien sale under RCW 6.21, with an 8-month or 1-year redemption. In Washington the sale is subject to the senior lien only when it is a lien sale. HOA_TRUSTEE_SALE: a Texas homeowners association foreclosure recorded as a trustee's deed, cash, subject to the first lien and to a 180-day redemption. TAX_SALE: a Texas constable or taxing-unit tax sale, cash, with a 180-day or 2-year redemption. In Washington it is the county treasurer's deed after the tax foreclosure judgment, with no redemption after the sale. TAX_LIEN_DEED: an Arizona treasurer's deed to a tax-lien holder, mostly vacant land, not an auction of the house."}},"in":"query","name":"bought_auction_kind","required":false,"description":"Deal filter: keep deals whose purchase deed was a third-party auction purchase of one of the listed kinds (comma list or repeated key). For example, bought_auction_kind=TRUSTEE_SALE keeps houses bought at a foreclosure sale. The API drops deals bought any other way and deals without a buy deed. The API answers 422 auction_unavailable where the market does not publish its auction counts."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"bought_from_wholesaler","required":false,"description":"Deal filter: bought through a documented double close from a wholesaler, or from a known wholesaler. Assignments leave no deed, so absence is not evidence."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"bought_distressed","required":false,"description":"Deal filter: the buy leg was a distressed sale. That is a foreclosure, trustee, sheriff or tax instrument, a deed in lieu, or a deed the feed flags as REO. It is wider than bought_auction_kind, which keeps only third-party auction purchases."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"registered_only","required":false,"description":"Keep only rows whose buyer carries an investor id (investor.id is not null)."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["registered","unclassified","excluded","unknown"],"description":"The buyer's standing in the registry: registered (has an investor id), unclassified, excluded or unknown (the deed names no buyer). Unclassified: a named buyer the registry did not classify as an investor, usually a household. Excluded: a named buyer the registry deliberately left out. Those are custodian trusts, relocation companies, auction houses and ambiguous surnames."}},"in":"query","name":"buyer_status","required":false,"description":"Buyer statuses to keep."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"str_operator","required":false,"description":"Investor filter: true keeps investors that hold at least one parcel with a business-use short-term-rental licence attributed to them. That is the str roll-up's n_holdings at 1 or more. False keeps investors with none. Buyers without an investor id pass unless registered_only=true. The API answers 422 str_unavailable when a market in play has no short-term rental tables (meta.coverage[].str_as_of null)."},{"schema":{"type":"integer","minimum":1,"maximum":100000},"in":"query","name":"str_holdings_min","required":false,"description":"Investor filter: at least this many of the investor's holdings carry a business-use short-term-rental licence attributed to them (the str roll-up's n_holdings), 1 or more. Buyers without an investor id pass unless registered_only=true. The API answers 422 str_unavailable when a market in play has no short-term rental tables."},{"schema":{"type":"string","pattern":"^len_[0-9a-f]{12}$"},"in":"query","name":"financed_by","required":false,"description":"Investor filter: keep investors with at least one recorded loan from this lender, as the main borrower of the mortgage or the open lien. The value is a lender id, len_ followed by 12 hex characters, for example len_d2028f0766fc from GET /v1/lenders/search. The match is investor_id on the lender's loan rows. The count is a floor: the recorded history sees about one loan in five. Buyers without an investor id pass unless registered_only=true. The API answers 422 lenders_unavailable when a market in play has no lender registry with the borrower match (meta.coverage[].lenders null or borrowers_measured false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"uses_private_lender","required":false,"description":"Investor filter: true keeps investors with a loan from a private lender, recorded in the 24 months before the lender registry's slice date (meta.coverage[].lenders.as_of). A private lender is a hard-money lender by name or behaviour (is_hard_money) or an investor lender by behaviour (is_investor_lender). A lender whose class reads INDIVIDUAL or PRIVATE also counts as private. False keeps registered investors with none such, and the result is a floor of a partial feed. Buyers without an investor id pass unless registered_only=true. The API answers 422 lenders_unavailable when a market in play has no lender registry with the borrower match."},{"schema":{"type":"string","pattern":"^inv_[0-9a-f]{12}$"},"in":"query","name":"investor_id","required":false,"description":"Scope the rows to one buyer (the drawer's \"Activity here\"). The API follows an old id from an earlier data refresh to the investor that superseded it and echoes the old id in meta.resolved_from. A retired id is 410 gone."},{"schema":{"type":"string","pattern":"^deal_[0-9a-f]{32}$"},"in":"query","name":"deal_id","required":false,"description":"Scope the rows to one deal."},{"schema":{"type":"number","minimum":-90,"maximum":90},"in":"query","name":"lat","required":false,"description":"Point latitude (with lng). With radius_miles it is the search geometry. With bbox it is the reference point only."},{"schema":{"type":"number","minimum":-180,"maximum":180},"in":"query","name":"lng","required":false,"description":"Point longitude (with lat)."},{"schema":{"type":"number","minimum":0.25,"maximum":20},"in":"query","name":"radius_miles","required":false,"description":"Search radius in miles around the point or around the centre of the property_id parcel, 0.25 to 20 (default 2). Not allowed with bbox."},{"schema":{"type":"string"},"in":"query","name":"bbox","required":false,"description":"Viewport as west,south,east,north (WGS84 degrees). West must be less than east, south less than north, and the diagonal at most 40 mi. It must intersect a loaded market's coverage bbox (422 outside_coverage otherwise). It can carry lat + lng (without radius_miles) as the reference point for distances and sort=distance."},{"schema":{"type":"string","pattern":"^prop_[0-9a-f]{32}$"},"in":"query","name":"property_id","required":false,"description":"Parcel geometry: search around the centre of that parcel, with radius_miles. Not allowed with lat, lng or bbox."},{"schema":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","pattern":"^\\d{5}$"}},"in":"query","name":"zip","required":false,"description":"Place geometry: the parcels of these 5-digit ZIP codes, as a comma list or a repeated key, up to 50. On the deal and investor routes the Free and Starter plans take exactly one ZIP, and more is 403 plan_limit. You can add lat + lng as the reference point for distances. Not with radius_miles, bbox, property_id or city. A ZIP that no parcel of a loaded market carries is 422 outside_coverage (zips_unknown in the body)."},{"schema":{"type":"string","minLength":1,"maxLength":100},"in":"query","name":"city","required":false,"description":"Place geometry: the parcels whose postal city is this one, as the county records it (\"Scottsdale\"). Case does not matter: the API compares the value folded upper case. Never the short-term rental jurisdiction (meta.coverage[].str.jurisdictions[]). You can add lat + lng as the reference point, but not radius_miles, bbox, property_id or zip. On the deal and investor routes of the Free and Starter plans a city-wide search is 403 plan_limit. A city that no parcel of a loaded market carries is 422 outside_coverage."},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"subject_asking_price","required":false,"description":"The contract or asking price of the subject deal, whole dollars, for example 250000. Send it only when the deal has an asking price. It feeds the price_fit factor and never filters deals."},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"subject_arv","required":false,"description":"After-repair value of the subject, whole dollars, for example 560000. Send it only when it is known and above 0. Without an asking price it drives price_fit through the buy-to-resale ratio of the investor, or else the ratio of the metro (meta.coverage[].metro_buy_to_resale_ratio). It also enables the resale_fit reason (weight 0 by default)."},{"schema":{"type":"string","enum":["TURN_KEY","LIGHT_REHAB","MAJOR_REHAB","FULL_GUT","TEAR_DOWN"]},"in":"query","name":"subject_condition","required":false,"description":"Condition of the subject property, the Investorlift enum. TURN_KEY: move-in ready, where landlords and iBuyers fit best. LIGHT_REHAB: cosmetic work, for flippers and landlords. MAJOR_REHAB and FULL_GUT: heavy work, flippers first and builders next. TEAR_DOWN: a lot, builders first. It drives the strategy factor: if you omit it, the API drops that factor."},{"schema":{"type":"string","enum":["SFR","CONDO_TH","OTHER"]},"in":"query","name":"subject_segment","required":false,"description":"Segment of the subject property: SFR, CONDO_TH (condo or townhouse) or OTHER. OTHER is a mixed bucket: manufactured, multi-family, land and commercial. The subject segment drives the segment factor, the share of the deals of the investor in this segment. It defaults from the parcel when the geometry is property_id. Otherwise omit it and the API drops the factor. Investorlift mapping: single_family maps to SFR, condo and townhouse map to CONDO_TH, and everything else maps to OTHER."},{"schema":{"type":"integer","minimum":0,"maximum":50},"in":"query","name":"subject_beds","required":false,"description":"Bedrooms of the subject, for example 3. It defaults from the parcel when the geometry is property_id. The API accepts and echoes it for forward compatibility and does not score it in this version."},{"schema":{"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"subject_sqft","required":false,"description":"Living area of the subject in square feet, for example 1650. It defaults from the parcel when the geometry is property_id. The API accepts and echoes it for forward compatibility and does not score it in this version."},{"schema":{"type":"number","minimum":0,"maximum":1},"in":"query","name":"w_proximity","required":false,"description":"Weight of the proximity factor, 0 to 1 (default 0.3). Proximity: how many separate purchase days they had near the subject and how close."},{"schema":{"type":"number","minimum":0,"maximum":1},"in":"query","name":"w_recency","required":false,"description":"Weight of the recency factor, 0 to 1 (default 0.25). Recency: how close to the deed data end (meta.coverage[].data_end) they last bought, and how often they buy."},{"schema":{"type":"number","minimum":0,"maximum":1},"in":"query","name":"w_price_fit","required":false,"description":"Weight of the price_fit factor, 0 to 1 (default 0.2). Price fit: if the subject price sits inside what they usually pay. Needs subject_asking_price or subject_arv."},{"schema":{"type":"number","minimum":0,"maximum":1},"in":"query","name":"w_strategy","required":false,"description":"Weight of the strategy factor, 0 to 1 (default 0.1). Strategy: if their kinds suit the subject condition. Needs subject_condition."},{"schema":{"type":"number","minimum":0,"maximum":1},"in":"query","name":"w_segment","required":false,"description":"Weight of the segment factor, 0 to 1 (default 0.05). Segment: the share of their deals in the subject segment. Needs subject_segment or property_id."},{"schema":{"type":"number","minimum":0,"maximum":1},"in":"query","name":"w_wholesale_buyer","required":false,"description":"Weight of the wholesale_buyer factor, 0 to 1 (default 0.1). Wholesale buyer: how many documented wholesale purchases they made in the 5 years ending on the deed data end (meta.coverage[].data_end)."},{"schema":{"type":"number","minimum":0,"maximum":1},"in":"query","name":"w_resale_fit","required":false,"description":"Weight of the resale_fit factor, 0 to 1 (default 0). Resale fit: the subject ARV against their median flip resale. Needs subject_arv. The default is 0, so the API shows the reason without moving the score."},{"schema":{"type":"number","minimum":0,"maximum":1},"in":"query","name":"w_activity","required":false,"description":"Weight of the activity signal, 0 to 1 (default 0: off), not part of reasons[] or meta.weights. The API multiplies the score by the probability that the operator buys in the 180 days after the data end (buyer_signal.activity_p_180), raised to this power. A power of 1 ranks by expected purchases, 0.5 softens the effect, and 0 leaves the ranking as it is. Any change starts a new ranking and invalidates the cursor, and the activity_multiplier of the row shows what the signal did. An investor with no probability, a dormant operator or one with no signal row, scores as 0.034, the measured dormant re-activation rate. In the Phoenix measurement 3.4% of dormant operators bought again within 180 days."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_unregistered","required":false,"description":"Add summary.unregistered[]: the id-less buyers inside the geometry, households and unclassified names that bought here. The API scores them on proximity and recency only. A lead list, not a ranking: most have one deal."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_excluded","required":false,"description":"With include_unregistered=true, also list the excluded buyers: custodian trusts, relocation companies, auction houses and ambiguous surnames. Default false."},{"schema":{"default":100,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false,"description":"Page size, 1-200 (default 100)."},{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1."}],"responses":{"200":{"description":"Ranked buyers, best first, with reasons; summary for the whole area; meta.weights and meta.reference_point.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BuyerMatch"},"description":"The rows of this page."},"page":{"$ref":"#/components/schemas/Page"},"meta":{"$ref":"#/components/schemas/Meta"},"summary":{"$ref":"#/components/schemas/MatchSummary"}},"required":["data","page","meta","summary"],"additionalProperties":false,"description":"Ranked buyers, best first, with reasons; summary for the whole area; meta.weights and meta.reference_point."},"example":{"data":[{"investor":{"id":"inv_70f5dd32e592","market":"phx","name":"SALT RIVER EQUITY LLC","display_name":"SALT RIVER EQUITY LLC","state":"AZ","kind":"FLIPPER","confidence":"STRONG","scale":"large","institutional":false,"is_public":false,"last_bought_on":"2026-08-06","n_deals":1581,"buyer_status":"registered","kinds":["FLIPPER","BUILDER","WHOLESALER","LANDLORD"],"days_since_last_purchase":6,"n_purchase_events_12m":99,"n_purchase_events_24m":180,"n_flips":130,"n_wholesales":1206,"n_holds":97,"n_long_holds":33,"n_bought_from_wholesaler_5y":41,"price_band":{"window":"5y","p25":235000,"p50":325000,"p75":442875,"n_priced_purchases":642},"p50_flip_sold_price":347500,"segment_mix":{"sfr":0.854,"condo_th":0.094,"other":0.052},"has_person_member":true,"has_home_address":true,"has_suite_address":true,"member_names":["SALT RIVER EQUITY LLC","MMAR HOLDINGS LLC","ML SQUARED REAL ESTATE INVESTMENT LLC","SICK HOMES LLC","LLC SALT RIVER EQUITY","THERESA ORTIZ TRUST"],"operator_id":"inv_70f5dd32e592","n_operator_members":6,"auction":{"n_auction_buys":0,"n_auction_buys_24m":0,"last_auction_buy_on":null,"is_active_auction_buyer":false,"auction_resale_share":null,"n_reo_buys":11,"n_reo_buys_24m":3,"last_reo_buy_on":"2026-06-30","is_active_reo_buyer":true}},"in_radius":{"n_events":91,"n_purchase_events":86,"n_parcels":91,"n_held_parcels":4,"n_flips":4,"n_holds":4,"n_long_holds":3,"volume":36531443,"last_bought_on":"2026-06-11","last_deal_on":"2026-06-11","nearest_distance_miles":0.2,"median_bought_price":337000,"n_unpriced":0,"n_undated":0},"score":0.9901,"gate":1,"base_score":0.9901,"activity_multiplier":1,"reasons":[{"factor":"proximity","weight":0.3,"value":0.9995,"detail":"86 purchases (91 parcels) within 2 mi, nearest 0.20 mi"},{"factor":"recency","weight":0.25,"value":0.9902,"detail":"last bought 6 days before the data's end date (2026-08-12); 180 purchase events in 24 months"},{"factor":"price_fit","weight":0.2,"value":1,"detail":"$250k sits inside their 5-year band $235k-$443k (642 priced purchases)"},{"factor":"strategy","weight":0.1,"value":1,"detail":"FLIPPER (STRONG); subject is MAJOR_REHAB"},{"factor":"segment","weight":0.05,"value":0.854,"detail":"85% of their deals are SFR"},{"factor":"wholesale_buyer","weight":0.1,"value":1,"detail":"bought 41 wholesale contracts since 2021, last 2026-03"}],"sample_deals":[{"id":"deal_0d12db603fd2fbf20a5524060c588a6f","kind":"wholesale","address_short":"2840 N 74th Pl","latitude":33.479621,"longitude":-111.92165,"bought_on":"2019-08-07","bought_price":337000,"sold_on":"2019-08-08","sold_price":357500,"gross_profit":20500,"distance_miles":0.2,"bought_from_wholesaler":false,"bought_distressed":false,"bought_auction_kind":null},{"id":"deal_6ab665cf87971af3b20d75d5ee6061d6","kind":"wholesale","address_short":"7232 E Virginia Ave","latitude":33.477346,"longitude":-111.924674,"bought_on":"2018-08-20","bought_price":330000,"sold_on":"2018-08-24","sold_price":349900,"gross_profit":19900,"distance_miles":0.25,"bought_from_wholesaler":false,"bought_distressed":false,"bought_auction_kind":null}],"buyer_signal":{"operator_id":"inv_70f5dd32e592","n_operator_members":6,"operator_member_ids":["inv_0dccd79162e9","inv_178f7fd9aae5","inv_50c0fb39bd5e","inv_57a71d3e5b88","inv_70f5dd32e592","inv_712425783c9f"],"is_anchor":true,"merge_confidence":"MERGED_STRONG","activity_p_180":0.937516,"activity_p_365":0.965902,"cell_n":1599,"activity_model":"CYCLE_v1","cycle_state":"FRESH_CASH","capital_freed_60d":true,"days_since_last_purchase":6,"days_since_last_resale":7,"open_inventory":88,"n_purchases_36m":373,"median_gap_days":3,"share_within_30d_of_resale":0.9991,"data_end":"2026-08-12"},"listings":{"n_active":8,"n_pending":0,"n_listed":8,"n_listed_undated":0,"n_holdings_dated":97,"n_holdings_undated":0,"median_list_price":527500,"min_list_price":239900,"max_list_price":754900,"last_listed_on":"2026-08-23","n_listed_12m":27,"listings_data_end":"2026-08-31"},"wholesale_purchases":{"n":6,"n_12m":0,"n_24m":3,"n_5y":6,"n_probable":4,"last_on":"2025-04-30","n_wholesalers":4,"top_wholesalers":[{"id":"wsr_a7c0d7da9bc7","name":"National Property Superstore","n":2},{"id":"wsr_b847c1c64247","name":"Freedom Ventures","n":2},{"id":"wsr_4a4468db0919","name":"TTP AZ, LLC","n":1}],"n_double_closed":1,"median_asking_price":309950,"data_end":"2026-08-12"},"str":null},{"investor":{"id":"inv_a61331a35b68","market":"phx","name":"BLACK CANYON EQUITY LLC","display_name":"BLACK CANYON EQUITY LLC","state":"AZ","kind":"FLIPPER","confidence":"STRONG","scale":"large","institutional":false,"is_public":false,"last_bought_on":"2026-07-30","n_deals":1354,"buyer_status":"registered","kinds":["FLIPPER","BUILDER","WHOLESALER","LANDLORD"],"days_since_last_purchase":13,"n_purchase_events_12m":70,"n_purchase_events_24m":125,"n_flips":126,"n_wholesales":881,"n_holds":154,"n_long_holds":83,"n_bought_from_wholesaler_5y":140,"price_band":{"window":"5y","p25":270000,"p50":345000,"p75":450000,"n_priced_purchases":926},"p50_flip_sold_price":471500,"segment_mix":{"sfr":0.832,"condo_th":0.123,"other":0.044},"has_person_member":true,"has_home_address":true,"has_suite_address":true,"member_names":["BLACK CANYON EQUITY LLC","BAF 3 LLC","OHANA43 LLC","SVH ENTERPRISES LLC","LLC BLACK CANYON EQUITY","BLACK CANYON LLC"],"operator_id":"inv_a61331a35b68","n_operator_members":12,"auction":{"n_auction_buys":1,"n_auction_buys_24m":0,"last_auction_buy_on":"2019-01-03","is_active_auction_buyer":false,"auction_resale_share":null,"n_reo_buys":2,"n_reo_buys_24m":1,"last_reo_buy_on":"2026-02-18","is_active_reo_buyer":true}},"in_radius":{"n_events":123,"n_purchase_events":112,"n_parcels":117,"n_held_parcels":7,"n_flips":16,"n_holds":7,"n_long_holds":9,"volume":55249200,"last_bought_on":"2026-07-20","last_deal_on":"2026-07-23","nearest_distance_miles":0.16,"median_bought_price":453000,"n_unpriced":0,"n_undated":0},"score":0.982,"gate":1,"base_score":0.982,"activity_multiplier":1,"reasons":[{"factor":"proximity","weight":0.3,"value":1,"detail":"112 purchases (117 parcels) within 2 mi, nearest 0.16 mi"},{"factor":"recency","weight":0.25,"value":0.979,"detail":"last bought 13 days before the data's end date (2026-08-12); 125 purchase events in 24 months"},{"factor":"price_fit","weight":0.2,"value":0.9783,"detail":"$250k is below their 5-year band $270k-$450k (926 priced purchases)"},{"factor":"strategy","weight":0.1,"value":1,"detail":"FLIPPER (STRONG); subject is MAJOR_REHAB"},{"factor":"segment","weight":0.05,"value":0.832,"detail":"83% of their deals are SFR"},{"factor":"wholesale_buyer","weight":0.1,"value":1,"detail":"bought 140 wholesale contracts since 2021, last 2026-07"}],"sample_deals":[{"id":"deal_9f8cc43ff573113c256bb52279230924","kind":"long_hold","address_short":"2615 N 73rd Pl","latitude":33.477329,"longitude":-111.923155,"bought_on":"2022-02-14","bought_price":540000,"sold_on":"2023-05-31","sold_price":985000,"gross_profit":445000,"distance_miles":0.16,"bought_from_wholesaler":true,"bought_distressed":false,"bought_auction_kind":null},{"id":"deal_47a476cc378e6a763a8e393e5b6671d8","kind":"long_hold","address_short":"2539 N Miller Rd","latitude":33.47629,"longitude":-111.916233,"bought_on":"2023-03-20","bought_price":500000,"sold_on":"2024-08-07","sold_price":705000,"gross_profit":205000,"distance_miles":0.24,"bought_from_wholesaler":false,"bought_distressed":false,"bought_auction_kind":null}],"buyer_signal":{"operator_id":"inv_a61331a35b68","n_operator_members":12,"operator_member_ids":["inv_0dd5a869408e","inv_3d5d38784610","inv_485a7f48c46c","inv_4d70fe04c768","inv_5d77474fe9f4","inv_6740053846a1","inv_698381652192","inv_6aa6e7ca9558","inv_a61331a35b68","inv_a8ed7cb4612d","inv_cc1d95252d89","inv_d8abe8e7314e"],"is_anchor":true,"merge_confidence":"MERGED_STRONG","activity_p_180":0.937516,"activity_p_365":0.965902,"cell_n":1599,"activity_model":"CYCLE_v1","cycle_state":"FRESH_CASH","capital_freed_60d":true,"days_since_last_purchase":13,"days_since_last_resale":8,"open_inventory":201,"n_purchases_36m":223,"median_gap_days":2,"share_within_30d_of_resale":0.9309,"data_end":"2026-08-12"},"listings":{"n_active":7,"n_pending":0,"n_listed":7,"n_listed_undated":0,"n_holdings_dated":154,"n_holdings_undated":0,"median_list_price":359900,"min_list_price":335000,"max_list_price":399900,"last_listed_on":"2026-08-08","n_listed_12m":25,"listings_data_end":"2026-08-31"},"wholesale_purchases":{"n":12,"n_12m":3,"n_24m":6,"n_5y":11,"n_probable":7,"last_on":"2025-11-26","n_wholesalers":11,"top_wholesalers":[{"id":"wsr_7b407f79e351","name":"KeyGlee","n":2},{"id":"wsr_37e2a3dcdf4c","name":"Home Team Investors","n":1},{"id":"wsr_435f4f5439c2","name":"EZAZ Homes","n":1}],"n_double_closed":4,"median_asking_price":394245,"data_end":"2026-08-12"},"str":null},{"investor":{"id":"inv_4a8213dc5193","market":"phx","name":"WHITE FIG HOMES JV LLC","display_name":"WHITE FIG HOMES JV LLC","state":"AZ","kind":"LANDLORD","confidence":"STRONG","scale":"large","institutional":false,"is_public":false,"last_bought_on":"2026-08-07","n_deals":1099,"buyer_status":"registered","kinds":["LANDLORD","FLIPPER","BUILDER","WHOLESALER"],"days_since_last_purchase":5,"n_purchase_events_12m":99,"n_purchase_events_24m":206,"n_flips":804,"n_wholesales":67,"n_holds":146,"n_long_holds":32,"n_bought_from_wholesaler_5y":56,"price_band":{"window":"5y","p25":226000,"p50":283000,"p75":365000,"n_priced_purchases":577},"p50_flip_sold_price":365000,"segment_mix":{"sfr":0.845,"condo_th":0.119,"other":0.035},"has_person_member":true,"has_home_address":true,"has_suite_address":true,"member_names":["WHITE FIG HOMES JV LLC","WHITE FIG HOMES LLC","BENE HOLDINGS LLC","MARINA INVESTMENTS LLC","WF3 LLC","NEB PROPERTIES LLC"],"operator_id":"inv_4a8213dc5193","n_operator_members":9,"auction":{"n_auction_buys":0,"n_auction_buys_24m":0,"last_auction_buy_on":null,"is_active_auction_buyer":false,"auction_resale_share":null,"n_reo_buys":2,"n_reo_buys_24m":0,"last_reo_buy_on":"2016-01-19","is_active_reo_buyer":false}},"in_radius":{"n_events":31,"n_purchase_events":28,"n_parcels":31,"n_held_parcels":8,"n_flips":13,"n_holds":8,"n_long_holds":3,"volume":8914650,"last_bought_on":"2025-08-11","last_deal_on":"2026-02-10","nearest_distance_miles":0.17,"median_bought_price":293000,"n_unpriced":1,"n_undated":0},"score":0.9525,"gate":1,"base_score":0.9525,"activity_multiplier":1,"reasons":[{"factor":"proximity","weight":0.3,"value":0.8744,"detail":"28 purchases (31 parcels) within 2 mi, nearest 0.17 mi"},{"factor":"recency","weight":0.25,"value":0.9918,"detail":"last bought 5 days before the data's end date (2026-08-12); 206 purchase events in 24 months"},{"factor":"price_fit","weight":0.2,"value":1,"detail":"$250k sits inside their 5-year band $226k-$365k (577 priced purchases)"},{"factor":"strategy","weight":0.1,"value":1,"detail":"FLIPPER (STRONG); subject is MAJOR_REHAB"},{"factor":"segment","weight":0.05,"value":0.845,"detail":"85% of their deals are SFR"},{"factor":"wholesale_buyer","weight":0.1,"value":1,"detail":"bought 56 wholesale contracts since 2021, last 2026-07"}],"sample_deals":[{"id":"deal_061642c8e4360c1974211049d19516e4","kind":"hold","address_short":"7312 E Wilshire Dr","latitude":33.476506,"longitude":-111.923264,"bought_on":"2016-05-12","bought_price":235000,"sold_on":null,"sold_price":null,"gross_profit":null,"distance_miles":0.17,"bought_from_wholesaler":false,"bought_distressed":false,"bought_auction_kind":null},{"id":"deal_30127834d445faab36b4f32b243b600b","kind":"hold","address_short":"2245 N 72nd Pl","latitude":33.472551,"longitude":-111.924486,"bought_on":"2019-02-28","bought_price":354900,"sold_on":null,"sold_price":null,"gross_profit":null,"distance_miles":0.38,"bought_from_wholesaler":true,"bought_distressed":false,"bought_auction_kind":null}],"buyer_signal":{"operator_id":"inv_4a8213dc5193","n_operator_members":9,"operator_member_ids":["inv_1629e9057de3","inv_20bf030f2d84","inv_22ae900021c2","inv_2e162d00a074","inv_3adb82477f3f","inv_4a8213dc5193","inv_684790efabe8","inv_888becfdd422","inv_8aae0f1c5460"],"is_anchor":true,"merge_confidence":"MERGED_STRONG","activity_p_180":0.937516,"activity_p_365":0.965902,"cell_n":1599,"activity_model":"CYCLE_v1","cycle_state":"FRESH_CASH","capital_freed_60d":true,"days_since_last_purchase":5,"days_since_last_resale":16,"open_inventory":134,"n_purchases_36m":556,"median_gap_days":3,"share_within_30d_of_resale":0.989,"data_end":"2026-08-12"},"listings":{"n_active":16,"n_pending":5,"n_listed":21,"n_listed_undated":0,"n_holdings_dated":146,"n_holdings_undated":0,"median_list_price":469900,"min_list_price":234900,"max_list_price":995000,"last_listed_on":"2026-08-27","n_listed_12m":47,"listings_data_end":"2026-08-31"},"wholesale_purchases":{"n":60,"n_12m":7,"n_24m":34,"n_5y":60,"n_probable":30,"last_on":"2026-07-28","n_wholesalers":17,"top_wholesalers":[{"id":"wsr_cf9dfee7cc0a","name":"Andrew The Home Buyer LLC","n":15},{"id":"wsr_b847c1c64247","name":"Freedom Ventures","n":8},{"id":"wsr_a7c0d7da9bc7","name":"National Property Superstore","n":7}],"n_double_closed":2,"median_asking_price":325700,"data_end":"2026-08-12"},"str":null}],"page":{"next_cursor":"eyJ2IjoxLCJydW4iOiIxNzg4NTIxODM0IiwicSI6ImJiNTJlNjZmNjRkMzliYmI3YTRmOThmOGRlMDViM2I0MWRiODVjOTExNDllZTBkYjVmMTc3NTY4MTA5ZDQ2OGQiLCJrIjpbMC45NTI1MzMzNDc1NjIzNzA3LCJpbnZfNGE4MjEzZGM1MTkzIl19","limit":3,"returned":3},"meta":{"generated_at":"2026-09-04T12:00:00.000Z","weights":{"proximity":0.3,"recency":0.25,"price_fit":0.2,"strategy":0.1,"segment":0.05,"wholesale_buyer":0.1,"resale_fit":0},"reference_point":{"lat":33.476917,"lng":-111.920385},"geometry":{"kind":"radius","lat":33.476917,"lng":-111.920385,"radius_miles":2,"bbox":null,"property_id":null,"zip":null,"city":null},"coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788521834,"loaded_at":"2026-09-04T11:37:14.263Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"},"summary":{"by_buyer_status":{"registered":10678,"unclassified":208,"excluded":65,"unknown":7},"n_investors_ranked":5813,"n_unpriced":1975,"n_undated":27}}}},"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"},"X-Credits-Charged":{"$ref":"#/components/headers/X-Credits-Charged"},"X-Credits-Remaining":{"$ref":"#/components/headers/X-Credits-Remaining"}}},"400":{"description":"Bad request (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/buyers/match","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":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/buyers/match","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":"/v1/buyers/match","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":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/buyers/match","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":"/v1/buyers/match","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":"/v1/buyers/match","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, ledger_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":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/buyers/match","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":"/v1/buyers/match","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/investors":{"get":{"operationId":"listInvestors","summary":"List the investors active inside an area","tags":["investors"],"description":"The investors active in a radius, a viewport, around a parcel, or in a ZIP list or postal city, and how active each is there. Each row is one investor: the market-wide profile beside what they did inside that location.\n\nIt takes the location and filters of `/v1/deals`. To rank them against a specific property use `/v1/buyers/match`. For one investor's whole history use `/v1/investors/{id}/deals`.\n\n[in_radius against the profile, and the operator rule](https://developers.investorlift.com/api-reference/endpoints/investors-list).","parameters":[{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["flip","wholesale","hold","long_hold","other","build"],"description":"What occurred on the deal. flip: bought, fixed and resold within about a year at a profit-shaped margin; wholesale: bought and resold in under 30 days, or a chain resale or round trip within 90 (a double close); hold: bought and still owned at data_end, a confirmed holding or an un-resold purchase; long_hold: held over a year, then sold (a landlord exit); other: an investor resale that is not a clean flip. Reasons: a loss, a thin margin, a builder's new home resold, an iBuyer resale, or a chain resale of 3 to 12 months; build: a registered investor bought a lot or teardown, built a house on it during the hold, then sold. A builder's finished home bought and resold is other. On data built after 2026-09-17 the kind keeps only a single-family parcel held over 90 days, its house complete by the sale year. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."}},"in":"query","name":"kind","required":false,"description":"Deal kinds to keep (comma list or repeated key). Default: every kind."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"price_min","required":false,"description":"Minimum bought price, inclusive, integer dollars. When you set price_min or price_max, the API drops null-priced rows unless include_unpriced=true."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"price_max","required":false,"description":"Maximum bought price, inclusive, integer dollars."},{"schema":{"type":"string"},"in":"query","name":"bought_after","required":false,"description":"Keep deals bought on or after this date. When you set bought_after or bought_before, the API drops null-date rows unless include_undated=true."},{"schema":{"type":"string"},"in":"query","name":"bought_before","required":false,"description":"Keep deals bought on or before this date."},{"schema":{"type":"string"},"in":"query","name":"sold_after","required":false,"description":"Resold deals only: sold on or after this date."},{"schema":{"type":"string"},"in":"query","name":"sold_before","required":false,"description":"Resold deals only: sold on or before this date."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["SFR","CONDO_TH","OTHER"],"description":"Parcel segment: SFR, CONDO_TH (condo or townhouse) or OTHER, a mixed bucket of manufactured, multi-family, land and commercial parcels."}},"in":"query","name":"segment","required":false,"description":"Parcel segments to keep. Default: every segment."},{"schema":{"type":"integer","minimum":0,"maximum":50},"in":"query","name":"beds_min","required":false,"description":"Minimum bedrooms, inclusive."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"sqft_min","required":false,"description":"Minimum living area in square feet, inclusive, 0 to 1,000,000."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"sqft_max","required":false,"description":"Maximum living area in square feet, inclusive, 0 to 1,000,000."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."}},"in":"query","name":"investor_kind","required":false,"description":"Keep investors that carry at least one listed kind. The check reads any of their kinds[], never the primary kind. Default: every kind. Buyers without an investor id pass unless registered_only=true."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."}},"in":"query","name":"investor_kind_exclude","required":false,"description":"Drop investors that carry any listed kind. The API checks kinds[] after investor_kind. investor_kind_exclude=WHOLESALER removes investors who also wholesale."},{"schema":{"type":"string","enum":["STRONG","PROBABLE","WEAK"]},"in":"query","name":"investor_confidence_min","required":false,"description":"Minimum registry confidence in the investor kind: STRONG, PROBABLE or WEAK (WEAK admits everything)."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["individual","small","mid","large","institutional"],"description":"Investor scale: individual (one person, no entity), small (fewer than 10 investment deals), mid (10 to 99), large (100 to 999) or institutional. An institutional investor is an iBuyer, a production builder, a bulk landlord with 500 or more holdings, or a known brand from a list. The registry counts the deals inside the area loaded for the market (meta.coverage[].universe_kind), so in a ZIP market the tier is a floor."}},"in":"query","name":"scale","required":false,"description":"Scale tiers to keep. Default: every tier except institutional. An explicit list replaces the default entirely. scale=institutional alone returns only institutional. scale=individual,small,mid,large,institutional returns everyone."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_public","required":false,"description":"Include public-body investors (counties, cities, housing authorities) and their deals. Default false: every list endpoint hides them."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_unpriced","required":false,"description":"Keep null-priced rows when you set price_min or price_max (default false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_undated","required":false,"description":"Keep null-date rows when you set bought_after or bought_before (default false)."},{"schema":{"type":"integer","minimum":1,"maximum":600},"in":"query","name":"active_within_months","required":false,"description":"Keep investors whose last purchase is at most this many months before data_end (data_end minus last_bought_on). Sales and transfers do not count. No default."},{"schema":{"type":"integer","minimum":1,"maximum":1000000},"in":"query","name":"investor_deals_min","required":false,"description":"Minimum purchase events of that investor inside the geometry, 1 to 1,000,000. The API applies it after the other filters."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"holds_min","required":false,"description":"Investor filter: keep investors who hold at least this many parcels across the whole market at the deed data end (meta.coverage[].data_end). The count is the investor's n_holds: confirmed holdings plus un-resold purchases inside the area loaded for the market, not the holdings inside the geometry. Range 0 to 1,000,000, inclusive. For example, holds_min=20 keeps the larger portfolios. Buyers without an investor id pass unless registered_only=true."},{"schema":{"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"holds_max","required":false,"description":"Investor filter: keep investors who hold at most this many parcels across the whole market at the deed data end (n_holds). Range 0 to 1,000,000, inclusive. holds_max=0 keeps the investors that hold nothing. Beside holds_min the pair is a band. Buyers without an investor id pass unless registered_only=true."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"buys_wholesale","required":false,"description":"Investor filter: at least one bought-from-wholesaler deal in the 36 months before data_end."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"buys_at_auction","required":false,"description":"Investor filter: true keeps investors who bought at least one house at a foreclosure auction in the 24 months before data_end. A foreclosure auction is a trustee's sale or an Arizona sheriff's sale, and the filter reads investor.auction.is_active_auction_buyer. These buyers pay cash within a day and buy without an inspection. False keeps registered investors who did not. Buyers without an investor id pass unless registered_only=true. The API answers 422 auction_unavailable in a market that does not publish its auction counts (meta.coverage[].auction_counted false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"buys_reo","required":false,"description":"Investor filter: true keeps investors who bought at least one house from a lender, servicer or agency after a foreclosure. The window is the 24 months before data_end, and the filter reads investor.auction.is_active_reo_buyer. A bank-owned (REO) sale gave the buyer weeks, an inspection and the option to finance: the weaker cash signal beside buys_at_auction. False keeps registered investors who did not, and buys_at_auction=true&buys_reo=false is the cash-only set. Buyers without an investor id pass unless registered_only=true. The API answers 422 auction_unavailable where the market does not publish its auction counts."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["TRUSTEE_SALE","SHERIFF_SALE","HOA_TRUSTEE_SALE","TAX_SALE","TAX_LIEN_DEED"],"description":"The kind of auction the purchase deed records: TRUSTEE_SALE and SHERIFF_SALE count toward buys_at_auction, and the API shows the other three but never counts them. TRUSTEE_SALE: a lender's foreclosure sale by the trustee, cash and final on the day, without redemption. In Arizona the buyer pays a $10,000 deposit and the full bid by 5 pm the next business day. In Texas it is the first-Tuesday courthouse sale, in Washington the Friday sale at the county's designated place under RCW 61.24. SHERIFF_SALE: a judicial sale under court order. In Arizona it is an HOA or judgment-lien sale, cash but subject to the first mortgage and to a 30-day or 6-month redemption. In Washington it is a judicial mortgage foreclosure or lien sale under RCW 6.21, with an 8-month or 1-year redemption. In Washington the sale is subject to the senior lien only when it is a lien sale. HOA_TRUSTEE_SALE: a Texas homeowners association foreclosure recorded as a trustee's deed, cash, subject to the first lien and to a 180-day redemption. TAX_SALE: a Texas constable or taxing-unit tax sale, cash, with a 180-day or 2-year redemption. In Washington it is the county treasurer's deed after the tax foreclosure judgment, with no redemption after the sale. TAX_LIEN_DEED: an Arizona treasurer's deed to a tax-lien holder, mostly vacant land, not an auction of the house."}},"in":"query","name":"bought_auction_kind","required":false,"description":"Deal filter: keep deals whose purchase deed was a third-party auction purchase of one of the listed kinds (comma list or repeated key). For example, bought_auction_kind=TRUSTEE_SALE keeps houses bought at a foreclosure sale. The API drops deals bought any other way and deals without a buy deed. The API answers 422 auction_unavailable where the market does not publish its auction counts."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"bought_from_wholesaler","required":false,"description":"Deal filter: bought through a documented double close from a wholesaler, or from a known wholesaler. Assignments leave no deed, so absence is not evidence."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"bought_distressed","required":false,"description":"Deal filter: the buy leg was a distressed sale. That is a foreclosure, trustee, sheriff or tax instrument, a deed in lieu, or a deed the feed flags as REO. It is wider than bought_auction_kind, which keeps only third-party auction purchases."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"registered_only","required":false,"description":"Keep only rows whose buyer carries an investor id (investor.id is not null)."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["registered","unclassified","excluded","unknown"],"description":"The buyer's standing in the registry: registered (has an investor id), unclassified, excluded or unknown (the deed names no buyer). Unclassified: a named buyer the registry did not classify as an investor, usually a household. Excluded: a named buyer the registry deliberately left out. Those are custodian trusts, relocation companies, auction houses and ambiguous surnames."}},"in":"query","name":"buyer_status","required":false,"description":"Buyer statuses to keep."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"str_operator","required":false,"description":"Investor filter: true keeps investors that hold at least one parcel with a business-use short-term-rental licence attributed to them. That is the str roll-up's n_holdings at 1 or more. False keeps investors with none. Buyers without an investor id pass unless registered_only=true. The API answers 422 str_unavailable when a market in play has no short-term rental tables (meta.coverage[].str_as_of null)."},{"schema":{"type":"integer","minimum":1,"maximum":100000},"in":"query","name":"str_holdings_min","required":false,"description":"Investor filter: at least this many of the investor's holdings carry a business-use short-term-rental licence attributed to them (the str roll-up's n_holdings), 1 or more. Buyers without an investor id pass unless registered_only=true. The API answers 422 str_unavailable when a market in play has no short-term rental tables."},{"schema":{"type":"string","pattern":"^len_[0-9a-f]{12}$"},"in":"query","name":"financed_by","required":false,"description":"Investor filter: keep investors with at least one recorded loan from this lender, as the main borrower of the mortgage or the open lien. The value is a lender id, len_ followed by 12 hex characters, for example len_d2028f0766fc from GET /v1/lenders/search. The match is investor_id on the lender's loan rows. The count is a floor: the recorded history sees about one loan in five. Buyers without an investor id pass unless registered_only=true. The API answers 422 lenders_unavailable when a market in play has no lender registry with the borrower match (meta.coverage[].lenders null or borrowers_measured false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"uses_private_lender","required":false,"description":"Investor filter: true keeps investors with a loan from a private lender, recorded in the 24 months before the lender registry's slice date (meta.coverage[].lenders.as_of). A private lender is a hard-money lender by name or behaviour (is_hard_money) or an investor lender by behaviour (is_investor_lender). A lender whose class reads INDIVIDUAL or PRIVATE also counts as private. False keeps registered investors with none such, and the result is a floor of a partial feed. Buyers without an investor id pass unless registered_only=true. The API answers 422 lenders_unavailable when a market in play has no lender registry with the borrower match."},{"schema":{"type":"string","pattern":"^inv_[0-9a-f]{12}$"},"in":"query","name":"investor_id","required":false,"description":"Scope the rows to one buyer (the drawer's \"Activity here\"). The API follows an old id from an earlier data refresh to the investor that superseded it and echoes the old id in meta.resolved_from. A retired id is 410 gone."},{"schema":{"type":"string","pattern":"^deal_[0-9a-f]{32}$"},"in":"query","name":"deal_id","required":false,"description":"Scope the rows to one deal."},{"schema":{"type":"number","minimum":-90,"maximum":90},"in":"query","name":"lat","required":false,"description":"Point latitude (with lng). With radius_miles it is the search geometry. With bbox it is the reference point only."},{"schema":{"type":"number","minimum":-180,"maximum":180},"in":"query","name":"lng","required":false,"description":"Point longitude (with lat)."},{"schema":{"type":"number","minimum":0.25,"maximum":20},"in":"query","name":"radius_miles","required":false,"description":"Search radius in miles around the point or around the centre of the property_id parcel, 0.25 to 20 (default 2). Not allowed with bbox."},{"schema":{"type":"string"},"in":"query","name":"bbox","required":false,"description":"Viewport as west,south,east,north (WGS84 degrees). West must be less than east, south less than north, and the diagonal at most 40 mi. It must intersect a loaded market's coverage bbox (422 outside_coverage otherwise). It can carry lat + lng (without radius_miles) as the reference point for distances and sort=distance."},{"schema":{"type":"string","pattern":"^prop_[0-9a-f]{32}$"},"in":"query","name":"property_id","required":false,"description":"Parcel geometry: search around the centre of that parcel, with radius_miles. Not allowed with lat, lng or bbox."},{"schema":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","pattern":"^\\d{5}$"}},"in":"query","name":"zip","required":false,"description":"Place geometry: the parcels of these 5-digit ZIP codes, as a comma list or a repeated key, up to 50. On the deal and investor routes the Free and Starter plans take exactly one ZIP, and more is 403 plan_limit. You can add lat + lng as the reference point for distances. Not with radius_miles, bbox, property_id or city. A ZIP that no parcel of a loaded market carries is 422 outside_coverage (zips_unknown in the body)."},{"schema":{"type":"string","minLength":1,"maxLength":100},"in":"query","name":"city","required":false,"description":"Place geometry: the parcels whose postal city is this one, as the county records it (\"Scottsdale\"). Case does not matter: the API compares the value folded upper case. Never the short-term rental jurisdiction (meta.coverage[].str.jurisdictions[]). You can add lat + lng as the reference point, but not radius_miles, bbox, property_id or zip. On the deal and investor routes of the Free and Starter plans a city-wide search is 403 plan_limit. A city that no parcel of a loaded market carries is 422 outside_coverage."},{"schema":{"type":"string","enum":["events_desc","parcels_desc","volume_desc","last_bought_desc","last_deal_desc","flips_desc","holds_desc"]},"in":"query","name":"sort","required":false,"description":"Row order over what the investor did inside the geometry. The default is events_desc (most purchase days first). Or parcels_desc (most parcels) or volume_desc (largest purchase total). Or last_bought_desc (newest purchase) or last_deal_desc (newest purchase, sale or transfer). Or flips_desc (most flips) or holds_desc (most current holdings inside the geometry at data_end). The holdings count is in_radius.n_holds, and the market-wide portfolio is the holds_min / holds_max filter."},{"schema":{"default":100,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false,"description":"Page size, 1-200 (default 100)."},{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1."}],"responses":{"200":{"description":"Investors active inside the geometry, one page, best first by the requested sort, with the totals over the whole geometry.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/InvestorListRow"},"description":"The rows of this page."},"page":{"$ref":"#/components/schemas/Page"},"meta":{"$ref":"#/components/schemas/Meta"},"summary":{"$ref":"#/components/schemas/InvestorListSummary"}},"required":["data","page","meta","summary"],"additionalProperties":false,"description":"Investors active inside the geometry, one page, best first by the requested sort, with the totals over the whole geometry."},"example":{"data":[{"investor":{"id":"inv_a61331a35b68","market":"phx","name":"BLACK CANYON EQUITY LLC","display_name":"BLACK CANYON EQUITY LLC","state":"AZ","kind":"FLIPPER","confidence":"STRONG","scale":"large","institutional":false,"is_public":false,"last_bought_on":"2026-07-30","n_deals":1354,"buyer_status":"registered","kinds":["FLIPPER","BUILDER","WHOLESALER","LANDLORD"],"days_since_last_purchase":13,"n_purchase_events_12m":70,"n_purchase_events_24m":125,"n_flips":126,"n_wholesales":881,"n_holds":154,"n_long_holds":83,"n_bought_from_wholesaler_5y":140,"price_band":{"window":"5y","p25":270000,"p50":345000,"p75":450000,"n_priced_purchases":926},"p50_flip_sold_price":471500,"segment_mix":{"sfr":0.832,"condo_th":0.123,"other":0.044},"has_person_member":true,"has_home_address":true,"has_suite_address":true,"member_names":["BLACK CANYON EQUITY LLC","BAF 3 LLC","OHANA43 LLC","SVH ENTERPRISES LLC","LLC BLACK CANYON EQUITY","BLACK CANYON LLC"],"operator_id":"inv_a61331a35b68","n_operator_members":12,"auction":{"n_auction_buys":1,"n_auction_buys_24m":0,"last_auction_buy_on":"2019-01-03","is_active_auction_buyer":false,"auction_resale_share":null,"n_reo_buys":2,"n_reo_buys_24m":1,"last_reo_buy_on":"2026-02-18","is_active_reo_buyer":true}},"in_radius":{"n_events":123,"n_purchase_events":112,"n_parcels":117,"n_held_parcels":7,"n_flips":16,"n_holds":7,"n_long_holds":9,"volume":55249200,"last_bought_on":"2026-07-20","last_deal_on":"2026-07-23","nearest_distance_miles":0.16,"median_bought_price":453000,"n_unpriced":0,"n_undated":0},"listings":{"n_active":7,"n_pending":0,"n_listed":7,"n_listed_undated":0,"n_holdings_dated":154,"n_holdings_undated":0,"median_list_price":359900,"min_list_price":335000,"max_list_price":399900,"last_listed_on":"2026-08-08","n_listed_12m":25,"listings_data_end":"2026-08-31"},"wholesale_purchases":{"n":12,"n_12m":3,"n_24m":6,"n_5y":11,"n_probable":7,"last_on":"2025-11-26","n_wholesalers":11,"top_wholesalers":[{"id":"wsr_7b407f79e351","name":"KeyGlee","n":2},{"id":"wsr_37e2a3dcdf4c","name":"Home Team Investors","n":1},{"id":"wsr_435f4f5439c2","name":"EZAZ Homes","n":1}],"n_double_closed":4,"median_asking_price":394245,"data_end":"2026-08-12"},"str":null},{"investor":{"id":"inv_70f5dd32e592","market":"phx","name":"SALT RIVER EQUITY LLC","display_name":"SALT RIVER EQUITY LLC","state":"AZ","kind":"FLIPPER","confidence":"STRONG","scale":"large","institutional":false,"is_public":false,"last_bought_on":"2026-08-06","n_deals":1581,"buyer_status":"registered","kinds":["FLIPPER","BUILDER","WHOLESALER","LANDLORD"],"days_since_last_purchase":6,"n_purchase_events_12m":99,"n_purchase_events_24m":180,"n_flips":130,"n_wholesales":1206,"n_holds":97,"n_long_holds":33,"n_bought_from_wholesaler_5y":41,"price_band":{"window":"5y","p25":235000,"p50":325000,"p75":442875,"n_priced_purchases":642},"p50_flip_sold_price":347500,"segment_mix":{"sfr":0.854,"condo_th":0.094,"other":0.052},"has_person_member":true,"has_home_address":true,"has_suite_address":true,"member_names":["SALT RIVER EQUITY LLC","MMAR HOLDINGS LLC","ML SQUARED REAL ESTATE INVESTMENT LLC","SICK HOMES LLC","LLC SALT RIVER EQUITY","THERESA ORTIZ TRUST"],"operator_id":"inv_70f5dd32e592","n_operator_members":6,"auction":{"n_auction_buys":0,"n_auction_buys_24m":0,"last_auction_buy_on":null,"is_active_auction_buyer":false,"auction_resale_share":null,"n_reo_buys":11,"n_reo_buys_24m":3,"last_reo_buy_on":"2026-06-30","is_active_reo_buyer":true}},"in_radius":{"n_events":91,"n_purchase_events":86,"n_parcels":91,"n_held_parcels":4,"n_flips":4,"n_holds":4,"n_long_holds":3,"volume":36531443,"last_bought_on":"2026-06-11","last_deal_on":"2026-06-11","nearest_distance_miles":0.2,"median_bought_price":337000,"n_unpriced":0,"n_undated":0},"listings":{"n_active":8,"n_pending":0,"n_listed":8,"n_listed_undated":0,"n_holdings_dated":97,"n_holdings_undated":0,"median_list_price":527500,"min_list_price":239900,"max_list_price":754900,"last_listed_on":"2026-08-23","n_listed_12m":27,"listings_data_end":"2026-08-31"},"wholesale_purchases":{"n":6,"n_12m":0,"n_24m":3,"n_5y":6,"n_probable":4,"last_on":"2025-04-30","n_wholesalers":4,"top_wholesalers":[{"id":"wsr_a7c0d7da9bc7","name":"National Property Superstore","n":2},{"id":"wsr_b847c1c64247","name":"Freedom Ventures","n":2},{"id":"wsr_4a4468db0919","name":"TTP AZ, LLC","n":1}],"n_double_closed":1,"median_asking_price":309950,"data_end":"2026-08-12"},"str":null}],"page":{"next_cursor":"eyJ2IjoxLCJydW4iOiIxNzg4NTIxODM0IiwicSI6IjVkOTVjNmJhNGUxMzA3YjRmYmQ3NjFmMjgzZTgxZWMwMjdiZmY5ZjgxOTg4NTk1OTIyMjBjNzBjZTU3YzAyZDciLCJrIjpbODYsImludl83MGY1ZGQzMmU1OTIiXX0","limit":2,"returned":2},"meta":{"generated_at":"2026-09-04T12:00:00.000Z","reference_point":{"lat":33.476917,"lng":-111.920385},"geometry":{"kind":"radius","lat":33.476917,"lng":-111.920385,"radius_miles":2,"bbox":null,"property_id":null,"zip":null,"city":null},"coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788521834,"loaded_at":"2026-09-04T11:37:14.263Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"},"summary":{"by_buyer_status":{"registered":10678,"unclassified":208,"excluded":65,"unknown":7},"n_investors_ranked":5813,"n_unpriced":1975,"n_undated":27}}}},"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"},"X-Credits-Charged":{"$ref":"#/components/headers/X-Credits-Charged"},"X-Credits-Remaining":{"$ref":"#/components/headers/X-Credits-Remaining"}}},"400":{"description":"Bad request (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/investors","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":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/investors","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":"/v1/investors","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":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/investors","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":"/v1/investors","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":"/v1/investors","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, ledger_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":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/investors","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":"/v1/investors","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/investors/search":{"get":{"operationId":"searchInvestors","summary":"Find an investor by any name it buys under","tags":["investors"],"description":"Finds an investor by any name it bought under: the entity, a principal, a trust or a spelling variant. Returns the id to open the profile with.\n\nUse it for a typeahead after the user types three characters, and to map a name you already hold to an id. The API returns at most 50 hits, ranked by match quality, with no cursor. `page.capped` says when more matched.\n\n[What each match level means, and what a person hit carries](https://developers.investorlift.com/api-reference/endpoints/investors-search).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"q","required":true,"description":"The name to look for: an entity (\"ZAK VENTURES\"), a person in either order (\"Dana Rivera\" or \"RIVERA DANA\"), or part of one. Case and punctuation do not matter. The name needs at least 3 letters or digits after normalisation. The API answers 400 to a shorter name."},{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. It narrows the search to that market. The API answers 400 when that market is not loaded. Without it the API searches every loaded market and each hit carries its market."},{"schema":{"default":10,"type":"integer","minimum":1,"maximum":50},"in":"query","name":"limit","required":false,"description":"Investors to return, 1 to 50 (default 10)."},{"schema":{"default":1,"type":"integer","minimum":0,"maximum":1000000},"in":"query","name":"n_deals_min","required":false,"description":"Minimum investment deals as buyer inside the area loaded for the market, 0 to 1,000,000 (default 1). The default hides seller-only profiles, for example builders that never bought. A value of 0 shows them."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"include_public","required":false,"description":"Include public bodies (counties, cities, housing authorities). Default: false."}],"responses":{"200":{"description":"Investors whose deed names match the query, best match first. page.next_cursor is always null and page.capped is true when the API cut the page at limit.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/InvestorSearchResult"},"description":"The hits, best match first."},"page":{"$ref":"#/components/schemas/SearchPage"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","page","meta"],"additionalProperties":false,"description":"Investors whose deed names match the query, best match first. page.next_cursor is always null and page.capped is true when the API cut the page at limit."},"example":{"data":[{"id":"inv_abaf618f44a3","market":"phx","name":"ZAK VENTURES LLC","display_name":"ZAK VENTURES LLC","state":"AZ","kind":"LANDLORD","confidence":"STRONG","scale":"large","institutional":false,"is_public":false,"n_deals":775,"n_sales":983,"last_bought_on":"2026-08-05","last_deal_on":"2026-08-11","matched_name":null,"matched_party_key":null,"matched_is_person":true,"match":"tokens","similarity":null}],"page":{"next_cursor":null,"limit":3,"returned":1,"capped":false},"meta":{"generated_at":"2026-09-03T21:40:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":7,"registry_version":"v4-metro-review-fixes","dataset_version":1788469819,"loaded_at":"2026-09-03T21:10:18.682Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":null,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/investors/search","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":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"Retry-After":{"$ref":"#/components/headers/Retry-After"},"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":"/v1/investors/search","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":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/investors/search","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":"/v1/investors/search","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":"/v1/investors/search","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, ledger_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":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/investors/search","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":"/v1/investors/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/investors/{id}":{"get":{"operationId":"getInvestor","summary":"Get the full profile of one investor","tags":["investors"],"description":"The full profile of one investor: how they operate and how recently they bought. The profile lists every deed name, parsed into given name and surname. How they operate covers kinds, flips, holds, the price band and the medians.\n\nFor their deals use `/v1/investors/{id}/deals`. To find an id from a name use `/v1/investors/search`.\n\n[The buyer signal and what becomes of an old id](https://developers.investorlift.com/api-reference/endpoints/investors-get).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. Send it only when the id exists in more than one loaded market. 400 market_required says so. Otherwise the API uses the id's own market."},{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Investor id, inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The API follows an old id from an earlier data refresh to the current investor (meta.resolved_from). It answers 410 for a retired id."}],"responses":{"200":{"description":"The full profile. meta.resolved_from lists the old ids that redirected here.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/InvestorProfile"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The full profile. meta.resolved_from lists the old ids that redirected here."},"examples":{"phoenix_recorded":{"summary":"Recorded at the Phoenix golden point, as a deals-only key gets it","value":{"data":{"id":"inv_0a20a550f33b","market":"phx","name":"ZAK VENTURES LLC","display_name":"ZAK VENTURES LLC","state":"AZ","kind":"LANDLORD","confidence":"STRONG","scale":"large","institutional":false,"is_public":false,"last_bought_on":"2026-08-05","n_deals":775,"buyer_status":"registered","mailing_states":["AZ","CA"],"registry_version":"v4-metro-review-fixes","registry_run":8,"id_history":[{"registry_run":1,"assign_method":"NEW","jaccard":null,"prev_group_id":null},{"registry_run":2,"assign_method":"INHERITED","jaccard":1,"prev_group_id":317607},{"registry_run":3,"assign_method":"INHERITED","jaccard":1,"prev_group_id":317607},{"registry_run":4,"assign_method":"INHERITED","jaccard":1,"prev_group_id":317607},{"registry_run":5,"assign_method":"INHERITED","jaccard":1,"prev_group_id":317607},{"registry_run":6,"assign_method":"INHERITED","jaccard":0.8,"prev_group_id":317607},{"registry_run":7,"assign_method":"INHERITED","jaccard":1,"prev_group_id":318750},{"registry_run":8,"assign_method":"INHERITED","jaccard":1,"prev_group_id":318750}],"kinds":["LANDLORD","FLIPPER","BUILDER","WHOLESALER"],"confidence_by_kind":{"BUILDER":{"n":668,"confidence":"STRONG"},"FLIPPER":{"n":346,"confidence":"STRONG"},"LANDLORD":{"n":334,"confidence":"STRONG"},"WHOLESALER":{"n":158,"confidence":"STRONG"}},"classification_reasons":["FLIPPER:STRICT_FLIPS_2P","FLIPPER:STRICT_FLIP_ENTITY","FLIPPER:STRICT_FLIP_PLUS_QUICK_RESALE","WHOLESALER:QUICK_RESALES_2P","WHOLESALER:QUICK_RESALE_ENTITY_2PAIRS","LANDLORD:LONG_HOLDS_2P_CONCURRENT","LANDLORD:HOLDINGS_2P_RENTAL","LANDLORD:RENTAL_HOLDING_PLUS_FLIP","LANDLORD:ENTITY_LONG_HOLD_RENTAL_REG","BUILDER:LOT_TO_BUILD_2P","BUILDER:NEW_CONSTRUCTION_SALES_3P","BUILDER:BUILDER_NAME_SALES_3P","NOTE:SOLD_TO_WHOLESALER"],"is_entity":true,"flipper_first":true,"holdings_first":true,"flipper_demoted":false,"has_builder_name":true,"is_ibuyer":false,"n_strict_flips":188,"n_quick_resales":158,"n_lot_to_build_built":5,"n_sales_new_construction":41,"n_current_holdings":302,"is_production_builder":false,"is_sfr_bulk_holder":false,"institutional_reason":null,"institutional_reasons":[],"public_name":null,"n_flips":188,"n_wholesales":158,"n_long_holds":63,"n_holds":314,"median_purchase_year":2021,"n_other":47,"n_builds":5,"n_acquisitions":646,"n_priced_deals":763,"n_unpriced_deals":12,"n_purchases":1367,"n_sales":983,"first_deed":"1997-07-03","last_deed":"2026-08-11","last_sold_on":"2026-08-11","last_flip_sold_on":"2026-08-11","last_deal_on":"2026-08-11","days_since_last_purchase":7,"n_purchase_events_12m":45,"n_purchase_events_24m":81,"n_flips_24m":13,"n_holds_24m":61,"n_sales_12m":26,"bought_12m":true,"bought_24m":true,"price_band":{"window":"5y","p25":210000,"p50":245000,"p75":288875,"n_priced_purchases":238},"p50_flip_sold_price":244950,"p50_buy_to_resale_ratio":0.6857,"median_hold_days":73,"median_spread_ratio":0.4167,"median_gross_profit":70000,"median_bought_price":179000,"segment_mix":{"sfr":0.894,"condo_th":0.086,"other":0.019},"segment_sfr_share":0.894,"cities_active":["PHOENIX","GLENDALE","PEORIA"],"n_bought_from_wholesaler":65,"n_bought_from_wholesaler_5y":36,"n_bought_from_wholesaler_24m":21,"share_bought_from_wholesaler":0.085,"last_bought_from_wholesaler_on":"2026-07-15","buys_wholesale":true,"n_bought_from_investor":104,"n_distressed_buys":17,"auction":{"n_auction_buys":202,"n_auction_buys_24m":0,"last_auction_buy_on":"2016-06-30","is_active_auction_buyer":false,"auction_resale_share":0.935,"n_reo_buys":4,"n_reo_buys_24m":0,"last_reo_buy_on":"2013-06-19","is_active_reo_buyer":false,"auction_kinds":["TRUSTEE_SALE","SHERIFF_SALE"],"n_auction_by_kind":{"SHERIFF_SALE":1,"TRUSTEE_SALE":201},"n_auction_by_venue":{},"n_auction_events":202,"n_auction_resold_12m":157,"n_auction_transferred_12m":34,"n_auction_lost":1,"n_auction_held":10,"n_auction_parcels":202,"median_auction_discount":0.236,"lender_note":null,"n_reo_by_grantor":{"SERVICER":4},"n_reo_resold_12m":1,"n_reo_transferred_12m":1,"n_reo_lost":0,"n_reo_held":2,"reo_resale_share":0.333},"members":null,"member_names":["ZAK VENTURES LLC","JSB HOMES LLC","LLC ZAK VENTURES","AZ CAPITAL PARTNERS LLC","HANSON INDUSTRIES LLC"],"n_members":18,"n_addresses_by_kind":{"house":40,"suite":58,"pobox":0},"has_mailing_address":true,"buyer_signal":{"operator_id":"inv_0a20a550f33b","n_operator_members":4,"operator_member_ids":["inv_0a20a550f33b","inv_d096f29ddb8d","inv_ef98e65e5e07","inv_fad3fbd13c56"],"is_anchor":true,"merge_confidence":"MERGED_STRONG","activity_p_180":0.937516,"activity_p_365":0.965902,"cell_n":1599,"activity_model":"CYCLE_v1","cycle_state":"FRESH_CASH","capital_freed_60d":true,"days_since_last_purchase":7,"days_since_last_resale":1,"open_inventory":305,"n_purchases_36m":145,"median_gap_days":5,"share_within_30d_of_resale":0.931,"data_end":"2026-08-12"},"listings":{"n_active":2,"n_pending":0,"n_listed":2,"n_listed_undated":0,"n_holdings_dated":314,"n_holdings_undated":0,"median_list_price":536950,"min_list_price":449000,"max_list_price":624900,"last_listed_on":"2026-07-24","n_listed_12m":27,"listings_data_end":"2026-08-31"},"wholesale_purchases":{"n":9,"n_12m":1,"n_24m":4,"n_5y":8,"n_probable":8,"last_on":"2026-04-08","n_wholesalers":8,"top_wholesalers":[{"id":"wsr_f142268d0d08","name":"The Local Investor","n":2},{"id":"wsr_056aa2c2531e","name":"Cash For Houses, LLC","n":1},{"id":"wsr_5314bba2f18b","name":"OneRoof Real Estate Group","n":1}],"n_double_closed":1,"median_asking_price":305000,"data_end":"2026-08-12"},"str":null,"has_licensed_member":true,"agent_links":[{"agent_id":"agt_fdfd4a0f8bae","license_number":null,"link_basis":"SELF_LISTING","confidence":"HIGH","n_self_listings":38,"party_key":null},{"agent_id":"agt_fdfd4a0f8bae","license_number":null,"link_basis":"SELF_LISTING","confidence":"HIGH","n_self_listings":38,"party_key":null},{"agent_id":"agt_391971c0904a","license_number":null,"link_basis":"SELF_LISTING","confidence":"HIGH","n_self_listings":1,"party_key":null},{"agent_id":"agt_391971c0904a","license_number":null,"link_basis":"SELF_LISTING","confidence":"HIGH","n_self_listings":1,"party_key":null},{"agent_id":"agt_391971c0904a","license_number":null,"link_basis":"SELF_LISTING","confidence":"MEDIUM","n_self_listings":1,"party_key":null}],"financing":{"n_loans":249,"n_loans_12m":18,"n_loans_24m":30,"n_lenders":37,"lenders_used":[{"id":"len_9f4e246dcf57","name":"FIRST FIDELITY BANK","lender_class":"BANK","is_hard_money":false,"n":147,"n_24m":24,"last_loan_on":"2025-12-18"},{"id":"len_5f5369213fe0","name":"GUILD MORTGAGE CO","lender_class":"NONBANK","is_hard_money":false,"n":2,"n_24m":1,"last_loan_on":"2026-01-30"},{"id":"len_95b4c664bb2b","name":"COPA LENDING LLC","lender_class":"NONBANK","is_hard_money":true,"n":1,"n_24m":1,"last_loan_on":"2025-11-14"},{"id":"len_a173c82df779","name":"PELHAM INVESTORS LLC","lender_class":"NONBANK","is_hard_money":false,"n":1,"n_24m":1,"last_loan_on":"2026-01-07"},{"id":"len_a81f5348b9c1","name":"QUICK SOURCE CAPITAL LLC","lender_class":"NONBANK","is_hard_money":true,"n":1,"n_24m":1,"last_loan_on":"2024-11-26"},{"id":"len_b2c2b5ed925e","name":"ROCKET MORTGAGE LLC","lender_class":"NONBANK","is_hard_money":false,"n":1,"n_24m":1,"last_loan_on":"2025-06-05"},{"id":"len_d4f8215629de","name":"BOOMERANG ACCEPTANCE LLC","lender_class":"NONBANK","is_hard_money":true,"n":1,"n_24m":1,"last_loan_on":"2026-01-02"},{"id":"len_ef6fbe48c59b","name":"GRANDPOINT BANK","lender_class":"BANK","is_hard_money":false,"n":35,"n_24m":0,"last_loan_on":"2016-09-28"},{"id":"len_f5d8bf160316","name":"COUNTRYWIDE INVESTMENTS LLC","lender_class":"NONBANK","is_hard_money":false,"n":12,"n_24m":0,"last_loan_on":"2013-10-17"},{"id":"len_1c7b0443baa5","name":"THE BILTMORE BANK OF ARIZONA","lender_class":"BANK","is_hard_money":false,"n":10,"n_24m":0,"last_loan_on":"2013-10-01"}],"last_loan":{"lender_id":"len_5f5369213fe0","name":"GUILD MORTGAGE CO","lender_class":"NONBANK","is_hard_money":false,"property_id":"prop_3d21514c580d7565deb9f932659a5134","recording_date":"2026-01-30","amount":100000,"purpose":"PURCHASE"},"n_deals_measured_24m":83,"n_deals_financed_24m":2,"share_deals_financed_24m":0.024096,"uses_hard_money":true,"as_of":"2026-06-25","dated":true},"data_end":"2026-08-12"},"meta":{"generated_at":"2026-09-04T12:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788521834,"loaded_at":"2026-09-04T11:37:14.263Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}},"str_operator":{"summary":"An investor with 17 licensed short-term rental holdings (the str roll-up; recorded 2026-09-10 from stage)","value":{"data":{"id":"inv_91b085a8d797","market":"phx","name":"SPSTR 1 LLC","display_name":"SPSTR 1 LLC","state":"AZ","kind":"LANDLORD","confidence":"STRONG","scale":"mid","institutional":false,"is_public":false,"last_bought_on":"2023-02-01","n_deals":20,"buyer_status":"registered","mailing_states":["CA","OR","TX"],"registry_version":"v4-metro-review-fixes","registry_run":8,"id_history":[{"registry_run":1,"assign_method":"NEW","jaccard":null,"prev_group_id":null},{"registry_run":2,"assign_method":"INHERITED","jaccard":1,"prev_group_id":5428340},{"registry_run":3,"assign_method":"INHERITED","jaccard":1,"prev_group_id":5428340},{"registry_run":4,"assign_method":"INHERITED","jaccard":1,"prev_group_id":5428343},{"registry_run":5,"assign_method":"INHERITED","jaccard":1,"prev_group_id":5428343},{"registry_run":6,"assign_method":"INHERITED","jaccard":1,"prev_group_id":5428343},{"registry_run":7,"assign_method":"INHERITED","jaccard":1,"prev_group_id":5455094},{"registry_run":8,"assign_method":"INHERITED","jaccard":1,"prev_group_id":5455094}],"kinds":["LANDLORD"],"confidence_by_kind":{"LANDLORD":{"n":17,"confidence":"STRONG"}},"classification_reasons":["LANDLORD:HOLDINGS_2P_RENTAL","LANDLORD:ENTITY_LONG_HOLD_RENTAL_REG"],"is_entity":true,"flipper_first":false,"holdings_first":false,"flipper_demoted":false,"has_builder_name":false,"is_ibuyer":false,"n_strict_flips":0,"n_quick_resales":0,"n_lot_to_build_built":0,"n_sales_new_construction":0,"n_current_holdings":17,"is_production_builder":false,"is_sfr_bulk_holder":false,"institutional_reason":null,"institutional_reasons":[],"public_name":null,"n_flips":0,"n_wholesales":0,"n_long_holds":1,"n_holds":18,"median_purchase_year":2022,"n_other":1,"n_builds":0,"n_acquisitions":19,"n_priced_deals":20,"n_unpriced_deals":0,"n_purchases":20,"n_sales":2,"first_deed":"2021-12-06","last_deed":"2025-09-26","last_sold_on":"2025-09-26","last_flip_sold_on":null,"last_deal_on":"2025-09-26","days_since_last_purchase":1288,"n_purchase_events_12m":0,"n_purchase_events_24m":0,"n_flips_24m":0,"n_holds_24m":0,"n_sales_12m":1,"bought_12m":false,"bought_24m":false,"price_band":{"window":"5y","p25":803750,"p50":863500,"p75":906750,"n_priced_purchases":20},"p50_flip_sold_price":null,"p50_buy_to_resale_ratio":null,"median_hold_days":857.5,"median_spread_ratio":0.2366,"median_gross_profit":230000,"median_bought_price":863500,"segment_mix":{"sfr":1,"condo_th":0,"other":0},"segment_sfr_share":1,"cities_active":["SCOTTSDALE","FOUNTAIN HILLS","GILBERT"],"n_bought_from_wholesaler":3,"n_bought_from_wholesaler_5y":3,"n_bought_from_wholesaler_24m":0,"share_bought_from_wholesaler":0.15,"last_bought_from_wholesaler_on":"2023-01-31","buys_wholesale":false,"n_bought_from_investor":6,"n_distressed_buys":0,"auction":{"n_auction_buys":0,"n_auction_buys_24m":0,"last_auction_buy_on":null,"is_active_auction_buyer":false,"auction_resale_share":null,"n_reo_buys":0,"n_reo_buys_24m":0,"last_reo_buy_on":null,"is_active_reo_buyer":false,"auction_kinds":[],"n_auction_by_kind":{},"n_auction_by_venue":{},"n_auction_events":0,"n_auction_resold_12m":0,"n_auction_transferred_12m":0,"n_auction_lost":0,"n_auction_held":0,"n_auction_parcels":0,"median_auction_discount":null,"lender_note":null,"n_reo_by_grantor":{},"n_reo_resold_12m":0,"n_reo_transferred_12m":0,"n_reo_lost":0,"n_reo_held":0,"reo_resale_share":null},"members":null,"member_names":["SPSTR 1 LLC","SPRUCE CAPITAL LLC"],"n_members":2,"n_addresses_by_kind":{"house":3,"suite":2,"pobox":0},"has_mailing_address":true,"buyer_signal":{"operator_id":"inv_91b085a8d797","n_operator_members":1,"operator_member_ids":["inv_91b085a8d797"],"is_anchor":true,"merge_confidence":"SINGLE","activity_p_180":null,"activity_p_365":null,"cell_n":null,"activity_model":null,"cycle_state":"LOADED","capital_freed_60d":false,"days_since_last_purchase":1288,"days_since_last_resale":320,"open_inventory":18,"n_purchases_36m":0,"median_gap_days":13.5,"share_within_30d_of_resale":null,"data_end":"2026-08-12"},"listings":{"n_active":0,"n_pending":0,"n_listed":0,"n_listed_undated":0,"n_holdings_dated":18,"n_holdings_undated":0,"median_list_price":null,"min_list_price":null,"max_list_price":null,"last_listed_on":null,"n_listed_12m":0,"listings_data_end":"2026-08-31"},"has_licensed_member":false,"agent_links":[],"wholesale_purchases":{"n":0,"n_12m":0,"n_24m":0,"n_5y":0,"n_probable":0,"last_on":null,"n_wholesalers":0,"top_wholesalers":[],"n_double_closed":0,"median_asking_price":null,"data_end":"2026-08-12"},"str":{"n_holdings":17,"n_permits":17,"n_at_purchase":4,"n_assumed":0,"n_owner_occupied_licences":0,"n_managed":0,"share":0.9444,"manager_companies":[],"jurisdictions":["PHOENIX","SCOTTSDALE"],"stale_jurisdictions":[],"last_application_on":"2025-12-08"},"financing":null,"data_end":"2026-08-12"},"meta":{"generated_at":"2026-09-10T14:50:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1789049684,"loaded_at":"2026-09-10T14:14:43.746Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"BUCKEYE","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"CAREFREE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"CASA_GRANDE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"CAVE_CREEK","regime":"REQUIRED","coverage_reason":"LOADED_UNVALIDATED","served":false,"snapshot_only":true,"licence_start":"2023-11-06","snapshot_date":null,"feed_stale":true,"sources":[{"source":"DECKARD","snapshot_date":null,"stale":false}],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"CHANDLER","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"CITY_OF_MARICOPA","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"COOLIDGE","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"EL_MIRAGE","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"ELOY","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"FLORENCE","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"FOUNTAIN_HILLS","regime":"REQUIRED","coverage_reason":"LOADED_UNVALIDATED","served":false,"snapshot_only":true,"licence_start":"2022-11-15","snapshot_date":null,"feed_stale":true,"sources":[{"source":"DECKARD","snapshot_date":null,"stale":false}],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"GILA_BEND","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"GILBERT","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"GLENDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"GOODYEAR","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"GUADALUPE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"LITCHFIELD_PARK","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"MARICOPA_UNINCORPORATED","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"MESA","regime":"REQUIRED","coverage_reason":"LOADED_COUNTS_ONLY","served":false,"snapshot_only":false,"licence_start":"2023-02-01","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"MESA","snapshot_date":"2026-09-10","stale":false}],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"PARADISE_VALLEY","regime":"REQUIRED","coverage_reason":"LOADED_UNVALIDATED","served":false,"snapshot_only":false,"licence_start":"2022-11-13","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"PV","snapshot_date":"2026-09-10","stale":false}],"n_licensed":95,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":0.0104,"share_assumed":null},{"name":"PEORIA","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"PHOENIX","regime":"REQUIRED","coverage_reason":"LOADED_SERVED","served":true,"snapshot_only":false,"licence_start":"2023-10-26","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"PHX_GIS","snapshot_date":"2026-09-10","stale":false},{"source":"PHX_SHAPE","snapshot_date":null,"stale":true}],"n_licensed":1750,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":0.0793,"share_assumed":0},{"name":"PINAL_UNINCORPORATED","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"QUEEN_CREEK","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"SCOTTSDALE","regime":"REQUIRED","coverage_reason":"LOADED_SERVED","served":true,"snapshot_only":false,"licence_start":"2022-11-28","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"COS_EXPIRED","snapshot_date":"2026-09-10","stale":false},{"source":"COS_LEGACY","snapshot_date":"2026-09-10","stale":false},{"source":"COS_LICENSED","snapshot_date":"2026-09-10","stale":false},{"source":"COS_PENDING","snapshot_date":"2026-09-10","stale":false},{"source":"COS_STAFF","snapshot_date":"2026-09-10","stale":false},{"source":"COS_UNLICENSED","snapshot_date":"2026-09-10","stale":false}],"n_licensed":2708,"n_pending":41,"n_expired":2,"n_advertised":671,"share_unmatched":0.0265,"share_assumed":0.0008},{"name":"SURPRISE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"TEMPE","regime":"REQUIRED","coverage_reason":"LOADED_UNVALIDATED","served":false,"snapshot_only":false,"licence_start":"2023-03-06","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"TEMPE","snapshot_date":"2026-09-10","stale":false}],"n_licensed":110,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":0.676,"share_assumed":null},{"name":"TOLLESON","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"WICKENBURG","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"YOUNGTOWN","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}}}},"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"},"X-Credits-Charged":{"$ref":"#/components/headers/X-Credits-Charged"},"X-Credits-Remaining":{"$ref":"#/components/headers/X-Credits-Remaining"}}},"400":{"description":"Bad request (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/investors/{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":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/investors/{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":"/v1/investors/{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":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/investors/{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":"/v1/investors/{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":"/v1/investors/{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, ledger_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":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/investors/{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":"/v1/investors/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/investors/{id}/deals":{"get":{"operationId":"listInvestorDeals","summary":"List every deal of one investor across the market","tags":["investors"],"description":"Every deal of one investor across the whole market, as rows shaped like `/v1/deals` with coordinates for a map. A two mile radius shows about 5% of an active flipper's activity. This route shows all of it.\n\nFor their deals inside one area use `/v1/deals` with `investor_id`.\n\n[The role parameter, listing_status and the page sizes](https://developers.investorlift.com/api-reference/endpoints/investors-deals).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. Send it only when the id exists in more than one loaded market. 400 market_required says so. Otherwise the API uses the id's own market."},{"schema":{"default":"buyer","type":"string","enum":["buyer","seller","any"]},"in":"query","name":"role","required":false,"description":"Which side of the deals to list. With buyer (the default) the list holds the purchases, holdings and resales where the investor was the buyer. With seller it holds the deals where the investor sold to the buyer named on the row. With any it holds the buyer, seller and end-buyer rows together, each deal once."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["flip","wholesale","hold","long_hold","other","build"],"description":"What occurred on the deal. flip: bought, fixed and resold within about a year at a profit-shaped margin; wholesale: bought and resold in under 30 days, or a chain resale or round trip within 90 (a double close); hold: bought and still owned at data_end, a confirmed holding or an un-resold purchase; long_hold: held over a year, then sold (a landlord exit); other: an investor resale that is not a clean flip. Reasons: a loss, a thin margin, a builder's new home resold, an iBuyer resale, or a chain resale of 3 to 12 months; build: a registered investor bought a lot or teardown, built a house on it during the hold, then sold. A builder's finished home bought and resold is other. On data built after 2026-09-17 the kind keeps only a single-family parcel held over 90 days, its house complete by the sale year. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."}},"in":"query","name":"kind","required":false,"description":"Deal kinds to keep (comma list or repeated key). Default: every kind."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["on_market","active","pending","sold","off_market","none"],"description":"What the MLS listing on a holding must be for the API to keep the row. With on_market, ACTIVE or PENDING and not a rental: the rows whose listing block says on_market, before the ownership test. So the counted ones among them are those with counted true. With active, pending, sold or off_market, the block's status, rentals included, and with none, a holding with no listing record at all. The API keeps a row when any of the values matches. Rows that are not holdings (flips, wholesales, resold purchases) carry no listing and never match."}},"in":"query","name":"listing_status","required":false,"description":"Keep only holdings whose MLS listing matches one of these values (comma list or repeated key). The value on_market keeps the holdings listed at listings_data_end: ACTIVE or PENDING and not a rental. The values active, pending, sold and off_market match the record's status, and none keeps holdings with no record. The API applies the filter before it cuts the page, so role=buyer&listing_status=on_market is every listed holding in one page. It answers 422 listings_unavailable when the market has no listing tables (meta.coverage[].listings_data_end null). Default: every row."},{"schema":{"type":"string","enum":["investorlift"]},"in":"query","name":"source","required":false,"description":"The value investorlift keeps only deals whose closing deed closed an Investorlift listing. Those rows carry a wholesale_listing block: the houses this investor bought off Investorlift. The API applies the filter before it cuts the page. It answers 422 wholesale_unavailable when the market has no wholesale tables (meta.coverage[].wholesale_as_of null). Default: every row."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["LICENSED","PENDING","EXPIRED"],"description":"The short-term rental status a holding must carry for the API to keep the row: the block's status. LICENSED means an active licence or permit, PENDING an application on file with none active, and EXPIRED every record on the parcel inactive. The API keeps a row when any of the values matches. Rows that are not holdings (flips, wholesales, resold purchases) carry no block and never match. The API serves NONE on rows, but NONE is not filterable in this release (400 for the value)."}},"in":"query","name":"str_status","required":false,"description":"Keep only holdings whose short-term rental status matches one of the values (comma list or repeated key): LICENSED, PENDING or EXPIRED, the block's status. The API serves NONE on rows, but NONE is not filterable in this release (400 for the value). The API applies the filter before it cuts the page. Rows that are not holdings never match. 422 str_unavailable when a market in play has no short-term rental tables (meta.coverage[].str_as_of null). Default: every row."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"str_business_use","required":false,"description":"With true, keep only hold rows whose licence is a business use attributed to the current owner: the UI's short-term rental deal type. With false, keep only hold rows whose licence is not one: a person's own home with a casita permit, or a prior owner's permit. Without str_status the test covers LICENSED and PENDING records, the only ones where business_use is true. Combine it with str_status to widen or narrow. The API applies the filter before it cuts the page. Rows that are not holdings never match. 422 str_unavailable when a market in play has no short-term rental tables (meta.coverage[].str_as_of null). Default: every row."},{"schema":{"default":"date_desc","type":"string","enum":["date_desc","date_asc","price_desc","price_asc"]},"in":"query","name":"sort","required":false,"description":"The values date_desc (the default) and date_asc sort on the purchase date for role=buyer. For role=seller and role=any they sort on the resale date, or on the purchase date for a deal with no resale. Null dates come last in both directions. The values price_desc and price_asc sort on the bought price, nulls last."},{"schema":{"default":500,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false,"description":"Page size, 1-500 (default 500)."},{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1."},{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Investor id, inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The API follows an old id from an earlier data refresh to the current investor (meta.resolved_from). It answers 410 for a retired id."}],"responses":{"200":{"description":"The investor's deals across the whole market, one page, in the requested sort.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Deal"},"description":"The rows of this page."},"page":{"$ref":"#/components/schemas/Page"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","page","meta"],"additionalProperties":false,"description":"The investor's deals across the whole market, one page, in the requested sort."},"example":{"data":[{"id":"deal_f0908eaa16021b8be474384f19328288","market":"phx","kind":"flip","deal_type":"PAIR","deal_kind":"FLIP","ownership_confirmed":null,"buyer_status":"registered","buyer_exclusion":null,"property":{"id":"prop_e90edc5ea3c0c58ffa80e5cc04eaf0e4","market":"phx","apn":"207-02-477","apn_norm":"20702477","county_fips":"04013","address_short":"3125 W Charleston Ave","street_no_unit":"3125 W Charleston Ave","unit":null,"city":"PHOENIX","state":"AZ","zip":"85053","latitude":33.648618,"longitude":-112.126837,"segment":"SFR","bedrooms":null,"bathrooms":2,"sqft":1055,"year_built":1977,"pool":null},"distance_miles":null,"bought_on":"2026-06-22","date_quality":"deed","held_since_source":"DEED_ACQUISITION","bought_price":195000,"sold_on":"2026-07-24","sold_price":270000,"hold_days":32,"gross_profit":75000,"spread_ratio":0.384615,"price_quality":"BOTH","days_held_to_data_end":null,"sold_to_wholesaler":null,"round_trip":false,"is_purchase_event":true,"n_parcels_in_event":2,"bought_from_wholesaler":true,"bought_from_wholesaler_via":"SELLER_KIND","wholesaler_investor_id":"inv_abaf618f44a3","bought_from_investor":true,"bought_distressed":false,"bought_auction_kind":null,"holding_kind":null,"acquisition_kind":null,"investor":{"id":"inv_abaf618f44a3","market":"phx","name":"ZAK VENTURES LLC","display_name":"ZAK VENTURES LLC","state":"AZ","kind":"LANDLORD","confidence":"STRONG","scale":"large","institutional":false,"is_public":false,"last_bought_on":"2026-08-05","n_deals":775,"buyer_status":"registered"},"seller":{"id":"inv_abaf618f44a3","name":"ZAK VENTURES LLC","display_name":"ZAK VENTURES LLC","kind":"ENTITY","kinds":["LANDLORD","FLIPPER","BUILDER","WHOLESALER"]},"end_buyer":{"id":"inv_83d86e5dde06","name":"BRUCE AND JIM LLC","display_name":"BRUCE AND JIM LLC","kind":"ENTITY","kinds":["LANDLORD"]},"owner":null,"listing":null,"short_term_rental":null,"wholesale_listing":null,"financing":{"purchase_loan_status":"NOT_MEASURED","purchase_loan":null,"secondary_loans_n":null,"link_window":null,"outcome":null,"as_of":"2026-06-25","dated":true}},{"id":"deal_8c38bc7d253246f85075fdb67e1b0f78","market":"phx","kind":"flip","deal_type":"PAIR","deal_kind":"FLIP","ownership_confirmed":null,"buyer_status":"registered","buyer_exclusion":null,"property":{"id":"prop_c43cecbb42811180448e6ac30b4bfc09","market":"phx","apn":"145-23-072","apn_norm":"14523072","county_fips":"04013","address_short":"4229 N 48th Ave","street_no_unit":"4229 N 48th Ave","unit":null,"city":"PHOENIX","state":"AZ","zip":"85031","latitude":33.497889,"longitude":-112.1618,"segment":"SFR","bedrooms":null,"bathrooms":2,"sqft":1360,"year_built":1954,"pool":null},"distance_miles":null,"bought_on":"2026-06-15","date_quality":"deed","held_since_source":"DEED_ACQUISITION","bought_price":187500,"sold_on":"2026-08-11","sold_price":243500,"hold_days":57,"gross_profit":56000,"spread_ratio":0.298667,"price_quality":"BOTH","days_held_to_data_end":null,"sold_to_wholesaler":false,"round_trip":false,"is_purchase_event":true,"n_parcels_in_event":1,"bought_from_wholesaler":true,"bought_from_wholesaler_via":"SELLER_KIND","wholesaler_investor_id":"inv_abaf618f44a3","bought_from_investor":true,"bought_distressed":false,"bought_auction_kind":null,"holding_kind":null,"acquisition_kind":null,"investor":{"id":"inv_abaf618f44a3","market":"phx","name":"ZAK VENTURES LLC","display_name":"ZAK VENTURES LLC","state":"AZ","kind":"LANDLORD","confidence":"STRONG","scale":"large","institutional":false,"is_public":false,"last_bought_on":"2026-08-05","n_deals":775,"buyer_status":"registered"},"seller":{"id":"inv_abaf618f44a3","name":"ZAK VENTURES LLC","display_name":"ZAK VENTURES LLC","kind":"ENTITY","kinds":["LANDLORD","FLIPPER","BUILDER","WHOLESALER"]},"end_buyer":{"id":null,"name":null,"display_name":null,"kind":"TRUST","kinds":null},"owner":null,"listing":null,"short_term_rental":null,"wholesale_listing":null,"financing":{"purchase_loan_status":"NOT_MEASURED","purchase_loan":null,"secondary_loans_n":null,"link_window":null,"outcome":null,"as_of":"2026-06-25","dated":true}}],"page":{"next_cursor":"eyJ2IjoxLCJydW4iOiIxNzg4NDY5ODE5IiwicSI6IjcwMDA1Nzk2YmJjNTg4ZjJiY2U3MGUzMGJiMjYwOTQzMjI4YjhiZWRiMzI2OGU4MjIxNWNjMDBmMTVkOWQ5YTciLCJrIjpbIjIwMjYtMDYtMTUiLCI4YzM4YmM3ZDI1MzI0NmY4NTA3NWZkYjY3ZTFiMGY3OCJdfQ","limit":2,"returned":2},"meta":{"generated_at":"2026-09-03T21:40:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":7,"registry_version":"v4-metro-review-fixes","dataset_version":1788469819,"loaded_at":"2026-09-03T21:10:18.682Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":null,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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"},"X-Credits-Charged":{"$ref":"#/components/headers/X-Credits-Charged"},"X-Credits-Remaining":{"$ref":"#/components/headers/X-Credits-Remaining"}}},"400":{"description":"Bad request (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/investors/{id}/deals","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":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/investors/{id}/deals","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":"/v1/investors/{id}/deals","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":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/investors/{id}/deals","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":"/v1/investors/{id}/deals","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":"/v1/investors/{id}/deals","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, ledger_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":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/investors/{id}/deals","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":"/v1/investors/{id}/deals","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/properties/resolve":{"get":{"operationId":"resolveProperty","summary":"Find the parcel at a point, behind an APN or behind a street address","tags":["properties"],"description":"The parcel at a point, behind an APN or a street address. It gives the `property_id` every other endpoint takes and the parcel block: address, coordinates, beds, baths, square feet, year built and pool.\n\nCall it first in a search. Pass one of `lat` with `lng`, `apn` with `county` when you have it, or `address` with `zip` or `city` (`unit` picks one unit). This route never returns owner information: for the owner call `/v1/properties/{property_id}`.\n\n[The 404 against outside_coverage, ambiguous APNs and addresses](https://developers.investorlift.com/api-reference/endpoints/properties-resolve).","parameters":[{"schema":{"type":"number","minimum":-90,"maximum":90},"in":"query","name":"lat","required":false,"description":"Point latitude (with lng): the API returns the nearest parcel within 100 m. Not allowed with apn."},{"schema":{"type":"number","minimum":-180,"maximum":180},"in":"query","name":"lng","required":false,"description":"Point longitude (with lat)."},{"schema":{"type":"string","minLength":1,"maxLength":32},"in":"query","name":"apn","required":false,"description":"Assessor parcel number, with or without dashes: \"131-28-253\" and \"13128253\" match the same parcel. The API ignores punctuation and case. Not allowed with lat / lng."},{"schema":{"type":"string","minLength":1,"maxLength":120},"in":"query","name":"address","required":false,"description":"Street line of a situs address as the county records it, for example \"7522 E Cholla St\" or \"7522 E Cholla St Unit 2\". The line carries the house number and the street, with the unit inside it or in unit. Needs zip or city. Not allowed with lat / lng or apn. A line without a house number, or one that names two (\"628 & 630 W Main St\"), is 400 validation_error. A line that names several parcels, the units of one building, is 422 ambiguous_address until unit picks one."},{"schema":{"type":"string","pattern":"^\\d{5}(-\\d{4})?$"},"in":"query","name":"zip","required":false,"description":"5-digit ZIP of the address, for example \"85257\". The API reads the first five digits of a ZIP+4. Only with address. The address needs zip or city, and zip is the narrower key."},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"city","required":false,"description":"City of the address, for example \"Scottsdale\" (case does not matter). The API reads it when zip is absent. Only with address."},{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"unit","required":false,"description":"Unit designator of the address, for example \"2\", \"# 2\", \"Unit 2\" or \"B\". The API drops the designator word. It picks one unit of a building that resolves to several parcels. Only with address. A unit inside the address line does the same."},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"county","required":false,"description":"Narrows an APN lookup to one county: a 5-digit FIPS (\"04013\", \"48201\") or the county name (\"Maricopa\", \"Harris\"). Case does not matter. Only with apn. Without it the API searches every loaded county, and an APN that exists in two counties is 422 ambiguous_apn."}],"responses":{"200":{"description":"The resolved parcel: property_id, the parcel block and any same-parcel spelling twins.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ResolveResult"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The resolved parcel: property_id, the parcel block and any same-parcel spelling twins."},"example":{"data":{"property_id":"prop_e93c776c53354a88de4e58448a6bf21b","property":{"id":"prop_e93c776c53354a88de4e58448a6bf21b","market":"phx","apn":"131-28-253","apn_norm":"13128253","county_fips":"04013","address_short":"7436 E Virginia Ave","street_no_unit":"7436 E Virginia Ave","unit":null,"city":"SCOTTSDALE","state":"AZ","zip":"85257","latitude":33.476917,"longitude":-111.920385,"segment":"SFR","bedrooms":3,"bathrooms":2,"sqft":1409,"year_built":1959,"pool":true,"pool_type":"Pool - Yes"},"candidates":[]},"meta":{"generated_at":"2026-09-03T21:40:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":7,"registry_version":"v4-metro-review-fixes","dataset_version":1788469819,"loaded_at":"2026-09-03T21:10:18.682Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":null,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/properties/resolve","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":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/resolve","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":"/v1/properties/resolve","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":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"addresses_unavailable":{"summary":"Addresses unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#addresses_unavailable","title":"Addresses unavailable","status":422,"code":"addresses_unavailable","detail":"No market has a published address table: meta.coverage[].address_as_of is null on every market. Resolve by lat / lng or apn until the sql/22j step runs.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ambiguous_address":{"summary":"Ambiguous address","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ambiguous_address","title":"Ambiguous address","status":422,"code":"ambiguous_address","detail":"7522 E Cholla St in ZIP 85254 names 3 parcels. Pass unit= to pick one. candidates[] lists them. Call GET /v1/properties/{property_id} with the one you mean.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","truncated":false,"candidates":[{"id":"prop_0a1b2c3d4e5f60718293a4b5c6d7e8f9","unit":"1","n_deals":2}]}},"ambiguous_apn":{"summary":"Ambiguous APN","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ambiguous_apn","title":"Ambiguous APN","status":422,"code":"ambiguous_apn","detail":"APN 131-28-253 matches 2 parcels that are not the same parcel. candidates[] lists them. Call the parcel route with the one you mean.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","candidates":[{"id":"prop_0a1b2c3d4e5f60718293a4b5c6d7e8f9","apn":"131-28-253","address_short":"7522 E Cholla St"}]}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/properties/resolve","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":"/v1/properties/resolve","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":"/v1/properties/resolve","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, ledger_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":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/properties/resolve","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":"/v1/properties/resolve","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/properties/{property_id}":{"get":{"operationId":"getProperty","summary":"Read one parcel, its owner and every deal on it","tags":["properties"],"description":"One parcel: its assessor facts, who holds it and how, its short-term rental record, and every deal ever recorded on it. The holding facts are the owner kind, owner-occupied or absentee, the holding kind, held since, permits and rental registration.\n\nFor deals around a parcel use `/v1/deals` with `property_id`. To list licensed short-term rental parcels use `/v1/str-parcels`, sold by contract.\n\n[The two cases in which the owner is named](https://developers.investorlift.com/api-reference/endpoints/properties-get).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"property_id","required":true,"description":"Parcel id, `prop_<32 hex>`, from /v1/properties/resolve or any deal's property.id. The prefix is part of the id (400 invalid_id otherwise)."}],"responses":{"200":{"description":"The parcel block, the owner block and deals[].","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Property"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The parcel block, the owner block and deals[]."},"examples":{"phoenix_recorded":{"summary":"Recorded at the Phoenix golden point, as a deals-only key gets it","value":{"data":{"id":"prop_e0531362f7ae7de9ab7859a1cae77167","market":"phx","apn":"304-68-137","apn_norm":"30468137","county_fips":"04013","address_short":"23420 S Via Del Arroyo","street_no_unit":"23420 S Via Del Arroyo","unit":null,"city":"QUEEN CREEK","state":"AZ","zip":"85142","latitude":33.234727,"longitude":-111.671652,"segment":"SFR","bedrooms":3,"bathrooms":2,"sqft":1248,"year_built":1986,"pool":null,"pool_type":null,"owner":{"kind":"ENTITY","owner_occupied":false,"absentee":true,"is_trust":false,"is_public":false,"holding_kind":"RENTAL_REGISTERED","acquisition_kind":"PURCHASE","held_since":"2022-11-30","months_held":44.4,"last_purchase":{"date":"2022-11-30","price":775000},"rental_registered":true,"permits_last_24m":0,"permits_reno_last_24m":0,"names":null,"name_order":"given_first","mailing":null,"redacted_reason":null},"listing":{"status":"SOLD","status_detail":null,"status_raw":"Sold","off_market_reason":null,"is_rental":false,"on_market":false,"owner_test":"FAILED","counted":false,"list_price":null,"price_low":null,"price_low_on":null,"price_high":null,"price_high_on":null,"listed_on":"2022-09-09","status_updated_on":null,"off_market_on":null,"sold_on":"2022-11-30","sold_price":775000,"days_on_market":82,"list_to_bought_ratio":null,"mls_number":null,"brokerage_name":null,"agents":[{"name":null,"role":"Listing Agent","phone":null,"office_phone":null,"email":null,"agent_id":"agt_dc55fb864489","identity_basis":"LICENSE_NAME","agent_is_holder_member":false,"license_state":null,"license_number":null}]},"short_term_rental":null,"deals":[{"id":"deal_947cfae03589ead2560615c1af5fcec2","market":"phx","kind":"hold","deal_type":"HOLDING","deal_kind":"CURRENT_HOLDING","ownership_confirmed":true,"buyer_status":"registered","buyer_exclusion":null,"property":{"id":"prop_e0531362f7ae7de9ab7859a1cae77167","market":"phx","apn":"304-68-137","apn_norm":"30468137","county_fips":"04013","address_short":"23420 S Via Del Arroyo","street_no_unit":"23420 S Via Del Arroyo","unit":null,"city":"QUEEN CREEK","state":"AZ","zip":"85142","latitude":33.234727,"longitude":-111.671652,"segment":"SFR","bedrooms":3,"bathrooms":2,"sqft":1248,"year_built":1986,"pool":null},"distance_miles":null,"bought_on":"2022-11-30","date_quality":"deed","held_since_source":"DEED_ACQUISITION","bought_price":775000,"sold_on":null,"sold_price":null,"hold_days":null,"gross_profit":null,"spread_ratio":null,"price_quality":"BUY_ONLY","days_held_to_data_end":1351,"sold_to_wholesaler":null,"round_trip":null,"is_purchase_event":true,"n_parcels_in_event":1,"bought_from_wholesaler":false,"bought_from_wholesaler_via":null,"wholesaler_investor_id":null,"bought_from_investor":true,"bought_distressed":false,"bought_auction_kind":null,"holding_kind":"RENTAL_REGISTERED","acquisition_kind":"PURCHASE","investor":{"id":"inv_91b07f6ba6c7","market":"phx","name":"RIVERA DANA","display_name":"DANA RIVERA","state":"AZ","kind":"FLIPPER","confidence":"STRONG","scale":"mid","institutional":false,"is_public":false,"last_bought_on":"2026-07-22","n_deals":20,"buyer_status":"registered"},"seller":{"id":"inv_7d159e06b653","name":"MCLEAN INVESTMENT COMPANY LLC","display_name":"MCLEAN INVESTMENT COMPANY LLC","kind":"ENTITY","kinds":["FLIPPER"]},"end_buyer":{"id":null,"name":null,"display_name":null,"kind":null,"kinds":null},"owner":{"names":null,"name_order":"given_first","kind":"ENTITY","is_trust":false,"is_public":false,"owner_occupied":false,"absentee":true,"mailing":null,"rental_registered":true,"held_since":"2022-11-30","months_held":44.4,"permits_last_24m":0},"listing":null,"short_term_rental":null,"wholesale_listing":null,"financing":{"purchase_loan_status":"FOUND","purchase_loan":{"id":"len_80fcc9cf58ad","name":"MCLEAN INVESTMENT COMPANY LLC","lender_class":"NONBANK","is_hard_money":false,"amount":675000,"recording_date":"2022-11-30","loan_to_price":0.871,"source":"OPEN","property_id":"prop_e0531362f7ae7de9ab7859a1cae77167"},"secondary_loans_n":0,"link_window":"STRICT","outcome":"REFINANCED","as_of":"2026-06-25","dated":true}},{"id":"deal_7d9c65e6b269d6c50c82b5928c29a04a","market":"phx","kind":"flip","deal_type":"PAIR","deal_kind":"FLIP","ownership_confirmed":null,"buyer_status":"registered","buyer_exclusion":null,"property":{"id":"prop_e0531362f7ae7de9ab7859a1cae77167","market":"phx","apn":"304-68-137","apn_norm":"30468137","county_fips":"04013","address_short":"23420 S Via Del Arroyo","street_no_unit":"23420 S Via Del Arroyo","unit":null,"city":"QUEEN CREEK","state":"AZ","zip":"85142","latitude":33.234727,"longitude":-111.671652,"segment":"SFR","bedrooms":3,"bathrooms":2,"sqft":1248,"year_built":1986,"pool":null},"distance_miles":null,"bought_on":"2022-03-04","date_quality":"deed","held_since_source":"DEED_ACQUISITION","bought_price":510000,"sold_on":"2022-11-30","sold_price":775000,"hold_days":271,"gross_profit":265000,"spread_ratio":0.519608,"price_quality":"BOTH","days_held_to_data_end":null,"sold_to_wholesaler":null,"round_trip":false,"is_purchase_event":true,"n_parcels_in_event":1,"bought_from_wholesaler":false,"bought_from_wholesaler_via":null,"wholesaler_investor_id":null,"bought_from_investor":false,"bought_distressed":false,"bought_auction_kind":null,"holding_kind":null,"acquisition_kind":null,"investor":{"id":"inv_7d159e06b653","market":"phx","name":"MCLEAN INVESTMENT COMPANY LLC","display_name":"MCLEAN INVESTMENT COMPANY LLC","state":"AZ","kind":"FLIPPER","confidence":"STRONG","scale":"small","institutional":false,"is_public":false,"last_bought_on":"2022-03-04","n_deals":3,"buyer_status":"registered"},"seller":{"id":null,"name":null,"display_name":null,"kind":"PERSON","kinds":null},"end_buyer":{"id":"inv_91b07f6ba6c7","name":"RIVERA DANA","display_name":"DANA RIVERA","kind":"ENTITY","kinds":["FLIPPER","LANDLORD"]},"owner":null,"listing":null,"short_term_rental":null,"wholesale_listing":null,"financing":{"purchase_loan_status":"NONE_CAPTURED","purchase_loan":null,"secondary_loans_n":null,"link_window":null,"outcome":null,"as_of":"2026-06-25","dated":true}}],"wholesale_listings":[]},"meta":{"generated_at":"2026-09-03T21:40:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":7,"registry_version":"v4-metro-review-fixes","dataset_version":1788469819,"loaded_at":"2026-09-03T21:10:18.682Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":null,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}},"str_licensed":{"summary":"A licensed business-use short-term rental in Scottsdale whose owner is named under the identity rule though no registered investor holds it (recorded 2026-09-10 from stage)","value":{"data":{"id":"prop_5e23ec88ce0594ef0616c9c714f3e538","market":"phx","apn":"129-08-024","apn_norm":"12908024","county_fips":"04013","address_short":"6910 E Coronado Rd","street_no_unit":"6910 E Coronado Rd","unit":null,"city":"SCOTTSDALE","state":"AZ","zip":"85257","latitude":33.467989,"longitude":-111.931973,"segment":"SFR","bedrooms":3,"bathrooms":2,"sqft":1404,"year_built":1956,"pool":true,"pool_type":"Pool - Yes","owner":{"kind":"ENTITY","owner_occupied":false,"absentee":true,"is_trust":false,"is_public":false,"holding_kind":"RENTAL_REGISTERED","acquisition_kind":"PURCHASE","held_since":"2021-06-18","months_held":61.8,"last_purchase":{"date":"2021-06-18","price":605000},"rental_registered":true,"permits_last_24m":0,"permits_reno_last_24m":0,"names":null,"name_order":"given_first","mailing":null,"redacted_reason":null},"listing":{"status":"SOLD","status_detail":null,"status_raw":"Sold","off_market_reason":null,"is_rental":false,"on_market":false,"owner_test":null,"counted":false,"list_price":null,"price_low":null,"price_low_on":null,"price_high":null,"price_high_on":null,"listed_on":"2021-05-27","status_updated_on":null,"off_market_on":null,"sold_on":"2021-06-24","sold_price":605000,"days_on_market":28,"list_to_bought_ratio":null,"mls_number":null,"brokerage_name":"Realty One Group","agents":[{"name":null,"role":"Listing Agent","phone":null,"office_phone":null,"email":null,"agent_id":"agt_33de76bbdd0e","identity_basis":"LICENSE_NAME","agent_is_holder_member":null,"license_state":null,"license_number":null}]},"short_term_rental":{"status":"LICENSED","coverage":{"jurisdiction":"SCOTTSDALE","served":true,"licence_start":"2022-11-28","feed_stale":false},"active_permits":1,"multi_unit":false,"building":false,"first_application":"2023-03-20","current_application":"2023-03-20","licensed_since":"2023-03-20","expires_on":"2027-03-19","dates_source":"ISSUE","permit_after_purchase":true,"days_purchase_to_permit":640,"operator":"owner","owner_attributed":true,"attribution_basis":"PURCHASE_DATE","business_use":true,"prior_owner_permit":false,"manager":"PMI SOLIS PROPERTIES","signals":["STR_LICENSED","STR_PERMIT_AFTER_PURCHASE","STR_OWNER_IS_LICENSEE","STR_MANAGED"],"match_method":"ADDRESS_EXACT","data_as_of":"2026-09-10"},"deals":[{"id":"deal_39a0b1ddd9e3d60accf12432439fd47d","market":"phx","kind":"long_hold","deal_type":"PAIR","deal_kind":"INVESTOR_HOLD","ownership_confirmed":null,"buyer_status":"registered","buyer_exclusion":null,"property":{"id":"prop_5e23ec88ce0594ef0616c9c714f3e538","market":"phx","apn":"129-08-024","apn_norm":"12908024","county_fips":"04013","address_short":"6910 E Coronado Rd","street_no_unit":"6910 E Coronado Rd","unit":null,"city":"SCOTTSDALE","state":"AZ","zip":"85257","latitude":33.467989,"longitude":-111.931973,"segment":"SFR","bedrooms":3,"bathrooms":2,"sqft":1404,"year_built":1956,"pool":true},"distance_miles":null,"bought_on":"2014-07-01","date_quality":"deed","held_since_source":"DEED_ACQUISITION","bought_price":210000,"sold_on":"2016-03-17","sold_price":335000,"hold_days":625,"gross_profit":125000,"spread_ratio":0.5952,"price_quality":"BOTH","days_held_to_data_end":null,"sold_to_wholesaler":false,"round_trip":false,"is_purchase_event":true,"n_parcels_in_event":1,"bought_from_wholesaler":false,"bought_from_wholesaler_via":null,"wholesaler_investor_id":null,"bought_from_investor":true,"bought_distressed":false,"bought_auction_kind":null,"holding_kind":null,"acquisition_kind":null,"investor":{"id":"inv_6233daee8372","market":"phx","name":"RIVERA DANA","display_name":"DANA RIVERA","state":"AZ","kind":"LANDLORD","confidence":"STRONG","scale":"individual","institutional":false,"is_public":false,"last_bought_on":"2014-07-01","n_deals":6,"buyer_status":"registered"},"seller":{"id":"inv_d732994ed9f2","name":"BUMBIE PROPERTIES LLC","display_name":"BUMBIE PROPERTIES LLC","kind":"ENTITY","kinds":["FLIPPER","LANDLORD"]},"end_buyer":{"id":null,"name":null,"display_name":null,"kind":"PERSON","kinds":null},"owner":null,"listing":null,"short_term_rental":null,"wholesale_listing":null,"financing":null}],"wholesale_listings":[]},"meta":{"generated_at":"2026-09-10T14:50:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1789049684,"loaded_at":"2026-09-10T14:14:43.746Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"BUCKEYE","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"CAREFREE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"CASA_GRANDE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"CAVE_CREEK","regime":"REQUIRED","coverage_reason":"LOADED_UNVALIDATED","served":false,"snapshot_only":true,"licence_start":"2023-11-06","snapshot_date":null,"feed_stale":true,"sources":[{"source":"DECKARD","snapshot_date":null,"stale":false}],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"CHANDLER","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"CITY_OF_MARICOPA","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"COOLIDGE","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"EL_MIRAGE","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"ELOY","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"FLORENCE","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"FOUNTAIN_HILLS","regime":"REQUIRED","coverage_reason":"LOADED_UNVALIDATED","served":false,"snapshot_only":true,"licence_start":"2022-11-15","snapshot_date":null,"feed_stale":true,"sources":[{"source":"DECKARD","snapshot_date":null,"stale":false}],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"GILA_BEND","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"GILBERT","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"GLENDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"GOODYEAR","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"GUADALUPE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"LITCHFIELD_PARK","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"MARICOPA_UNINCORPORATED","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"MESA","regime":"REQUIRED","coverage_reason":"LOADED_COUNTS_ONLY","served":false,"snapshot_only":false,"licence_start":"2023-02-01","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"MESA","snapshot_date":"2026-09-10","stale":false}],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"PARADISE_VALLEY","regime":"REQUIRED","coverage_reason":"LOADED_UNVALIDATED","served":false,"snapshot_only":false,"licence_start":"2022-11-13","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"PV","snapshot_date":"2026-09-10","stale":false}],"n_licensed":95,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":0.0104,"share_assumed":null},{"name":"PEORIA","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"PHOENIX","regime":"REQUIRED","coverage_reason":"LOADED_SERVED","served":true,"snapshot_only":false,"licence_start":"2023-10-26","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"PHX_GIS","snapshot_date":"2026-09-10","stale":false},{"source":"PHX_SHAPE","snapshot_date":null,"stale":true}],"n_licensed":1750,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":0.0793,"share_assumed":0},{"name":"PINAL_UNINCORPORATED","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"QUEEN_CREEK","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"SCOTTSDALE","regime":"REQUIRED","coverage_reason":"LOADED_SERVED","served":true,"snapshot_only":false,"licence_start":"2022-11-28","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"COS_EXPIRED","snapshot_date":"2026-09-10","stale":false},{"source":"COS_LEGACY","snapshot_date":"2026-09-10","stale":false},{"source":"COS_LICENSED","snapshot_date":"2026-09-10","stale":false},{"source":"COS_PENDING","snapshot_date":"2026-09-10","stale":false},{"source":"COS_STAFF","snapshot_date":"2026-09-10","stale":false},{"source":"COS_UNLICENSED","snapshot_date":"2026-09-10","stale":false}],"n_licensed":2708,"n_pending":41,"n_expired":2,"n_advertised":671,"share_unmatched":0.0265,"share_assumed":0.0008},{"name":"SURPRISE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"TEMPE","regime":"REQUIRED","coverage_reason":"LOADED_UNVALIDATED","served":false,"snapshot_only":false,"licence_start":"2023-03-06","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"TEMPE","snapshot_date":"2026-09-10","stale":false}],"n_licensed":110,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":0.676,"share_assumed":null},{"name":"TOLLESON","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"WICKENBURG","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"YOUNGTOWN","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}}}},"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"},"X-Credits-Charged":{"$ref":"#/components/headers/X-Credits-Charged"},"X-Credits-Remaining":{"$ref":"#/components/headers/X-Credits-Remaining"}}},"400":{"description":"Bad request (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/properties/{property_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":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/{property_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":"/v1/properties/{property_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":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/properties/{property_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":"/v1/properties/{property_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":"/v1/properties/{property_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, ledger_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":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/properties/{property_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":"/v1/properties/{property_id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/agents/search":{"get":{"operationId":"searchAgents","summary":"Find a listing agent by name or licence number","tags":["agents"],"description":"Finds a listing agent by name, in either order or in part, or by state licence number. Returns the stable agent id to open the profile with.\n\nFrom a listing you already have, skip the search: the id is on the listing block as `listing.agents[].agent_id`. The API returns at most 50 hits, ranked by match quality, with no cursor. `page.capped` says when more matched.\n\n[The match levels and how sure the identity is](https://developers.investorlift.com/api-reference/endpoints/agents-search).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"q","required":true,"description":"The agent to look for: a name in either order (\"Dana Rivera\" or \"Rivera Dana\"), part of a name, or a state licence number. An Arizona licence number is SA or BR plus nine digits, for example \"SA555000123\". Case and punctuation do not matter. A name needs at least 3 letters after normalisation. The API answers 400 to a shorter name."},{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. It narrows the search to that market. The API answers 400 when that market is not loaded, 422 agents_unavailable when the market has no published agent registry. Without it the API searches every loaded market with a registry and each hit carries its market."},{"schema":{"default":10,"type":"integer","minimum":1,"maximum":50},"in":"query","name":"limit","required":false,"description":"Agents to return, 1 to 50 (default 10)."}],"responses":{"200":{"description":"Agents whose name or licence number matches the query, best match first. page.next_cursor is always null and page.capped is true when the API cut the page at limit.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AgentSearchResult"},"description":"The hits, best match first."},"page":{"$ref":"#/components/schemas/SearchPage"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","page","meta"],"additionalProperties":false,"description":"Agents whose name or licence number matches the query, best match first. page.next_cursor is always null and page.capped is true when the API cut the page at limit."},"example":{"data":[{"id":"agt_fdfd4a0f8bae","market":"phx","kind":"PERSON","name":null,"license_state":null,"license_number":null,"identity_basis":"LICENSE_NAME","license_candidates":1,"current_brokerage":"Delex Realty","n_listings":105,"n_active":3,"last_listed_on":"2026-07-24","n_investor_links":2,"match":"exact","similarity":null}],"page":{"next_cursor":null,"limit":3,"returned":1,"capped":false},"meta":{"generated_at":"2026-09-09T12:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788982375,"loaded_at":"2026-09-09T19:32:54.902Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/agents/search","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":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/agents/search","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":"/v1/agents/search","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":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/agents/search","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":"/v1/agents/search","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":"/v1/agents/search","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, ledger_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":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/agents/search","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":"/v1/agents/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/agents/{id}":{"get":{"operationId":"getAgent","summary":"Get the profile of one listing agent","tags":["agents"],"description":"One listing agent: every spelling the feed used, the state licence that keys them and how sure that key is. Also the brokerages they listed under, their listing counts by status and year, and the investors they belong to as a person.\n\nFor their listings use `/v1/agents/{id}/listings`.\n\n[identity_basis, why the counts are a lower bound, and old ids](https://developers.investorlift.com/api-reference/endpoints/agents-get).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. Send it only when the id exists in more than one loaded market. 400 market_required says so, and a licence-keyed agent has the same id in every market where it lists. Otherwise the API uses the id's own market."},{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Listing agent id, agt_ followed by 12 hex characters, for example agt_fdfd4a0f8bae. The API follows an old id from an earlier registry run to the current agent (meta.resolved_from). It answers 410 for a retired id."}],"responses":{"200":{"description":"The agent profile. meta.resolved_from lists the old ids that redirected here.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AgentProfile"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The agent profile. meta.resolved_from lists the old ids that redirected here."},"example":{"data":{"id":"agt_fdfd4a0f8bae","market":"phx","kind":"PERSON","name":null,"name_variants":null,"n_name_variants":1,"license":null,"identity_basis":"LICENSE_NAME","license_candidates":1,"brokerages":["Delex Realty","Opendoor Brokerage LLC","DeLex Realty LLC","Clients First Realty LLC"],"current_brokerage":"Delex Realty","listings":{"n_total":105,"n_active":3,"n_pending":0,"n_on_market":3,"n_sold":66,"n_off_market":36,"first_listed_on":"2011-01-15","last_listed_on":"2026-07-24","n_listed_12m":14,"n_sold_12m":1,"median_list_price":449950,"median_sold_price":278000,"by_year":[{"year":2011,"n_listed":1,"n_sold":1,"n_self":0},{"year":2012,"n_listed":2,"n_sold":2,"n_self":2},{"year":2013,"n_listed":1,"n_sold":1,"n_self":1},{"year":2015,"n_listed":2,"n_sold":2,"n_self":1},{"year":2016,"n_listed":2,"n_sold":2,"n_self":0},{"year":2017,"n_listed":11,"n_sold":8,"n_self":4},{"year":2018,"n_listed":17,"n_sold":11,"n_self":5},{"year":2019,"n_listed":10,"n_sold":7,"n_self":2},{"year":2020,"n_listed":7,"n_sold":4,"n_self":3},{"year":2021,"n_listed":5,"n_sold":5,"n_self":0},{"year":2022,"n_listed":12,"n_sold":6,"n_self":5},{"year":2023,"n_listed":5,"n_sold":5,"n_self":0},{"year":2024,"n_listed":11,"n_sold":9,"n_self":2},{"year":2025,"n_listed":11,"n_sold":2,"n_self":7},{"year":2026,"n_listed":8,"n_sold":1,"n_self":6}]},"n_self_listings":38,"investor_links":[{"investor_id":"inv_0a20a550f33b","investor_name":"ZAK VENTURES LLC","investor_display_name":"ZAK VENTURES LLC","kind":"LANDLORD","member_name":null,"link_basis":"SELF_LISTING","confidence":"HIGH","n_self_listings":38},{"investor_id":"inv_0a20a550f33b","investor_name":"ZAK VENTURES LLC","investor_display_name":"ZAK VENTURES LLC","kind":"LANDLORD","member_name":null,"link_basis":"SELF_LISTING","confidence":"HIGH","n_self_listings":38}],"has_investor_link":true},"meta":{"generated_at":"2026-09-09T12:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788982375,"loaded_at":"2026-09-09T19:32:54.902Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/agents/{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":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/agents/{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":"/v1/agents/{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":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/agents/{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":"/v1/agents/{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":"/v1/agents/{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, ledger_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":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/agents/{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":"/v1/agents/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/agents/{id}/listings":{"get":{"operationId":"listAgentListings","summary":"List every listing of one agent","tags":["agents"],"description":"Every listing the feed knows for one agent, newest first. Each row says if it is the agent's own inventory, and carries the parcel, who holds the parcel and the listing block.\n\nFor one parcel's listing use `/v1/properties/{property_id}`. For an investor's listed holdings use `/v1/investors/{id}/deals` with `listing_status=on_market`.\n\n[Self listings, the status filter and the page sizes](https://developers.investorlift.com/api-reference/endpoints/agents-listings).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. Send it only when the id exists in more than one loaded market. 400 market_required says so, and a licence-keyed agent has the same id in every market where it lists. Otherwise the API uses the id's own market."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["ACTIVE","PENDING","SOLD","OFF_MARKET"],"description":"The listing's status in the feed, normalised. ACTIVE means on the market, and PENDING means under contract, contingent or not. SOLD means the listing sold, or any listing whose sale date is on or after its listing date: the sale is the later fact. OFF_MARKET means the listing ended without a sale: cancelled, expired or withdrawn (see off_market_reason). Only ACTIVE and PENDING are on the market."}},"in":"query","name":"status","required":false,"description":"Keep only listings in one of these statuses (comma list or repeated key): ACTIVE, PENDING, SOLD, OFF_MARKET. Default: every status."},{"schema":{"type":"string"},"in":"query","name":"listed_from","required":false,"description":"Keep listings that went live on or after this date, YYYY-MM-DD."},{"schema":{"type":"string"},"in":"query","name":"listed_to","required":false,"description":"Keep listings that went live on or before this date, YYYY-MM-DD. With listed_from, one year is listed_from=2025-01-01&listed_to=2025-12-31."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"self_only","required":false,"description":"Keep only the agent's own inventory, the rows with is_self_listing true. Those are listings on parcels that an investor holds, where the agent is a person member of that investor. Default false: every listing."},{"schema":{"default":100,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false,"description":"Page size, 1-500 (default 100)."},{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1."},{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Listing agent id, agt_ followed by 12 hex characters, for example agt_fdfd4a0f8bae. The API follows an old id from an earlier registry run to the current agent (meta.resolved_from). It answers 410 for a retired id."}],"responses":{"200":{"description":"The agent's listings, newest first, one page.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AgentListingRow"},"description":"The rows of this page."},"page":{"$ref":"#/components/schemas/Page"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","page","meta"],"additionalProperties":false,"description":"The agent's listings, newest first, one page."},"example":{"data":[{"property_id":"prop_3238d228b5aeb0b70c282008cdcf35d6","address_short":"4319 W Creedance Blvd","city":"GLENDALE","zip":"85310","is_self_listing":true,"holder":{"investor_id":"inv_0a20a550f33b","name":"ZAK VENTURES LLC","display_name":"ZAK VENTURES LLC"},"listing":{"status":"ACTIVE","status_detail":null,"status_raw":"Active / Unknown","off_market_reason":null,"is_rental":false,"on_market":true,"owner_test":"PASSED","counted":true,"list_price":624900,"price_low":624900,"price_low_on":"2026-07-25","price_high":624900,"price_high_on":"2026-07-25","listed_on":"2026-07-24","status_updated_on":"2026-07-28","off_market_on":null,"sold_on":null,"sold_price":null,"days_on_market":38,"list_to_bought_ratio":null,"mls_number":"7057417","brokerage_name":null,"agents":[{"name":null,"role":"Listing Agent","phone":null,"office_phone":null,"email":null,"agent_id":"agt_fdfd4a0f8bae","identity_basis":"LICENSE_NAME","agent_is_holder_member":true,"license_state":null,"license_number":null}]}},{"property_id":"prop_ea5a6df1969b0d3ebffa741a0bb602d1","address_short":"2290 W Village Dr","city":"PHOENIX","zip":"85023","is_self_listing":false,"holder":{"investor_id":"inv_34506df39e83","name":"ARIZONA AQUISITION ENTERPRISES LLC","display_name":"ARIZONA AQUISITION ENTERPRISES LLC"},"listing":{"status":"ACTIVE","status_detail":null,"status_raw":"Active / Unknown","off_market_reason":null,"is_rental":false,"on_market":true,"owner_test":"PASSED","counted":true,"list_price":450000,"price_low":450000,"price_low_on":"2026-07-25","price_high":450000,"price_high_on":"2026-07-25","listed_on":"2026-07-24","status_updated_on":"2026-07-28","off_market_on":null,"sold_on":null,"sold_price":null,"days_on_market":38,"list_to_bought_ratio":null,"mls_number":"7057810","brokerage_name":null,"agents":[{"name":null,"role":"Listing Agent","phone":null,"office_phone":null,"email":null,"agent_id":"agt_fdfd4a0f8bae","identity_basis":"LICENSE_NAME","agent_is_holder_member":false,"license_state":null,"license_number":null}]}}],"page":{"next_cursor":"eyJ2IjoxLCJydW4iOiIxNzg4OTgyMzc1IiwicSI6ImJjY2YzZTNiODY3MWY3YzAxZGNiMjkwZmQ2ZDE1OGFkMWEwMTM5Y2NiNDJjMDZjMGFiMWEwMjRjYjE0OTBkY2EiLCJrIjpbIjIwMjYtMDctMjQiLCJlYTVhNmRmMTk2OWIwZDNlYmZmYTc0MWEwYmI2MDJkMSJdfQ","limit":2,"returned":2},"meta":{"generated_at":"2026-09-09T12:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788982375,"loaded_at":"2026-09-09T19:32:54.902Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/agents/{id}/listings","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":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/agents/{id}/listings","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":"/v1/agents/{id}/listings","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":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/agents/{id}/listings","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":"/v1/agents/{id}/listings","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":"/v1/agents/{id}/listings","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, ledger_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":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/agents/{id}/listings","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":"/v1/agents/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/wholesale-listings":{"get":{"operationId":"listWholesaleListings","summary":"List Investorlift listings around a location with what the deeds show","tags":["wholesale"],"description":"The houses listed on Investorlift around a location, or in a ZIP list or postal city, and the outcome the county deeds show for each. Each row names the company that listed it, when and for how much, if a recorded deed closed it, and who bought it. The listing's status in the app plays no part in the verdict.\n\nFor one company's listings use `/v1/wholesalers/{id}/listings`. For one investor's purchases use `/v1/investors/{id}/wholesale-purchases`.\n\n[The verdicts, the buyer rule and the uncertainty fields](https://developers.investorlift.com/api-reference/endpoints/wholesale-listings).","parameters":[{"schema":{"type":"number","minimum":-90,"maximum":90},"in":"query","name":"lat","required":false,"description":"Point latitude (with lng). With radius_miles it is the search geometry. With bbox it is the reference point only."},{"schema":{"type":"number","minimum":-180,"maximum":180},"in":"query","name":"lng","required":false,"description":"Point longitude (with lat)."},{"schema":{"type":"number","minimum":0.25,"maximum":20},"in":"query","name":"radius_miles","required":false,"description":"Search radius in miles around the point or around the centre of the property_id parcel, 0.25 to 20 (default 2). Not allowed with bbox."},{"schema":{"type":"string"},"in":"query","name":"bbox","required":false,"description":"Viewport as west,south,east,north (WGS84 degrees). West must be less than east, south less than north, and the diagonal at most 40 mi. It must intersect a loaded market's coverage bbox (422 outside_coverage otherwise). It can carry lat + lng (without radius_miles) as the reference point for distances and sort=distance."},{"schema":{"type":"string","pattern":"^prop_[0-9a-f]{32}$"},"in":"query","name":"property_id","required":false,"description":"Parcel geometry: search around the centre of that parcel, with radius_miles. Not allowed with lat, lng or bbox."},{"schema":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","pattern":"^\\d{5}$"}},"in":"query","name":"zip","required":false,"description":"Place geometry: the parcels of these 5-digit ZIP codes, as a comma list or a repeated key, up to 50. On the deal and investor routes the Free and Starter plans take exactly one ZIP, and more is 403 plan_limit. You can add lat + lng as the reference point for distances. Not with radius_miles, bbox, property_id or city. A ZIP that no parcel of a loaded market carries is 422 outside_coverage (zips_unknown in the body)."},{"schema":{"type":"string","minLength":1,"maxLength":100},"in":"query","name":"city","required":false,"description":"Place geometry: the parcels whose postal city is this one, as the county records it (\"Scottsdale\"). Case does not matter: the API compares the value folded upper case. Never the short-term rental jurisdiction (meta.coverage[].str.jurisdictions[]). You can add lat + lng as the reference point, but not radius_miles, bbox, property_id or zip. On the deal and investor routes of the Free and Starter plans a city-wide search is 403 plan_limit. A city that no parcel of a loaded market carries is 422 outside_coverage."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["ASSIGNED","DOUBLE_CLOSED","LISTER_HELD_THEN_SOLD","LISTER_SOLD_FROM_INVENTORY","SOLD_OFF_MARKET_GRANTOR","SOLD_TO_OWNER_OCCUPANT","FAILED_THEN_RETAIL_MLS","DISTRESSED_TRANSFER","LATE_TRANSFER","NO_TRANSFER_400","NO_DEED_120","PENDING","SUPERSEDED","AMBIGUOUS_DEEDS"],"description":"What the county deeds record for the listing, in detail. The one-word verdict is verification. ASSIGNED: one deed from the homeowner to the buyer, and the listing company is not on title, so a contract assignment. DOUBLE_CLOSED: two chained deeds 0 to 14 days apart, with the company or its buyer in the middle. LISTER_HELD_THEN_SOLD: the company took title and resold within 90 days. LISTER_SOLD_FROM_INVENTORY: the company already owned the house and sold it. SOLD_OFF_MARKET_GRANTOR: one deed from a seller who is neither the homeowner of record nor the company, so an unrecorded step came before it. SOLD_TO_OWNER_OCCUPANT: the buyer moved in, so not an investor sale. FAILED_THEN_RETAIL_MLS: the homeowner sold on the MLS instead. DISTRESSED_TRANSFER: a sheriff's, trustee's or REO deed. LATE_TRANSFER: a deed 180 to 400 days after the listing that nothing ties to it. NO_TRANSFER_400: no deed within 400 days. NO_DEED_120: no deed by the deed data end, 120 to 400 days after the listing, so provisional. PENDING: the company listed the house fewer than 120 days before the deed data end, and no deed exists yet. SUPERSEDED: another Investorlift listing of the same parcel holds the credit for the deed. AMBIGUOUS_DEEDS: two or more unrelated sales that the rules cannot order."}},"in":"query","name":"outcome","required":false,"description":"Outcomes to keep (comma list or repeated key). Default: every outcome."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["CONFIRMED","RETAIL","OPEN","NONE"],"description":"The API derives the one-word verdict of the deeds on the listing from outcome alone, and the Investorlift status plays no part. CONFIRMED: a recorded deed closed it to a buyer, so a verified wholesale transaction. RETAIL: it closed, but to an owner-occupant or through the MLS, so not an investor sale. OPEN: the deeds record no transfer yet, up to the deed data_end. NONE: no transfer within 400 days, a distressed deed, or a transfer the rules cannot tie to this listing. NONE also when the credit went to another listing of the parcel."}},"in":"query","name":"verification","required":false,"description":"Verdicts to keep (comma list or repeated key): CONFIRMED for verified transactions, OPEN for listings without a closing deed by the deed data_end. Default: every verdict."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["REGISTRY_STRONG","REGISTRY_WEAK","IL_BUYER_CONFIRMED","ENTITY_UNREGISTERED","PERSON_ABSENTEE","OWNER_OCCUPANT","UNRESOLVED"],"description":"Who the buyer on the closing deed is, strongest first. REGISTRY_STRONG: a registry investor at STRONG or PROBABLE confidence, named, with an investor id. REGISTRY_WEAK: a registry investor at WEAK confidence, named, with an id. IL_BUYER_CONFIRMED: not in the registry, but the accepted offer's buyer or an Investorlift buyer account keys to the deed. On that tier the API names an entity and never a person. ENTITY_UNREGISTERED: an LLC or corporation not yet in the registry, often a fresh single-deed entity, named, no id. PERSON_ABSENTEE: a person whose mailing address is not the house, never named: show \"individual buyer, not a known investor\". OWNER_OCCUPANT: the buyer moved in, never named. UNRESOLVED: no closing deed. The first three count as a known investor."}},"in":"query","name":"buyer_tier","required":false,"description":"Buyer tiers to keep (comma list or repeated key). Default: every tier."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"known_investor","required":false,"description":"Keep only listings bought by a known investor (buyer_tier REGISTRY_STRONG, REGISTRY_WEAK or IL_BUYER_CONFIRMED)."},{"schema":{"type":"string"},"in":"query","name":"listed_after","required":false,"description":"Keep listings published on or after this date."},{"schema":{"type":"string"},"in":"query","name":"listed_before","required":false,"description":"Keep listings published on or before this date."},{"schema":{"type":"string"},"in":"query","name":"closed_after","required":false,"description":"Keep listings whose closing deed is on or after this date. Once you set closed_after or closed_before, the list drops rows without a deed."},{"schema":{"type":"string"},"in":"query","name":"closed_before","required":false,"description":"Keep listings whose closing deed is on or before this date."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"asking_min","required":false,"description":"Minimum asking price, inclusive, whole dollars. Once you set asking_min or asking_max, the list drops unpriced rows."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"asking_max","required":false,"description":"Maximum asking price, inclusive, whole dollars."},{"schema":{"default":"true","type":"string","enum":["true","false"]},"in":"query","name":"primary_only","required":false,"description":"Default true: drop SUPERSEDED rows and the non-credited members of a SHARED(n) group, so the list shows one closing deed once. The filter does not touch rows without a closing deed, so the list keeps every listing. primary_only=false lists every row, duplicates included."},{"schema":{"type":"string","enum":["closed_on","listed_on","asking_price"]},"in":"query","name":"sort","required":false,"description":"The row order. The default closed_on puts the newest closing deed first, rows without a deed last, then the newest listing first. With listed_on, the newest listing comes first. With asking_price, the highest asking price comes first and unpriced rows last. Every sort breaks ties on the listing id."},{"schema":{"default":500,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false,"description":"Page size, 1-500 (default 500)."},{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1."},{"schema":{"type":"string","pattern":"^wsr_[0-9a-f]{12}$"},"in":"query","name":"wholesaler_id","required":false,"description":"Scope the rows to one listing company."},{"schema":{"type":"string","pattern":"^inv_[0-9a-f]{12}$"},"in":"query","name":"buyer_investor_id","required":false,"description":"Scope the rows to listings bought by one registry investor, the buyer on the closing deed. The API follows an old id from an earlier data refresh to the investor id that replaced it, and echoes the old id in meta.resolved_from. A retired id answers 410 gone."}],"responses":{"200":{"description":"One page of Investorlift listings inside the geometry after the filters, in the requested sort, with the summary and the cursor for the next page.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WholesaleListing"},"description":"The rows of this page."},"page":{"$ref":"#/components/schemas/Page"},"meta":{"$ref":"#/components/schemas/Meta"},"summary":{"$ref":"#/components/schemas/WholesaleListingSummary"}},"required":["data","page","meta","summary"],"additionalProperties":false,"description":"Investorlift listings inside the geometry after the filters, one page, with the counts over the whole geometry."},"example":{"data":[{"id":"wl_b07f01b3a3637fbf83d845df204f2758","market":"phx","source_listing_id":35816,"property":{"id":"prop_3aa3364d5f87e4db86a6b5d406a0d7d7","address_short":"8118 W Mariposa Dr","city":"PHOENIX","state":"AZ","zip":"85033","latitude":33.507535,"longitude":-112.234522,"segment":"SFR","bedrooms":null,"sqft":1078},"distance_miles":4.52,"wholesaler":{"id":"wsr_4b8d1df516b9","name":"Pulse Capital LLC","brands":["Pulse Capital"]},"listing":{"listed_on":"2022-07-29","accepted_offer_on":null,"contract_verified_on":null,"asking_price":237500,"arv_estimate":312000,"condition":null},"outcome":"ASSIGNED","verification":"CONFIRMED","outcome_text":"Closed 2022-08-18; bought per the recorded deed.","time_fit":true,"closed_before_publish":false,"confidence":"MEDIUM","buyer":{"id":null,"name":null,"display_name":null,"kind":"PERSON","tier":"PERSON_ABSENTEE","market":null},"intermediate":{"id":null,"name":null,"display_name":null,"is_lister":null},"deed":{"closed_on":"2022-08-18","pattern":"SINGLE","chain_certain":null,"price":212000,"price_basis":"RECORDED","price_ratio":0.893},"registry_deal_id":null,"lenders_active":[{"id":"len_b959a8d2abef","name":"CAPITAL FUND I LLC","lender_class":"NONBANK","is_hard_money":true,"n":17,"n_investor":12,"n_purchase_money":17,"share":0.009159483,"as_of":"2026-06-25","dated":true},{"id":"len_c5c2e7961690","name":"DESERT FINANCIAL CREDIT UNION","lender_class":"BANK","is_hard_money":false,"n":179,"n_investor":9,"n_purchase_money":2,"share":0.096443966,"as_of":"2026-06-25","dated":true},{"id":"len_e28e16f5bdfd","name":"UNITED WHOLESALE MORTGAGE LLC","lender_class":"NONBANK","is_hard_money":false,"n":155,"n_investor":9,"n_purchase_money":107,"share":0.083512931,"as_of":"2026-06-25","dated":true},{"id":"len_9797da219efa","name":"CROSSCOUNTRY MORTGAGE LLC","lender_class":"NONBANK","is_hard_money":false,"n":44,"n_investor":7,"n_purchase_money":35,"share":0.023706897,"as_of":"2026-06-25","dated":true},{"id":"len_dddfbd01aa61","name":"BANK OF AMERICA NA","lender_class":"BANK","is_hard_money":false,"n":22,"n_investor":7,"n_purchase_money":7,"share":0.011853448,"as_of":"2026-06-25","dated":true}],"lister_attribution":"PRIMARY","lister_on_title":"NONE","lister_on_title_role":null,"buyer_fate":"HELD","offer_buyer_match":"UNNAMED","retail_signals":[],"n_other_listings":0,"n_listings_on_parcel":1,"superseded_by_id":null,"data_end":"2026-08-12","as_of":"2026-09-09"},{"id":"wl_9a400cf479a21c309a0526e1fd25f1d5","market":"phx","source_listing_id":29121,"property":{"id":"prop_39bff26662a6bb02899027c254a407f1","address_short":"121 S 92nd Ave","city":"TOLLESON","state":"AZ","zip":"85353","latitude":33.44487,"longitude":-112.257329,"segment":"SFR","bedrooms":3,"sqft":1280},"distance_miles":0,"wholesaler":{"id":"wsr_4b8d1df516b9","name":"Pulse Capital LLC","brands":["Pulse Capital"]},"listing":{"listed_on":"2022-06-15","accepted_offer_on":null,"contract_verified_on":null,"asking_price":360000,"arv_estimate":null,"condition":null},"outcome":"DOUBLE_CLOSED","verification":"CONFIRMED","outcome_text":"Closed 2022-07-01 by double close (the listing company took title first); bought per the recorded deed.","time_fit":true,"closed_before_publish":false,"confidence":"HIGH","buyer":{"id":"inv_e7c486427687","name":"RIVERA DANA","display_name":"DANA RIVERA","kind":"PERSON","tier":"REGISTRY_STRONG","market":"phx"},"intermediate":{"id":"inv_bd8f38fd855b","name":"CHENNY PROPERTIES LLC","display_name":"CHENNY PROPERTIES LLC","is_lister":true},"deed":{"closed_on":"2022-07-01","pattern":"DOUBLE_CLOSE","chain_certain":true,"price":360000,"price_basis":"RECORDED","price_ratio":1},"registry_deal_id":"deal_6caa4fc2180e7a3feb572d8c95cc2b15","lenders_active":[{"id":"len_9f4e246dcf57","name":"FIRST FIDELITY BANK","lender_class":"BANK","is_hard_money":false,"n":21,"n_investor":21,"n_purchase_money":0,"share":0.006495515,"as_of":"2026-06-25","dated":true},{"id":"len_5e4ef5c48d63","name":"GERMAN AMERICAN CAP CORP","lender_class":"NONBANK","is_hard_money":false,"n":17,"n_investor":17,"n_purchase_money":0,"share":0.005258274,"as_of":"2026-06-25","dated":true},{"id":"len_c5c2e7961690","name":"DESERT FINANCIAL CREDIT UNION","lender_class":"BANK","is_hard_money":false,"n":197,"n_investor":12,"n_purchase_money":5,"share":0.060934117,"as_of":"2026-06-25","dated":true},{"id":"len_aeda9b5f9e0c","name":"WELLS FARGO BANK NA","lender_class":"BANK","is_hard_money":false,"n":26,"n_investor":11,"n_purchase_money":2,"share":0.008042066,"as_of":"2026-06-25","dated":true},{"id":"len_b3729c2447dd","name":"GERMAN AMERICAN CAPITAL CORP","lender_class":"NONBANK","is_hard_money":false,"n":12,"n_investor":11,"n_purchase_money":0,"share":0.003711723,"as_of":"2026-06-25","dated":true}],"lister_attribution":"PRIMARY","lister_on_title":"INTERMEDIATE","lister_on_title_role":"OWN","buyer_fate":"HELD","offer_buyer_match":"UNNAMED","retail_signals":[],"n_other_listings":0,"n_listings_on_parcel":1,"superseded_by_id":null,"data_end":"2026-08-12","as_of":"2026-09-09"},{"id":"wl_7eef91236684335b0050c07fe7e6f32b","market":"phx","source_listing_id":8817,"property":{"id":"prop_009531ee10a6fdd0f2233175dfb4cc7b","address_short":"8520 W Palm Ln Unit 1062","city":"PHOENIX","state":"AZ","zip":"85037","latitude":33.471829,"longitude":-112.2414,"segment":"SFR","bedrooms":3,"sqft":1320},"distance_miles":2.08,"wholesaler":{"id":"wsr_4b8d1df516b9","name":"Pulse Capital LLC","brands":["Pulse Capital"]},"listing":{"listed_on":"2021-10-21","accepted_offer_on":null,"contract_verified_on":null,"asking_price":183000,"arv_estimate":260000,"condition":null},"outcome":"DOUBLE_CLOSED","verification":"CONFIRMED","outcome_text":"Closed 2021-11-01 by double close (the listing company took title first); bought per the recorded deed.","time_fit":true,"closed_before_publish":false,"confidence":"HIGH","buyer":{"id":"inv_b62cb00c703e","name":"NEXTFLIP LLC","display_name":"NEXTFLIP LLC","kind":"ENTITY","tier":"REGISTRY_STRONG","market":"phx"},"intermediate":{"id":"inv_bd8f38fd855b","name":"CHENNY PROPERTIES LLC","display_name":"CHENNY PROPERTIES LLC","is_lister":true},"deed":{"closed_on":"2021-11-01","pattern":"DOUBLE_CLOSE","chain_certain":true,"price":178000,"price_basis":"RECORDED","price_ratio":0.973},"registry_deal_id":"deal_36f09df04a9e89cb29f08cd99c883dc7","lenders_active":[{"id":"len_c6c0f2b710b3","name":"LENNAR MORTGAGE LLC","lender_class":"NONBANK","is_hard_money":false,"n":476,"n_investor":37,"n_purchase_money":476,"share":0.172651433,"as_of":"2026-06-25","dated":true},{"id":"len_c5c2e7961690","name":"DESERT FINANCIAL CREDIT UNION","lender_class":"BANK","is_hard_money":false,"n":228,"n_investor":20,"n_purchase_money":5,"share":0.082698585,"as_of":"2026-06-25","dated":true},{"id":"len_b2c2b5ed925e","name":"ROCKET MORTGAGE LLC","lender_class":"NONBANK","is_hard_money":false,"n":126,"n_investor":15,"n_purchase_money":31,"share":0.04570185,"as_of":"2026-06-25","dated":true},{"id":"len_dddfbd01aa61","name":"BANK OF AMERICA NA","lender_class":"BANK","is_hard_money":false,"n":34,"n_investor":15,"n_purchase_money":8,"share":0.012332245,"as_of":"2026-06-25","dated":true},{"id":"len_9f4e246dcf57","name":"FIRST FIDELITY BANK","lender_class":"BANK","is_hard_money":false,"n":18,"n_investor":15,"n_purchase_money":1,"share":0.006528836,"as_of":"2026-06-25","dated":true}],"lister_attribution":"PRIMARY","lister_on_title":"INTERMEDIATE","lister_on_title_role":"OWN","buyer_fate":"RESALE_366P","offer_buyer_match":"UNNAMED","retail_signals":[],"n_other_listings":0,"n_listings_on_parcel":1,"superseded_by_id":null,"data_end":"2026-08-12","as_of":"2026-09-09"}],"page":{"next_cursor":null,"limit":3,"returned":3},"meta":{"generated_at":"2026-09-10T00:34:00.000Z","reference_point":{"lat":33.44487,"lng":-112.257329},"geometry":{"kind":"radius","lat":33.44487,"lng":-112.257329,"radius_miles":5,"bbox":null,"property_id":"prop_39bff26662a6bb02899027c254a407f1","zip":null,"city":null},"coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788999683,"loaded_at":"2026-09-10T00:21:23.302Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"},"summary":{"by_outcome":{"ASSIGNED":1,"DOUBLE_CLOSED":2},"by_verification":{"CONFIRMED":3},"by_buyer_tier":{"PERSON_ABSENTEE":1,"REGISTRY_STRONG":2},"n_listings":3,"n_wholesalers":1,"n_investor_buyers":2,"median_asking_price":237500,"median_price_ratio":0.973}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/wholesale-listings","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":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/wholesale-listings","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":"/v1/wholesale-listings","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":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/wholesale-listings","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":"/v1/wholesale-listings","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":"/v1/wholesale-listings","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, ledger_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":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/wholesale-listings","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":"/v1/wholesale-listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/wholesale-listings/{id}":{"get":{"operationId":"getWholesaleListing","summary":"Get one Investorlift listing by id","tags":["wholesale"],"description":"One Investorlift listing as a wholesale transaction: what the company listed, the outcome the county deeds show, who bought it and on what deed. The body is one `/v1/wholesale-listings` row.\n\nUse it for the listing card, opened from a list row, a deal row's `wholesale_listing` block or a parcel's `wholesale_listings[]`.\n\n[The intermediate party, the title fields and the buyer fate](https://developers.investorlift.com/api-reference/endpoints/wholesale-listings-get).","parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Investorlift listing id, wl_ followed by 32 hex characters, from any wholesale_listing block or list row. The prefix is part of the id (400 invalid_id otherwise)."}],"responses":{"200":{"description":"The listing, in the same shape as a /v1/wholesale-listings row, with distance_miles null.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WholesaleListing"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The listing, in the same shape as a /v1/wholesale-listings row, with distance_miles null."},"examples":{"phoenix_recorded":{"summary":"Recorded at the Phoenix golden point, as a deals-only key gets it","value":{"data":{"id":"wl_9a400cf479a21c309a0526e1fd25f1d5","market":"phx","source_listing_id":29121,"property":{"id":"prop_39bff26662a6bb02899027c254a407f1","address_short":"121 S 92nd Ave","city":"TOLLESON","state":"AZ","zip":"85353","latitude":33.44487,"longitude":-112.257329,"segment":"SFR","bedrooms":3,"sqft":1280},"distance_miles":null,"wholesaler":{"id":"wsr_4b8d1df516b9","name":"Pulse Capital LLC","brands":["Pulse Capital"]},"listing":{"listed_on":"2022-06-15","accepted_offer_on":null,"contract_verified_on":null,"asking_price":360000,"arv_estimate":null,"condition":null},"outcome":"DOUBLE_CLOSED","verification":"CONFIRMED","outcome_text":"Closed 2022-07-01 by double close (the listing company took title first); bought per the recorded deed.","time_fit":true,"closed_before_publish":false,"confidence":"HIGH","buyer":{"id":"inv_e7c486427687","name":"RIVERA DANA","display_name":"DANA RIVERA","kind":"PERSON","tier":"REGISTRY_STRONG","market":"phx"},"intermediate":{"id":"inv_bd8f38fd855b","name":"CHENNY PROPERTIES LLC","display_name":"CHENNY PROPERTIES LLC","is_lister":true},"deed":{"closed_on":"2022-07-01","pattern":"DOUBLE_CLOSE","chain_certain":true,"price":360000,"price_basis":"RECORDED","price_ratio":1},"registry_deal_id":"deal_6caa4fc2180e7a3feb572d8c95cc2b15","lenders_active":[{"id":"len_9f4e246dcf57","name":"FIRST FIDELITY BANK","lender_class":"BANK","is_hard_money":false,"n":21,"n_investor":21,"n_purchase_money":0,"share":0.006495515,"as_of":"2026-06-25","dated":true},{"id":"len_5e4ef5c48d63","name":"GERMAN AMERICAN CAP CORP","lender_class":"NONBANK","is_hard_money":false,"n":17,"n_investor":17,"n_purchase_money":0,"share":0.005258274,"as_of":"2026-06-25","dated":true},{"id":"len_c5c2e7961690","name":"DESERT FINANCIAL CREDIT UNION","lender_class":"BANK","is_hard_money":false,"n":197,"n_investor":12,"n_purchase_money":5,"share":0.060934117,"as_of":"2026-06-25","dated":true},{"id":"len_aeda9b5f9e0c","name":"WELLS FARGO BANK NA","lender_class":"BANK","is_hard_money":false,"n":26,"n_investor":11,"n_purchase_money":2,"share":0.008042066,"as_of":"2026-06-25","dated":true},{"id":"len_b3729c2447dd","name":"GERMAN AMERICAN CAPITAL CORP","lender_class":"NONBANK","is_hard_money":false,"n":12,"n_investor":11,"n_purchase_money":0,"share":0.003711723,"as_of":"2026-06-25","dated":true}],"lister_attribution":"PRIMARY","lister_on_title":"INTERMEDIATE","lister_on_title_role":"OWN","buyer_fate":"HELD","offer_buyer_match":"UNNAMED","retail_signals":[],"n_other_listings":0,"n_listings_on_parcel":1,"superseded_by_id":null,"data_end":"2026-08-12","as_of":"2026-09-09"},"meta":{"generated_at":"2026-09-10T00:34:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788999683,"loaded_at":"2026-09-10T00:21:23.302Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}},"lister_held":{"summary":"LISTER_HELD_THEN_SOLD: the listing company took title and resold within 90 days (Investorlift listing 5507)","value":{"data":{"id":"wl_23eda5eb0a7de512641f189972b4ddcf","market":"phx","source_listing_id":5507,"property":{"id":"prop_a5517d844d662186be2d71bea60d4c3c","address_short":"555 N Elm","city":"MESA","state":"AZ","zip":"85201","latitude":33.425707,"longitude":-111.857589,"segment":"SFR","bedrooms":5,"sqft":1755},"distance_miles":null,"wholesaler":{"id":"wsr_37e2a3dcdf4c","name":"Home Team Investors","brands":["Home Team Deals"]},"listing":{"listed_on":"2021-07-16","accepted_offer_on":null,"contract_verified_on":null,"asking_price":360000,"arv_estimate":460000,"condition":null},"outcome":"LISTER_HELD_THEN_SOLD","verification":"CONFIRMED","outcome_text":"The listing company took title and resold 2021-10-11 (69 days later); bought per the recorded deed.","time_fit":true,"closed_before_publish":false,"confidence":"HIGH","buyer":{"id":"inv_a61331a35b68","name":"BLACK CANYON EQUITY LLC","display_name":"BLACK CANYON EQUITY LLC","kind":"ENTITY","tier":"REGISTRY_STRONG","market":"phx"},"intermediate":{"id":"inv_c7676145b4e8","name":"HOME TEAM INVESTORS LLC","display_name":"HOME TEAM INVESTORS LLC","is_lister":true},"deed":{"closed_on":"2021-10-11","pattern":"BUY_THEN_SELL","chain_certain":true,"price":375000,"price_basis":"RECORDED","price_ratio":1.042},"registry_deal_id":"deal_e65f2bc84823cd8e0034a0b6c1443e49","lenders_active":null,"lister_attribution":"PRIMARY","lister_on_title":"INTERMEDIATE","lister_on_title_role":"OWN","buyer_fate":"RESALE_366P","offer_buyer_match":"UNNAMED","retail_signals":[],"n_other_listings":0,"n_listings_on_parcel":1,"superseded_by_id":null,"data_end":"2026-08-12","as_of":"2026-09-09"},"meta":{"generated_at":"2026-09-10T00:34:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788999683,"loaded_at":"2026-09-10T00:21:23.302Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}},"closed_before_publish":{"summary":"ASSIGNED with the deed recorded before the listing was published, confidence MEDIUM (Investorlift listing 2084)","value":{"data":{"id":"wl_d3d293ec9bac8a9224eefcf78d8a7c21","market":"phx","source_listing_id":2084,"property":{"id":"prop_e1a23484d7420e3b9303ea8e5b9783b9","address_short":"334 N 83rd St","city":"MESA","state":"AZ","zip":"85207","latitude":33.421494,"longitude":-111.652228,"segment":"OTHER","bedrooms":3,"sqft":2280},"distance_miles":null,"wholesaler":{"id":"wsr_c2714a400056","name":"US Home Group LLC","brands":["We Buy Homes Cash","We Buy Homes Cash, an Official Home Buyer"]},"listing":{"listed_on":"2021-02-27","accepted_offer_on":"2020-12-01","contract_verified_on":null,"asking_price":85000,"arv_estimate":165000,"condition":null},"outcome":"ASSIGNED","verification":"CONFIRMED","outcome_text":"Closed 2020-12-31; bought per the recorded deed.","time_fit":true,"closed_before_publish":true,"confidence":"MEDIUM","buyer":{"id":"inv_ea572b554eaa","name":"RIVERA DANA","display_name":"DANA RIVERA","kind":"ENTITY","tier":"REGISTRY_STRONG","market":"phx"},"intermediate":{"id":null,"name":null,"display_name":null,"is_lister":null},"deed":{"closed_on":"2020-12-31","pattern":"SINGLE","chain_certain":null,"price":75000,"price_basis":"RECORDED","price_ratio":0.882},"registry_deal_id":"deal_4fda743d71edcdd158e3a60451ee84d1","lenders_active":null,"lister_attribution":"PRIMARY","lister_on_title":"NONE","lister_on_title_role":null,"buyer_fate":"HELD","offer_buyer_match":"DIFFERENT","retail_signals":[],"n_other_listings":0,"n_listings_on_parcel":1,"superseded_by_id":null,"data_end":"2026-08-12","as_of":"2026-09-09"},"meta":{"generated_at":"2026-09-10T00:34:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788999683,"loaded_at":"2026-09-10T00:21:23.302Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}},"superseded":{"summary":"SUPERSEDED: the transfer on the parcel is credited to another Investorlift listing, no buyer, no deed (Investorlift listing 175177)","value":{"data":{"id":"wl_e80d1f45cf2b67bbf9be38e3b2624dea","market":"phx","source_listing_id":175177,"property":{"id":"prop_16a7e7eaf66b199553181496fc97b1a7","address_short":"5714 N 19th Dr","city":"PHOENIX","state":"AZ","zip":"85015","latitude":33.521529,"longitude":-112.101043,"segment":"SFR","bedrooms":3,"sqft":1469},"distance_miles":null,"wholesaler":{"id":"wsr_5314bba2f18b","name":"OneRoof Real Estate Group","brands":["OneRoof Real Estate"]},"listing":{"listed_on":"2024-09-07","accepted_offer_on":null,"contract_verified_on":null,"asking_price":359990,"arv_estimate":null,"condition":null},"outcome":"SUPERSEDED","verification":"NONE","outcome_text":"Listed 2024-09-07; the transfer on this parcel is credited to another Investorlift listing.","time_fit":true,"closed_before_publish":false,"confidence":"HIGH","buyer":{"id":null,"name":null,"display_name":null,"kind":null,"tier":"UNRESOLVED","market":null},"intermediate":{"id":null,"name":null,"display_name":null,"is_lister":null},"deed":{"closed_on":null,"pattern":"NONE","chain_certain":null,"price":null,"price_basis":null,"price_ratio":null},"registry_deal_id":null,"lenders_active":null,"lister_attribution":"NONE","lister_on_title":"NONE","lister_on_title_role":null,"buyer_fate":null,"offer_buyer_match":null,"retail_signals":[],"n_other_listings":1,"n_listings_on_parcel":2,"superseded_by_id":"wl_f47ab3011e2c336d335143216a5fa27d","data_end":"2026-08-12","as_of":"2026-09-09"},"meta":{"generated_at":"2026-09-10T00:34:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788999683,"loaded_at":"2026-09-10T00:21:23.302Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/wholesale-listings/{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":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/wholesale-listings/{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":"/v1/wholesale-listings/{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":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/wholesale-listings/{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":"/v1/wholesale-listings/{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":"/v1/wholesale-listings/{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, ledger_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":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/wholesale-listings/{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":"/v1/wholesale-listings/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/investors/{id}/wholesale-purchases":{"get":{"operationId":"listInvestorWholesalePurchases","summary":"List the Investorlift listings one investor bought","tags":["wholesale"],"description":"Every Investorlift listing whose closing deed names this investor as the buyer, most recent closing first. Each row carries the company that listed it, the dates, the asking price and the deed.\n\nThe investor profile's `wholesale_purchases` block carries the counts. This route carries the rows. For the same deals as deal rows use `/v1/investors/{id}/deals` with `source=investorlift`.\n\n[How the rows are de-duplicated](https://developers.investorlift.com/api-reference/endpoints/investors-wholesale-purchases).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. Send it only when the id exists in more than one loaded market. 400 market_required says so. Otherwise the API uses the id's own market."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["ASSIGNED","DOUBLE_CLOSED","LISTER_HELD_THEN_SOLD","LISTER_SOLD_FROM_INVENTORY","SOLD_OFF_MARKET_GRANTOR","SOLD_TO_OWNER_OCCUPANT","FAILED_THEN_RETAIL_MLS","DISTRESSED_TRANSFER","LATE_TRANSFER","NO_TRANSFER_400","NO_DEED_120","PENDING","SUPERSEDED","AMBIGUOUS_DEEDS"],"description":"What the county deeds record for the listing, in detail. The one-word verdict is verification. ASSIGNED: one deed from the homeowner to the buyer, and the listing company is not on title, so a contract assignment. DOUBLE_CLOSED: two chained deeds 0 to 14 days apart, with the company or its buyer in the middle. LISTER_HELD_THEN_SOLD: the company took title and resold within 90 days. LISTER_SOLD_FROM_INVENTORY: the company already owned the house and sold it. SOLD_OFF_MARKET_GRANTOR: one deed from a seller who is neither the homeowner of record nor the company, so an unrecorded step came before it. SOLD_TO_OWNER_OCCUPANT: the buyer moved in, so not an investor sale. FAILED_THEN_RETAIL_MLS: the homeowner sold on the MLS instead. DISTRESSED_TRANSFER: a sheriff's, trustee's or REO deed. LATE_TRANSFER: a deed 180 to 400 days after the listing that nothing ties to it. NO_TRANSFER_400: no deed within 400 days. NO_DEED_120: no deed by the deed data end, 120 to 400 days after the listing, so provisional. PENDING: the company listed the house fewer than 120 days before the deed data end, and no deed exists yet. SUPERSEDED: another Investorlift listing of the same parcel holds the credit for the deed. AMBIGUOUS_DEEDS: two or more unrelated sales that the rules cannot order."}},"in":"query","name":"outcome","required":false,"description":"Outcomes to keep (comma list or repeated key). Default: every outcome."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["CONFIRMED","RETAIL","OPEN","NONE"],"description":"The API derives the one-word verdict of the deeds on the listing from outcome alone, and the Investorlift status plays no part. CONFIRMED: a recorded deed closed it to a buyer, so a verified wholesale transaction. RETAIL: it closed, but to an owner-occupant or through the MLS, so not an investor sale. OPEN: the deeds record no transfer yet, up to the deed data_end. NONE: no transfer within 400 days, a distressed deed, or a transfer the rules cannot tie to this listing. NONE also when the credit went to another listing of the parcel."}},"in":"query","name":"verification","required":false,"description":"Verdicts to keep (comma list or repeated key): CONFIRMED for verified transactions, OPEN for listings without a closing deed by the deed data_end. Default: every verdict."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["REGISTRY_STRONG","REGISTRY_WEAK","IL_BUYER_CONFIRMED","ENTITY_UNREGISTERED","PERSON_ABSENTEE","OWNER_OCCUPANT","UNRESOLVED"],"description":"Who the buyer on the closing deed is, strongest first. REGISTRY_STRONG: a registry investor at STRONG or PROBABLE confidence, named, with an investor id. REGISTRY_WEAK: a registry investor at WEAK confidence, named, with an id. IL_BUYER_CONFIRMED: not in the registry, but the accepted offer's buyer or an Investorlift buyer account keys to the deed. On that tier the API names an entity and never a person. ENTITY_UNREGISTERED: an LLC or corporation not yet in the registry, often a fresh single-deed entity, named, no id. PERSON_ABSENTEE: a person whose mailing address is not the house, never named: show \"individual buyer, not a known investor\". OWNER_OCCUPANT: the buyer moved in, never named. UNRESOLVED: no closing deed. The first three count as a known investor."}},"in":"query","name":"buyer_tier","required":false,"description":"Buyer tiers to keep (comma list or repeated key). Default: every tier."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"known_investor","required":false,"description":"Keep only listings bought by a known investor (buyer_tier REGISTRY_STRONG, REGISTRY_WEAK or IL_BUYER_CONFIRMED)."},{"schema":{"type":"string"},"in":"query","name":"listed_after","required":false,"description":"Keep listings published on or after this date."},{"schema":{"type":"string"},"in":"query","name":"listed_before","required":false,"description":"Keep listings published on or before this date."},{"schema":{"type":"string"},"in":"query","name":"closed_after","required":false,"description":"Keep listings whose closing deed is on or after this date. Once you set closed_after or closed_before, the list drops rows without a deed."},{"schema":{"type":"string"},"in":"query","name":"closed_before","required":false,"description":"Keep listings whose closing deed is on or before this date."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"asking_min","required":false,"description":"Minimum asking price, inclusive, whole dollars. Once you set asking_min or asking_max, the list drops unpriced rows."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"asking_max","required":false,"description":"Maximum asking price, inclusive, whole dollars."},{"schema":{"default":"true","type":"string","enum":["true","false"]},"in":"query","name":"primary_only","required":false,"description":"Default true: drop SUPERSEDED rows and the non-credited members of a SHARED(n) group, so the list shows one closing deed once. The filter does not touch rows without a closing deed, so the list keeps every listing. primary_only=false lists every row, duplicates included."},{"schema":{"type":"string","enum":["closed_on","listed_on","asking_price"]},"in":"query","name":"sort","required":false,"description":"The row order. The default closed_on puts the newest closing deed first, rows without a deed last, then the newest listing first. With listed_on, the newest listing comes first. With asking_price, the highest asking price comes first and unpriced rows last. Every sort breaks ties on the listing id."},{"schema":{"default":500,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false,"description":"Page size, 1-500 (default 500)."},{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1."},{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Investor id, inv_ followed by 12 hex characters, for example inv_abaf618f44a3. The API follows an old id from an earlier data refresh to the current investor (meta.resolved_from). It answers 410 for a retired id."}],"responses":{"200":{"description":"The listings the investor bought according to the recorded deeds, one page, in the requested sort.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WholesaleListing"},"description":"The rows of this page."},"page":{"$ref":"#/components/schemas/Page"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","page","meta"],"additionalProperties":false,"description":"The listings one investor bought off Investorlift, one page. meta.resolved_from lists the old ids that redirected here."},"example":{"data":[{"id":"wl_bcb999e41e34355af7bdff75af42575b","market":"phx","source_listing_id":329348,"property":{"id":"prop_72f79d9c9bb4b27f0d0158704423c05a","address_short":"3009 N Salida Del Sol","city":"CHANDLER","state":"AZ","zip":"85224","latitude":33.350283,"longitude":-111.878816,"segment":"SFR","bedrooms":3,"sqft":1410},"distance_miles":null,"wholesaler":{"id":"wsr_5314bba2f18b","name":"OneRoof Real Estate Group","brands":["OneRoof Real Estate"]},"listing":{"listed_on":"2026-07-20","accepted_offer_on":null,"contract_verified_on":null,"asking_price":400990,"arv_estimate":520000,"condition":"MAJOR_REPAIR"},"outcome":"ASSIGNED","verification":"CONFIRMED","outcome_text":"Closed 2026-07-28; bought per the recorded deed.","time_fit":true,"closed_before_publish":false,"confidence":"MEDIUM","buyer":{"id":"inv_4a8213dc5193","name":"WHITE FIG HOMES JV LLC","display_name":"WHITE FIG HOMES JV LLC","kind":"ENTITY","tier":"REGISTRY_STRONG","market":"phx"},"intermediate":{"id":null,"name":null,"display_name":null,"is_lister":null},"deed":{"closed_on":"2026-07-28","pattern":"SINGLE","chain_certain":null,"price":377500,"price_basis":"RECORDED","price_ratio":0.941},"registry_deal_id":"deal_077ab1bc7afd496c3c32ce9b9abdc9c3","lenders_active":[{"id":"len_6f2755f464e8","name":"JPMORGAN CHASE BANK NA","lender_class":"BANK","is_hard_money":false,"n":218,"n_investor":191,"n_purchase_money":15,"share":0.101019462,"as_of":"2026-06-25","dated":true},{"id":"len_c5c2e7961690","name":"DESERT FINANCIAL CREDIT UNION","lender_class":"BANK","is_hard_money":false,"n":176,"n_investor":15,"n_purchase_money":7,"share":0.081556997,"as_of":"2026-06-25","dated":true},{"id":"len_0d4ff9d2a545","name":"BCDGR LLC","lender_class":"NONBANK","is_hard_money":false,"n":15,"n_investor":15,"n_purchase_money":15,"share":0.00695088,"as_of":"2026-06-25","dated":true},{"id":"len_b2c2b5ed925e","name":"ROCKET MORTGAGE LLC","lender_class":"NONBANK","is_hard_money":false,"n":163,"n_investor":11,"n_purchase_money":51,"share":0.075532901,"as_of":"2026-06-25","dated":true},{"id":"len_e28e16f5bdfd","name":"UNITED WHOLESALE MORTGAGE LLC","lender_class":"NONBANK","is_hard_money":false,"n":140,"n_investor":10,"n_purchase_money":81,"share":0.064874884,"as_of":"2026-06-25","dated":true}],"lister_attribution":"PRIMARY","lister_on_title":"NONE","lister_on_title_role":null,"buyer_fate":"HELD","offer_buyer_match":"UNNAMED","retail_signals":["R5_OWNER_OCCUPIED_NOW"],"n_other_listings":0,"n_listings_on_parcel":1,"superseded_by_id":null,"data_end":"2026-08-12","as_of":"2026-09-09"},{"id":"wl_430ef2e66eb7c083ca067c1a381e1664","market":"phx","source_listing_id":309557,"property":{"id":"prop_935c2fe2db97ed9acb1a7f42b2019d82","address_short":"3208 N Margate Pl","city":"CHANDLER","state":"AZ","zip":"85224","latitude":33.353089,"longitude":-111.886526,"segment":"SFR","bedrooms":4,"sqft":1699},"distance_miles":null,"wholesaler":{"id":"wsr_5b4c562940a4","name":"Hoffer Group","brands":[]},"listing":{"listed_on":"2026-03-30","accepted_offer_on":null,"contract_verified_on":null,"asking_price":394900,"arv_estimate":515000,"condition":"LIGHT_REHAB"},"outcome":"ASSIGNED","verification":"CONFIRMED","outcome_text":"Closed 2026-04-07; bought per the recorded deed.","time_fit":true,"closed_before_publish":false,"confidence":"MEDIUM","buyer":{"id":"inv_4a8213dc5193","name":"WHITE FIG HOMES JV LLC","display_name":"WHITE FIG HOMES JV LLC","kind":"ENTITY","tier":"REGISTRY_STRONG","market":"phx"},"intermediate":{"id":null,"name":null,"display_name":null,"is_lister":null},"deed":{"closed_on":"2026-04-07","pattern":"DEED_THEN_RESALE","chain_certain":true,"price":360500,"price_basis":"RECORDED","price_ratio":0.913},"registry_deal_id":"deal_46d30c39531310268d733801ce8cc7a0","lenders_active":[{"id":"len_6f2755f464e8","name":"JPMORGAN CHASE BANK NA","lender_class":"BANK","is_hard_money":false,"n":218,"n_investor":191,"n_purchase_money":15,"share":0.101019462,"as_of":"2026-06-25","dated":true},{"id":"len_c5c2e7961690","name":"DESERT FINANCIAL CREDIT UNION","lender_class":"BANK","is_hard_money":false,"n":176,"n_investor":15,"n_purchase_money":7,"share":0.081556997,"as_of":"2026-06-25","dated":true},{"id":"len_0d4ff9d2a545","name":"BCDGR LLC","lender_class":"NONBANK","is_hard_money":false,"n":15,"n_investor":15,"n_purchase_money":15,"share":0.00695088,"as_of":"2026-06-25","dated":true},{"id":"len_b2c2b5ed925e","name":"ROCKET MORTGAGE LLC","lender_class":"NONBANK","is_hard_money":false,"n":163,"n_investor":11,"n_purchase_money":51,"share":0.075532901,"as_of":"2026-06-25","dated":true},{"id":"len_e28e16f5bdfd","name":"UNITED WHOLESALE MORTGAGE LLC","lender_class":"NONBANK","is_hard_money":false,"n":140,"n_investor":10,"n_purchase_money":81,"share":0.064874884,"as_of":"2026-06-25","dated":true}],"lister_attribution":"PRIMARY","lister_on_title":"NONE","lister_on_title_role":null,"buyer_fate":"RESALE_91_365","offer_buyer_match":"UNNAMED","retail_signals":[],"n_other_listings":0,"n_listings_on_parcel":1,"superseded_by_id":null,"data_end":"2026-08-12","as_of":"2026-09-09"}],"page":{"next_cursor":"eyJ2IjoxLCJydW4iOiIxNzg4OTk5NjgzIiwicSI6IjQwMTVmYmE1MThiZjMzNjBjODA2NTZjMzRhN2E4NGI4NTBlMzI5ZjIxYjkyY2RkYTJlZDc0YmUxOGZkYzQ0ZGQiLCJrIjpbIjIwMjYtMDQtMDciLCIyMDI2LTAzLTMwIiwid2xfNDMwZWYyZTY2ZWI3YzA4M2NhMDY3YzFhMzgxZTE2NjQiXX0","limit":2,"returned":2},"meta":{"generated_at":"2026-09-10T00:34:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788999683,"loaded_at":"2026-09-10T00:21:23.302Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/investors/{id}/wholesale-purchases","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":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/investors/{id}/wholesale-purchases","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":"/v1/investors/{id}/wholesale-purchases","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":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/investors/{id}/wholesale-purchases","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":"/v1/investors/{id}/wholesale-purchases","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":"/v1/investors/{id}/wholesale-purchases","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, ledger_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":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/investors/{id}/wholesale-purchases","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":"/v1/investors/{id}/wholesale-purchases","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/wholesalers/search":{"get":{"operationId":"searchWholesalers","summary":"Find an Investorlift listing company by name, brand or entity","tags":["wholesale"],"description":"Finds an Investorlift listing company by its Investorlift name, a brand or a legal entity name. Returns the stable wholesaler id to open the profile with.\n\nFrom a listing you already have, skip the search: `wholesaler.id` is on every wholesale row. The API returns at most 50 hits, ranked by verified transactions within a match level, with no cursor. `page.capped` says when more matched.\n\n[The match levels and which names are searched](https://developers.investorlift.com/api-reference/endpoints/wholesalers-search).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"q","required":true,"description":"The company to look for: its Investorlift name (\"Home Team Investors\"), a brand, or a legal entity name (\"HOME TEAM INVESTORS LLC\"). Part of one is enough. Case and punctuation do not matter. At least 3 letters or digits after normalisation (400 otherwise)."},{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. It narrows the search to that market. The API answers 400 when that market is not loaded, 422 wholesale_unavailable when it has no published wholesale tables. Without it the API searches every loaded market with wholesale tables and each hit carries its market."},{"schema":{"default":10,"type":"integer","minimum":1,"maximum":50},"in":"query","name":"limit","required":false,"description":"Companies to return, 1 to 50 (default 10)."}],"responses":{"200":{"description":"Companies whose name, brand or entity name matches the query, best match first. page.next_cursor is always null and page.capped is true when the API cut the page at limit.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WholesalerSearchResult"},"description":"The hits, best match first."},"page":{"$ref":"#/components/schemas/SearchPage"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","page","meta"],"additionalProperties":false,"description":"Companies whose name, brand or entity name matches the query, best match first. page.next_cursor is always null and page.capped is true when the API cut the page at limit."},"example":{"data":[{"id":"wsr_4b8d1df516b9","market":"phx","name":"Pulse Capital LLC","brands":["Pulse Capital"],"n_listings":15,"n_verified":12,"last_listed_on":"2022-07-29","matched_name":"Pulse Capital","match":"exact","similarity":null},{"id":"wsr_90b9d17d52d6","market":"phx","name":"RDC Real Estate LLC","brands":["America Home Solutions"],"n_listings":76,"n_verified":18,"last_listed_on":"2026-08-11","matched_name":"PULSE CAPITAL LLC","match":"tokens","similarity":null},{"id":"wsr_947511502acd","market":"phx","name":"Pulse Capital REI","brands":["Pulse Capital LLC"],"n_listings":1,"n_verified":1,"last_listed_on":"2025-06-19","matched_name":"Pulse Capital LLC","match":"tokens","similarity":null}],"page":{"next_cursor":null,"limit":3,"returned":3,"capped":false},"meta":{"generated_at":"2026-09-10T00:34:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788999683,"loaded_at":"2026-09-10T00:21:23.302Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/wholesalers/search","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":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/wholesalers/search","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":"/v1/wholesalers/search","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":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/wholesalers/search","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":"/v1/wholesalers/search","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":"/v1/wholesalers/search","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, ledger_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":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/wholesalers/search","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":"/v1/wholesalers/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/wholesalers/{id}":{"get":{"operationId":"getWholesaler","summary":"Get the profile of one Investorlift listing company","tags":["wholesale"],"description":"One Investorlift listing company: its names and legal entities, and how many of its listings closed on a recorded deed, to whom and how fast. Also the investors who buy from it most.\n\nFor its listings use `/v1/wholesalers/{id}/listings`. Every field here is a business name and goes to every key.\n\n[What n_verified counts, and why there is no alias table](https://developers.investorlift.com/api-reference/endpoints/wholesalers-get).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. Send it only when the id exists in more than one loaded market. 400 market_required says so, and a company that lists in two markets has a profile in each market. Otherwise the API uses the id's own market."},{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Wholesaler id, wsr_ followed by 12 hex characters, for example wsr_3f9a1c27b4e0, from any wholesale row's wholesaler.id or a search hit. The id is stable per company and has no alias table."}],"responses":{"200":{"description":"The company profile.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Wholesaler"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The company profile."},"example":{"data":{"id":"wsr_4b8d1df516b9","market":"phx","name":"Pulse Capital LLC","brands":["Pulse Capital"],"entity_names":{"own":[],"partner":[]},"home_state":null,"investor_id":"inv_bd8f38fd855b","source_account_id":293,"n_listings":15,"n_verified":12,"n_to_investors":10,"n_double_closed":3,"n_took_title":2,"n_retail":0,"n_open":0,"n_no_transfer":2,"n_none":3,"n_shared":0,"first_listed_on":"2021-09-09","last_listed_on":"2022-07-29","n_listed_12m":0,"median_asking_price":274500,"median_days_to_deed":17.5,"top_buyers":[{"investor_id":"inv_06dd150a867e","name":"GYE UIO INVESTMENTS LLC","display_name":"GYE UIO INVESTMENTS LLC","kind":"FLIPPER","confidence":"STRONG","scale":"mid","n_deals":18,"last_bought_on":"2022-06-21","n":1},{"investor_id":"inv_282b7b8b0cb7","name":"MIRAMONTES PROPERTY LLC","display_name":"MIRAMONTES PROPERTY LLC","kind":"FLIPPER","confidence":"WEAK","scale":"small","n_deals":2,"last_bought_on":"2022-01-11","n":1},{"investor_id":"inv_3b874f0c6b5f","name":"RIVERA DANA","display_name":"DANA RIVERA","kind":"FLIPPER","confidence":"STRONG","scale":"small","n_deals":5,"last_bought_on":"2021-09-15","n":1},{"investor_id":"inv_409a9ea3e85d","name":"I M IN MUD LLC","display_name":"I M IN MUD LLC","kind":"FLIPPER","confidence":"STRONG","scale":"large","n_deals":416,"last_bought_on":"2026-08-05","n":1},{"investor_id":"inv_66317d994276","name":"MEJIAS SERVICES LLC","display_name":"MEJIAS SERVICES LLC","kind":"FLIPPER","confidence":"STRONG","scale":"mid","n_deals":56,"last_bought_on":"2026-03-12","n":1}],"data_end":"2026-08-12"},"meta":{"generated_at":"2026-09-10T00:34:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788999683,"loaded_at":"2026-09-10T00:21:23.302Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/wholesalers/{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":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/wholesalers/{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":"/v1/wholesalers/{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":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/wholesalers/{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":"/v1/wholesalers/{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":"/v1/wholesalers/{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, ledger_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":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/wholesalers/{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":"/v1/wholesalers/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/wholesalers/{id}/listings":{"get":{"operationId":"listWholesalerListings","summary":"List every Investorlift listing of one company","tags":["wholesale"],"description":"Every Investorlift listing of one company in the market, newest closing first, each with the parcel, the deed's verdict and the buyer. The body is a page of `/v1/wholesale-listings` rows.\n\nThis is the only place a hidden-address listing with no closing deed is reachable: it matches no geometry.\n\n[The filters and the page sizes](https://developers.investorlift.com/api-reference/endpoints/wholesalers-listings).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. Send it only when the id exists in more than one loaded market. 400 market_required says so. Otherwise the API uses the id's own market."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["ASSIGNED","DOUBLE_CLOSED","LISTER_HELD_THEN_SOLD","LISTER_SOLD_FROM_INVENTORY","SOLD_OFF_MARKET_GRANTOR","SOLD_TO_OWNER_OCCUPANT","FAILED_THEN_RETAIL_MLS","DISTRESSED_TRANSFER","LATE_TRANSFER","NO_TRANSFER_400","NO_DEED_120","PENDING","SUPERSEDED","AMBIGUOUS_DEEDS"],"description":"What the county deeds record for the listing, in detail. The one-word verdict is verification. ASSIGNED: one deed from the homeowner to the buyer, and the listing company is not on title, so a contract assignment. DOUBLE_CLOSED: two chained deeds 0 to 14 days apart, with the company or its buyer in the middle. LISTER_HELD_THEN_SOLD: the company took title and resold within 90 days. LISTER_SOLD_FROM_INVENTORY: the company already owned the house and sold it. SOLD_OFF_MARKET_GRANTOR: one deed from a seller who is neither the homeowner of record nor the company, so an unrecorded step came before it. SOLD_TO_OWNER_OCCUPANT: the buyer moved in, so not an investor sale. FAILED_THEN_RETAIL_MLS: the homeowner sold on the MLS instead. DISTRESSED_TRANSFER: a sheriff's, trustee's or REO deed. LATE_TRANSFER: a deed 180 to 400 days after the listing that nothing ties to it. NO_TRANSFER_400: no deed within 400 days. NO_DEED_120: no deed by the deed data end, 120 to 400 days after the listing, so provisional. PENDING: the company listed the house fewer than 120 days before the deed data end, and no deed exists yet. SUPERSEDED: another Investorlift listing of the same parcel holds the credit for the deed. AMBIGUOUS_DEEDS: two or more unrelated sales that the rules cannot order."}},"in":"query","name":"outcome","required":false,"description":"Outcomes to keep (comma list or repeated key). Default: every outcome."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["CONFIRMED","RETAIL","OPEN","NONE"],"description":"The API derives the one-word verdict of the deeds on the listing from outcome alone, and the Investorlift status plays no part. CONFIRMED: a recorded deed closed it to a buyer, so a verified wholesale transaction. RETAIL: it closed, but to an owner-occupant or through the MLS, so not an investor sale. OPEN: the deeds record no transfer yet, up to the deed data_end. NONE: no transfer within 400 days, a distressed deed, or a transfer the rules cannot tie to this listing. NONE also when the credit went to another listing of the parcel."}},"in":"query","name":"verification","required":false,"description":"Verdicts to keep (comma list or repeated key): CONFIRMED for verified transactions, OPEN for listings without a closing deed by the deed data_end. Default: every verdict."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["REGISTRY_STRONG","REGISTRY_WEAK","IL_BUYER_CONFIRMED","ENTITY_UNREGISTERED","PERSON_ABSENTEE","OWNER_OCCUPANT","UNRESOLVED"],"description":"Who the buyer on the closing deed is, strongest first. REGISTRY_STRONG: a registry investor at STRONG or PROBABLE confidence, named, with an investor id. REGISTRY_WEAK: a registry investor at WEAK confidence, named, with an id. IL_BUYER_CONFIRMED: not in the registry, but the accepted offer's buyer or an Investorlift buyer account keys to the deed. On that tier the API names an entity and never a person. ENTITY_UNREGISTERED: an LLC or corporation not yet in the registry, often a fresh single-deed entity, named, no id. PERSON_ABSENTEE: a person whose mailing address is not the house, never named: show \"individual buyer, not a known investor\". OWNER_OCCUPANT: the buyer moved in, never named. UNRESOLVED: no closing deed. The first three count as a known investor."}},"in":"query","name":"buyer_tier","required":false,"description":"Buyer tiers to keep (comma list or repeated key). Default: every tier."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"known_investor","required":false,"description":"Keep only listings bought by a known investor (buyer_tier REGISTRY_STRONG, REGISTRY_WEAK or IL_BUYER_CONFIRMED)."},{"schema":{"type":"string"},"in":"query","name":"listed_after","required":false,"description":"Keep listings published on or after this date."},{"schema":{"type":"string"},"in":"query","name":"listed_before","required":false,"description":"Keep listings published on or before this date."},{"schema":{"type":"string"},"in":"query","name":"closed_after","required":false,"description":"Keep listings whose closing deed is on or after this date. Once you set closed_after or closed_before, the list drops rows without a deed."},{"schema":{"type":"string"},"in":"query","name":"closed_before","required":false,"description":"Keep listings whose closing deed is on or before this date."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"asking_min","required":false,"description":"Minimum asking price, inclusive, whole dollars. Once you set asking_min or asking_max, the list drops unpriced rows."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"asking_max","required":false,"description":"Maximum asking price, inclusive, whole dollars."},{"schema":{"default":"true","type":"string","enum":["true","false"]},"in":"query","name":"primary_only","required":false,"description":"Default true: drop SUPERSEDED rows and the non-credited members of a SHARED(n) group, so the list shows one closing deed once. The filter does not touch rows without a closing deed, so the list keeps every listing. primary_only=false lists every row, duplicates included."},{"schema":{"type":"string","enum":["closed_on","listed_on","asking_price"]},"in":"query","name":"sort","required":false,"description":"The row order. The default closed_on puts the newest closing deed first, rows without a deed last, then the newest listing first. With listed_on, the newest listing comes first. With asking_price, the highest asking price comes first and unpriced rows last. Every sort breaks ties on the listing id."},{"schema":{"default":500,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false,"description":"Page size, 1-500 (default 500)."},{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1."},{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Wholesaler id, wsr_ followed by 12 hex characters, for example wsr_3f9a1c27b4e0, from any wholesale row's wholesaler.id or a search hit. The id is stable per company and has no alias table."}],"responses":{"200":{"description":"The company's listings, one page, in the requested sort.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WholesaleListing"},"description":"The rows of this page."},"page":{"$ref":"#/components/schemas/Page"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","page","meta"],"additionalProperties":false,"description":"The company's listings, one page, in the requested sort."},"example":{"data":[{"id":"wl_b07f01b3a3637fbf83d845df204f2758","market":"phx","source_listing_id":35816,"property":{"id":"prop_3aa3364d5f87e4db86a6b5d406a0d7d7","address_short":"8118 W Mariposa Dr","city":"PHOENIX","state":"AZ","zip":"85033","latitude":33.507535,"longitude":-112.234522,"segment":"SFR","bedrooms":null,"sqft":1078},"distance_miles":null,"wholesaler":{"id":"wsr_4b8d1df516b9","name":"Pulse Capital LLC","brands":["Pulse Capital"]},"listing":{"listed_on":"2022-07-29","accepted_offer_on":null,"contract_verified_on":null,"asking_price":237500,"arv_estimate":312000,"condition":null},"outcome":"ASSIGNED","verification":"CONFIRMED","outcome_text":"Closed 2022-08-18; bought per the recorded deed.","time_fit":true,"closed_before_publish":false,"confidence":"MEDIUM","buyer":{"id":null,"name":null,"display_name":null,"kind":"PERSON","tier":"PERSON_ABSENTEE","market":null},"intermediate":{"id":null,"name":null,"display_name":null,"is_lister":null},"deed":{"closed_on":"2022-08-18","pattern":"SINGLE","chain_certain":null,"price":212000,"price_basis":"RECORDED","price_ratio":0.893},"registry_deal_id":null,"lenders_active":[{"id":"len_b959a8d2abef","name":"CAPITAL FUND I LLC","lender_class":"NONBANK","is_hard_money":true,"n":17,"n_investor":12,"n_purchase_money":17,"share":0.009159483,"as_of":"2026-06-25","dated":true},{"id":"len_c5c2e7961690","name":"DESERT FINANCIAL CREDIT UNION","lender_class":"BANK","is_hard_money":false,"n":179,"n_investor":9,"n_purchase_money":2,"share":0.096443966,"as_of":"2026-06-25","dated":true},{"id":"len_e28e16f5bdfd","name":"UNITED WHOLESALE MORTGAGE LLC","lender_class":"NONBANK","is_hard_money":false,"n":155,"n_investor":9,"n_purchase_money":107,"share":0.083512931,"as_of":"2026-06-25","dated":true},{"id":"len_9797da219efa","name":"CROSSCOUNTRY MORTGAGE LLC","lender_class":"NONBANK","is_hard_money":false,"n":44,"n_investor":7,"n_purchase_money":35,"share":0.023706897,"as_of":"2026-06-25","dated":true},{"id":"len_dddfbd01aa61","name":"BANK OF AMERICA NA","lender_class":"BANK","is_hard_money":false,"n":22,"n_investor":7,"n_purchase_money":7,"share":0.011853448,"as_of":"2026-06-25","dated":true}],"lister_attribution":"PRIMARY","lister_on_title":"NONE","lister_on_title_role":null,"buyer_fate":"HELD","offer_buyer_match":"UNNAMED","retail_signals":[],"n_other_listings":0,"n_listings_on_parcel":1,"superseded_by_id":null,"data_end":"2026-08-12","as_of":"2026-09-09"},{"id":"wl_9a400cf479a21c309a0526e1fd25f1d5","market":"phx","source_listing_id":29121,"property":{"id":"prop_39bff26662a6bb02899027c254a407f1","address_short":"121 S 92nd Ave","city":"TOLLESON","state":"AZ","zip":"85353","latitude":33.44487,"longitude":-112.257329,"segment":"SFR","bedrooms":3,"sqft":1280},"distance_miles":null,"wholesaler":{"id":"wsr_4b8d1df516b9","name":"Pulse Capital LLC","brands":["Pulse Capital"]},"listing":{"listed_on":"2022-06-15","accepted_offer_on":null,"contract_verified_on":null,"asking_price":360000,"arv_estimate":null,"condition":null},"outcome":"DOUBLE_CLOSED","verification":"CONFIRMED","outcome_text":"Closed 2022-07-01 by double close (the listing company took title first); bought per the recorded deed.","time_fit":true,"closed_before_publish":false,"confidence":"HIGH","buyer":{"id":"inv_e7c486427687","name":"RIVERA DANA","display_name":"DANA RIVERA","kind":"PERSON","tier":"REGISTRY_STRONG","market":"phx"},"intermediate":{"id":"inv_bd8f38fd855b","name":"CHENNY PROPERTIES LLC","display_name":"CHENNY PROPERTIES LLC","is_lister":true},"deed":{"closed_on":"2022-07-01","pattern":"DOUBLE_CLOSE","chain_certain":true,"price":360000,"price_basis":"RECORDED","price_ratio":1},"registry_deal_id":"deal_6caa4fc2180e7a3feb572d8c95cc2b15","lenders_active":[{"id":"len_9f4e246dcf57","name":"FIRST FIDELITY BANK","lender_class":"BANK","is_hard_money":false,"n":21,"n_investor":21,"n_purchase_money":0,"share":0.006495515,"as_of":"2026-06-25","dated":true},{"id":"len_5e4ef5c48d63","name":"GERMAN AMERICAN CAP CORP","lender_class":"NONBANK","is_hard_money":false,"n":17,"n_investor":17,"n_purchase_money":0,"share":0.005258274,"as_of":"2026-06-25","dated":true},{"id":"len_c5c2e7961690","name":"DESERT FINANCIAL CREDIT UNION","lender_class":"BANK","is_hard_money":false,"n":197,"n_investor":12,"n_purchase_money":5,"share":0.060934117,"as_of":"2026-06-25","dated":true},{"id":"len_aeda9b5f9e0c","name":"WELLS FARGO BANK NA","lender_class":"BANK","is_hard_money":false,"n":26,"n_investor":11,"n_purchase_money":2,"share":0.008042066,"as_of":"2026-06-25","dated":true},{"id":"len_b3729c2447dd","name":"GERMAN AMERICAN CAPITAL CORP","lender_class":"NONBANK","is_hard_money":false,"n":12,"n_investor":11,"n_purchase_money":0,"share":0.003711723,"as_of":"2026-06-25","dated":true}],"lister_attribution":"PRIMARY","lister_on_title":"INTERMEDIATE","lister_on_title_role":"OWN","buyer_fate":"HELD","offer_buyer_match":"UNNAMED","retail_signals":[],"n_other_listings":0,"n_listings_on_parcel":1,"superseded_by_id":null,"data_end":"2026-08-12","as_of":"2026-09-09"}],"page":{"next_cursor":"eyJ2IjoxLCJydW4iOiIxNzg4OTk5NjgzIiwicSI6IjRhZGEwMTMzOWQ0ZTcwMDZlZTdiMDQyYzNlN2Y3YjY5M2I4MjM5MDNmZDlmMjgyZTU1YmE5OGE0NWQ0ZGZiMjQiLCJrIjpbIjIwMjItMDctMDEiLCIyMDIyLTA2LTE1Iiwid2xfOWE0MDBjZjQ3OWEyMWMzMDlhMDUyNmUxZmQyNWYxZDUiXX0","limit":2,"returned":2},"meta":{"generated_at":"2026-09-10T00:34:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-12","build_run_id":1,"registry_run":8,"registry_version":"v4-metro-review-fixes","dataset_version":1788999683,"loaded_at":"2026-09-10T00:21:23.302Z","metro_buy_to_resale_ratio":0.7192,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836307,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":null,"str":null,"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/wholesalers/{id}/listings","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":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/wholesalers/{id}/listings","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":"/v1/wholesalers/{id}/listings","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":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/wholesalers/{id}/listings","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":"/v1/wholesalers/{id}/listings","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":"/v1/wholesalers/{id}/listings","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, ledger_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":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/wholesalers/{id}/listings","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":"/v1/wholesalers/{id}/listings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/lenders/search":{"get":{"operationId":"searchLenders","summary":"Find a lender by any spelling of its name","tags":["lenders"],"description":"Finds a lender by any spelling the recorded instruments use, with the entity suffix and punctuation ignored. Returns the stable lender id to open the profile with.\n\nFrom a parcel you already have, skip the search: its financing block names the lender of every lien. The list hides persons and government lenders unless you ask for them. The API returns at most 50 hits, best match first, with no cursor. `page.capped` says when more matched.\n\n[The match levels, which spellings are searched and the person gate](https://developers.investorlift.com/api-reference/endpoints/lenders-search).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"q","required":true,"description":"The lender to look for: any spelling the recorded instruments use, or part of one. \"Kiavi Funding\", \"LendingHome\" and \"Wells Fargo Bank N.A.\" are examples. Case, punctuation and the entity suffix (LLC, INC, NA) do not matter. Send at least 3 letters or digits (400 otherwise)."},{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. It narrows the search to that market. The API answers 400 when that market is not loaded, 422 lenders_unavailable when the market has no published lender registry. Without it the API searches every loaded market with a lender registry and each hit carries its market."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."}},"in":"query","name":"lender_class","required":false,"description":"Keep only lenders of these classes (comma list or repeated key): BANK, NONBANK, PRIVATE, INDIVIDUAL, GOVERNMENT. It does not lift the two defaults below: INDIVIDUAL and PRIVATE still need include_persons=true, and GOVERNMENT needs include_government=true. For the hard-money sense of private lender, use hard_money=true, not lender_class=PRIVATE."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"hard_money","required":false,"description":"true keeps only hard-money lenders (is_hard_money true). false keeps only the rest. Default: every lender. The registry flags a hard-money lender by name or brand, or by behaviour in a market with the deed link."},{"schema":{"default":"false","type":"string","enum":["true","false"]},"in":"query","name":"include_persons","required":false,"description":"true includes lenders whose class reads INDIVIDUAL or PRIVATE: a person's name, a trust, a seller carry-back. Default false hides them, the way investor lists hide institutional investors."},{"schema":{"default":"false","type":"string","enum":["true","false"]},"in":"query","name":"include_government","required":false,"description":"true includes GOVERNMENT lenders: HUD, the VA, a housing authority. Their counts are insurance claims and partial-claim seconds recorded under the agency's name, not originations. Default false hides them."},{"schema":{"default":10,"type":"integer","minimum":1,"maximum":50},"in":"query","name":"limit","required":false,"description":"Lenders to return, 1 to 50 (default 10)."},{"schema":{"default":"false","type":"string","enum":["true","false"]},"in":"query","name":"require_current","required":false,"description":"true refuses the request with 422 dated_refused while the registry's source, the financing slice, is a dated snapshot. The default false serves it, and meta.dated[] carries the lenders and financing blocks."}],"responses":{"200":{"description":"Lenders that match the query, best match first. page.next_cursor is always null and page.capped is true when the API cut the page at limit.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LenderSearchResult"},"description":"The hits, best match first."},"page":{"$ref":"#/components/schemas/SearchPage"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","page","meta"],"additionalProperties":false,"description":"Lenders that match the query, best match first. page.next_cursor is always null and page.capped is true when the API cut the page at limit."},"example":{"data":[{"id":"len_d2028f0766fc","market":"phx","name":"KIAVI FUNDING INC","matched_name":"LENDINGHOME FUNDING CORP","lender_class":"NONBANK","is_hard_money":true,"n_loans_24m":222,"n_open_liens":332,"open_balance":102099717,"last_recording_date":"2026-06-10","rank_24m":176,"match":"tokens","similarity":null,"as_of":"2026-06-25","dated":true},{"id":"len_472c64d43ea7","market":"phx","name":"HOME LENDING LLC","matched_name":"HOME LENDING LLC","lender_class":"NONBANK","is_hard_money":false,"n_loans_24m":0,"n_open_liens":0,"open_balance":0,"last_recording_date":"2006-11-06","rank_24m":null,"match":"trigram","similarity":0.5555555820465088,"as_of":"2026-06-25","dated":true}],"page":{"next_cursor":null,"limit":3,"returned":2,"capped":false},"meta":{"generated_at":"2026-09-15T12:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-27","build_run_id":3,"registry_run":11,"registry_version":"v6-auction","dataset_version":1789533180,"loaded_at":"2026-09-16T04:32:59.760Z","metro_buy_to_resale_ratio":0.719,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836311,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":"2026-08-27","address_as_of":null,"parcel":{"parcel_as_of":"2026-08-27","n_parcels":1836311,"sale_mortgage_measured":false,"financing":{"as_of":"2026-06-25","dated":true,"dated_reason":"dataset not in current delivery","n_parcels":1611957,"n_with_open_lien":1032808,"n_free_and_clear":579149,"n_avm":1528967,"n_involuntary":192400,"n_lenders":76212},"permits":{"as_of":"2026-09-01","n_permits":2377496,"n_parcels":663045,"n_unmatched":355,"jurisdictions":[{"jurisdiction":"PHOENIX","n_permits":795764,"last_issue_date":"2026-05-11","windows_measured":null},{"jurisdiction":"MESA","n_permits":330809,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"MARICOPA COUNTY","n_permits":217628,"last_issue_date":"2027-10-17","windows_measured":null},{"jurisdiction":"SCOTTSDALE","n_permits":182189,"last_issue_date":"2024-11-05","windows_measured":null},{"jurisdiction":"GOODYEAR","n_permits":173391,"last_issue_date":"2025-04-02","windows_measured":null},{"jurisdiction":"GILBERT","n_permits":160199,"last_issue_date":"2025-04-07","windows_measured":null},{"jurisdiction":"TEMPE","n_permits":102909,"last_issue_date":"2025-12-29","windows_measured":null},{"jurisdiction":"BUCKEYE","n_permits":94951,"last_issue_date":"2026-03-18","windows_measured":null},{"jurisdiction":"CHANDLER","n_permits":94942,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"PEORIA","n_permits":75435,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"QUEEN CREEK","n_permits":59103,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":null,"n_permits":43845,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"PARADISE VALLEY","n_permits":23135,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"AVONDALE","n_permits":7961,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"MARICOPA","n_permits":5732,"last_issue_date":"2026-12-12","windows_measured":null},{"jurisdiction":"YOUNGTOWN","n_permits":3979,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"EL MIRAGE","n_permits":1971,"last_issue_date":"2026-04-13","windows_measured":null},{"jurisdiction":"YUMA","n_permits":1909,"last_issue_date":"2009-01-15","windows_measured":null},{"jurisdiction":"FOUNTAIN HILLS","n_permits":767,"last_issue_date":"2026-05-21","windows_measured":null},{"jurisdiction":"ELMIRAGE","n_permits":521,"last_issue_date":"2025-08-08","windows_measured":null},{"jurisdiction":"SUN CITY","n_permits":133,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"COCONINO COUNTY","n_permits":63,"last_issue_date":"2024-02-16","windows_measured":null},{"jurisdiction":"PINAL COUNTY","n_permits":54,"last_issue_date":"2022-07-21","windows_measured":null},{"jurisdiction":"APACHE JUNCTION","n_permits":47,"last_issue_date":"2025-05-13","windows_measured":null},{"jurisdiction":"PIMA COUNTY","n_permits":21,"last_issue_date":"2016-10-24","windows_measured":null},{"jurisdiction":"WITTMANN","n_permits":8,"last_issue_date":"2026-02-03","windows_measured":null},{"jurisdiction":"JACKSON COUNTY","n_permits":7,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LEWISVILLE","n_permits":5,"last_issue_date":"2024-02-07","windows_measured":null},{"jurisdiction":"MONTGOMERY","n_permits":4,"last_issue_date":"2023-06-05","windows_measured":null},{"jurisdiction":"RIVERSIDE COUNTY","n_permits":3,"last_issue_date":"2026-06-20","windows_measured":null},{"jurisdiction":"LITCHFIELD PARK","n_permits":3,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"APACHE JUNCTION - SEWER UTILITY","n_permits":2,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"FORT WORTH","n_permits":2,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"YAVAPAI COUNTY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LOCUST GROVE","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"ORO VALLEY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"TANGIPAHOA","n_permits":1,"last_issue_date":"2019-05-28","windows_measured":null}]},"owner_profile":{"as_of":"2026-09-09","n_parcels":1611077,"n_multi":646963,"n_portfolio_5":277841},"history":{"first_week":"2025-07-24","last_week":"2026-09-09","zips":["85251"],"n_parcels":18774,"n_events":236022,"n_weeks":62,"domains":{"tax":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":18597},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":17615},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1700},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":21122},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2128},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2583},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25","n_events":6420},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1297},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":3238},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2548},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25","n_events":83657},"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":16450},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":58404},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":263}}}},"lenders":{"as_of":"2026-06-25","recordings_through":"2026-06-11","counties":["04013"],"history_capture_share":0.183706,"n_lender_ids":32046,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false,"dated":true,"n_parcels_uncovered":224192}}],"dated":[{"block":"financing","as_of":"2026-06-25","reason":"dataset not in current delivery"},{"block":"lenders","as_of":"2026-06-25","reason":"dataset not in current delivery"}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/lenders/search","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":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/lenders/search","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":"/v1/lenders/search","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":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/lenders/search","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":"/v1/lenders/search","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":"/v1/lenders/search","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, ledger_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":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/lenders/search","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":"/v1/lenders/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/lenders":{"get":{"operationId":"listLenders","summary":"Rank the lenders of a market, a ZIP, city, county or geometry","tags":["lenders"],"description":"The lenders of a market ranked by loans recorded over a period: market-wide, inside one ZIP, city or county, or inside a geometry. Each row has volume, share, open book and typical loan, and the default period is the 24 months to the slice date.\n\nA geometry resolves to the H3 res-8 cells whose centre lies inside it (about 0.3 sq mi each): the edge is hexagonal, not the circle. A key outside the covered counties is 422 outside_coverage. Dated: stamped in `meta.dated[]`.\n\n[Filters, sorts, periods, rank and share](https://developers.investorlift.com/api-reference/endpoints/lenders-list).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. The list ranks inside one market. When meta.coverage[] lists more than one market and you send none, the API answers 400 market_required and lists them in extra.markets. If the market has no published lender registry, the API answers 422 lenders_unavailable."},{"schema":{"default":"24m","type":"string","pattern":"^(12m|24m|all|\\d{4}|\\d{4}-(0[1-9]|1[0-2]))$"},"in":"query","name":"period","required":false,"description":"The window the counts cover: 24m, the default, is the 24 months ending on the slice date. 12m is the 12 months ending on it, all is every dated instrument, and a calendar year YYYY runs from 2002 to the slice year. A month YYYY-MM is one of the 36 ending on the slice month, and any other value answers 400 validation_error with code period_not_served. Market-wide the list serves 24m and a month, and the other periods need a ZIP, city, county or geometry. A geometry serves the three windows alone."},{"schema":{"type":"number","minimum":-90,"maximum":90},"in":"query","name":"lat","required":false,"description":"Point latitude (with lng). With radius_miles it is the geometry. The API resolves the circle to the H3 res-8 cells whose centre lies inside it, so its edge is a hex boundary. Do not send it with zip, city or county (400 geography_conflict). On a registry built before the place rankings, the API answers 422 lenders_unavailable."},{"schema":{"type":"number","minimum":-180,"maximum":180},"in":"query","name":"lng","required":false,"description":"Point longitude (with lat)."},{"schema":{"type":"number","minimum":0.25,"maximum":20},"in":"query","name":"radius_miles","required":false,"description":"Search radius in miles around the point or around the centre of the property_id parcel, 0.25 to 20 (default 2). Not allowed with bbox."},{"schema":{"type":"string"},"in":"query","name":"bbox","required":false,"description":"Viewport as west,south,east,north (WGS84 degrees). West must be less than east, south less than north, and the diagonal at most 40 mi. It must intersect a loaded market's coverage bbox (422 outside_coverage otherwise). It can carry lat + lng (without radius_miles) as the reference point for distances and sort=distance."},{"schema":{"type":"string","pattern":"^prop_[0-9a-f]{32}$"},"in":"query","name":"property_id","required":false,"description":"Parcel geometry: search around the centre of that parcel, with radius_miles. Not allowed with lat, lng or bbox."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."}},"in":"query","name":"lender_class","required":false,"description":"Keep only lenders of these classes (comma list or repeated key): BANK, NONBANK, PRIVATE, INDIVIDUAL, GOVERNMENT. It does not lift the two defaults below: INDIVIDUAL and PRIVATE still need include_persons=true, and GOVERNMENT needs include_government=true. For the hard-money sense of private lender, use hard_money=true, not lender_class=PRIVATE."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"hard_money","required":false,"description":"true keeps only hard-money lenders (is_hard_money true). false keeps only the rest. Default: every lender. The registry flags a hard-money lender by name or brand, or by behaviour in a market with the deed link."},{"schema":{"default":"false","type":"string","enum":["true","false"]},"in":"query","name":"include_persons","required":false,"description":"true includes lenders whose class reads INDIVIDUAL or PRIVATE: a person's name, a trust, a seller carry-back. Default false hides them, the way investor lists hide institutional investors."},{"schema":{"default":"false","type":"string","enum":["true","false"]},"in":"query","name":"include_government","required":false,"description":"true includes GOVERNMENT lenders: HUD, the VA, a housing authority. Their counts are insurance claims and partial-claim seconds recorded under the agency's name, not originations. Default false hides them."},{"schema":{"type":"integer","minimum":1,"maximum":1},"in":"query","name":"position","required":false,"description":"1 counts first liens only: the instruments whose open lien position is 1 (n_first_lien). The API serves no other value. With product[] the row's n is the first liens of the named products, from precomputed counts."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["CONSTRUCTION","HELOC","OTHER"],"description":"What the file says the loan is, read from its flags and loan type and never from the label. CONSTRUCTION: the construction flag or a \"Building or Construction Loan\" type. HELOC: the credit-line flag or a \"Credit Line (Revolving)\" type. OTHER: everything else, that is a purchase-money or refinance mortgage of any kind."}},"in":"query","name":"product","required":false,"description":"Count only instruments of these products (comma list or repeated key): CONSTRUCTION, HELOC, OTHER. The row's n is the sum of the named counts. With position=1 it is their first liens alone. The row's share is null (no per-product denominator)."},{"schema":{"type":"string","enum":["purchase"]},"in":"query","name":"purpose","required":false,"description":"purchase counts only the window's purchase-money instruments: purpose PURCHASE by the deed link. The deed link sets PURCHASE when it finds a priced deed on the parcel in the 45 days up to the recording. The row's n is n_purchase_money and share is null (no purchase-money denominator). The API serves no other value. Do not send it with position or product (400 validation_error, code not_precomputed). While the market's registry predates the deed link, the API answers 422 lenders_unavailable (meta.coverage[].lenders.purchase_measured false)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"investor_only","required":false,"description":"true keeps only investor lenders by behaviour (is_investor_lender true). false keeps only the rest. Default: every lender. The flag is true when half or more of the window's instruments go to registered investors and the window holds 20 or more. While the market's registry predates the borrower match, the API answers 422 lenders_unavailable."},{"schema":{"type":"string","pattern":"^\\d{5}$"},"in":"query","name":"zip","required":false,"description":"Rank inside one 5-digit ZIP, from the pre-aggregated geography table. For a ZIP outside the covered counties (meta.coverage[].lenders.counties), the API answers 422 outside_coverage. Send at most one of zip, city or county."},{"schema":{"type":"string","minLength":1,"maxLength":100},"in":"query","name":"city","required":false,"description":"Rank inside one city, as the parcel table writes it (\"SCOTTSDALE\"). Case does not matter. For a city outside the covered counties, the API answers 422 outside_coverage. Send at most one of zip, city or county."},{"schema":{"type":"string","pattern":"^\\d{5}$"},"in":"query","name":"county","required":false,"description":"Rank inside one county, a 5-digit FIPS such as 04013. For a county outside meta.coverage[].lenders.counties, the API answers 422 outside_coverage. Send at most one of zip, city or county."},{"schema":{"default":"loans_desc","type":"string","enum":["loans_desc","volume_desc","open_liens_desc","open_balance_desc","last_recorded_desc","purchase_desc"]},"in":"query","name":"sort","required":false,"description":"Row order of the lender list: loans_desc, the default, puts the most loans in the window first. With volume_desc, the largest loan total in the window comes first, and with open_liens_desc the most open lien positions at the slice date. With open_balance_desc, the largest open balance comes first. With last_recorded_desc, the newest recording comes first and undated lenders last. With purchase_desc, the most purchase-money loans in the window by the deed link come first, and lenders without a deed link last."},{"schema":{"type":"string"},"in":"query","name":"active_from","required":false,"description":"Keep only lenders whose newest recording (last_recorded_on) is on or after this date, YYYY-MM-DD. If you name a geography, the API reads the newest recording inside it."},{"schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"min_n","required":false,"description":"Keep only lenders whose n is at least this, default 1. The n is the count that position or product selects. The API never lists a lender with nothing in the window."},{"schema":{"default":100,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false,"description":"Page size, 1-500 (default 100)."},{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1."},{"schema":{"default":"false","type":"string","enum":["true","false"]},"in":"query","name":"require_current","required":false,"description":"true refuses the request with 422 dated_refused while the registry's source, the financing slice, is a dated snapshot. The default false serves it, and meta.dated[] carries the lenders and financing blocks."}],"responses":{"200":{"description":"The ranked lenders, one page in the requested sort.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LenderRankingRow"},"description":"The rows of this page."},"page":{"$ref":"#/components/schemas/Page"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","page","meta"],"additionalProperties":false,"description":"The ranked lenders, one page in the requested sort."},"example":{"data":[{"rank":1,"lender":{"id":"len_b959a8d2abef","name":"CAPITAL FUND I LLC","lender_class":"NONBANK","is_hard_money":true},"n":816,"volume":436204000,"n_unpriced":0,"share":0.003146,"n_first_lien":515,"n_heloc":15,"n_open_liens":933,"open_balance":307985588,"n_parcels":3325,"median_amount":313500,"last_recorded_on":"2026-06-11","n_purchase_money":406,"n_investor":506,"n_deals_financed":222,"share_by_volume":0.004472,"n_borrowers":509,"in_geometry":null,"as_of":"2026-06-25","dated":true},{"rank":2,"lender":{"id":"len_86e697f7effc","name":"EZ HOMES INC","lender_class":"NONBANK","is_hard_money":true},"n":315,"volume":83365730,"n_unpriced":0,"share":0.001214,"n_first_lien":227,"n_heloc":0,"n_open_liens":405,"open_balance":72385580,"n_parcels":848,"median_amount":220000,"last_recorded_on":"2026-06-11","n_purchase_money":148,"n_investor":119,"n_deals_financed":78,"share_by_volume":0.000855,"n_borrowers":277,"in_geometry":null,"as_of":"2026-06-25","dated":true}],"page":{"next_cursor":"eyJ2IjoxLCJydW4iOiIxNzg5NTMzMTgwIiwicSI6IjExMGJjNjdiMjJhNGY0YzdiZWUzMDM0MTc3YzI5MTc5YzM3YTIxMTg2YmI1ZDQ3MTEwNTUxMjRhYTRiNjIxZjUiLCJrIjpbMzE1LCJsZW5fODZlNjk3ZjdlZmZjIl19","limit":2,"returned":2},"meta":{"generated_at":"2026-09-15T12:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-27","build_run_id":3,"registry_run":11,"registry_version":"v6-auction","dataset_version":1789533180,"loaded_at":"2026-09-16T04:32:59.760Z","metro_buy_to_resale_ratio":0.719,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836311,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":"2026-08-27","address_as_of":null,"parcel":{"parcel_as_of":"2026-08-27","n_parcels":1836311,"sale_mortgage_measured":false,"financing":{"as_of":"2026-06-25","dated":true,"dated_reason":"dataset not in current delivery","n_parcels":1611957,"n_with_open_lien":1032808,"n_free_and_clear":579149,"n_avm":1528967,"n_involuntary":192400,"n_lenders":76212},"permits":{"as_of":"2026-09-01","n_permits":2377496,"n_parcels":663045,"n_unmatched":355,"jurisdictions":[{"jurisdiction":"PHOENIX","n_permits":795764,"last_issue_date":"2026-05-11","windows_measured":null},{"jurisdiction":"MESA","n_permits":330809,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"MARICOPA COUNTY","n_permits":217628,"last_issue_date":"2027-10-17","windows_measured":null},{"jurisdiction":"SCOTTSDALE","n_permits":182189,"last_issue_date":"2024-11-05","windows_measured":null},{"jurisdiction":"GOODYEAR","n_permits":173391,"last_issue_date":"2025-04-02","windows_measured":null},{"jurisdiction":"GILBERT","n_permits":160199,"last_issue_date":"2025-04-07","windows_measured":null},{"jurisdiction":"TEMPE","n_permits":102909,"last_issue_date":"2025-12-29","windows_measured":null},{"jurisdiction":"BUCKEYE","n_permits":94951,"last_issue_date":"2026-03-18","windows_measured":null},{"jurisdiction":"CHANDLER","n_permits":94942,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"PEORIA","n_permits":75435,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"QUEEN CREEK","n_permits":59103,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":null,"n_permits":43845,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"PARADISE VALLEY","n_permits":23135,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"AVONDALE","n_permits":7961,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"MARICOPA","n_permits":5732,"last_issue_date":"2026-12-12","windows_measured":null},{"jurisdiction":"YOUNGTOWN","n_permits":3979,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"EL MIRAGE","n_permits":1971,"last_issue_date":"2026-04-13","windows_measured":null},{"jurisdiction":"YUMA","n_permits":1909,"last_issue_date":"2009-01-15","windows_measured":null},{"jurisdiction":"FOUNTAIN HILLS","n_permits":767,"last_issue_date":"2026-05-21","windows_measured":null},{"jurisdiction":"ELMIRAGE","n_permits":521,"last_issue_date":"2025-08-08","windows_measured":null},{"jurisdiction":"SUN CITY","n_permits":133,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"COCONINO COUNTY","n_permits":63,"last_issue_date":"2024-02-16","windows_measured":null},{"jurisdiction":"PINAL COUNTY","n_permits":54,"last_issue_date":"2022-07-21","windows_measured":null},{"jurisdiction":"APACHE JUNCTION","n_permits":47,"last_issue_date":"2025-05-13","windows_measured":null},{"jurisdiction":"PIMA COUNTY","n_permits":21,"last_issue_date":"2016-10-24","windows_measured":null},{"jurisdiction":"WITTMANN","n_permits":8,"last_issue_date":"2026-02-03","windows_measured":null},{"jurisdiction":"JACKSON COUNTY","n_permits":7,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LEWISVILLE","n_permits":5,"last_issue_date":"2024-02-07","windows_measured":null},{"jurisdiction":"MONTGOMERY","n_permits":4,"last_issue_date":"2023-06-05","windows_measured":null},{"jurisdiction":"RIVERSIDE COUNTY","n_permits":3,"last_issue_date":"2026-06-20","windows_measured":null},{"jurisdiction":"LITCHFIELD PARK","n_permits":3,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"APACHE JUNCTION - SEWER UTILITY","n_permits":2,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"FORT WORTH","n_permits":2,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"YAVAPAI COUNTY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LOCUST GROVE","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"ORO VALLEY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"TANGIPAHOA","n_permits":1,"last_issue_date":"2019-05-28","windows_measured":null}]},"owner_profile":{"as_of":"2026-09-09","n_parcels":1611077,"n_multi":646963,"n_portfolio_5":277841},"history":{"first_week":"2025-07-24","last_week":"2026-09-09","zips":["85251"],"n_parcels":18774,"n_events":236022,"n_weeks":62,"domains":{"tax":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":18597},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":17615},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1700},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":21122},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2128},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2583},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25","n_events":6420},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1297},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":3238},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2548},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25","n_events":83657},"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":16450},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":58404},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":263}}}},"lenders":{"as_of":"2026-06-25","recordings_through":"2026-06-11","counties":["04013"],"history_capture_share":0.183706,"n_lender_ids":32046,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false,"dated":true,"n_parcels_uncovered":224192}}],"dated":[{"block":"financing","as_of":"2026-06-25","reason":"dataset not in current delivery"},{"block":"lenders","as_of":"2026-06-25","reason":"dataset not in current delivery"}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/lenders","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":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/lenders","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":"/v1/lenders","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":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/lenders","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":"/v1/lenders","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":"/v1/lenders","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, ledger_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":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/lenders","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":"/v1/lenders","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/lenders/{id}":{"get":{"operationId":"getLender","summary":"Get the profile of one lender","tags":["lenders"],"description":"One lender, one profile per market: every spelling folded into it, its class and hard-money flag, its loans counted once across both tables. Also its open book, the year and month series, the product mix, pricing, geography and rankings.\n\nThe history sees about one open loan in five: a history count is a floor, and the union the origination count. A merged id redirects here (meta.resolved_from), and a retired one is 410 gone. For the loans use `/v1/lenders/{id}/loans`.\n\n[The identity, old ids and why counts are floors](https://developers.investorlift.com/api-reference/endpoints/lenders-get).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. It narrows markets[] to that market. If meta.coverage[] does not list it, the API answers 400. If the market has no published lender registry, the API answers 422 lenders_unavailable. Without it the API answers every loaded market the lender is in."},{"schema":{"default":"false","type":"string","enum":["true","false"]},"in":"query","name":"require_current","required":false,"description":"true refuses the request with 422 dated_refused while the registry's source, the financing slice, is a dated snapshot. The default false serves it, and meta.dated[] carries the lenders and financing blocks."},{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Lender id, len_ followed by 12 hex characters, for example len_d2028f0766fc. Take it from a search hit, a ranking row's lender.id or a parcel's financing block. The id is the same in every market and stable across data refreshes. The API follows an id from an earlier registry run to the current lender, and meta.resolved_from lists it. For a retired id with no successor, the API answers 410 gone."}],"responses":{"200":{"description":"The lender with a profile per market it is in. meta.resolved_from lists the old ids that redirected here.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Lender"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The lender with a profile per market it is in. meta.resolved_from lists the old ids that redirected here."},"example":{"data":{"id":"len_d2028f0766fc","name":"KIAVI FUNDING INC","lender_class":"NONBANK","class_basis":"NAME","identity_basis":"NAME_FOLD","is_hard_money":true,"hard_money_basis":"BOTH","names":["KIAVI FUNDING INC","KIAVI FUNDING LLC","LENDINGHOME FUNDING CORP","LENDINGHOME FUNDING CORPORATION","LENDING HOME FUNDING CORPORATION"],"n_names":5,"profile_gate":"SERVED","nmls":{"id":1125207,"url":"https://www.nmlsconsumeraccess.org/EntityDetails.aspx/COMPANY/1125207"},"n_loans_24m":222,"volume_24m":116631491,"n_open_liens":332,"open_balance":102099717,"n_markets":1,"markets":[{"market":"phx","name":"KIAVI FUNDING INC","lender_class":"NONBANK","class_basis":"NAME","identity_basis":"NAME_FOLD","is_hard_money":true,"hard_money_basis":"BOTH","names":["KIAVI FUNDING INC","KIAVI FUNDING LLC","LENDINGHOME FUNDING CORP","LENDINGHOME FUNDING CORPORATION","LENDING HOME FUNDING CORPORATION"],"former_names":["LENDINGHOME FUNDING CORP","LENDINGHOME FUNDING CORPORATION","LENDING HOME FUNDING CORPORATION"],"n_names":5,"n_loans":577,"n_loans_12m":181,"n_loans_24m":222,"volume_24m":116631491,"n_unpriced_24m":0,"n_blanket_positions_24m":11,"n_amount_excluded_24m":0,"n_parcels":562,"n_in_history":331,"n_in_history_12m":36,"n_in_history_24m":56,"n_open_24m":197,"n_in_both_24m":31,"n_open_liens":332,"n_open_first_liens":308,"n_open_junior_liens":24,"n_open_maturing_12m_from_as_of":null,"n_open_on_resold_parcels":45,"share_due_known":0.141566,"open_balance":102099717,"n_balance_excluded":51,"n_loans_lender_disagrees":0,"n_first_lien_24m":192,"n_heloc_24m":0,"n_construction_24m":62,"n_purchase_money_24m":153,"n_investor_loans_24m":152,"n_borrowers":418,"n_borrowers_24m":109,"is_investor_lender":true,"first_recording_date":"2014-02-25","last_recording_date":"2026-06-10","days_before_recordings_through":1,"active_12m_to_as_of":true,"n_before_2002":0,"n_undated":0,"by_year":[{"year":2002,"n_loans":0,"n_in_history":0,"n_open":0,"volume":0,"n_purchase":0,"n_investor":0,"median_amount":null,"floor":true},{"year":2003,"n_loans":0,"n_in_history":0,"n_open":0,"volume":0,"n_purchase":0,"n_investor":0,"median_amount":null,"floor":true},{"year":2004,"n_loans":0,"n_in_history":0,"n_open":0,"volume":0,"n_purchase":0,"n_investor":0,"median_amount":null,"floor":true},{"year":2005,"n_loans":0,"n_in_history":0,"n_open":0,"volume":0,"n_purchase":0,"n_investor":0,"median_amount":null,"floor":true},{"year":2006,"n_loans":0,"n_in_history":0,"n_open":0,"volume":0,"n_purchase":0,"n_investor":0,"median_amount":null,"floor":true},{"year":2007,"n_loans":0,"n_in_history":0,"n_open":0,"volume":0,"n_purchase":0,"n_investor":0,"median_amount":null,"floor":true},{"year":2008,"n_loans":0,"n_in_history":0,"n_open":0,"volume":0,"n_purchase":0,"n_investor":0,"median_amount":null,"floor":false},{"year":2009,"n_loans":0,"n_in_history":0,"n_open":0,"volume":0,"n_purchase":0,"n_investor":0,"median_amount":null,"floor":false},{"year":2010,"n_loans":0,"n_in_history":0,"n_open":0,"volume":0,"n_purchase":0,"n_investor":0,"median_amount":null,"floor":false},{"year":2011,"n_loans":0,"n_in_history":0,"n_open":0,"volume":0,"n_purchase":0,"n_investor":0,"median_amount":null,"floor":false},{"year":2012,"n_loans":0,"n_in_history":0,"n_open":0,"volume":0,"n_purchase":0,"n_investor":0,"median_amount":null,"floor":false},{"year":2013,"n_loans":0,"n_in_history":0,"n_open":0,"volume":0,"n_purchase":0,"n_investor":0,"median_amount":null,"floor":false},{"year":2014,"n_loans":23,"n_in_history":23,"n_open":0,"volume":2465900,"n_purchase":4,"n_investor":18,"median_amount":82500,"floor":false},{"year":2015,"n_loans":18,"n_in_history":19,"n_open":0,"volume":2473800,"n_purchase":4,"n_investor":10,"median_amount":83850,"floor":false},{"year":2016,"n_loans":24,"n_in_history":22,"n_open":6,"volume":4259550,"n_purchase":1,"n_investor":3,"median_amount":143750,"floor":false},{"year":2017,"n_loans":84,"n_in_history":74,"n_open":24,"volume":19779055,"n_purchase":6,"n_investor":7,"median_amount":213500,"floor":false},{"year":2018,"n_loans":25,"n_in_history":15,"n_open":13,"volume":5351689,"n_purchase":7,"n_investor":3,"median_amount":227500,"floor":false},{"year":2019,"n_loans":4,"n_in_history":3,"n_open":1,"volume":1110900,"n_purchase":3,"n_investor":3,"median_amount":212950,"floor":false},{"year":2020,"n_loans":17,"n_in_history":11,"n_open":7,"volume":2851300,"n_purchase":6,"n_investor":15,"median_amount":150500,"floor":false},{"year":2021,"n_loans":34,"n_in_history":21,"n_open":20,"volume":9095050,"n_purchase":14,"n_investor":26,"median_amount":260500,"floor":false},{"year":2022,"n_loans":91,"n_in_history":64,"n_open":47,"volume":29674996,"n_purchase":16,"n_investor":65,"median_amount":307500,"floor":false},{"year":2023,"n_loans":25,"n_in_history":16,"n_open":12,"volume":9083184,"n_purchase":10,"n_investor":20,"median_amount":330000,"floor":false},{"year":2024,"n_loans":27,"n_in_history":18,"n_open":16,"volume":10451210,"n_purchase":6,"n_investor":24,"median_amount":375000,"floor":false},{"year":2025,"n_loans":69,"n_in_history":26,"n_open":55,"volume":39478719,"n_purchase":29,"n_investor":45,"median_amount":412250,"floor":false},{"year":2026,"n_loans":136,"n_in_history":19,"n_open":131,"volume":70904962,"n_purchase":122,"n_investor":91,"median_amount":375288,"floor":false}],"by_month":[{"month":"2023-07","n":0,"volume":0,"market_n":7604,"share":0,"rank":null,"hard_money_market_n":64,"hard_money_rank":null,"n_purchase_money":0,"partial":false},{"month":"2023-08","n":1,"volume":521500,"market_n":8806,"share":0.000113559,"rank":552,"hard_money_market_n":68,"hard_money_rank":11,"n_purchase_money":0,"partial":false},{"month":"2023-09","n":2,"volume":1081700,"market_n":6811,"share":0.000293643,"rank":280,"hard_money_market_n":50,"hard_money_rank":9,"n_purchase_money":1,"partial":false},{"month":"2023-10","n":1,"volume":303300,"market_n":6769,"share":0.000147732,"rank":601,"hard_money_market_n":77,"hard_money_rank":22,"n_purchase_money":1,"partial":false},{"month":"2023-11","n":1,"volume":277550,"market_n":5689,"share":0.000175778,"rank":562,"hard_money_market_n":70,"hard_money_rank":18,"n_purchase_money":0,"partial":false},{"month":"2023-12","n":1,"volume":958300,"market_n":6456,"share":0.000154895,"rank":455,"hard_money_market_n":222,"hard_money_rank":13,"n_purchase_money":1,"partial":false},{"month":"2024-01","n":0,"volume":0,"market_n":6421,"share":0,"rank":null,"hard_money_market_n":92,"hard_money_rank":null,"n_purchase_money":0,"partial":false},{"month":"2024-02","n":1,"volume":405000,"market_n":7560,"share":0.000132275,"rank":572,"hard_money_market_n":76,"hard_money_rank":17,"n_purchase_money":1,"partial":false},{"month":"2024-03","n":4,"volume":1416600,"market_n":8535,"share":0.000468658,"rank":251,"hard_money_market_n":167,"hard_money_rank":10,"n_purchase_money":2,"partial":false},{"month":"2024-04","n":2,"volume":611500,"market_n":9431,"share":0.000212067,"rank":403,"hard_money_market_n":191,"hard_money_rank":18,"n_purchase_money":1,"partial":false},{"month":"2024-05","n":1,"volume":630000,"market_n":9442,"share":0.00010591,"rank":584,"hard_money_market_n":89,"hard_money_rank":24,"n_purchase_money":0,"partial":false},{"month":"2024-06","n":2,"volume":1140300,"market_n":8694,"share":0.000230044,"rank":360,"hard_money_market_n":160,"hard_money_rank":15,"n_purchase_money":0,"partial":false},{"month":"2024-07","n":1,"volume":277000,"market_n":9652,"share":0.000103605,"rank":780,"hard_money_market_n":163,"hard_money_rank":29,"n_purchase_money":0,"partial":false},{"month":"2024-08","n":1,"volume":232000,"market_n":10234,"share":0.000097714,"rank":781,"hard_money_market_n":80,"hard_money_rank":21,"n_purchase_money":0,"partial":false},{"month":"2024-09","n":2,"volume":571410,"market_n":10224,"share":0.000195618,"rank":443,"hard_money_market_n":96,"hard_money_rank":13,"n_purchase_money":0,"partial":false},{"month":"2024-10","n":3,"volume":2193450,"market_n":11654,"share":0.000257422,"rank":337,"hard_money_market_n":110,"hard_money_rank":9,"n_purchase_money":0,"partial":false},{"month":"2024-11","n":8,"volume":2396450,"market_n":9260,"share":0.000863931,"rank":176,"hard_money_market_n":139,"hard_money_rank":4,"n_purchase_money":2,"partial":false},{"month":"2024-12","n":2,"volume":577500,"market_n":9409,"share":0.000212562,"rank":430,"hard_money_market_n":104,"hard_money_rank":15,"n_purchase_money":0,"partial":false},{"month":"2025-01","n":3,"volume":4534700,"market_n":7858,"share":0.000381777,"rank":251,"hard_money_market_n":112,"hard_money_rank":8,"n_purchase_money":0,"partial":false},{"month":"2025-02","n":3,"volume":981450,"market_n":8389,"share":0.000357611,"rank":290,"hard_money_market_n":127,"hard_money_rank":12,"n_purchase_money":0,"partial":false},{"month":"2025-03","n":11,"volume":4142296,"market_n":10507,"share":0.001046921,"rank":151,"hard_money_market_n":371,"hard_money_rank":4,"n_purchase_money":2,"partial":false},{"month":"2025-04","n":4,"volume":834300,"market_n":11599,"share":0.000344857,"rank":313,"hard_money_market_n":118,"hard_money_rank":9,"n_purchase_money":2,"partial":false},{"month":"2025-05","n":3,"volume":1556084,"market_n":10891,"share":0.000275457,"rank":328,"hard_money_market_n":147,"hard_money_rank":14,"n_purchase_money":1,"partial":false},{"month":"2025-06","n":0,"volume":0,"market_n":10529,"share":0,"rank":null,"hard_money_market_n":159,"hard_money_rank":null,"n_purchase_money":0,"partial":false},{"month":"2025-07","n":4,"volume":2988500,"market_n":10826,"share":0.000369481,"rank":265,"hard_money_market_n":170,"hard_money_rank":13,"n_purchase_money":2,"partial":false},{"month":"2025-08","n":12,"volume":9080403,"market_n":10977,"share":0.001093195,"rank":144,"hard_money_market_n":129,"hard_money_rank":2,"n_purchase_money":4,"partial":false},{"month":"2025-09","n":6,"volume":3581250,"market_n":12192,"share":0.000492126,"rank":241,"hard_money_market_n":151,"hard_money_rank":10,"n_purchase_money":3,"partial":false},{"month":"2025-10","n":6,"volume":2669786,"market_n":12926,"share":0.000464181,"rank":276,"hard_money_market_n":196,"hard_money_rank":9,"n_purchase_money":4,"partial":false},{"month":"2025-11","n":7,"volume":4839100,"market_n":10382,"share":0.000674244,"rank":206,"hard_money_market_n":191,"hard_money_rank":7,"n_purchase_money":5,"partial":false},{"month":"2025-12","n":10,"volume":4270850,"market_n":12996,"share":0.000769468,"rank":204,"hard_money_market_n":252,"hard_money_rank":7,"n_purchase_money":6,"partial":false},{"month":"2026-01","n":16,"volume":8799600,"market_n":9932,"share":0.001610954,"rank":115,"hard_money_market_n":247,"hard_money_rank":4,"n_purchase_money":14,"partial":false},{"month":"2026-02","n":25,"volume":16022272,"market_n":11878,"share":0.002104731,"rank":86,"hard_money_market_n":280,"hard_money_rank":3,"n_purchase_money":22,"partial":false},{"month":"2026-03","n":22,"volume":15088315,"market_n":14394,"share":0.001528415,"rank":112,"hard_money_market_n":437,"hard_money_rank":5,"n_purchase_money":20,"partial":false},{"month":"2026-04","n":32,"volume":13615400,"market_n":13956,"share":0.002292921,"rank":82,"hard_money_market_n":376,"hard_money_rank":3,"n_purchase_money":29,"partial":false},{"month":"2026-05","n":31,"volume":12585225,"market_n":12542,"share":0.002471695,"rank":78,"hard_money_market_n":372,"hard_money_rank":4,"n_purchase_money":28,"partial":false},{"month":"2026-06","n":10,"volume":4794150,"market_n":4302,"share":0.0023245,"rank":78,"hard_money_market_n":195,"hard_money_rank":5,"n_purchase_money":9,"partial":true}],"by_product_24m":[{"value":"OTHER","n":160,"share":0.720721},{"value":"CONSTRUCTION","n":62,"share":0.279279}],"by_term_band_24m":[{"value":"UNKNOWN","n":189,"share":0.851351},{"value":"GE_360M","n":33,"share":0.148649}],"by_product_proxy_24m":[{"value":"RENTAL_TERM","n":33,"share":0.148649}],"by_loan_type_24m":[{"value":"Commercial","n":137,"share":0.617117},{"value":"Building or Construction Loan","n":62,"share":0.279279},{"value":"New Conventional","n":23,"share":0.103604}],"by_label_24m":[],"n_unlabelled_24m":56,"by_property_type_24m":[{"value":"Residential","n":222,"share":1}],"share_non_owner_occupied_24m":0.688372,"by_purpose_24m":[{"value":"PURCHASE","n":153,"share":0.689189},{"value":"NOT_PURCHASE","n":68,"share":0.306306},{"value":"UNKNOWN","n":1,"share":0.004505}],"by_outcome_24m":[{"value":"OPEN","n":65,"share":0.59633},{"value":"RESOLVED_BY_RESALE","n":43,"share":0.394495},{"value":"UNKNOWN","n":1,"share":0.009174}],"median_months_to_payoff":3.7,"terms":{"window":"24m","amount":{"p25":268200,"p50":380500,"p75":686025,"n":222},"rate":{"p25":6.11,"p50":6.22,"p75":6.65,"n":181,"share_rated":0.815315},"term":{"median_months":360,"share_le_24m":null,"share_25_120m":null,"share_121_359m":null,"share_ge_360m":null,"n":33,"share_term_known":0.148649},"loan_to_avm":{"p25":0.7486,"p50":0.8544,"p75":1.0706,"n":197},"loan_to_price":{"p25":1.0515,"p50":1.1472,"p75":1.2638,"n":153},"estimated_payment_p50":16665},"geography":{"by_county":[{"value":"04013","n_24m":222,"n_all":577,"volume_24m":116631491,"share_of_lender":1,"rank_in_geo":176,"share_of_geo":0.00085592}],"by_city":[{"value":"PHOENIX","n_24m":88,"n_all":219,"volume_24m":40755939,"share_of_lender":0.396396,"rank_in_geo":126,"share_of_geo":0.001316341},{"value":"SCOTTSDALE","n_24m":41,"n_all":79,"volume_24m":41422297,"share_of_lender":0.184685,"rank_in_geo":82,"share_of_geo":0.002153814},{"value":"MESA","n_24m":16,"n_all":54,"volume_24m":6417550,"share_of_lender":0.072072,"rank_in_geo":224,"share_of_geo":0.000567295},{"value":"GLENDALE","n_24m":15,"n_all":40,"volume_24m":3997725,"share_of_lender":0.067568,"rank_in_geo":148,"share_of_geo":0.001015847},{"value":"TEMPE","n_24m":10,"n_all":19,"volume_24m":6083400,"share_of_lender":0.045045,"rank_in_geo":101,"share_of_geo":0.001732802},{"value":"GILBERT","n_24m":9,"n_all":28,"volume_24m":2661250,"share_of_lender":0.040541,"rank_in_geo":221,"share_of_geo":0.000583544},{"value":"CHANDLER","n_24m":8,"n_all":34,"volume_24m":2867750,"share_of_lender":0.036036,"rank_in_geo":224,"share_of_geo":0.000564772},{"value":"SURPRISE","n_24m":8,"n_all":16,"volume_24m":2203250,"share_of_lender":0.036036,"rank_in_geo":201,"share_of_geo":0.000527044},{"value":"PEORIA","n_24m":5,"n_all":19,"volume_24m":3366800,"share_of_lender":0.022523,"rank_in_geo":252,"share_of_geo":0.000386458},{"value":"BUCKEYE","n_24m":4,"n_all":8,"volume_24m":1264546,"share_of_lender":0.018018,"rank_in_geo":267,"share_of_geo":0.000308404},{"value":"SUN CITY WEST","n_24m":4,"n_all":6,"volume_24m":1108900,"share_of_lender":0.018018,"rank_in_geo":90,"share_of_geo":0.002004008},{"value":"GOODYEAR","n_24m":3,"n_all":11,"volume_24m":983284,"share_of_lender":0.013514,"rank_in_geo":247,"share_of_geo":0.000332447},{"value":"SUN CITY","n_24m":3,"n_all":6,"volume_24m":1140700,"share_of_lender":0.013514,"rank_in_geo":161,"share_of_geo":0.000766675},{"value":"AVONDALE","n_24m":2,"n_all":8,"volume_24m":330000,"share_of_lender":0.009009,"rank_in_geo":279,"share_of_geo":0.000376152},{"value":"QUEEN CREEK","n_24m":2,"n_all":5,"volume_24m":922600,"share_of_lender":0.009009,"rank_in_geo":326,"share_of_geo":0.000277624},{"value":"LITCHFIELD PARK","n_24m":1,"n_all":6,"volume_24m":223600,"share_of_lender":0.004505,"rank_in_geo":408,"share_of_geo":0.000272926},{"value":"LAVEEN","n_24m":1,"n_all":4,"volume_24m":381900,"share_of_lender":0.004505,"rank_in_geo":348,"share_of_geo":0.000220119},{"value":"TONOPAH","n_24m":1,"n_all":3,"volume_24m":297500,"share_of_lender":0.004505,"rank_in_geo":184,"share_of_geo":0.000821018},{"value":"TOLLESON","n_24m":1,"n_all":2,"volume_24m":202500,"share_of_lender":0.004505,"rank_in_geo":311,"share_of_geo":0.00030931},{"value":"CAVE CREEK","n_24m":0,"n_all":2,"volume_24m":0,"share_of_lender":0,"rank_in_geo":null,"share_of_geo":null}],"by_zip":[{"value":"85254","n_24m":10,"n_all":16,"volume_24m":13894647,"share_of_lender":0.045045,"rank_in_geo":54,"share_of_geo":0.00325309},{"value":"85040","n_24m":10,"n_all":12,"volume_24m":2411950,"share_of_lender":0.045045,"rank_in_geo":34,"share_of_geo":0.005966587},{"value":"85258","n_24m":8,"n_all":12,"volume_24m":8691550,"share_of_lender":0.036036,"rank_in_geo":44,"share_of_geo":0.00464846},{"value":"85301","n_24m":7,"n_all":15,"volume_24m":1168800,"share_of_lender":0.031532,"rank_in_geo":49,"share_of_geo":0.00401837},{"value":"85018","n_24m":7,"n_all":12,"volume_24m":7311400,"share_of_lender":0.031532,"rank_in_geo":60,"share_of_geo":0.002911814},{"value":"85251","n_24m":6,"n_all":13,"volume_24m":3980250,"share_of_lender":0.027027,"rank_in_geo":67,"share_of_geo":0.002557545},{"value":"85021","n_24m":6,"n_all":6,"volume_24m":3621250,"share_of_lender":0.027027,"rank_in_geo":48,"share_of_geo":0.003771213},{"value":"85032","n_24m":5,"n_all":12,"volume_24m":2128100,"share_of_lender":0.022523,"rank_in_geo":104,"share_of_geo":0.00154321},{"value":"85008","n_24m":4,"n_all":13,"volume_24m":2125100,"share_of_lender":0.018018,"rank_in_geo":63,"share_of_geo":0.002700878},{"value":"85016","n_24m":4,"n_all":11,"volume_24m":2795700,"share_of_lender":0.018018,"rank_in_geo":94,"share_of_geo":0.001977261},{"value":"85257","n_24m":4,"n_all":11,"volume_24m":2275400,"share_of_lender":0.018018,"rank_in_geo":71,"share_of_geo":0.002525253},{"value":"85282","n_24m":4,"n_all":7,"volume_24m":1829900,"share_of_lender":0.018018,"rank_in_geo":87,"share_of_geo":0.002108593},{"value":"85019","n_24m":4,"n_all":6,"volume_24m":798350,"share_of_lender":0.018018,"rank_in_geo":56,"share_of_geo":0.004136505},{"value":"85023","n_24m":4,"n_all":6,"volume_24m":1671600,"share_of_lender":0.018018,"rank_in_geo":68,"share_of_geo":0.002469136},{"value":"85255","n_24m":4,"n_all":6,"volume_24m":6696800,"share_of_lender":0.018018,"rank_in_geo":123,"share_of_geo":0.001355014},{"value":"85375","n_24m":4,"n_all":6,"volume_24m":1108900,"share_of_lender":0.018018,"rank_in_geo":90,"share_of_geo":0.002004008},{"value":"85086","n_24m":4,"n_all":5,"volume_24m":4288293,"share_of_lender":0.018018,"rank_in_geo":106,"share_of_geo":0.001508865},{"value":"85028","n_24m":4,"n_all":4,"volume_24m":2435400,"share_of_lender":0.018018,"rank_in_geo":56,"share_of_geo":0.003187251},{"value":"85033","n_24m":3,"n_all":11,"volume_24m":609700,"share_of_lender":0.013514,"rank_in_geo":104,"share_of_geo":0.001616379},{"value":"85308","n_24m":3,"n_all":9,"volume_24m":1280450,"share_of_lender":0.013514,"rank_in_geo":155,"share_of_geo":0.000818331},{"value":"85249","n_24m":3,"n_all":8,"volume_24m":1431900,"share_of_lender":0.013514,"rank_in_geo":149,"share_of_geo":0.00103484},{"value":"85035","n_24m":3,"n_all":7,"volume_24m":802900,"share_of_lender":0.013514,"rank_in_geo":79,"share_of_geo":0.002120141},{"value":"85250","n_24m":3,"n_all":7,"volume_24m":1638200,"share_of_lender":0.013514,"rank_in_geo":84,"share_of_geo":0.002247191},{"value":"85295","n_24m":3,"n_all":7,"volume_24m":694500,"share_of_lender":0.013514,"rank_in_geo":154,"share_of_geo":0.001111523},{"value":"85006","n_24m":3,"n_all":6,"volume_24m":1145850,"share_of_lender":0.013514,"rank_in_geo":82,"share_of_geo":0.003064351},{"value":"85009","n_24m":3,"n_all":6,"volume_24m":974986,"share_of_lender":0.013514,"rank_in_geo":86,"share_of_geo":0.001908397},{"value":"85260","n_24m":3,"n_all":6,"volume_24m":1724550,"share_of_lender":0.013514,"rank_in_geo":155,"share_of_geo":0.001323335},{"value":"85022","n_24m":3,"n_all":5,"volume_24m":1418500,"share_of_lender":0.013514,"rank_in_geo":113,"share_of_geo":0.001285898},{"value":"85204","n_24m":3,"n_all":5,"volume_24m":2881700,"share_of_lender":0.013514,"rank_in_geo":114,"share_of_geo":0.00125261},{"value":"85326","n_24m":3,"n_all":5,"volume_24m":1007800,"share_of_lender":0.013514,"rank_in_geo":220,"share_of_geo":0.000357356},{"value":"85208","n_24m":3,"n_all":4,"volume_24m":594200,"share_of_lender":0.013514,"rank_in_geo":118,"share_of_geo":0.001539251},{"value":"85304","n_24m":3,"n_all":4,"volume_24m":1014475,"share_of_lender":0.013514,"rank_in_geo":91,"share_of_geo":0.002039429},{"value":"85041","n_24m":2,"n_all":11,"volume_24m":522300,"share_of_lender":0.009009,"rank_in_geo":236,"share_of_geo":0.000595948},{"value":"85015","n_24m":2,"n_all":9,"volume_24m":506910,"share_of_lender":0.009009,"rank_in_geo":151,"share_of_geo":0.001336898},{"value":"85051","n_24m":2,"n_all":9,"volume_24m":303000,"share_of_lender":0.009009,"rank_in_geo":169,"share_of_geo":0.001043297},{"value":"85020","n_24m":2,"n_all":8,"volume_24m":1038100,"share_of_lender":0.009009,"rank_in_geo":165,"share_of_geo":0.001028278},{"value":"85383","n_24m":2,"n_all":8,"volume_24m":2520000,"share_of_lender":0.009009,"rank_in_geo":250,"share_of_geo":0.000318522},{"value":"85338","n_24m":2,"n_all":7,"volume_24m":748684,"share_of_lender":0.009009,"rank_in_geo":261,"share_of_geo":0.000295639},{"value":"85345","n_24m":2,"n_all":7,"volume_24m":516300,"share_of_lender":0.009009,"rank_in_geo":208,"share_of_geo":0.00066357},{"value":"85007","n_24m":2,"n_all":6,"volume_24m":463800,"share_of_lender":0.009009,"rank_in_geo":89,"share_of_geo":0.00304878},{"value":"85027","n_24m":2,"n_all":5,"volume_24m":447300,"share_of_lender":0.009009,"rank_in_geo":180,"share_of_geo":0.001052078},{"value":"85142","n_24m":2,"n_all":5,"volume_24m":922600,"share_of_lender":0.009009,"rank_in_geo":326,"share_of_geo":0.000277624},{"value":"85234","n_24m":2,"n_all":5,"volume_24m":567900,"share_of_lender":0.009009,"rank_in_geo":214,"share_of_geo":0.000746826},{"value":"85296","n_24m":2,"n_all":5,"volume_24m":723850,"share_of_lender":0.009009,"rank_in_geo":202,"share_of_geo":0.000724113},{"value":"85323","n_24m":2,"n_all":5,"volume_24m":330000,"share_of_lender":0.009009,"rank_in_geo":189,"share_of_geo":0.000683293},{"value":"85374","n_24m":2,"n_all":5,"volume_24m":505100,"share_of_lender":0.009009,"rank_in_geo":179,"share_of_geo":0.000863185},{"value":"85248","n_24m":2,"n_all":4,"volume_24m":594000,"share_of_lender":0.009009,"rank_in_geo":187,"share_of_geo":0.000987167},{"value":"85351","n_24m":2,"n_all":4,"volume_24m":726000,"share_of_lender":0.009009,"rank_in_geo":162,"share_of_geo":0.000754717},{"value":"85388","n_24m":2,"n_all":4,"volume_24m":749800,"share_of_lender":0.009009,"rank_in_geo":193,"share_of_geo":0.000677277},{"value":"85209","n_24m":2,"n_all":3,"volume_24m":328250,"share_of_lender":0.009009,"rank_in_geo":180,"share_of_geo":0.000923361}],"n_zips_24m":90,"concentration_top3_zips":0.126126},"coverage":{"market":"phx","counties":["04013"],"n_parcels_uncovered":224192,"as_of":"2026-06-25","recordings_through":"2026-06-11","dated":true,"history_capture_share":0.183706},"rankings":{"rank_24m":176,"share_24m":0.000856,"rank_by_volume_24m":150,"rank_in_class_24m":123,"rank_hard_money_24m":5,"share_of_hard_money_24m":0.046202,"rank_purchase_24m":108,"share_by_volume_24m":0.001196,"n_zips_ranked_first_24m":0,"n_cities_ranked_first_24m":0,"n_counties_ranked_first_24m":null},"borrowers":{"n_borrowers":418,"n_borrowers_24m":109,"n_resolved_24m":85,"share_resolved_24m":0.779817,"borrower_measured_share":0.908146,"n_repeat_24m":32,"n_new_12m":78,"n_churned_12m":0,"churn_measured":false,"top_borrowers":[{"borrower_key":"722461175d36","name":"LR PROPERTIES LLC","investor":{"id":"inv_63c4b7a3aa67","name":"LR PROPERTIES LLC","display_name":"LR PROPERTIES LLC","kind":"BUILDER","kinds":["BUILDER","FLIPPER","WHOLESALER","LANDLORD"],"scale":"mid","institutional":false,"n_deals":62,"last_bought_on":"2026-05-06"},"is_entity":true,"is_person":false,"borrower_match":"ENTITY_NAME","n_loans":14,"n_loans_24m":14,"volume_24m":3325950,"last_loan_on":"2026-05-12"},{"borrower_key":"5dfa009f2de4","name":"ALPHA INVESTMENT GROUP AZ INC","investor":{"id":"inv_9a6a8f07a8c9","name":"ALPHA INVESTMENT GROUP AZ INC","display_name":"ALPHA INVESTMENT GROUP AZ INC","kind":"FLIPPER","kinds":["FLIPPER","WHOLESALER","LANDLORD"],"scale":"large","institutional":false,"n_deals":291,"last_bought_on":"2026-08-19"},"is_entity":true,"is_person":false,"borrower_match":"DEAL","n_loans":8,"n_loans_24m":8,"volume_24m":4568534,"last_loan_on":"2026-06-01"},{"borrower_key":"556115d5641d","name":"PRS AZ 1 LLC","investor":null,"is_entity":true,"is_person":false,"borrower_match":"OWNER_OF_RECORD","n_loans":6,"n_loans_24m":6,"volume_24m":2538200,"last_loan_on":"2025-03-28"},{"borrower_key":"6f79a741a269","name":"BRYCE RE LLC","investor":{"id":"inv_b43ea3cbd8f7","name":"BRYCE RE LLC","display_name":"BRYCE RE LLC","kind":"LANDLORD","kinds":["LANDLORD"],"scale":"small","institutional":false,"n_deals":5,"last_bought_on":"2024-11-20"},"is_entity":true,"is_person":false,"borrower_match":"OWNER_OF_RECORD","n_loans":5,"n_loans_24m":5,"volume_24m":1345400,"last_loan_on":"2024-11-25"},{"borrower_key":"e1a6d19e29f2","name":"MTS 7540 LLC","investor":{"id":"inv_22038fe8a6b7","name":"MTS 7540 LLC","display_name":"MTS 7540 LLC","kind":"FLIPPER","kinds":["FLIPPER","LANDLORD"],"scale":"mid","institutional":false,"n_deals":18,"last_bought_on":"2026-08-05"},"is_entity":true,"is_person":false,"borrower_match":"ENTITY_NAME","n_loans":4,"n_loans_24m":4,"volume_24m":1884000,"last_loan_on":"2026-06-10"},{"borrower_key":"eb6c06957756","name":"ROMAN OFFERS LLC","investor":{"id":"inv_1641b2dbf2b8","name":"ROMAN OFFERS LLC","display_name":"ROMAN OFFERS LLC","kind":"FLIPPER","kinds":["FLIPPER","WHOLESALER","LANDLORD"],"scale":"mid","institutional":false,"n_deals":42,"last_bought_on":"2026-08-21"},"is_entity":true,"is_person":false,"borrower_match":"DEAL","n_loans":4,"n_loans_24m":4,"volume_24m":1236000,"last_loan_on":"2026-05-15"},{"borrower_key":"3bfb431cf181","name":"BETTER ASSETS AZ","investor":{"id":"inv_47e09d161ab4","name":"BETTER ASSETS AZ INC","display_name":"BETTER ASSETS AZ INC","kind":"FLIPPER","kinds":["FLIPPER","WHOLESALER","LANDLORD"],"scale":"large","institutional":false,"n_deals":106,"last_bought_on":"2026-07-29"},"is_entity":true,"is_person":false,"borrower_match":"DEAL","n_loans":5,"n_loans_24m":3,"volume_24m":1914510,"last_loan_on":"2026-03-26"},{"borrower_key":"3f162f563199","name":"ASTON DEVELOPMENT LLC","investor":{"id":"inv_21082668efac","name":"ASTON DEVELOPMENT LLC","display_name":"ASTON DEVELOPMENT LLC","kind":"FLIPPER","kinds":["FLIPPER","BUILDER","WHOLESALER","LANDLORD"],"scale":"mid","institutional":false,"n_deals":49,"last_bought_on":"2026-08-19"},"is_entity":true,"is_person":false,"borrower_match":"ENTITY_NAME","n_loans":3,"n_loans_24m":3,"volume_24m":766050,"last_loan_on":"2026-05-13"},{"borrower_key":"4203fa51bfd6","name":"SPN ESTATES LLC","investor":{"id":"inv_5ef24b0ed413","name":"SPN ESTATES LLC","display_name":"SPN ESTATES LLC","kind":"LANDLORD","kinds":["LANDLORD"],"scale":"small","institutional":false,"n_deals":5,"last_bought_on":"2018-12-18"},"is_entity":true,"is_person":false,"borrower_match":"ENTITY_NAME","n_loans":3,"n_loans_24m":3,"volume_24m":694500,"last_loan_on":"2026-04-30"},{"borrower_key":"55971d2e78c0","name":"SARU MANAGEMENT LLC","investor":{"id":"inv_bc9ab275d4f6","name":"SARU MANAGEMENT LLC","display_name":"SARU MANAGEMENT LLC","kind":"LANDLORD","kinds":["LANDLORD"],"scale":"small","institutional":false,"n_deals":2,"last_bought_on":"2025-02-10"},"is_entity":true,"is_person":false,"borrower_match":"ENTITY_NAME","n_loans":3,"n_loans_24m":3,"volume_24m":586746,"last_loan_on":"2025-04-08"}],"competing_lenders":[{"lender":{"id":"len_b959a8d2abef","name":"CAPITAL FUND I LLC","lender_class":"NONBANK","is_hard_money":true},"n_shared_borrowers_24m":6,"n_shared_borrowers_all":25},{"lender":{"id":"len_3b2d93fee452","name":"MERCHANTS FUNDING AZ LLC","lender_class":"NONBANK","is_hard_money":true},"n_shared_borrowers_24m":5,"n_shared_borrowers_all":9},{"lender":{"id":"len_04af9cb68d51","name":"CONSTRUCTION LOAN SERVICES LLC","lender_class":"NONBANK","is_hard_money":false},"n_shared_borrowers_24m":3,"n_shared_borrowers_all":3},{"lender":{"id":"len_e28e16f5bdfd","name":"UNITED WHOLESALE MORTGAGE LLC","lender_class":"NONBANK","is_hard_money":false},"n_shared_borrowers_24m":1,"n_shared_borrowers_all":16},{"lender":{"id":"len_0116ed5aef33","name":"SELL WHOLESALE FUNDING LLC","lender_class":"NONBANK","is_hard_money":true},"n_shared_borrowers_24m":1,"n_shared_borrowers_all":7},{"lender":{"id":"len_223de92ccb91","name":"KAYAK CAPITAL LLC","lender_class":"NONBANK","is_hard_money":true},"n_shared_borrowers_24m":1,"n_shared_borrowers_all":6},{"lender":{"id":"len_f62ae683c034","name":"FAIRWAY INDEPENDENT MORTGAGE CORP","lender_class":"NONBANK","is_hard_money":false},"n_shared_borrowers_24m":1,"n_shared_borrowers_all":5},{"lender":{"id":"len_28c85b9d7495","name":"EMPORIUM TPO LLC","lender_class":"NONBANK","is_hard_money":false},"n_shared_borrowers_24m":1,"n_shared_borrowers_all":3},{"lender":{"id":"len_6b0c46c8812e","name":"FRANK WEST CAPITAL LLC","lender_class":"NONBANK","is_hard_money":true},"n_shared_borrowers_24m":1,"n_shared_borrowers_all":3},{"lender":{"id":"len_856b687230d6","name":"RCN CAPITAL LLC","lender_class":"NONBANK","is_hard_money":true},"n_shared_borrowers_24m":1,"n_shared_borrowers_all":3}],"person_names_redacted":false},"investor_lending":{"n_investor_loans":330,"n_investor_loans_12m":122,"n_investor_loans_24m":152,"share_investor_loans_24m":0.684685,"n_investors_24m":78,"by_investor_kind_24m":[{"value":"LANDLORD","n":143,"share":0.940789},{"value":"FLIPPER","n":114,"share":0.75},{"value":"WHOLESALER","n":83,"share":0.546053},{"value":"BUILDER","n":44,"share":0.289474}],"n_deals_financed":148,"n_deals_financed_24m":105,"by_deal_kind":[{"value":"hold","n":85,"n_24m":63},{"value":"flip","n":45,"n_24m":34},{"value":"long_hold","n":9,"n_24m":1},{"value":"other","n":6,"n_24m":4},{"value":"wholesale","n":3,"n_24m":3}],"n_auction_purchases_financed_24m":1,"n_wholesale_purchases_financed_24m":11,"top_investors":[{"investor":{"id":"inv_63c4b7a3aa67","name":"LR PROPERTIES LLC","display_name":"LR PROPERTIES LLC","kind":"BUILDER","kinds":["BUILDER","FLIPPER","WHOLESALER","LANDLORD"],"scale":"mid","institutional":false,"n_deals":62,"last_bought_on":"2026-05-06"},"n_loans_24m":14,"volume_24m":3325950,"last_loan_on":"2026-05-12"},{"investor":{"id":"inv_9a6a8f07a8c9","name":"ALPHA INVESTMENT GROUP AZ INC","display_name":"ALPHA INVESTMENT GROUP AZ INC","kind":"FLIPPER","kinds":["FLIPPER","WHOLESALER","LANDLORD"],"scale":"large","institutional":false,"n_deals":291,"last_bought_on":"2026-08-19"},"n_loans_24m":8,"volume_24m":4568534,"last_loan_on":"2026-06-01"},{"investor":{"id":"inv_22038fe8a6b7","name":"MTS 7540 LLC","display_name":"MTS 7540 LLC","kind":"FLIPPER","kinds":["FLIPPER","LANDLORD"],"scale":"mid","institutional":false,"n_deals":18,"last_bought_on":"2026-08-05"},"n_loans_24m":6,"volume_24m":2574600,"last_loan_on":"2026-06-10"},{"investor":{"id":"inv_6013d0d5f618","name":"BELLA RENOVATIONS LLC","display_name":"BELLA RENOVATIONS LLC","kind":"FLIPPER","kinds":["FLIPPER","WHOLESALER","LANDLORD"],"scale":"mid","institutional":false,"n_deals":90,"last_bought_on":"2026-08-13"},"n_loans_24m":5,"volume_24m":1407600,"last_loan_on":"2026-04-27"},{"investor":{"id":"inv_b43ea3cbd8f7","name":"BRYCE RE LLC","display_name":"BRYCE RE LLC","kind":"LANDLORD","kinds":["LANDLORD"],"scale":"small","institutional":false,"n_deals":5,"last_bought_on":"2024-11-20"},"n_loans_24m":5,"volume_24m":1345400,"last_loan_on":"2024-11-25"},{"investor":{"id":"inv_1641b2dbf2b8","name":"ROMAN OFFERS LLC","display_name":"ROMAN OFFERS LLC","kind":"FLIPPER","kinds":["FLIPPER","WHOLESALER","LANDLORD"],"scale":"mid","institutional":false,"n_deals":42,"last_bought_on":"2026-08-21"},"n_loans_24m":4,"volume_24m":1236000,"last_loan_on":"2026-05-15"},{"investor":{"id":"inv_33f82b595b17","name":"POLING WELLNESS LLC","display_name":"POLING WELLNESS LLC","kind":"FLIPPER","kinds":["FLIPPER","BUILDER","WHOLESALER","LANDLORD"],"scale":"mid","institutional":false,"n_deals":45,"last_bought_on":"2026-05-27"},"n_loans_24m":3,"volume_24m":7653547,"last_loan_on":"2026-03-30"},{"investor":{"id":"inv_c4536f759290","name":"SS ANTHEM LLC","display_name":"SS ANTHEM LLC","kind":"LANDLORD","kinds":["LANDLORD"],"scale":"small","institutional":false,"n_deals":4,"last_bought_on":"2011-12-13"},"n_loans_24m":3,"volume_24m":3335700,"last_loan_on":"2025-08-11"},{"investor":{"id":"inv_bf3579cb4639","name":"NEUPAD LLC","display_name":"NEUPAD LLC","kind":"FLIPPER","kinds":["FLIPPER","LANDLORD"],"scale":"mid","institutional":false,"n_deals":15,"last_bought_on":"2025-11-18"},"n_loans_24m":3,"volume_24m":2237900,"last_loan_on":"2025-11-20"},{"investor":{"id":"inv_0d8fb4f85747","name":"ALDER & FINCH LLC","display_name":"ALDER & FINCH LLC","kind":"FLIPPER","kinds":["FLIPPER","WHOLESALER","LANDLORD"],"scale":"mid","institutional":false,"n_deals":13,"last_bought_on":"2026-08-18"},"n_loans_24m":3,"volume_24m":2135000,"last_loan_on":"2026-06-03"}],"is_investor_lender":true},"flips_financed":{"window_from":"2023-04-27","window_to":"2026-04-27","n_flips_captured":38,"capture_share":0.03946,"n_flips_by_known_borrowers":925,"n_resold":38,"n_resold_priced":38,"median_gross_profit":150000,"p25_gross_profit":96175,"p75_gross_profit":294625,"median_spread_ratio":0.508437,"median_hold_days":123.5,"median_loan_to_price":1.1232,"share_of_financed_flips":0.044444,"by_year":[{"year":2023,"n_flips_captured":1,"n_resold":1,"median_gross_profit":null},{"year":2024,"n_flips_captured":3,"n_resold":3,"median_gross_profit":null},{"year":2025,"n_flips_captured":8,"n_resold":8,"median_gross_profit":null},{"year":2026,"n_flips_captured":26,"n_resold":26,"median_gross_profit":145000}]},"takebacks":{"n_takebacks":3,"n_takebacks_24m":0,"by_instrument":[{"value":"TRUSTEES_DEED","n":2,"share":0.666667},{"value":"DEED_IN_LIEU","n":1,"share":0.333333}],"n_loans_foreclosed":0,"n_takebacks_unlinked":3,"foreclosure_share":0,"median_days_takeback_to_resale":102,"is_auction_lender":false},"successor":null,"nmls":{"id":1125207,"url":"https://www.nmlsconsumeraccess.org/EntityDetails.aspx/COMPANY/1125207"},"id_history":[],"summary":"KIAVI FUNDING INC is a non-bank lender, flagged hard money by its name and its behaviour, with 222 loans recorded in the 24 months to 2026-06-25 (rank 176 among the market's lenders by loans in the window, 0.09% of its instruments), 332 open lien positions at that date and 577 instruments on file since 2014. Its window loans concentrate in PHOENIX (39.6% of them) and its largest ZIP is 85254 (4.5%). The product mix in the window is 72.1% other (conventional and everything not flagged), 27.9% construction. Registered investors took 68.5% of its window loans: an investor lender by behaviour, and it financed 105 investor purchases the deeds can tie to it; 153 of its window loans financed a purchase by the deeds. The term is known on 14.9% of its instruments (median 360 months); the median loan is $380,500. Its last recording is 2026-06-10, 1 day before the slice's last recording. Counts join the open-lien and recorded-history tables with an instrument counted once; the recorded history is a partial feed, so the older years are a floor.","as_of":"2026-06-25","recordings_through":"2026-06-11","dated":true,"data_end":"2026-08-27","history_capture_share":0.183706,"history_floor_year":2008,"history_floor_p50":2004,"share_parcels_with_lost_history":0.188759,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false}]},"meta":{"generated_at":"2026-09-15T12:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-27","build_run_id":3,"registry_run":11,"registry_version":"v6-auction","dataset_version":1789533180,"loaded_at":"2026-09-16T04:32:59.760Z","metro_buy_to_resale_ratio":0.719,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836311,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":"2026-08-27","address_as_of":null,"parcel":{"parcel_as_of":"2026-08-27","n_parcels":1836311,"sale_mortgage_measured":false,"financing":{"as_of":"2026-06-25","dated":true,"dated_reason":"dataset not in current delivery","n_parcels":1611957,"n_with_open_lien":1032808,"n_free_and_clear":579149,"n_avm":1528967,"n_involuntary":192400,"n_lenders":76212},"permits":{"as_of":"2026-09-01","n_permits":2377496,"n_parcels":663045,"n_unmatched":355,"jurisdictions":[{"jurisdiction":"PHOENIX","n_permits":795764,"last_issue_date":"2026-05-11","windows_measured":null},{"jurisdiction":"MESA","n_permits":330809,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"MARICOPA COUNTY","n_permits":217628,"last_issue_date":"2027-10-17","windows_measured":null},{"jurisdiction":"SCOTTSDALE","n_permits":182189,"last_issue_date":"2024-11-05","windows_measured":null},{"jurisdiction":"GOODYEAR","n_permits":173391,"last_issue_date":"2025-04-02","windows_measured":null},{"jurisdiction":"GILBERT","n_permits":160199,"last_issue_date":"2025-04-07","windows_measured":null},{"jurisdiction":"TEMPE","n_permits":102909,"last_issue_date":"2025-12-29","windows_measured":null},{"jurisdiction":"BUCKEYE","n_permits":94951,"last_issue_date":"2026-03-18","windows_measured":null},{"jurisdiction":"CHANDLER","n_permits":94942,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"PEORIA","n_permits":75435,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"QUEEN CREEK","n_permits":59103,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":null,"n_permits":43845,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"PARADISE VALLEY","n_permits":23135,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"AVONDALE","n_permits":7961,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"MARICOPA","n_permits":5732,"last_issue_date":"2026-12-12","windows_measured":null},{"jurisdiction":"YOUNGTOWN","n_permits":3979,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"EL MIRAGE","n_permits":1971,"last_issue_date":"2026-04-13","windows_measured":null},{"jurisdiction":"YUMA","n_permits":1909,"last_issue_date":"2009-01-15","windows_measured":null},{"jurisdiction":"FOUNTAIN HILLS","n_permits":767,"last_issue_date":"2026-05-21","windows_measured":null},{"jurisdiction":"ELMIRAGE","n_permits":521,"last_issue_date":"2025-08-08","windows_measured":null},{"jurisdiction":"SUN CITY","n_permits":133,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"COCONINO COUNTY","n_permits":63,"last_issue_date":"2024-02-16","windows_measured":null},{"jurisdiction":"PINAL COUNTY","n_permits":54,"last_issue_date":"2022-07-21","windows_measured":null},{"jurisdiction":"APACHE JUNCTION","n_permits":47,"last_issue_date":"2025-05-13","windows_measured":null},{"jurisdiction":"PIMA COUNTY","n_permits":21,"last_issue_date":"2016-10-24","windows_measured":null},{"jurisdiction":"WITTMANN","n_permits":8,"last_issue_date":"2026-02-03","windows_measured":null},{"jurisdiction":"JACKSON COUNTY","n_permits":7,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LEWISVILLE","n_permits":5,"last_issue_date":"2024-02-07","windows_measured":null},{"jurisdiction":"MONTGOMERY","n_permits":4,"last_issue_date":"2023-06-05","windows_measured":null},{"jurisdiction":"RIVERSIDE COUNTY","n_permits":3,"last_issue_date":"2026-06-20","windows_measured":null},{"jurisdiction":"LITCHFIELD PARK","n_permits":3,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"APACHE JUNCTION - SEWER UTILITY","n_permits":2,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"FORT WORTH","n_permits":2,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"YAVAPAI COUNTY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LOCUST GROVE","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"ORO VALLEY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"TANGIPAHOA","n_permits":1,"last_issue_date":"2019-05-28","windows_measured":null}]},"owner_profile":{"as_of":"2026-09-09","n_parcels":1611077,"n_multi":646963,"n_portfolio_5":277841},"history":{"first_week":"2025-07-24","last_week":"2026-09-09","zips":["85251"],"n_parcels":18774,"n_events":236022,"n_weeks":62,"domains":{"tax":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":18597},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":17615},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1700},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":21122},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2128},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2583},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25","n_events":6420},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1297},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":3238},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2548},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25","n_events":83657},"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":16450},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":58404},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":263}}}},"lenders":{"as_of":"2026-06-25","recordings_through":"2026-06-11","counties":["04013"],"history_capture_share":0.183706,"n_lender_ids":32046,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false,"dated":true,"n_parcels_uncovered":224192}}],"dated":[{"block":"financing","as_of":"2026-06-25","reason":"dataset not in current delivery"},{"block":"lenders","as_of":"2026-06-25","reason":"dataset not in current delivery"}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/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":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/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":"/v1/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":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/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":"/v1/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":"/v1/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, ledger_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":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/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":"/v1/lenders/{id}","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/lenders/{id}/loans":{"get":{"operationId":"listLenderLoans","summary":"List every loan of one lender","tags":["lenders"],"description":"Every loan of one lender, newest first: the parcel, the source table, the lender as recorded, the amount and terms as filed. Also the deal it financed and its outcome, one row per instrument (`source` picks one table).\n\nA geometry resolves to the H3 res-8 cells whose centre is inside it: a hex edge, not the circle. This host does not serve the borrowers of a recorded row: the rows omit them. With Accept: text/csv the whole filtered set as a CSV file.\n\n[Filters, sorts and the one-row-per-instrument rule](https://developers.investorlift.com/api-reference/endpoints/lenders-loans).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. Send it only when the id exists in more than one loaded market. 400 market_required says so, and a lender has the same id in every market it lent in. Otherwise the API uses the id's own market."},{"schema":{"default":"both","type":"string","enum":["open","recorded","both"]},"in":"query","name":"source","required":false,"description":"Which rows to list. With open, the API lists open lien positions only. With recorded, it lists recorded history slots only, with duplicates as the history holds them. With both, the default, it lists one row per instrument: the open row where the instrument has one, else its recorded row."},{"schema":{"type":"string"},"in":"query","name":"recorded_from","required":false,"description":"Keep loans recorded on or after this date, YYYY-MM-DD. With Accept: text/csv on api.investorlift.com you must send it (400 without it). So an export is a window of the book, never the whole of it."},{"schema":{"type":"string"},"in":"query","name":"recorded_to","required":false,"description":"Keep loans recorded on or before this date, YYYY-MM-DD. With recorded_from, one year is recorded_from=2025-01-01&recorded_to=2025-12-31."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["CONSTRUCTION","HELOC","OTHER"],"description":"What the file says the loan is, read from its flags and loan type and never from the label. CONSTRUCTION: the construction flag or a \"Building or Construction Loan\" type. HELOC: the credit-line flag or a \"Credit Line (Revolving)\" type. OTHER: everything else, that is a purchase-money or refinance mortgage of any kind."}},"in":"query","name":"product","required":false,"description":"Keep only loans of these products (comma list or repeated key): CONSTRUCTION, HELOC, OTHER."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["LE_24M","25_TO_120M","121_TO_359M","GE_360M","UNKNOWN"],"description":"The loan term in months, from the file's term where it carries one, else from the maturity date less the recording date. LE_24M: up to 24 months, the bridge and fix-and-flip range. 25_TO_120M: 25 to 120 months. 121_TO_359M: 121 to 359 months. GE_360M: 30 years and longer. UNKNOWN: neither a term nor a maturity on file, which is most hard-money rows."}},"in":"query","name":"term_band","required":false,"description":"Keep only loans in these term bands (comma list or repeated key): LE_24M, 25_TO_120M, 121_TO_359M, GE_360M, UNKNOWN."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"in":"query","name":"loan_type","required":false,"description":"Keep only loans whose loan_type is one of these, as the file writes it (comma list or repeated key), for example \"New Conventional\" or \"FHA\"."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"in":"query","name":"property_type","required":false,"description":"Keep only loans on parcels whose property_type_category is one of these, as the assessor feed writes it (comma list or repeated key), for example \"Residential\"."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"amount_min","required":false,"description":"Keep only loans with loan_amount at or above this, in whole dollars. The filter drops unpriced loans."},{"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"in":"query","name":"amount_max","required":false,"description":"Keep only loans with loan_amount at or below this, in whole dollars. The filter drops unpriced loans."},{"schema":{"type":"string","pattern":"^\\d{5}$"},"in":"query","name":"zip","required":false,"description":"Keep only loans on parcels in this 5-digit ZIP."},{"schema":{"type":"string","minLength":1,"maxLength":100},"in":"query","name":"city","required":false,"description":"Keep only loans on parcels in this city, as the parcel table writes it (case does not matter)."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["PURCHASE","NOT_PURCHASE","UNKNOWN"],"description":"The loan's purpose, that is if it financed a purchase, read from the recorded deeds and never from the file's label. PURCHASE: a priced deed on the parcel, $10,000 or more, is dated in the 45 days up to and including the recording date. A deed after the loan is a later sale, never this loan's purchase. NOT_PURCHASE: the deed registry covers those 45 days, the parcel has priced deeds, and none falls in them. Such a loan is a refinance, a second, a HELOC or a construction draw. UNKNOWN: the deed registry does not cover the window: its deeds or the parcel's deeds start after the loan, or the market has none."}},"in":"query","name":"purpose","required":false,"description":"Keep only loans of these purposes by the deed link (comma list or repeated key): PURCHASE, NOT_PURCHASE, UNKNOWN. While the market's registry predates the deed link, the API answers 422 lenders_unavailable."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["RESOLVED_BY_RESALE","REFINANCED","OPEN","FORECLOSED","UNKNOWN"],"description":"What became of a loan tied to a deal: a performance proxy read from the deed chain, never from a delinquency record or payment history. RESOLVED_BY_RESALE is a priced deed on the parcel after the loan, and REFINANCED is a later mortgage on it in either table before any resale. OPEN is an open lien position at the slice date and nothing later, and UNKNOWN is none of these because the chain runs out. FORECLOSED: a take-back deed on the parcel more than 90 days after the loan's recording, before any priced resale and any later mortgage. A take-back deed is a trustee's deed, a sheriff's deed or a deed in lieu, and the foreclosed block on the loan row carries it. A shorter gap is the auction buyer's own deed, not a foreclosure of this loan."}},"in":"query","name":"outcome","required":false,"description":"Keep only loans tied to a deal with these outcomes (comma list or repeated key): RESOLVED_BY_RESALE, REFINANCED, OPEN, FORECLOSED, UNKNOWN. A loan tied to no deal has no outcome, and the filter drops it. While the registry predates the deal link, the API answers 422 lenders_unavailable."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["flip","wholesale","hold","long_hold","other","build"],"description":"What occurred on the deal. flip: bought, fixed and resold within about a year at a profit-shaped margin; wholesale: bought and resold in under 30 days, or a chain resale or round trip within 90 (a double close); hold: bought and still owned at data_end, a confirmed holding or an un-resold purchase; long_hold: held over a year, then sold (a landlord exit); other: an investor resale that is not a clean flip. Reasons: a loss, a thin margin, a builder's new home resold, an iBuyer resale, or a chain resale of 3 to 12 months; build: a registered investor bought a lot or teardown, built a house on it during the hold, then sold. A builder's finished home bought and resold is other. On data built after 2026-09-17 the kind keeps only a single-family parcel held over 90 days, its house complete by the sale year. A market built on or before 2026-09-17 (meta.coverage[].loaded_at) counts every lot-to-build resale by a registered investor as a build until its next build."}},"in":"query","name":"deal_kind","required":false,"description":"Keep only loans tied to a deal of these kinds (comma list or repeated key): flip, wholesale, hold, long_hold, other, build. While the registry predates the deal link, the API answers 422 lenders_unavailable."},{"schema":{"type":"string","pattern":"^inv_[0-9a-f]{12}$"},"in":"query","name":"investor_id","required":false,"description":"Keep only loans whose main borrower resolves to this registered investor: the investor's loans from this lender. The id is inv_ followed by 12 hex characters, the loan row's investor_id. While the registry predates the borrower match, the API answers 422 lenders_unavailable."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"foreclosed","required":false,"description":"true keeps only loans followed by a take-back deed on the parcel (foreclosed set on the row). false keeps the rest. Default: every loan. A take-back deed is a trustee's deed, a sheriff's deed or a deed in lieu after the recording. While the registry predates the take-back join, the API answers 422 lenders_unavailable."},{"schema":{"type":"string","pattern":"^[0-9a-f]{15}$"},"in":"query","name":"cell","required":false,"description":"Keep only loans on parcels in this H3 cell. Send the index as a hex string at res 7 or 8, for example 8848eba59dfffff, as GET `/v1/lenders/{id}/cells` and `/v1/deals/cells` serve them. The API reads the resolution off the index (400 validation_error, code invalid_cell, otherwise). Do not send it with zip, city or a geometry (400 geography_conflict). While the registry predates the place rankings, the API answers 422 lenders_unavailable."},{"schema":{"type":"number","minimum":-90,"maximum":90},"in":"query","name":"lat","required":false,"description":"Point latitude (with lng). With radius_miles it is the geometry. The API resolves the circle to the H3 res-8 cells whose centre lies inside it, so its edge is a hex boundary. Do not send it with zip, city or county (400 geography_conflict). On a registry built before the place rankings, the API answers 422 lenders_unavailable."},{"schema":{"type":"number","minimum":-180,"maximum":180},"in":"query","name":"lng","required":false,"description":"Point longitude (with lat)."},{"schema":{"type":"number","minimum":0.25,"maximum":20},"in":"query","name":"radius_miles","required":false,"description":"Search radius in miles around the point or around the centre of the property_id parcel, 0.25 to 20 (default 2). Not allowed with bbox."},{"schema":{"type":"string"},"in":"query","name":"bbox","required":false,"description":"Viewport as west,south,east,north (WGS84 degrees). West must be less than east, south less than north, and the diagonal at most 40 mi. It must intersect a loaded market's coverage bbox (422 outside_coverage otherwise). It can carry lat + lng (without radius_miles) as the reference point for distances and sort=distance."},{"schema":{"type":"string","pattern":"^prop_[0-9a-f]{32}$"},"in":"query","name":"property_id","required":false,"description":"Parcel geometry: search around the centre of that parcel, with radius_miles. Not allowed with lat, lng or bbox."},{"schema":{"default":"recorded_desc","type":"string","enum":["recorded_desc","recorded_asc","amount_desc"]},"in":"query","name":"sort","required":false,"description":"Row order of a lender's loans: recorded_desc, the default, puts the newest recording first and undated rows last. With recorded_asc, the oldest recording comes first. With amount_desc, the largest loan amount comes first and unpriced rows last. This sort is slower on the largest lenders, which have no index in that order."},{"schema":{"default":100,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false,"description":"Page size, 1-500 (default 100). Ignored by CSV."},{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1."},{"schema":{"default":"false","type":"string","enum":["true","false"]},"in":"query","name":"require_current","required":false,"description":"true refuses the request with 422 dated_refused while the registry's source, the financing slice, is a dated snapshot. The default false serves it, and meta.dated[] carries the lenders and financing blocks."},{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Lender id, len_ followed by 12 hex characters, for example len_d2028f0766fc. Take it from a search hit, a ranking row's lender.id or a parcel's financing block. The id is the same in every market and stable across data refreshes. The API follows an id from an earlier registry run to the current lender, and meta.resolved_from lists it. For a retired id with no successor, the API answers 410 gone."}],"responses":{"200":{"description":"The lender's loans in one market, one page in the requested sort. With Accept: text/csv every filtered row as a CSV file. On api.investorlift.com the CSV needs a recorded_from window.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LenderLoan"},"description":"The rows of this page."},"page":{"$ref":"#/components/schemas/Page"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","page","meta"],"additionalProperties":false,"description":"The lender's loans in one market, one page in the requested sort."},"example":{"data":[{"market":"phx","property_id":"prop_cd126a2a572234fa8abfe853fc2ec706","address_short":"16647 W Saguaro Ln","city":"SURPRISE","zip":"85388","source":"RECORDED","position":2,"loan_key":"ad87846ae31cd527ab22a5669c9d78b8","in_both":false,"lender_id":"len_d2028f0766fc","lender_id_open":null,"lender_disagrees":false,"lender_name_as_recorded":"KIAVI FUNDING INC","lender_class":"NONBANK","identity_basis":"NAME_FOLD","recording_date":"2026-06-10","due_date":null,"loan_amount":374900,"amount_outlier":false,"current_balance":null,"balance_outlier":null,"on_resold_parcel":null,"interest_rate":null,"term_months":360,"term_band":"GE_360M","loan_type":"Building or Construction Loan","label":null,"label_as_recorded":"Refi loans and 2nd trust deeds (purchase and non-purchase money trust deeds)","product":"CONSTRUCTION","product_proxy":"RENTAL_TERM","product_basis":"FILE","open_position":null,"assigned_lender_name":null,"blanket_group_id":null,"blanket_n_parcels":null,"county_fips":"04013","property_type_category":"Residential","purpose":"PURCHASE","deed":{"dt":"2026-05-05","price":280000,"loan_to_price":1.3389},"deal":null,"outcome":null,"months_to_resolution":null,"foreclosed":null,"investor_id":"inv_22038fe8a6b7","co_borrower_investor_ids":[],"borrower_keys":["e1a6d19e29f2"],"borrower_match":"ENTITY_NAME","as_of":"2026-06-25","dated":true},{"market":"phx","property_id":"prop_260df84a75ada00ba055803eeed91550","address_short":"1812 E Sagebrush St","city":"GILBERT","zip":"85296","source":"OPEN","position":1,"loan_key":"2e78bbc1a066fe4af8bb1a5b25d9e9dc","in_both":false,"lender_id":"len_d2028f0766fc","lender_id_open":"len_d2028f0766fc","lender_disagrees":false,"lender_name_as_recorded":"KIAVI FUNDING INC","lender_class":"NONBANK","identity_basis":"NAME_FOLD","recording_date":"2026-06-09","due_date":null,"loan_amount":446850,"amount_outlier":false,"current_balance":446850,"balance_outlier":false,"on_resold_parcel":false,"interest_rate":null,"term_months":null,"term_band":"UNKNOWN","loan_type":"Building or Construction Loan","label":null,"label_as_recorded":null,"product":"CONSTRUCTION","product_proxy":null,"product_basis":null,"open_position":1,"assigned_lender_name":"KIAVI FUNDING INC","blanket_group_id":null,"blanket_n_parcels":null,"county_fips":"04013","property_type_category":"Residential","purpose":"PURCHASE","deed":{"dt":"2026-06-09","price":475000,"loan_to_price":0.9407},"deal":null,"outcome":null,"months_to_resolution":null,"foreclosed":null,"investor_id":"inv_b077ac90fead","co_borrower_investor_ids":[],"borrower_keys":["22d2dfb566a4"],"borrower_match":"OWNER_OF_RECORD","as_of":"2026-06-25","dated":true}],"page":{"next_cursor":"eyJ2IjoxLCJydW4iOiIxNzg5NTMzMTgwIiwicSI6ImFhNGMzOWI2OTMyYTU3NWFlYzRiMDExMjAyMGMxMWQ5MDc1MjcyNmUwNzk0YTNjNjUyZTFkODRiMjViMGRlZWEiLCJrIjpbIjIwMjYtMDYtMDkiLCIyNjBkZjg0YTc1YWRhMDBiYTA1NTgwM2VlZWQ5MTU1MCIsIk9QRU4iLDFdfQ","limit":2,"returned":2},"meta":{"generated_at":"2026-09-15T12:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-27","build_run_id":3,"registry_run":11,"registry_version":"v6-auction","dataset_version":1789533180,"loaded_at":"2026-09-16T04:32:59.760Z","metro_buy_to_resale_ratio":0.719,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836311,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":"2026-08-27","address_as_of":null,"parcel":{"parcel_as_of":"2026-08-27","n_parcels":1836311,"sale_mortgage_measured":false,"financing":{"as_of":"2026-06-25","dated":true,"dated_reason":"dataset not in current delivery","n_parcels":1611957,"n_with_open_lien":1032808,"n_free_and_clear":579149,"n_avm":1528967,"n_involuntary":192400,"n_lenders":76212},"permits":{"as_of":"2026-09-01","n_permits":2377496,"n_parcels":663045,"n_unmatched":355,"jurisdictions":[{"jurisdiction":"PHOENIX","n_permits":795764,"last_issue_date":"2026-05-11","windows_measured":null},{"jurisdiction":"MESA","n_permits":330809,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"MARICOPA COUNTY","n_permits":217628,"last_issue_date":"2027-10-17","windows_measured":null},{"jurisdiction":"SCOTTSDALE","n_permits":182189,"last_issue_date":"2024-11-05","windows_measured":null},{"jurisdiction":"GOODYEAR","n_permits":173391,"last_issue_date":"2025-04-02","windows_measured":null},{"jurisdiction":"GILBERT","n_permits":160199,"last_issue_date":"2025-04-07","windows_measured":null},{"jurisdiction":"TEMPE","n_permits":102909,"last_issue_date":"2025-12-29","windows_measured":null},{"jurisdiction":"BUCKEYE","n_permits":94951,"last_issue_date":"2026-03-18","windows_measured":null},{"jurisdiction":"CHANDLER","n_permits":94942,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"PEORIA","n_permits":75435,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"QUEEN CREEK","n_permits":59103,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":null,"n_permits":43845,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"PARADISE VALLEY","n_permits":23135,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"AVONDALE","n_permits":7961,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"MARICOPA","n_permits":5732,"last_issue_date":"2026-12-12","windows_measured":null},{"jurisdiction":"YOUNGTOWN","n_permits":3979,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"EL MIRAGE","n_permits":1971,"last_issue_date":"2026-04-13","windows_measured":null},{"jurisdiction":"YUMA","n_permits":1909,"last_issue_date":"2009-01-15","windows_measured":null},{"jurisdiction":"FOUNTAIN HILLS","n_permits":767,"last_issue_date":"2026-05-21","windows_measured":null},{"jurisdiction":"ELMIRAGE","n_permits":521,"last_issue_date":"2025-08-08","windows_measured":null},{"jurisdiction":"SUN CITY","n_permits":133,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"COCONINO COUNTY","n_permits":63,"last_issue_date":"2024-02-16","windows_measured":null},{"jurisdiction":"PINAL COUNTY","n_permits":54,"last_issue_date":"2022-07-21","windows_measured":null},{"jurisdiction":"APACHE JUNCTION","n_permits":47,"last_issue_date":"2025-05-13","windows_measured":null},{"jurisdiction":"PIMA COUNTY","n_permits":21,"last_issue_date":"2016-10-24","windows_measured":null},{"jurisdiction":"WITTMANN","n_permits":8,"last_issue_date":"2026-02-03","windows_measured":null},{"jurisdiction":"JACKSON COUNTY","n_permits":7,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LEWISVILLE","n_permits":5,"last_issue_date":"2024-02-07","windows_measured":null},{"jurisdiction":"MONTGOMERY","n_permits":4,"last_issue_date":"2023-06-05","windows_measured":null},{"jurisdiction":"RIVERSIDE COUNTY","n_permits":3,"last_issue_date":"2026-06-20","windows_measured":null},{"jurisdiction":"LITCHFIELD PARK","n_permits":3,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"APACHE JUNCTION - SEWER UTILITY","n_permits":2,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"FORT WORTH","n_permits":2,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"YAVAPAI COUNTY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LOCUST GROVE","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"ORO VALLEY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"TANGIPAHOA","n_permits":1,"last_issue_date":"2019-05-28","windows_measured":null}]},"owner_profile":{"as_of":"2026-09-09","n_parcels":1611077,"n_multi":646963,"n_portfolio_5":277841},"history":{"first_week":"2025-07-24","last_week":"2026-09-09","zips":["85251"],"n_parcels":18774,"n_events":236022,"n_weeks":62,"domains":{"tax":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":18597},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":17615},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1700},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":21122},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2128},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2583},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25","n_events":6420},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1297},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":3238},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2548},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25","n_events":83657},"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":16450},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":58404},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":263}}}},"lenders":{"as_of":"2026-06-25","recordings_through":"2026-06-11","counties":["04013"],"history_capture_share":0.183706,"n_lender_ids":32046,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false,"dated":true,"n_parcels_uncovered":224192}}],"dated":[{"block":"financing","as_of":"2026-06-25","reason":"dataset not in current delivery"},{"block":"lenders","as_of":"2026-06-25","reason":"dataset not in current delivery"}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}},"text/csv":{"schema":{"type":"string","description":"CSV with a header row: Market, Property id, Address, City, ZIP, Source, Position, Loan key, In both, Lender id, Lender id (open), Lender disagrees, Lender as recorded, Lender class, Identity basis, Recording date, Due date, Loan amount, Amount outlier, Current balance, Balance outlier, On resold parcel, Interest rate, Term months, Term band, Loan type, Label, Label as recorded, Product, Product proxy, Product basis, Open position, Assigned lender, Blanket group id, Blanket parcels, County FIPS, Property type, Purpose, Deed date, Deed price, Loan to price, Deal id, Deal kind, Purchase loan, Outcome, Investor id, Borrower keys, Borrower match, Foreclosed on, Foreclosed instrument, Foreclosed by lender, As of, Dated. The columns carry the JSON row's values, one cell per field. The file has every filtered row in the requested sort, and the API ignores cursor and limit. The cap is 50,000 rows (422 csv_cap_exceeded above), and X-Row-Cap is on every answer. The filename is `lender-<id>-loans.csv`."}}},"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"},"X-Row-Cap":{"$ref":"#/components/headers/X-Row-Cap"}}},"400":{"description":"Bad request (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/lenders/{id}/loans","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":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/lenders/{id}/loans","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":"/v1/lenders/{id}/loans","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":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, csv_cap_exceeded, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"csv_cap_exceeded":{"summary":"CSV cap exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#csv_cap_exceeded","title":"CSV cap exceeded","status":422,"code":"csv_cap_exceeded","detail":"The filtered set has more than 50,000 rows; narrow the recorded_from and recorded_to window or the filters.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","cap":50000,"n_rows_at_least":50001}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-Row-Cap":{"$ref":"#/components/headers/X-Row-Cap"}}},"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":"/v1/lenders/{id}/loans","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":"/v1/lenders/{id}/loans","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, ledger_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":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/lenders/{id}/loans","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":"/v1/lenders/{id}/loans","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/lenders/{id}/borrowers":{"get":{"operationId":"listLenderBorrowers","summary":"List the borrowers of one lender","tags":["lenders"],"description":"Who borrows from one lender in a market, one row per borrower key. Each row carries the loans by window, the registered investor behind it, the other lenders it uses and if it churned. Churn is a lower bound: the history sees one loan in five.\n\nThis host serves a company's name. It does not serve a person's name or any party key. Filter to registered investors, churned borrowers or an entity name, and sort by loans, volume, recency or churn.\n\n[The borrower fold, the churn rule and the name rule](https://developers.investorlift.com/api-reference/endpoints/lenders-borrowers).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. Send it only when the id exists in more than one loaded market. 400 market_required says so, and a lender has the same id in every market it lent in. Otherwise the API uses the id's own market."},{"schema":{"default":"24m","type":"string","enum":["24m","all"]},"in":"query","name":"period","required":false,"description":"Which count min_loans and the loans_desc sort read. 24m, the default, counts loans from this lender in the 24 months ending on the slice date, and the API walks it through an index. The value all counts every loan on record, and the API sorts it in memory, slower on the largest lenders."},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"q","required":false,"description":"An entity name to look for among the borrowers, as the recorded mortgages write it (\"Saguaro Holdings\", \"SAGUARO HOLDINGS LLC\"). Every word of the query of 3 or more characters must be a word of the borrower's name. The match ignores LLC, INC and similar suffixes. It matches company borrowers alone: a person's name never matches, on any key. Send at least 3 letters or digits (400 otherwise)."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"registered_only","required":false,"description":"true keeps only borrowers that resolve to a registered investor (investor not null). false keeps only the rest. Default: every borrower."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"churned","required":false,"description":"true keeps only churned borrowers (churned true). false keeps only the rest. Default: every borrower. A churned borrower took a later loan elsewhere and none here since, a lower bound."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["FLIPPER","WHOLESALER","LANDLORD","BUILDER","IBUYER"],"description":"Investor kind, the primary one of kinds[] (an investor can carry several), for display only. FLIPPER: buys, renovates and resells. WHOLESALER: buys to resell quickly, often through a double close. LANDLORD: buys and holds rentals. BUILDER: builds on lots it buys. IBUYER: Opendoor, Offerpad or Zillow."}},"in":"query","name":"investor_kind","required":false,"description":"Keep only borrowers whose registered investor carries at least one of these kinds (comma list or repeated key). The filter drops borrowers without an investor."},{"schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"min_loans","required":false,"description":"Keep only borrowers with at least this many loans from this lender in the period, default 1. The count is n_loans_24m under period=24m and n_loans under period=all."},{"schema":{"default":"loans_desc","type":"string","enum":["loans_desc","volume_desc","last_loan_desc","churned_first"]},"in":"query","name":"sort","required":false,"description":"Row order of a lender's borrowers: loans_desc, the default, puts the most loans from this lender in the period first. With volume_desc, the largest loan total in the period comes first. With last_loan_desc, the newest loan from this lender comes first. With churned_first, borrowers who moved to another lender come first, then the rest by loans. Ties end on borrower_key."},{"schema":{"default":100,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false,"description":"Page size, 1-500 (default 100)."},{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1."},{"schema":{"default":"false","type":"string","enum":["true","false"]},"in":"query","name":"require_current","required":false,"description":"true refuses the request with 422 dated_refused while the registry's source, the financing slice, is a dated snapshot. The default false serves it, and meta.dated[] carries the lenders and financing blocks."},{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Lender id, len_ followed by 12 hex characters, for example len_d2028f0766fc. Take it from a search hit, a ranking row's lender.id or a parcel's financing block. The id is the same in every market and stable across data refreshes. The API follows an id from an earlier registry run to the current lender, and meta.resolved_from lists it. For a retired id with no successor, the API answers 410 gone."}],"responses":{"200":{"description":"The lender's borrowers in one market, one page in the requested sort.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LenderBorrower"},"description":"The rows of this page."},"page":{"$ref":"#/components/schemas/Page"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","page","meta"],"additionalProperties":false,"description":"The lender's borrowers in one market, one page in the requested sort."},"example":{"data":[{"market":"phx","lender_id":"len_d2028f0766fc","borrower_key":"722461175d36","party_key":null,"name":"LR PROPERTIES LLC","investor":{"id":"inv_63c4b7a3aa67","name":"LR PROPERTIES LLC","display_name":"LR PROPERTIES LLC","kind":"BUILDER","kinds":["BUILDER","FLIPPER","WHOLESALER","LANDLORD"],"scale":"mid","institutional":false,"n_deals":62,"last_bought_on":"2026-05-06"},"is_entity":true,"is_person":false,"borrower_match":"ENTITY_NAME","n_loans":14,"n_loans_12m":14,"n_loans_24m":14,"volume_24m":3325950,"first_loan_on":"2025-08-13","last_loan_on":"2026-05-12","n_lenders_used_24m":4,"other_lender_ids":["len_28c85b9d7495","len_6b0c46c8812e","len_e28e16f5bdfd"],"other_lenders":[{"id":"len_28c85b9d7495","name":"EMPORIUM TPO LLC","lender_class":"NONBANK","is_hard_money":false},{"id":"len_6b0c46c8812e","name":"FRANK WEST CAPITAL LLC","lender_class":"NONBANK","is_hard_money":true},{"id":"len_e28e16f5bdfd","name":"UNITED WHOLESALE MORTGAGE LLC","lender_class":"NONBANK","is_hard_money":false}],"churned":false,"churn_measured":true,"moved_to_lender_id":null,"n_deals_financed":6,"as_of":"2026-06-25","dated":true},{"market":"phx","lender_id":"len_d2028f0766fc","borrower_key":"5dfa009f2de4","party_key":null,"name":"ALPHA INVESTMENT GROUP AZ INC","investor":{"id":"inv_9a6a8f07a8c9","name":"ALPHA INVESTMENT GROUP AZ INC","display_name":"ALPHA INVESTMENT GROUP AZ INC","kind":"FLIPPER","kinds":["FLIPPER","WHOLESALER","LANDLORD"],"scale":"large","institutional":false,"n_deals":291,"last_bought_on":"2026-08-19"},"is_entity":true,"is_person":false,"borrower_match":"DEAL","n_loans":8,"n_loans_12m":6,"n_loans_24m":8,"volume_24m":4568534,"first_loan_on":"2025-05-09","last_loan_on":"2026-06-01","n_lenders_used_24m":4,"other_lender_ids":["len_8a6f0edbec4f","len_3dfa3b9ae2b3","len_ad6fef2635be"],"other_lenders":[{"id":"len_8a6f0edbec4f","name":"CHERIE DORI INC","lender_class":"NONBANK","is_hard_money":false},{"id":"len_3dfa3b9ae2b3","name":"PATCHWORK INVESTMENTS LLC","lender_class":"NONBANK","is_hard_money":false},{"id":"len_ad6fef2635be","name":"THE LAW OFFICES OF JOHN BENEDICT RETIREM","lender_class":"NONBANK","is_hard_money":false}],"churned":false,"churn_measured":true,"moved_to_lender_id":null,"n_deals_financed":4,"as_of":"2026-06-25","dated":true}],"page":{"next_cursor":"eyJ2IjoxLCJydW4iOiIxNzg5NTMzMTgwIiwicSI6ImU0Mjg3ZWNjY2M4NzBkNDRlMTViMTZmZTU2YTk4MDQ3YWVmZGNhMmExN2UwNjhiZjYwODBlMTRjMmUyM2QyNmYiLCJrIjpbOCwiNWRmYTAwOWYyZGU0Il19","limit":2,"returned":2},"meta":{"generated_at":"2026-09-15T12:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-27","build_run_id":3,"registry_run":11,"registry_version":"v6-auction","dataset_version":1789533180,"loaded_at":"2026-09-16T04:32:59.760Z","metro_buy_to_resale_ratio":0.719,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836311,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":"2026-08-27","address_as_of":null,"parcel":{"parcel_as_of":"2026-08-27","n_parcels":1836311,"sale_mortgage_measured":false,"financing":{"as_of":"2026-06-25","dated":true,"dated_reason":"dataset not in current delivery","n_parcels":1611957,"n_with_open_lien":1032808,"n_free_and_clear":579149,"n_avm":1528967,"n_involuntary":192400,"n_lenders":76212},"permits":{"as_of":"2026-09-01","n_permits":2377496,"n_parcels":663045,"n_unmatched":355,"jurisdictions":[{"jurisdiction":"PHOENIX","n_permits":795764,"last_issue_date":"2026-05-11","windows_measured":null},{"jurisdiction":"MESA","n_permits":330809,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"MARICOPA COUNTY","n_permits":217628,"last_issue_date":"2027-10-17","windows_measured":null},{"jurisdiction":"SCOTTSDALE","n_permits":182189,"last_issue_date":"2024-11-05","windows_measured":null},{"jurisdiction":"GOODYEAR","n_permits":173391,"last_issue_date":"2025-04-02","windows_measured":null},{"jurisdiction":"GILBERT","n_permits":160199,"last_issue_date":"2025-04-07","windows_measured":null},{"jurisdiction":"TEMPE","n_permits":102909,"last_issue_date":"2025-12-29","windows_measured":null},{"jurisdiction":"BUCKEYE","n_permits":94951,"last_issue_date":"2026-03-18","windows_measured":null},{"jurisdiction":"CHANDLER","n_permits":94942,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"PEORIA","n_permits":75435,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"QUEEN CREEK","n_permits":59103,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":null,"n_permits":43845,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"PARADISE VALLEY","n_permits":23135,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"AVONDALE","n_permits":7961,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"MARICOPA","n_permits":5732,"last_issue_date":"2026-12-12","windows_measured":null},{"jurisdiction":"YOUNGTOWN","n_permits":3979,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"EL MIRAGE","n_permits":1971,"last_issue_date":"2026-04-13","windows_measured":null},{"jurisdiction":"YUMA","n_permits":1909,"last_issue_date":"2009-01-15","windows_measured":null},{"jurisdiction":"FOUNTAIN HILLS","n_permits":767,"last_issue_date":"2026-05-21","windows_measured":null},{"jurisdiction":"ELMIRAGE","n_permits":521,"last_issue_date":"2025-08-08","windows_measured":null},{"jurisdiction":"SUN CITY","n_permits":133,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"COCONINO COUNTY","n_permits":63,"last_issue_date":"2024-02-16","windows_measured":null},{"jurisdiction":"PINAL COUNTY","n_permits":54,"last_issue_date":"2022-07-21","windows_measured":null},{"jurisdiction":"APACHE JUNCTION","n_permits":47,"last_issue_date":"2025-05-13","windows_measured":null},{"jurisdiction":"PIMA COUNTY","n_permits":21,"last_issue_date":"2016-10-24","windows_measured":null},{"jurisdiction":"WITTMANN","n_permits":8,"last_issue_date":"2026-02-03","windows_measured":null},{"jurisdiction":"JACKSON COUNTY","n_permits":7,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LEWISVILLE","n_permits":5,"last_issue_date":"2024-02-07","windows_measured":null},{"jurisdiction":"MONTGOMERY","n_permits":4,"last_issue_date":"2023-06-05","windows_measured":null},{"jurisdiction":"RIVERSIDE COUNTY","n_permits":3,"last_issue_date":"2026-06-20","windows_measured":null},{"jurisdiction":"LITCHFIELD PARK","n_permits":3,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"APACHE JUNCTION - SEWER UTILITY","n_permits":2,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"FORT WORTH","n_permits":2,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"YAVAPAI COUNTY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LOCUST GROVE","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"ORO VALLEY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"TANGIPAHOA","n_permits":1,"last_issue_date":"2019-05-28","windows_measured":null}]},"owner_profile":{"as_of":"2026-09-09","n_parcels":1611077,"n_multi":646963,"n_portfolio_5":277841},"history":{"first_week":"2025-07-24","last_week":"2026-09-09","zips":["85251"],"n_parcels":18774,"n_events":236022,"n_weeks":62,"domains":{"tax":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":18597},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":17615},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1700},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":21122},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2128},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2583},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25","n_events":6420},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1297},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":3238},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2548},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25","n_events":83657},"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":16450},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":58404},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":263}}}},"lenders":{"as_of":"2026-06-25","recordings_through":"2026-06-11","counties":["04013"],"history_capture_share":0.183706,"n_lender_ids":32046,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false,"dated":true,"n_parcels_uncovered":224192}}],"dated":[{"block":"financing","as_of":"2026-06-25","reason":"dataset not in current delivery"},{"block":"lenders","as_of":"2026-06-25","reason":"dataset not in current delivery"}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/lenders/{id}/borrowers","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":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/lenders/{id}/borrowers","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":"/v1/lenders/{id}/borrowers","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":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/lenders/{id}/borrowers","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":"/v1/lenders/{id}/borrowers","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":"/v1/lenders/{id}/borrowers","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, ledger_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":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/lenders/{id}/borrowers","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":"/v1/lenders/{id}/borrowers","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/lenders/{id}/rankings":{"get":{"operationId":"listLenderRankings","summary":"Rank one lender by month, ZIP, city, county or cell","tags":["lenders"],"description":"One lender's count, rank and share in every ZIP, city, county or H3 cell it lent in over a period, or market-wide by month. Each bucket is one row, and every lender counts in the ranking, persons below the gate included.\n\nRead it for \"#1 in N ZIPs\" and the monthly share series: `min_n` drops the buckets where the lender's own count is below it. For every lender ranked inside one place use `/v1/lenders`. Dated: stamped in `meta.dated[]`.\n\n[The kinds, the periods and the rank rule](https://developers.investorlift.com/api-reference/endpoints/lenders-rankings).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. Send it only when the id exists in more than one loaded market. 400 market_required says so, and a lender has the same id in every market it lent in. Otherwise the API uses the id's own market."},{"schema":{"type":"string","enum":["month","zip","city","county","cell"]},"in":"query","name":"group_by","required":true,"description":"The buckets that cut a lender's rankings. With month, the buckets are the market-wide calendar months, one row per month of the span, every month present. With zip, 5-digit ZIP codes. With city, city names in upper case, as the parcel table writes them. With county, 5-digit FIPS codes. With cell, H3 hexagons at the resolution res gives, 8 by default."},{"schema":{"type":"string","enum":["7","8"]},"in":"query","name":"res","required":false,"description":"H3 cell resolution with group_by=cell: 8 (the default) or 7. Resolution 8 has cells of about 0.3 square miles and resolution 7 of about 2 square miles. With any other group_by the API answers 400 validation_error, code res_without_cell."},{"schema":{"default":"24m","type":"string","pattern":"^(12m|24m|all|\\d{4}|\\d{4}-(0[1-9]|1[0-2]))$"},"in":"query","name":"period","required":false,"description":"The period the buckets cover: 24m (the default), 12m, all, a calendar year YYYY, or a month YYYY-MM. YYYY is a year from 2002 to the slice year, and YYYY-MM is one of the 36 months up to the slice month. With group_by=cell it is a window alone. With group_by=month it is a span of months, every month present: all is the 36, 24m and 12m the last 24 and 12. Under group_by=month, YYYY is its months and YYYY-MM is that month. For any other value, or under group_by=month a year with none of the 36, the API answers 400 validation_error, code period_not_served."},{"schema":{"default":10,"type":"integer","minimum":1,"maximum":9007199254740991},"in":"query","name":"min_n","required":false,"description":"Keep only buckets where the lender's own n is at least this, default 10. The ranked-first counts of the profile use the same floor. 1 lists every bucket it lent in. The filter does not apply to group_by=month, whose span the API serves whole with every month present."},{"schema":{"default":100,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false,"description":"Page size, 1-500 (default 100)."},{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1."},{"schema":{"default":"false","type":"string","enum":["true","false"]},"in":"query","name":"require_current","required":false,"description":"true refuses the request with 422 dated_refused while the registry's source, the financing slice, is a dated snapshot. The default false serves it, and meta.dated[] carries the lenders and financing blocks."},{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Lender id, len_ followed by 12 hex characters, for example len_d2028f0766fc. Take it from a search hit, a ranking row's lender.id or a parcel's financing block. The id is the same in every market and stable across data refreshes. The API follows an id from an earlier registry run to the current lender, and meta.resolved_from lists it. For a retired id with no successor, the API answers 410 gone."}],"responses":{"200":{"description":"The lender's buckets of one kind over the period, one page.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LenderRankingBucket"},"description":"The rows of this page."},"page":{"$ref":"#/components/schemas/Page"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","page","meta"],"additionalProperties":false,"description":"The lender's buckets of one kind over the period, one page."},"example":{"data":[{"key":"85040","n":10,"volume":2411950,"n_purchase_money":4,"n_investor":9,"rank":34,"share":0.005966587,"partial":false,"floor":false,"as_of":"2026-06-25","dated":true},{"key":"85254","n":10,"volume":13894647,"n_purchase_money":7,"n_investor":8,"rank":54,"share":0.00325309,"partial":false,"floor":false,"as_of":"2026-06-25","dated":true}],"page":{"next_cursor":null,"limit":3,"returned":2},"meta":{"generated_at":"2026-09-15T12:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-27","build_run_id":3,"registry_run":11,"registry_version":"v6-auction","dataset_version":1789533180,"loaded_at":"2026-09-16T04:32:59.760Z","metro_buy_to_resale_ratio":0.719,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836311,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":"2026-08-27","address_as_of":null,"parcel":{"parcel_as_of":"2026-08-27","n_parcels":1836311,"sale_mortgage_measured":false,"financing":{"as_of":"2026-06-25","dated":true,"dated_reason":"dataset not in current delivery","n_parcels":1611957,"n_with_open_lien":1032808,"n_free_and_clear":579149,"n_avm":1528967,"n_involuntary":192400,"n_lenders":76212},"permits":{"as_of":"2026-09-01","n_permits":2377496,"n_parcels":663045,"n_unmatched":355,"jurisdictions":[{"jurisdiction":"PHOENIX","n_permits":795764,"last_issue_date":"2026-05-11","windows_measured":null},{"jurisdiction":"MESA","n_permits":330809,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"MARICOPA COUNTY","n_permits":217628,"last_issue_date":"2027-10-17","windows_measured":null},{"jurisdiction":"SCOTTSDALE","n_permits":182189,"last_issue_date":"2024-11-05","windows_measured":null},{"jurisdiction":"GOODYEAR","n_permits":173391,"last_issue_date":"2025-04-02","windows_measured":null},{"jurisdiction":"GILBERT","n_permits":160199,"last_issue_date":"2025-04-07","windows_measured":null},{"jurisdiction":"TEMPE","n_permits":102909,"last_issue_date":"2025-12-29","windows_measured":null},{"jurisdiction":"BUCKEYE","n_permits":94951,"last_issue_date":"2026-03-18","windows_measured":null},{"jurisdiction":"CHANDLER","n_permits":94942,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"PEORIA","n_permits":75435,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"QUEEN CREEK","n_permits":59103,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":null,"n_permits":43845,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"PARADISE VALLEY","n_permits":23135,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"AVONDALE","n_permits":7961,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"MARICOPA","n_permits":5732,"last_issue_date":"2026-12-12","windows_measured":null},{"jurisdiction":"YOUNGTOWN","n_permits":3979,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"EL MIRAGE","n_permits":1971,"last_issue_date":"2026-04-13","windows_measured":null},{"jurisdiction":"YUMA","n_permits":1909,"last_issue_date":"2009-01-15","windows_measured":null},{"jurisdiction":"FOUNTAIN HILLS","n_permits":767,"last_issue_date":"2026-05-21","windows_measured":null},{"jurisdiction":"ELMIRAGE","n_permits":521,"last_issue_date":"2025-08-08","windows_measured":null},{"jurisdiction":"SUN CITY","n_permits":133,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"COCONINO COUNTY","n_permits":63,"last_issue_date":"2024-02-16","windows_measured":null},{"jurisdiction":"PINAL COUNTY","n_permits":54,"last_issue_date":"2022-07-21","windows_measured":null},{"jurisdiction":"APACHE JUNCTION","n_permits":47,"last_issue_date":"2025-05-13","windows_measured":null},{"jurisdiction":"PIMA COUNTY","n_permits":21,"last_issue_date":"2016-10-24","windows_measured":null},{"jurisdiction":"WITTMANN","n_permits":8,"last_issue_date":"2026-02-03","windows_measured":null},{"jurisdiction":"JACKSON COUNTY","n_permits":7,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LEWISVILLE","n_permits":5,"last_issue_date":"2024-02-07","windows_measured":null},{"jurisdiction":"MONTGOMERY","n_permits":4,"last_issue_date":"2023-06-05","windows_measured":null},{"jurisdiction":"RIVERSIDE COUNTY","n_permits":3,"last_issue_date":"2026-06-20","windows_measured":null},{"jurisdiction":"LITCHFIELD PARK","n_permits":3,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"APACHE JUNCTION - SEWER UTILITY","n_permits":2,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"FORT WORTH","n_permits":2,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"YAVAPAI COUNTY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LOCUST GROVE","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"ORO VALLEY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"TANGIPAHOA","n_permits":1,"last_issue_date":"2019-05-28","windows_measured":null}]},"owner_profile":{"as_of":"2026-09-09","n_parcels":1611077,"n_multi":646963,"n_portfolio_5":277841},"history":{"first_week":"2025-07-24","last_week":"2026-09-09","zips":["85251"],"n_parcels":18774,"n_events":236022,"n_weeks":62,"domains":{"tax":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":18597},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":17615},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1700},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":21122},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2128},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2583},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25","n_events":6420},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1297},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":3238},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2548},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25","n_events":83657},"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":16450},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":58404},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":263}}}},"lenders":{"as_of":"2026-06-25","recordings_through":"2026-06-11","counties":["04013"],"history_capture_share":0.183706,"n_lender_ids":32046,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false,"dated":true,"n_parcels_uncovered":224192}}],"dated":[{"block":"financing","as_of":"2026-06-25","reason":"dataset not in current delivery"},{"block":"lenders","as_of":"2026-06-25","reason":"dataset not in current delivery"}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/lenders/{id}/rankings","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":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/lenders/{id}/rankings","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":"/v1/lenders/{id}/rankings","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":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/lenders/{id}/rankings","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":"/v1/lenders/{id}/rankings","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":"/v1/lenders/{id}/rankings","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, ledger_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":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/lenders/{id}/rankings","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":"/v1/lenders/{id}/rankings","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/lenders/{id}/cells":{"get":{"operationId":"listLenderCells","summary":"Count one lender's loans per hex cell for a map","tags":["lenders"],"description":"One lender's H3 cells at res 7 or 8 over a window: the count, volume, purchase-money, investor and foreclosed counts per cell, in cell order. It is the zoomed-out map layer of one lender, with a page size that fits a metro-wide lender in one or two pages. The result cache serves a repeat of the same request.\n\nFor counts per place with a rank use `/v1/lenders/{id}/rankings`, and for every lender inside a geometry use `/v1/lenders`. Dated: stamped in `meta.dated[]`.\n\n[The cell layer and the product narrowing](https://developers.investorlift.com/api-reference/endpoints/lenders-cells).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"Market code, for example phx. The loaded markets are in meta.coverage[]. Send it only when the id exists in more than one loaded market. 400 market_required says so, and a lender has the same id in every market it lent in. Otherwise the API uses the id's own market."},{"schema":{"default":"8","type":"string","enum":["7","8"]},"in":"query","name":"res","required":false,"description":"H3 cell resolution: 8 or 7. Resolution 8 (the default) has cells of about 0.3 square miles, a city or county view. Resolution 7 has cells of about 2 square miles, the whole metro."},{"schema":{"default":"24m","type":"string","pattern":"^(12m|24m|all|\\d{4}|\\d{4}-(0[1-9]|1[0-2]))$"},"in":"query","name":"period","required":false,"description":"The window the cells cover: 24m (the default), 12m or all. A cell layer carries the three windows alone. For a calendar year or month, the API answers 400 validation_error, code period_not_served."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["CONSTRUCTION","HELOC","OTHER"],"description":"What the file says the loan is, read from its flags and loan type and never from the label. CONSTRUCTION: the construction flag or a \"Building or Construction Loan\" type. HELOC: the credit-line flag or a \"Credit Line (Revolving)\" type. OTHER: everything else, that is a purchase-money or refinance mortgage of any kind."}},"in":"query","name":"product","required":false,"description":"Count only instruments of these products (comma list or repeated key): CONSTRUCTION, HELOC, OTHER. The cell's n is the sum of the named counts, and the API leaves out a cell with none of them. The fields volume, n_purchase_money, n_investor and n_foreclosed stay the cell's whole counts."},{"schema":{"default":5000,"type":"integer","minimum":1,"maximum":5000},"in":"query","name":"limit","required":false,"description":"Page size, 1-5000 (default 5000)."},{"schema":{"type":"string","minLength":1,"maxLength":4096},"in":"query","name":"cursor","required":false,"description":"Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1."},{"schema":{"default":"false","type":"string","enum":["true","false"]},"in":"query","name":"require_current","required":false,"description":"true refuses the request with 422 dated_refused while the registry's source, the financing slice, is a dated snapshot. The default false serves it, and meta.dated[] carries the lenders and financing blocks."},{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Lender id, len_ followed by 12 hex characters, for example len_d2028f0766fc. Take it from a search hit, a ranking row's lender.id or a parcel's financing block. The id is the same in every market and stable across data refreshes. The API follows an id from an earlier registry run to the current lender, and meta.resolved_from lists it. For a retired id with no successor, the API answers 410 gone."}],"responses":{"200":{"description":"The lender's H3 cells over the window, in cell-id order, one page.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LenderCell"},"description":"The rows of this page."},"page":{"$ref":"#/components/schemas/Page"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","page","meta"],"additionalProperties":false,"description":"The lender's H3 cells over the window, in cell-id order, one page."},"example":{"data":[{"cell":"8829b6124dfffff","n":1,"volume":189900,"n_purchase_money":1,"n_investor":0,"n_foreclosed":0,"as_of":"2026-06-25","dated":true},{"cell":"8829b68831fffff","n":1,"volume":281200,"n_purchase_money":1,"n_investor":0,"n_foreclosed":0,"as_of":"2026-06-25","dated":true},{"cell":"8829b68909fffff","n":1,"volume":325500,"n_purchase_money":0,"n_investor":1,"n_foreclosed":0,"as_of":"2026-06-25","dated":true}],"page":{"next_cursor":"eyJ2IjoxLCJydW4iOiIxNzg5NTMzMTgwIiwicSI6ImM1ZWI3YmM2OTY3YzA1NzNkMDY1MjZhM2M0NTBmMmFjNDk4ZTc4ZTViNTkzMDRkMmI4MjYxZDI5ODgzZjE1ZjgiLCJrIjpbIjg4MjliNjg5MDlmZmZmZiJdfQ","limit":3,"returned":3},"meta":{"generated_at":"2026-09-15T12:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-27","build_run_id":3,"registry_run":11,"registry_version":"v6-auction","dataset_version":1789533180,"loaded_at":"2026-09-16T04:32:59.760Z","metro_buy_to_resale_ratio":0.719,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836311,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":"2026-08-27","address_as_of":null,"parcel":{"parcel_as_of":"2026-08-27","n_parcels":1836311,"sale_mortgage_measured":false,"financing":{"as_of":"2026-06-25","dated":true,"dated_reason":"dataset not in current delivery","n_parcels":1611957,"n_with_open_lien":1032808,"n_free_and_clear":579149,"n_avm":1528967,"n_involuntary":192400,"n_lenders":76212},"permits":{"as_of":"2026-09-01","n_permits":2377496,"n_parcels":663045,"n_unmatched":355,"jurisdictions":[{"jurisdiction":"PHOENIX","n_permits":795764,"last_issue_date":"2026-05-11","windows_measured":null},{"jurisdiction":"MESA","n_permits":330809,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"MARICOPA COUNTY","n_permits":217628,"last_issue_date":"2027-10-17","windows_measured":null},{"jurisdiction":"SCOTTSDALE","n_permits":182189,"last_issue_date":"2024-11-05","windows_measured":null},{"jurisdiction":"GOODYEAR","n_permits":173391,"last_issue_date":"2025-04-02","windows_measured":null},{"jurisdiction":"GILBERT","n_permits":160199,"last_issue_date":"2025-04-07","windows_measured":null},{"jurisdiction":"TEMPE","n_permits":102909,"last_issue_date":"2025-12-29","windows_measured":null},{"jurisdiction":"BUCKEYE","n_permits":94951,"last_issue_date":"2026-03-18","windows_measured":null},{"jurisdiction":"CHANDLER","n_permits":94942,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"PEORIA","n_permits":75435,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"QUEEN CREEK","n_permits":59103,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":null,"n_permits":43845,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"PARADISE VALLEY","n_permits":23135,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"AVONDALE","n_permits":7961,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"MARICOPA","n_permits":5732,"last_issue_date":"2026-12-12","windows_measured":null},{"jurisdiction":"YOUNGTOWN","n_permits":3979,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"EL MIRAGE","n_permits":1971,"last_issue_date":"2026-04-13","windows_measured":null},{"jurisdiction":"YUMA","n_permits":1909,"last_issue_date":"2009-01-15","windows_measured":null},{"jurisdiction":"FOUNTAIN HILLS","n_permits":767,"last_issue_date":"2026-05-21","windows_measured":null},{"jurisdiction":"ELMIRAGE","n_permits":521,"last_issue_date":"2025-08-08","windows_measured":null},{"jurisdiction":"SUN CITY","n_permits":133,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"COCONINO COUNTY","n_permits":63,"last_issue_date":"2024-02-16","windows_measured":null},{"jurisdiction":"PINAL COUNTY","n_permits":54,"last_issue_date":"2022-07-21","windows_measured":null},{"jurisdiction":"APACHE JUNCTION","n_permits":47,"last_issue_date":"2025-05-13","windows_measured":null},{"jurisdiction":"PIMA COUNTY","n_permits":21,"last_issue_date":"2016-10-24","windows_measured":null},{"jurisdiction":"WITTMANN","n_permits":8,"last_issue_date":"2026-02-03","windows_measured":null},{"jurisdiction":"JACKSON COUNTY","n_permits":7,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LEWISVILLE","n_permits":5,"last_issue_date":"2024-02-07","windows_measured":null},{"jurisdiction":"MONTGOMERY","n_permits":4,"last_issue_date":"2023-06-05","windows_measured":null},{"jurisdiction":"RIVERSIDE COUNTY","n_permits":3,"last_issue_date":"2026-06-20","windows_measured":null},{"jurisdiction":"LITCHFIELD PARK","n_permits":3,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"APACHE JUNCTION - SEWER UTILITY","n_permits":2,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"FORT WORTH","n_permits":2,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"YAVAPAI COUNTY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LOCUST GROVE","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"ORO VALLEY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"TANGIPAHOA","n_permits":1,"last_issue_date":"2019-05-28","windows_measured":null}]},"owner_profile":{"as_of":"2026-09-09","n_parcels":1611077,"n_multi":646963,"n_portfolio_5":277841},"history":{"first_week":"2025-07-24","last_week":"2026-09-09","zips":["85251"],"n_parcels":18774,"n_events":236022,"n_weeks":62,"domains":{"tax":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":18597},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":17615},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1700},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":21122},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2128},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2583},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25","n_events":6420},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1297},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":3238},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2548},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25","n_events":83657},"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":16450},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":58404},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":263}}}},"lenders":{"as_of":"2026-06-25","recordings_through":"2026-06-11","counties":["04013"],"history_capture_share":0.183706,"n_lender_ids":32046,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false,"dated":true,"n_parcels_uncovered":224192}}],"dated":[{"block":"financing","as_of":"2026-06-25","reason":"dataset not in current delivery"},{"block":"lenders","as_of":"2026-06-25","reason":"dataset not in current delivery"}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/lenders/{id}/cells","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":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/lenders/{id}/cells","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":"/v1/lenders/{id}/cells","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":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/lenders/{id}/cells","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":"/v1/lenders/{id}/cells","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":"/v1/lenders/{id}/cells","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, ledger_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":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/lenders/{id}/cells","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":"/v1/lenders/{id}/cells","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/dataset":{"get":{"operationId":"getDataset","summary":"Read the loaded markets and how fresh the data is","tags":["dataset"],"description":"The data the API serves now: for every market its `dataset_version`, its `data_end` (the last deed date), its counties and when the tables went live. Plus the one-line version label every response repeats in `X-Dataset-Version`.\n\nUse it as the freshness probe: poll it, fold `dataset_version` into your cache keys and invalidate when it moves. It reads the market cache and runs no query. Send `If-None-Match` with the last `ETag` for a 304 when nothing changed.\n\n[The version label, the counties and the 304 handshake](https://developers.investorlift.com/api-reference/endpoints/dataset).","parameters":[],"responses":{"200":{"description":"The loaded markets and their versions.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Dataset"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The loaded markets and their versions."},"example":{"data":{"dataset_version":"hou=1789574468,phx=1789574268,sea=1789585230","data_end":"2026-08-27","markets":[{"market":"hou","state":"TX","dataset_version":1789574468,"data_end":"2026-08-11","counties":[{"fips":"48201","name":"Harris","data_end":"2026-08-10"}],"loaded_at":"2026-09-16T16:01:07.819Z"},{"market":"phx","state":"AZ","dataset_version":1789574268,"data_end":"2026-08-27","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"loaded_at":"2026-09-16T15:57:47.926Z"},{"market":"sea","state":"WA","dataset_version":1789585230,"data_end":"2026-08-26","counties":[{"fips":"53033","name":"King","data_end":"2026-08-25"},{"fips":"53053","name":"Pierce","data_end":"2026-08-26"},{"fips":"53061","name":"Snohomish","data_end":"2026-08-25"}],"loaded_at":"2026-09-16T19:00:29.606Z"}]},"meta":{"generated_at":"2026-09-16T21:00:00.000Z","coverage":[{"market":"hou","state":"TX","counties":[{"fips":"48201","name":"Harris","data_end":"2026-08-10"}],"bbox":[-95.95790786,29.501148,-94.91426317,30.166826],"data_end":"2026-08-11","build_run_id":2,"registry_run":5,"registry_version":"v6-auction-price-optional","dataset_version":1789574468,"loaded_at":"2026-09-16T16:01:07.819Z","metro_buy_to_resale_ratio":0.7318,"universe_kind":"county","universe_zips":null,"point_tolerance_miles":2,"n_parcels":1473937,"listings_data_end":"2026-08-31","agents_data_end":null,"wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"HARRIS_OTHER","regime":"UNKNOWN","coverage_reason":"NOT_SURVEYED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"HOUSTON","regime":"REQUIRED","coverage_reason":"LOADED_SERVED","served":true,"snapshot_only":false,"licence_start":"2025-10-01","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"COH_REGISTRY","snapshot_date":"2026-09-10","stale":false}],"n_licensed":3667,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":0.2145,"share_assumed":0.1655}]},"auction_counted":true,"parcel_as_of":null,"address_as_of":"2026-08-11","parcel":null,"lenders":null},{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-27","build_run_id":3,"registry_run":11,"registry_version":"v6-auction","dataset_version":1789574268,"loaded_at":"2026-09-16T15:57:47.926Z","metro_buy_to_resale_ratio":0.719,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836311,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":"2026-08-27","address_as_of":"2026-08-27","parcel":{"parcel_as_of":"2026-08-27","n_parcels":1836311,"sale_mortgage_measured":false,"financing":{"as_of":"2026-06-25","dated":true,"dated_reason":"dataset not in current delivery","n_parcels":1611957,"n_with_open_lien":1032808,"n_free_and_clear":579149,"n_avm":1528967,"n_involuntary":192400,"n_lenders":76212},"permits":{"as_of":"2026-09-01","n_permits":2377496,"n_parcels":663045,"n_unmatched":355,"jurisdictions":[{"jurisdiction":"PHOENIX","n_permits":795764,"last_issue_date":"2026-05-11","windows_measured":null},{"jurisdiction":"MESA","n_permits":330809,"last_issue_date":"2026-05-29","windows_measured":null}]},"owner_profile":{"as_of":"2026-09-09","n_parcels":1611077,"n_multi":646963,"n_portfolio_5":277841},"history":{"first_week":"2025-07-24","last_week":"2026-09-09","zips":["85251"],"n_parcels":18774,"n_events":236022,"n_weeks":62,"domains":{"tax":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":18597},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":17615},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1700},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":21122},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2128},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2583},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25","n_events":6420},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1297},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":3238},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2548},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25","n_events":83657},"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":16450},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":58404},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":263}}}},"lenders":{"as_of":"2026-06-25","recordings_through":"2026-06-11","counties":["04013"],"history_capture_share":0.183706,"n_lender_ids":32046,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false,"dated":true,"n_parcels_uncovered":224192}},{"market":"sea","state":"WA","counties":[{"fips":"53033","name":"King","data_end":"2026-08-25"},{"fips":"53053","name":"Pierce","data_end":"2026-08-26"},{"fips":"53061","name":"Snohomish","data_end":"2026-08-25"}],"bbox":[-122.840368,46.739146,-121.161718,48.297669],"data_end":"2026-08-26","build_run_id":1,"registry_run":2,"registry_version":"v6-auction","dataset_version":1789585230,"loaded_at":"2026-09-16T19:00:29.606Z","metro_buy_to_resale_ratio":0.6612,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1321876,"listings_data_end":"2026-09-07","agents_data_end":null,"wholesale_as_of":"2026-09-09","str_as_of":"2026-09-16","str":{"jurisdictions":[{"name":"ALGONA","regime":"UNKNOWN","coverage_reason":"NOT_SURVEYED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"ARLINGTON","regime":"UNKNOWN","coverage_reason":"NOT_SURVEYED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":null,"address_as_of":null,"parcel":null,"lenders":null}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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"}}},"304":{"description":"Not modified: If-None-Match matched the ETag, so the dataset is the same as at the answer the tag came from. No body, no query run, nothing charged. The API sends the freshness headers again.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-Dataset-Version":{"$ref":"#/components/headers/X-Dataset-Version"},"X-Data-End":{"$ref":"#/components/headers/X-Data-End"}}},"400":{"description":"Bad request (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/dataset","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/dataset","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/dataset","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/dataset","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/dataset","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/dataset","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/dataset","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/dataset","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":"/v1/dataset","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/dataset","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/dataset","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/dataset","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/dataset","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":"/v1/dataset","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":"/v1/dataset","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":"/v1/dataset","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, ledger_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":"/v1/dataset","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/dataset","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/dataset","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"Retry-After":{"$ref":"#/components/headers/Retry-After"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/coverage":{"get":{"operationId":"getCoverage","summary":"Read which data is available where","tags":["dataset"],"description":"Which data is available where. For every loaded market, one row per dataset with a status word and the as-of date. Each row carries the dated and stale flags and the error a call meets where the dataset is not served. The planned markets follow, as intent.\n\nAsk about a place with `lat` and `lng`, `county`, `zip` or `market`. The answer names the markets that cover it and what each dataset gives it. A place nothing covers answers 200, never 422. Zero credits.\n\n[The matrix vocabulary, the place lookup and the planned rows](https://developers.investorlift.com/api-reference/endpoints/coverage).","parameters":[{"schema":{"type":"number","minimum":-90,"maximum":90},"in":"query","name":"lat","required":false,"description":"With lng: the point to look up. The API decides the covering markets with the bounding-box-and-tolerance rule the data routes apply (meta.coverage[].bbox and point_tolerance_miles), so the two never disagree."},{"schema":{"type":"number","minimum":-180,"maximum":180},"in":"query","name":"lng","required":false,"description":"With lat: the point's longitude."},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"county","required":false,"description":"A county to look up: a 5-digit FIPS (\"04021\") or a name (\"Pinal\", \"Pinal County\", any case). The API matches it against the counties of the loaded markets and the states of the public ZIP-to-county crosswalk. Not with lat, lng, zip or market."},{"schema":{"type":"string","pattern":"^\\d{5}$"},"in":"query","name":"zip","required":false,"description":"A ZIP to look up. The API resolves it to every county it touches through the public ZIP-to-county crosswalk, largest land share first, then decides at county grain. A ZIP-universe market covers only its own ZIP codes. Not with lat, lng, county or market."},{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"query","name":"market","required":false,"description":"A market code to look up: its row alone. An unknown code answers place.status outside with markets [], never 400. Not with lat, lng, county or zip."}],"responses":{"200":{"description":"The coverage matrix, the place lookup and the planned markets.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CoverageData"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The coverage matrix, the place lookup and the planned markets."},"example":{"data":{"markets":[{"market":"phx","state":"AZ","label":"Phoenix metro","stage":"general","universe_kind":"metro","universe_zips":null,"counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"point_tolerance_miles":20,"n_parcels":1836311,"data_end":"2026-08-27","dataset_version":1789605233,"loaded_at":"2026-09-17T00:33:53.207Z","stale":false,"datasets":{"deeds":{"status":"served","dated":false,"stale":false,"as_of":"2026-08-27","gate":null,"granularity":"county","scope":{"kind":"counties","items":[{"key":"04013","name":"Maricopa","status":"served","gate":null,"as_of":"2026-08-12","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":null},{"key":"04021","name":"Pinal","status":"served","gate":null,"as_of":"2026-08-06","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":null}]},"features":null,"place_status":"served"},"listings":{"status":"served","dated":false,"stale":null,"as_of":"2026-09-07","gate":null,"granularity":"market","scope":null,"features":null,"place_status":"served"},"agents":{"status":"served","dated":false,"stale":null,"as_of":"2026-09-07","gate":null,"granularity":"market","scope":null,"features":null,"place_status":"served"},"wholesale":{"status":"served","dated":false,"stale":null,"as_of":"2026-09-09","gate":null,"granularity":"market","scope":null,"features":null,"place_status":"served"},"auction":{"status":"served","dated":false,"stale":null,"as_of":null,"gate":null,"granularity":"market","scope":null,"features":null,"place_status":"served"},"str":{"status":"partial","dated":false,"stale":false,"as_of":"2026-09-10","gate":null,"granularity":"jurisdiction","scope":{"kind":"jurisdictions","items":[{"key":"APACHE_JUNCTION","name":null,"status":"not_applicable","gate":null,"as_of":null,"reason":"NO_REQUIREMENT","regime":"NOT_REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"AVONDALE","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"REQUIRED_NOT_PUBLISHED","regime":"REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"BUCKEYE","name":null,"status":"not_applicable","gate":null,"as_of":null,"reason":"NO_REQUIREMENT","regime":"NOT_REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"CAREFREE","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"REQUIRED_NOT_PUBLISHED","regime":"REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"CASA_GRANDE","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"REQUIRED_NOT_PUBLISHED","regime":"REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"CAVE_CREEK","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"LOADED_UNVALIDATED","regime":"REQUIRED","feed_stale":true,"licence_start":"2023-11-06","counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"CHANDLER","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"REQUIRED_NOT_PUBLISHED","regime":"REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"CITY_OF_MARICOPA","name":null,"status":"not_applicable","gate":null,"as_of":null,"reason":"NO_REQUIREMENT","regime":"NOT_REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"COOLIDGE","name":null,"status":"not_applicable","gate":null,"as_of":null,"reason":"NO_REQUIREMENT","regime":"NOT_REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"EL_MIRAGE","name":null,"status":"not_applicable","gate":null,"as_of":null,"reason":"NO_REQUIREMENT","regime":"NOT_REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"ELOY","name":null,"status":"not_applicable","gate":null,"as_of":null,"reason":"NO_REQUIREMENT","regime":"NOT_REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"FLORENCE","name":null,"status":"not_applicable","gate":null,"as_of":null,"reason":"NO_REQUIREMENT","regime":"NOT_REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"FOUNTAIN_HILLS","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"LOADED_UNVALIDATED","regime":"REQUIRED","feed_stale":true,"licence_start":"2022-11-15","counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"GILA_BEND","name":null,"status":"not_applicable","gate":null,"as_of":null,"reason":"NO_REQUIREMENT","regime":"NOT_REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"GILBERT","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"REQUIRED_NOT_PUBLISHED","regime":"REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"GLENDALE","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"REQUIRED_NOT_PUBLISHED","regime":"REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"GOODYEAR","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"REQUIRED_NOT_PUBLISHED","regime":"REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"GUADALUPE","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"REQUIRED_NOT_PUBLISHED","regime":"REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"LITCHFIELD_PARK","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"REQUIRED_NOT_PUBLISHED","regime":"REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"MARICOPA_UNINCORPORATED","name":null,"status":"not_applicable","gate":null,"as_of":null,"reason":"NO_REQUIREMENT","regime":"NOT_REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"MESA","name":null,"status":"not_published","gate":null,"as_of":"2026-09-10","reason":"LOADED_COUNTS_ONLY","regime":"REQUIRED","feed_stale":false,"licence_start":"2023-02-01","counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"PARADISE_VALLEY","name":null,"status":"not_published","gate":null,"as_of":"2026-09-10","reason":"LOADED_UNVALIDATED","regime":"REQUIRED","feed_stale":false,"licence_start":"2022-11-13","counts":{"n_licensed":95,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"PEORIA","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"REQUIRED_NOT_PUBLISHED","regime":"REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"PHOENIX","name":null,"status":"served","gate":null,"as_of":"2026-09-10","reason":"LOADED_SERVED","regime":"REQUIRED","feed_stale":false,"licence_start":"2023-10-26","counts":{"n_licensed":1750,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"PINAL_UNINCORPORATED","name":null,"status":"not_applicable","gate":null,"as_of":null,"reason":"NO_REQUIREMENT","regime":"NOT_REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"QUEEN_CREEK","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"REQUIRED_NOT_PUBLISHED","regime":"REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"SCOTTSDALE","name":null,"status":"served","gate":null,"as_of":"2026-09-10","reason":"LOADED_SERVED","regime":"REQUIRED","feed_stale":false,"licence_start":"2022-11-28","counts":{"n_licensed":2707,"n_pending":41,"n_expired":2,"n_advertised":671}},{"key":"SURPRISE","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"REQUIRED_NOT_PUBLISHED","regime":"REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"TEMPE","name":null,"status":"not_published","gate":null,"as_of":"2026-09-10","reason":"LOADED_UNVALIDATED","regime":"REQUIRED","feed_stale":false,"licence_start":"2023-03-06","counts":{"n_licensed":110,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"TOLLESON","name":null,"status":"not_applicable","gate":null,"as_of":null,"reason":"NO_REQUIREMENT","regime":"NOT_REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"WICKENBURG","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"REQUIRED_NOT_PUBLISHED","regime":"REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}},{"key":"YOUNGTOWN","name":null,"status":"not_published","gate":null,"as_of":null,"reason":"REQUIRED_NOT_PUBLISHED","regime":"REQUIRED","feed_stale":false,"licence_start":null,"counts":{"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0}}]},"features":null,"place_status":null},"parcels":{"status":"served","dated":false,"stale":null,"as_of":"2026-08-27","gate":null,"granularity":"market","scope":null,"features":null,"place_status":"served"},"financing":{"status":"served","dated":true,"stale":null,"as_of":"2026-06-25","gate":null,"granularity":"market","scope":null,"features":null,"place_status":"served"},"permits":{"status":"served","dated":false,"stale":null,"as_of":"2026-09-01","gate":null,"granularity":"jurisdiction","scope":{"kind":"jurisdictions","items":[{"key":"PHOENIX","name":null,"status":"served","gate":null,"as_of":"2026-05-11","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":795764}},{"key":"MESA","name":null,"status":"served","gate":null,"as_of":"2026-05-29","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":330809}},{"key":"MARICOPA COUNTY","name":null,"status":"served","gate":null,"as_of":"2027-10-17","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":217628}},{"key":"SCOTTSDALE","name":null,"status":"served","gate":null,"as_of":"2024-11-05","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":182189}},{"key":"GOODYEAR","name":null,"status":"served","gate":null,"as_of":"2025-04-02","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":173391}},{"key":"GILBERT","name":null,"status":"served","gate":null,"as_of":"2025-04-07","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":160199}},{"key":"TEMPE","name":null,"status":"served","gate":null,"as_of":"2025-12-29","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":102909}},{"key":"BUCKEYE","name":null,"status":"served","gate":null,"as_of":"2026-03-18","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":94951}},{"key":"CHANDLER","name":null,"status":"served","gate":null,"as_of":"2026-05-29","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":94942}},{"key":"PEORIA","name":null,"status":"served","gate":null,"as_of":"2026-05-07","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":75435}},{"key":"QUEEN CREEK","name":null,"status":"served","gate":null,"as_of":"2026-04-24","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":59103}},{"key":"","name":null,"status":"served","gate":null,"as_of":"2026-06-05","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":43845}},{"key":"PARADISE VALLEY","name":null,"status":"served","gate":null,"as_of":"2026-04-24","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":23135}},{"key":"AVONDALE","name":null,"status":"served","gate":null,"as_of":"2026-04-24","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":7961}},{"key":"MARICOPA","name":null,"status":"served","gate":null,"as_of":"2026-12-12","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":5732}},{"key":"YOUNGTOWN","name":null,"status":"served","gate":null,"as_of":"2026-06-05","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":3979}},{"key":"EL MIRAGE","name":null,"status":"served","gate":null,"as_of":"2026-04-13","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":1971}},{"key":"YUMA","name":null,"status":"served","gate":null,"as_of":"2009-01-15","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":1909}},{"key":"FOUNTAIN HILLS","name":null,"status":"served","gate":null,"as_of":"2026-05-21","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":767}},{"key":"ELMIRAGE","name":null,"status":"served","gate":null,"as_of":"2025-08-08","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":521}},{"key":"SUN CITY","name":null,"status":"served","gate":null,"as_of":null,"reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":133}},{"key":"COCONINO COUNTY","name":null,"status":"served","gate":null,"as_of":"2024-02-16","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":63}},{"key":"PINAL COUNTY","name":null,"status":"served","gate":null,"as_of":"2022-07-21","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":54}},{"key":"APACHE JUNCTION","name":null,"status":"served","gate":null,"as_of":"2025-05-13","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":47}},{"key":"PIMA COUNTY","name":null,"status":"served","gate":null,"as_of":"2016-10-24","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":21}},{"key":"WITTMANN","name":null,"status":"served","gate":null,"as_of":"2026-02-03","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":8}},{"key":"JACKSON COUNTY","name":null,"status":"served","gate":null,"as_of":null,"reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":7}},{"key":"LEWISVILLE","name":null,"status":"served","gate":null,"as_of":"2024-02-07","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":5}},{"key":"MONTGOMERY","name":null,"status":"served","gate":null,"as_of":"2023-06-05","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":4}},{"key":"RIVERSIDE COUNTY","name":null,"status":"served","gate":null,"as_of":"2026-06-20","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":3}},{"key":"LITCHFIELD PARK","name":null,"status":"served","gate":null,"as_of":null,"reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":3}},{"key":"APACHE JUNCTION - SEWER UTILITY","name":null,"status":"served","gate":null,"as_of":"2026-05-07","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":2}},{"key":"FORT WORTH","name":null,"status":"served","gate":null,"as_of":null,"reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":2}},{"key":"YAVAPAI COUNTY","name":null,"status":"served","gate":null,"as_of":null,"reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":1}},{"key":"LOCUST GROVE","name":null,"status":"served","gate":null,"as_of":null,"reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":1}},{"key":"ORO VALLEY","name":null,"status":"served","gate":null,"as_of":null,"reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":1}},{"key":"TANGIPAHOA","name":null,"status":"served","gate":null,"as_of":"2019-05-28","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":{"n_permits":1}}]},"features":null,"place_status":null},"owner_profile":{"status":"served","dated":false,"stale":null,"as_of":"2026-09-09","gate":null,"granularity":"market","scope":null,"features":null,"place_status":"served"},"history":{"status":"partial","dated":false,"stale":null,"as_of":"2026-09-09","gate":null,"granularity":"zip","scope":{"kind":"zips","items":[{"key":"85251","name":null,"status":"served","gate":null,"as_of":"2026-09-09","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":null}]},"features":null,"place_status":"served"},"cash_sale":{"status":"not_measured","dated":false,"stale":null,"as_of":null,"gate":"cash_sale_unavailable","granularity":"market","scope":null,"features":null,"place_status":"outside"},"lenders":{"status":"partial","dated":true,"stale":null,"as_of":"2026-06-25","gate":null,"granularity":"county","scope":{"kind":"counties","items":[{"key":"04013","name":"Maricopa","status":"served","gate":null,"as_of":"2026-06-25","reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":null},{"key":"04021","name":"Pinal","status":"not_published","gate":"outside_coverage","as_of":null,"reason":null,"regime":null,"feed_stale":null,"licence_start":null,"counts":null}]},"features":{"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false},"place_status":"served"},"addresses":{"status":"served","dated":false,"stale":null,"as_of":"2026-08-27","gate":null,"granularity":"market","scope":null,"features":null,"place_status":"served"}}}],"place":{"input":{"kind":"county","value":"04013"},"status":"covered","markets":["phx"],"counties":[{"fips":"04013","name":"Maricopa"}]},"planned":[]},"meta":{"generated_at":"2026-09-17T00:55:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-27","build_run_id":3,"registry_run":11,"registry_version":"v6-auction","dataset_version":1789605233,"loaded_at":"2026-09-17T00:33:53.207Z","metro_buy_to_resale_ratio":0.719,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836311,"listings_data_end":"2026-09-07","agents_data_end":"2026-09-07","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"BUCKEYE","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"CAREFREE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"CASA_GRANDE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"CAVE_CREEK","regime":"REQUIRED","coverage_reason":"LOADED_UNVALIDATED","served":false,"snapshot_only":true,"licence_start":"2023-11-06","snapshot_date":null,"feed_stale":true,"sources":[{"source":"DECKARD","snapshot_date":null,"stale":false}],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"CHANDLER","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"CITY_OF_MARICOPA","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"COOLIDGE","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"EL_MIRAGE","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"ELOY","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"FLORENCE","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"FOUNTAIN_HILLS","regime":"REQUIRED","coverage_reason":"LOADED_UNVALIDATED","served":false,"snapshot_only":true,"licence_start":"2022-11-15","snapshot_date":null,"feed_stale":true,"sources":[{"source":"DECKARD","snapshot_date":null,"stale":false}],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"GILA_BEND","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"GILBERT","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"GLENDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"GOODYEAR","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"GUADALUPE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"LITCHFIELD_PARK","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"MARICOPA_UNINCORPORATED","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"MESA","regime":"REQUIRED","coverage_reason":"LOADED_COUNTS_ONLY","served":false,"snapshot_only":false,"licence_start":"2023-02-01","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"MESA","snapshot_date":"2026-09-10","stale":false}],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"PARADISE_VALLEY","regime":"REQUIRED","coverage_reason":"LOADED_UNVALIDATED","served":false,"snapshot_only":false,"licence_start":"2022-11-13","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"PV","snapshot_date":"2026-09-10","stale":false}],"n_licensed":95,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":0.0104,"share_assumed":null},{"name":"PEORIA","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"PHOENIX","regime":"REQUIRED","coverage_reason":"LOADED_SERVED","served":true,"snapshot_only":false,"licence_start":"2023-10-26","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"PHX_GIS","snapshot_date":"2026-09-10","stale":false},{"source":"PHX_SHAPE","snapshot_date":null,"stale":true}],"n_licensed":1750,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":0.0793,"share_assumed":0},{"name":"PINAL_UNINCORPORATED","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"QUEEN_CREEK","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"SCOTTSDALE","regime":"REQUIRED","coverage_reason":"LOADED_SERVED","served":true,"snapshot_only":false,"licence_start":"2022-11-28","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"COS_EXPIRED","snapshot_date":"2026-09-10","stale":false},{"source":"COS_LEGACY","snapshot_date":"2026-09-10","stale":false},{"source":"COS_LICENSED","snapshot_date":"2026-09-10","stale":false},{"source":"COS_PENDING","snapshot_date":"2026-09-10","stale":false},{"source":"COS_STAFF","snapshot_date":"2026-09-10","stale":false},{"source":"COS_UNLICENSED","snapshot_date":"2026-09-10","stale":false}],"n_licensed":2707,"n_pending":41,"n_expired":2,"n_advertised":671,"share_unmatched":0.0267,"share_assumed":0.0004},{"name":"SURPRISE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"TEMPE","regime":"REQUIRED","coverage_reason":"LOADED_UNVALIDATED","served":false,"snapshot_only":false,"licence_start":"2023-03-06","snapshot_date":"2026-09-10","feed_stale":false,"sources":[{"source":"TEMPE","snapshot_date":"2026-09-10","stale":false}],"n_licensed":110,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":0.676,"share_assumed":null},{"name":"TOLLESON","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"WICKENBURG","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"YOUNGTOWN","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":"2026-08-27","address_as_of":"2026-08-27","parcel":{"parcel_as_of":"2026-08-27","n_parcels":1836311,"sale_mortgage_measured":false,"financing":{"as_of":"2026-06-25","dated":true,"dated_reason":"dataset not in current delivery","n_parcels":1611957,"n_with_open_lien":1032808,"n_free_and_clear":579149,"n_avm":1528967,"n_involuntary":192400,"n_lenders":76212},"permits":{"as_of":"2026-09-01","n_permits":2377496,"n_parcels":663045,"n_unmatched":355,"jurisdictions":[{"jurisdiction":"PHOENIX","n_permits":795764,"last_issue_date":"2026-05-11","windows_measured":null},{"jurisdiction":"MESA","n_permits":330809,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"MARICOPA COUNTY","n_permits":217628,"last_issue_date":"2027-10-17","windows_measured":null},{"jurisdiction":"SCOTTSDALE","n_permits":182189,"last_issue_date":"2024-11-05","windows_measured":null},{"jurisdiction":"GOODYEAR","n_permits":173391,"last_issue_date":"2025-04-02","windows_measured":null},{"jurisdiction":"GILBERT","n_permits":160199,"last_issue_date":"2025-04-07","windows_measured":null},{"jurisdiction":"TEMPE","n_permits":102909,"last_issue_date":"2025-12-29","windows_measured":null},{"jurisdiction":"BUCKEYE","n_permits":94951,"last_issue_date":"2026-03-18","windows_measured":null},{"jurisdiction":"CHANDLER","n_permits":94942,"last_issue_date":"2026-05-29","windows_measured":null},{"jurisdiction":"PEORIA","n_permits":75435,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"QUEEN CREEK","n_permits":59103,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":null,"n_permits":43845,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"PARADISE VALLEY","n_permits":23135,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"AVONDALE","n_permits":7961,"last_issue_date":"2026-04-24","windows_measured":null},{"jurisdiction":"MARICOPA","n_permits":5732,"last_issue_date":"2026-12-12","windows_measured":null},{"jurisdiction":"YOUNGTOWN","n_permits":3979,"last_issue_date":"2026-06-05","windows_measured":null},{"jurisdiction":"EL MIRAGE","n_permits":1971,"last_issue_date":"2026-04-13","windows_measured":null},{"jurisdiction":"YUMA","n_permits":1909,"last_issue_date":"2009-01-15","windows_measured":null},{"jurisdiction":"FOUNTAIN HILLS","n_permits":767,"last_issue_date":"2026-05-21","windows_measured":null},{"jurisdiction":"ELMIRAGE","n_permits":521,"last_issue_date":"2025-08-08","windows_measured":null},{"jurisdiction":"SUN CITY","n_permits":133,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"COCONINO COUNTY","n_permits":63,"last_issue_date":"2024-02-16","windows_measured":null},{"jurisdiction":"PINAL COUNTY","n_permits":54,"last_issue_date":"2022-07-21","windows_measured":null},{"jurisdiction":"APACHE JUNCTION","n_permits":47,"last_issue_date":"2025-05-13","windows_measured":null},{"jurisdiction":"PIMA COUNTY","n_permits":21,"last_issue_date":"2016-10-24","windows_measured":null},{"jurisdiction":"WITTMANN","n_permits":8,"last_issue_date":"2026-02-03","windows_measured":null},{"jurisdiction":"JACKSON COUNTY","n_permits":7,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LEWISVILLE","n_permits":5,"last_issue_date":"2024-02-07","windows_measured":null},{"jurisdiction":"MONTGOMERY","n_permits":4,"last_issue_date":"2023-06-05","windows_measured":null},{"jurisdiction":"RIVERSIDE COUNTY","n_permits":3,"last_issue_date":"2026-06-20","windows_measured":null},{"jurisdiction":"LITCHFIELD PARK","n_permits":3,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"APACHE JUNCTION - SEWER UTILITY","n_permits":2,"last_issue_date":"2026-05-07","windows_measured":null},{"jurisdiction":"FORT WORTH","n_permits":2,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"YAVAPAI COUNTY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"LOCUST GROVE","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"ORO VALLEY","n_permits":1,"last_issue_date":null,"windows_measured":null},{"jurisdiction":"TANGIPAHOA","n_permits":1,"last_issue_date":"2019-05-28","windows_measured":null}]},"owner_profile":{"as_of":"2026-09-09","n_parcels":1611077,"n_multi":646963,"n_portfolio_5":277841},"history":{"first_week":"2025-07-24","last_week":"2026-09-09","zips":["85251"],"n_parcels":18774,"n_events":236022,"n_weeks":62,"domains":{"tax":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":18597},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":17615},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1700},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":21122},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2128},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2583},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25","n_events":6420},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1297},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":3238},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2548},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25","n_events":83657},"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":16450},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":58404},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":263}}}},"lenders":{"as_of":"2026-06-25","recordings_through":"2026-06-11","counties":["04013"],"history_capture_share":0.183706,"n_lender_ids":32045,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false,"dated":true,"n_parcels_uncovered":224192}}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/coverage","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/coverage","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/coverage","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/coverage","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/coverage","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/coverage","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/coverage","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/coverage","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":"/v1/coverage","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/coverage","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/coverage","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/coverage","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/coverage","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":"/v1/coverage","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":"/v1/coverage","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":"/v1/coverage","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, ledger_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":"/v1/coverage","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/coverage","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/coverage","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"Retry-After":{"$ref":"#/components/headers/Retry-After"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/properties/search":{"post":{"operationId":"searchParcels","summary":"Search parcels by location, filters and quicklists","tags":["properties"],"description":"Every parcel inside a location that matches the filter groups and quicklists. Every row carries the address and the assessor facts. The owner, sale, tax, listing, valuation, financing, permit and history blocks come when you request them.\n\nUse it for a BatchData-shaped property search over the loaded markets. The valuation and financing blocks are a dated snapshot, and every response that carries them says so in `meta.dated[]`.\n\n[Filter groups, quicklists, datasets and the dated rule](https://developers.investorlift.com/api-reference/endpoints/properties-search).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"location":{"type":"object","properties":{"zip":{"description":"ZIP codes, up to 50. Alone they choose the markets. An unknown ZIP is 422 outside_coverage.","minItems":1,"maxItems":50,"type":"array","items":{"type":"string","pattern":"^\\d{5}$"}},"county_fips":{"description":"County FIPS codes to search, up to 20 (04013 Maricopa, 04021 Pinal).","minItems":1,"maxItems":20,"type":"array","items":{"type":"string","pattern":"^\\d{5}$"}},"point":{"description":"A point and a radius. Rows then carry distance_miles, and sort=distance is available.","type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"WGS84 latitude."},"lng":{"type":"number","minimum":-180,"maximum":180,"description":"WGS84 longitude."},"radius_miles":{"type":"number","exclusiveMinimum":0,"maximum":20,"description":"Radius in miles, up to 20."}},"required":["lat","lng","radius_miles"],"additionalProperties":false},"bbox":{"description":"A viewport as [west, south, east, north].","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},"property_id":{"description":"A parcel: the search runs around its centre with radius_miles.","type":"string","pattern":"^prop_[0-9a-f]{32}$"},"radius_miles":{"description":"The radius around property_id, miles (default 1).","type":"number","exclusiveMinimum":0,"maximum":20},"market":{"description":"Restrict to one loaded market by code (phx). Default: every loaded market the location admits.","type":"string","minLength":1,"maxLength":16}},"additionalProperties":false,"description":"Where to search: at least one of zip, county_fips, point, bbox or property_id. Send only one of point, bbox and property_id. You can combine that one with zip or county_fips."},"filters":{"type":"object","properties":{"general":{"description":"Classification and occupancy flags.","type":"object","properties":{"segment":{"description":"Parcel segments to keep.","minItems":1,"type":"array","items":{"type":"string","enum":["SFR","CONDO_TH","OTHER"],"description":"Parcel segment: SFR, CONDO_TH (condo or townhouse) or OTHER, a mixed bucket of manufactured, multi-family, land and commercial parcels."}},"property_type_category":{"description":"BatchData property type categories to keep, for example [\"Residential\"].","minItems":1,"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"property_type_detail":{"description":"BatchData property type details to keep.","minItems":1,"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"vacant":{"description":"True keeps parcels the USPS marks vacant. False keeps the rest.","type":"boolean"},"mailing_address_vacant":{"description":"True keeps parcels whose owner mailing address the delivery marks vacant.","type":"boolean"}},"additionalProperties":false},"building":{"description":"The structure.","type":"object","properties":{"beds":{"description":"Bedrooms, as an inclusive min / max range.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":50},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":50}},"additionalProperties":false},"baths":{"description":"Bathrooms, as an inclusive min / max range.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"number"},"max":{"description":"Inclusive upper bound.","type":"number"}},"additionalProperties":false},"sqft":{"description":"The living area, square feet.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":1000000},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":1000000}},"additionalProperties":false},"year_built":{"description":"Year built.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":1600,"maximum":2100},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":1600,"maximum":2100}},"additionalProperties":false},"stories":{"description":"Stories, as an inclusive min / max range.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"number"},"max":{"description":"Inclusive upper bound.","type":"number"}},"additionalProperties":false},"pool":{"description":"True keeps parcels with a private pool.","type":"boolean"},"garage":{"description":"True keeps parcels with at least one garage space.","type":"boolean"},"condition":{"description":"Assessor condition labels to keep.","minItems":1,"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}}},"additionalProperties":false},"lot":{"description":"The lot: size and zoning.","type":"object","properties":{"acres":{"description":"Lot size, acres.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"number"},"max":{"description":"Inclusive upper bound.","type":"number"}},"additionalProperties":false},"sqft":{"description":"Lot size, square feet.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"zoning":{"description":"Zoning codes to keep.","minItems":1,"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}}},"additionalProperties":false},"legal":{"description":"Legal description keys.","type":"object","properties":{"subdivision":{"description":"Subdivision name contains this text, case-insensitive.","type":"string","minLength":2,"maxLength":80}},"additionalProperties":false},"owner":{"description":"The current owner: the facts, and the portfolio filters from the Owner Profile block.","type":"object","properties":{"kind":{"description":"Owner kinds to keep.","minItems":1,"type":"array","items":{"type":"string","enum":["PERSON","TRUST","ENTITY","PUBLIC_INSTITUTIONAL"],"description":"Kind of the owner at the deed data end: PERSON, TRUST, ENTITY or PUBLIC_INSTITUTIONAL (a public body)."}},"owner_occupied":{"description":"True keeps owner-occupied parcels. False keeps the rest.","type":"boolean"},"absentee":{"description":"True keeps absentee owners.","type":"boolean"},"is_trust":{"description":"True keeps trust-owned parcels.","type":"boolean"},"is_public":{"description":"True keeps public-body owners. False excludes them. The default excludes nothing.","type":"boolean"},"mailing_state":{"description":"Owner mailing states to keep, 2 letters each.","minItems":1,"maxItems":60,"type":"array","items":{"type":"string","minLength":2,"maxLength":2}},"out_of_state":{"description":"True keeps owners whose mailing state differs from the parcel's state.","type":"boolean"},"held_since":{"description":"When the current ownership started.","type":"object","properties":{"min":{"description":"On or after, YYYY-MM-DD.","type":"string"},"max":{"description":"On or before, YYYY-MM-DD.","type":"string"}},"additionalProperties":false},"portfolio_count":{"description":"Properties the owner holds (Owner Profile block).","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"portfolio_equity":{"description":"The owner's total estimated equity, dollars.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"portfolio_mortgages":{"description":"The owner's open mortgage count.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"sale":{"description":"The last sale as the deed feed summarises it.","type":"object","properties":{"last_sale_date":{"description":"The last sale date.","type":"object","properties":{"min":{"description":"On or after, YYYY-MM-DD.","type":"string"},"max":{"description":"On or before, YYYY-MM-DD.","type":"string"}},"additionalProperties":false},"last_sale_price":{"description":"The last sale price, dollars.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"price_per_sqft":{"description":"Last sale price per living square foot.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"number"},"max":{"description":"Inclusive upper bound.","type":"number"}},"additionalProperties":false},"document_type":{"description":"Deed types to keep, as the feed writes them.","minItems":1,"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"cash_sale":{"description":"True keeps last sales with a price and no recorded purchase mortgage (the cash_sale_proxy flag). The API answers 422 cash_sale_unavailable when a market of the location does not measure it (meta.coverage[].parcel.sale_mortgage_measured false).","type":"boolean"}},"additionalProperties":false},"tax":{"description":"Assessment and tax.","type":"object","properties":{"assessed_value":{"description":"Total assessed value, dollars.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"market_value":{"description":"The assessor's total market value, dollars.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"tax_amount":{"description":"Annual tax, dollars.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"delinquent":{"description":"True keeps parcels with a delinquent tax year on the roll.","type":"boolean"},"exemptions":{"description":"Keep parcels carrying any of these exemptions.","minItems":1,"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}}},"additionalProperties":false},"listing":{"description":"The newest MLS record the listing feed carries.","type":"object","properties":{"status":{"description":"Feed statuses to keep, for example [\"Active\", \"Pending\"].","minItems":1,"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"price":{"description":"List price, dollars.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"listed_since":{"description":"Original listing date on or after this date.","type":"string"},"sold_since":{"description":"Sold date on or after this date.","type":"string"},"is_rental":{"description":"True keeps rental listings. False keeps sale listings.","type":"boolean"}},"additionalProperties":false},"valuation":{"description":"The AVM block (dated).","type":"object","properties":{"estimated_value":{"description":"AVM, dollars (dated).","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"equity_percent":{"description":"Equity percent (dated).","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"number"},"max":{"description":"Inclusive upper bound.","type":"number"}},"additionalProperties":false},"ltv":{"description":"Loan-to-value percent (dated).","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"number"},"max":{"description":"Inclusive upper bound.","type":"number"}},"additionalProperties":false},"equity_balance":{"description":"Equity balance, dollars (dated).","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"financing":{"description":"The open liens and the last recorded mortgage (dated).","type":"object","properties":{"open_lien_count":{"description":"Open liens at the slice date (dated).","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":20},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":20}},"additionalProperties":false},"open_lien_balance":{"description":"Open balance, dollars (dated).","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"lender_name_contains":{"description":"The last recorded mortgage's lender name contains this text, case-insensitive (dated).","type":"string","minLength":2,"maxLength":80},"lender_id":{"description":"The last recorded mortgage's lender is this registry lender: a len_ id from /v1/lenders (dated). The API matches on the id that every spelling of the lender folds to. So a renamed or truncated spelling is the same filter. The API answers 400 when no market of the location has a lender registry (meta.coverage[].lenders null).","type":"string","pattern":"^len_[0-9a-f]{12}$"},"lender_class":{"description":"Lender classes of the last recorded mortgage to keep (dated).","minItems":1,"type":"array","items":{"type":"string","enum":["BANK","NONBANK","PRIVATE","INDIVIDUAL","GOVERNMENT"],"description":"How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body."}},"has_heloc":{"description":"True keeps parcels with an open HELOC (dated).","type":"boolean"},"free_and_clear":{"description":"True keeps parcels with zero open liens (dated).","type":"boolean"},"last_mortgage_since":{"description":"The recording date of the last recorded mortgage is on or after this date (dated).","type":"string"},"interest_rate":{"description":"The senior open lien's estimated rate, percent (dated).","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"number"},"max":{"description":"Inclusive upper bound.","type":"number"}},"additionalProperties":false}},"additionalProperties":false},"liens":{"description":"Involuntary liens (dated).","type":"object","properties":{"involuntary":{"description":"True keeps parcels with an involuntary lien on record (dated).","type":"boolean"},"count":{"description":"Involuntary liens on record (dated).","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":20},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":20}},"additionalProperties":false}},"additionalProperties":false},"permits":{"description":"The permit aggregates.","type":"object","properties":{"since":{"description":"The issue date of the newest permit is on or after this date.","type":"string"},"count_24m":{"description":"Permits issued in the 24 months before the permit snapshot date (the permit block's as_of).","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"tags":{"description":"Keep parcels with a permit that carries any of these tags, for example [\"Solar\", \"Pool and Hot Tub\"]. The API reads only the permits of the 24 months before the permit snapshot date (as_of).","minItems":1,"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"open":{"description":"True keeps parcels with a permit active or in review for more than 12 months at the permit snapshot date (as_of). False keeps parcels with none. False leaves out a parcel whose jurisdiction has unmeasured permit windows (coverage windows_measured false).","type":"boolean"},"major_work_36m":{"description":"True keeps parcels with a major-work permit in the 36 months before the permit snapshot date (as_of). False keeps parcels with none. False leaves out a parcel whose jurisdiction has unmeasured permit windows (coverage windows_measured false).","type":"boolean"},"job_value_24m":{"description":"Declared job value over the 24 months before the permit snapshot date (as_of), dollars.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"additionalProperties":false},"history":{"description":"The history summary (history ZIP set only).","type":"object","properties":{"owner_changes_3y":{"description":"Owner changes in the 3 years before the data end (history ZIP set only).","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"last_owner_change":{"description":"The week of the last owner change.","type":"object","properties":{"min":{"description":"On or after, YYYY-MM-DD.","type":"string"},"max":{"description":"On or before, YYYY-MM-DD.","type":"string"}},"additionalProperties":false},"listing_cycles_1y":{"description":"Listings started in the year before the data end (history ZIP set only).","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"price_cuts_current_listing":{"description":"Price cuts since the current listing started.","type":"object","properties":{"min":{"description":"Inclusive lower bound.","type":"integer","minimum":0,"maximum":9007199254740991},"max":{"description":"Inclusive upper bound.","type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"became_vacant_since":{"description":"The parcel became vacant in this week or later and is still vacant at the data end.","type":"string"},"delinquent_since":{"description":"The parcel went tax delinquent in this week or later and is still delinquent at the data end.","type":"string"}},"additionalProperties":false}},"additionalProperties":false,"description":"The filter groups. Every group and every field is optional. The API combines the groups with AND."},"quicklists":{"description":"Every listed quicklist must match (AND).","minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":64,"description":"A quicklist name, for example absentee-owner, free-and-clear, price-cut-listing, tired-landlord. The quicklists guide documents the list and every predicate. The API answers 400 quicklist_unavailable to an unavailable name."}},"any_quicklists":{"description":"At least one listed quicklist must match (OR).","minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":64,"description":"A quicklist name, for example absentee-owner, free-and-clear, price-cut-listing, tired-landlord. The quicklists guide documents the list and every predicate. The API answers 400 quicklist_unavailable to an unavailable name."}},"not_quicklists":{"description":"Keep parcels that match none of the listed quicklists.","minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":64,"description":"A quicklist name, for example absentee-owner, free-and-clear, price-cut-listing, tired-landlord. The quicklists guide documents the list and every predicate. The API answers 400 quicklist_unavailable to an unavailable name."}},"datasets":{"description":"Which blocks each row carries: core, owner, owner_profile, sale, tax, listing, valuation, financing, permits, history, quicklists. Default: core, owner, sale, tax, listing. The valuation and financing blocks are dated (meta.dated[]). The API answers 400 dataset_unavailable to an unavailable name.","minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":32,"description":"Which blocks each row carries: core, owner, owner_profile, sale, tax, listing, valuation, financing, permits, history, quicklists. Default: core, owner, sale, tax, listing. The valuation and financing blocks are dated (meta.dated[]). The API answers 400 dataset_unavailable to an unavailable name."}},"require_current":{"default":false,"description":"With true, the API answers 422 dated_refused when the request filters on, sorts by or returns a dated block (valuation, financing, liens). Default false: the API serves dated blocks and stamps them in meta.dated[].","type":"boolean"},"sort":{"type":"string","enum":["distance","id","last_sale_date_desc","last_sale_date_asc","last_owner_change_desc","equity_percent_desc","equity_percent_asc","listing_price_asc","listing_price_desc","avm_desc","year_built_desc","year_built_asc","sqft_desc","last_permit_desc"],"description":"Row order, null values last on every sort. distance: nearest first, the default with a point or a property_id. The sort id orders rows by market then id, the primary key order: stable and fast over any location, the default otherwise. The sorts last_sale_date_desc and last_sale_date_asc order by the last sale date, listing_price_asc and listing_price_desc by the list price. The sort last_owner_change_desc puts the history ZIP set first and the others last. The sorts equity_percent_desc, equity_percent_asc and avm_desc are dated (meta.dated[]). The sorts year_built_desc, year_built_asc, sqft_desc and last_permit_desc order by year built, the living area and the newest permit."},"limit":{"default":100,"description":"Page size, 1-500 (default 100).","type":"integer","minimum":1,"maximum":500},"cursor":{"description":"Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1.","type":"string","minLength":1,"maxLength":4096},"count_only":{"default":false,"description":"True returns the count of matching parcels in summary.total and no rows.","type":"boolean"}},"required":["location"],"additionalProperties":false}}}},"parameters":[],"responses":{"200":{"description":"One page of parcels that match the location, filters and quicklists, in the requested sort, with the cursor for the next page. With count_only the response has no rows and carries summary.total.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ParcelSearchRow"},"description":"The rows of this page."},"page":{"$ref":"#/components/schemas/Page"},"meta":{"$ref":"#/components/schemas/Meta"},"summary":{"$ref":"#/components/schemas/ParcelSearchSummary"}},"required":["data","page","meta","summary"],"additionalProperties":false,"description":"One page of parcels that match the location, filters and quicklists, in the requested sort, with the cursor for the next page. With count_only the response has no rows and carries summary.total."},"example":{"data":[{"id":"prop_e93c776c53354a88de4e58448a6bf21b","market":"phx","distance_miles":0,"address":{"street":"7436 E Virginia Ave","unit":null,"city":"SCOTTSDALE","state":"AZ","zip":"85257","county_fips":"04013","apn":"131-28-253","latitude":33.476917,"longitude":-111.920385,"census_tract":"040132179.002006","school_district":"Scottsdale Unified District"},"general":{"segment":"SFR","property_type_category":"Residential","property_type_detail":"Single Family","land_use_code":"R2","vacant":false,"mailing_address_vacant":false,"parcel_count":1},"building":{"bedrooms":3,"bathrooms":2,"sqft":1409,"total_building_sqft":1409,"year_built":1959,"effective_year_built":1959,"stories":1,"pool":true,"garage_spaces":2,"building_condition":"Average","construction_type":"Concrete Block","building_count":1,"unit_count":1,"fireplace_count":1,"roof_type":null,"heat_source":"Yes","ac_source":"Refrigeration"},"lot":{"lot_sqft":6938,"lot_acres":0.159,"zoning_code":"R-7","subdivision":"CAVALIER VISTA 4A","section_township_range":"SEC 35 TWN 2N RNG 4E"},"owner":{"kind":"PERSON","owner_occupied":false,"absentee":true,"is_trust":false,"is_public":false,"holding_kind":"ABSENTEE_INDIVIDUAL","held_since":"2023-03-03","mailing_state":"NY","profile":null},"sale":{"last_sale_date":"2023-03-03","last_sale_recording_date":"2023-03-03","last_sale_price":735000,"last_sale_document_type":"Warranty Deed","last_sale_transaction_type":"New construction residential transactions","last_sale_price_per_sqft":522,"last_sale_mortgage_amount":null,"last_sale_lender":null,"cash_sale_proxy":null,"prior_sale_date":"2022-07-15","prior_sale_price":585000,"last_purchase_date":"2023-03-03","last_purchase_price":735000},"tax":{"assessed_total":51800,"assessed_land":null,"assessed_improvement":null,"assessment_year":2026,"market_value_total":518000,"tax_amount":1321,"tax_year":2025,"tax_delinquent_year":null,"tax_exemptions":null},"listing":{"status":"Sold","status_category":"Sold","price":null,"listed_on":"2022-12-22","status_updated_on":null,"sold_on":"2023-03-03","sold_price":735000,"is_rental":false,"mls_number":null,"brokerage":null},"valuation":null,"financing":null,"permits":null,"history":null,"quicklists":null},{"id":"prop_5398c4996bbcf9bc93d181af1395b093","market":"phx","distance_miles":0.01,"address":{"street":"7430 E Virginia Ave","unit":null,"city":"SCOTTSDALE","state":"AZ","zip":"85257","county_fips":"04013","apn":"131-28-254","latitude":33.476936,"longitude":-111.920598,"census_tract":"040132179.002006","school_district":"Scottsdale Unified District"},"general":{"segment":"SFR","property_type_category":"Residential","property_type_detail":"Single Family","land_use_code":"R2","vacant":false,"mailing_address_vacant":false,"parcel_count":1},"building":{"bedrooms":3,"bathrooms":2,"sqft":1428,"total_building_sqft":1428,"year_built":1959,"effective_year_built":1959,"stories":1,"pool":true,"garage_spaces":2,"building_condition":"Average","construction_type":"Concrete Block","building_count":1,"unit_count":1,"fireplace_count":0,"roof_type":null,"heat_source":"Yes","ac_source":"Refrigeration"},"lot":{"lot_sqft":6177,"lot_acres":0.142,"zoning_code":"R-7","subdivision":"CAVALIER VISTA 4A","section_township_range":"SEC 35 TWN 2N RNG 4E"},"owner":{"kind":"PERSON","owner_occupied":true,"absentee":false,"is_trust":false,"is_public":false,"holding_kind":"OWNER_OCCUPIED","held_since":"2022-06-09","mailing_state":"AZ","profile":null},"sale":{"last_sale_date":"2022-06-09","last_sale_recording_date":"2022-06-15","last_sale_price":650000,"last_sale_document_type":"Warranty Deed","last_sale_transaction_type":"Arms-length residential transactions (purchase/resales)","last_sale_price_per_sqft":455,"last_sale_mortgage_amount":null,"last_sale_lender":null,"cash_sale_proxy":null,"prior_sale_date":null,"prior_sale_price":79000,"last_purchase_date":"2022-06-09","last_purchase_price":650000},"tax":{"assessed_total":47260,"assessed_land":null,"assessed_improvement":null,"assessment_year":2026,"market_value_total":472600,"tax_amount":1548,"tax_year":2025,"tax_delinquent_year":null,"tax_exemptions":null},"listing":{"status":"Off Market","status_category":"Failed","price":649999,"listed_on":"2025-04-16","status_updated_on":"2025-04-16","sold_on":"2022-06-17","sold_price":650000,"is_rental":false,"mls_number":null,"brokerage":null},"valuation":null,"financing":null,"permits":null,"history":null,"quicklists":null},{"id":"prop_2a3aa3e08680f3b9a838e58c6e8081e9","market":"phx","distance_miles":0.01,"address":{"street":"7442 E Virginia Ave","unit":null,"city":"SCOTTSDALE","state":"AZ","zip":"85257","county_fips":"04013","apn":"131-28-252","latitude":33.476909,"longitude":-111.920155,"census_tract":"040132179.002006","school_district":"Scottsdale Unified District"},"general":{"segment":"SFR","property_type_category":"Residential","property_type_detail":"Single Family","land_use_code":"R2","vacant":false,"mailing_address_vacant":false,"parcel_count":1},"building":{"bedrooms":null,"bathrooms":2,"sqft":1375,"total_building_sqft":1375,"year_built":1959,"effective_year_built":1959,"stories":1,"pool":null,"garage_spaces":2,"building_condition":"Average","construction_type":"Concrete Block","building_count":1,"unit_count":1,"fireplace_count":null,"roof_type":null,"heat_source":"Yes","ac_source":"Refrigeration"},"lot":{"lot_sqft":6943,"lot_acres":0.159,"zoning_code":"R-7","subdivision":"CAVALIER VISTA 4A","section_township_range":"SEC 35 TWN 2N RNG 4E"},"owner":{"kind":"PERSON","owner_occupied":true,"absentee":false,"is_trust":false,"is_public":false,"holding_kind":"OWNER_OCCUPIED","held_since":"2005-02-15","mailing_state":"AZ","profile":null},"sale":{"last_sale_date":null,"last_sale_recording_date":null,"last_sale_price":null,"last_sale_document_type":null,"last_sale_transaction_type":null,"last_sale_price_per_sqft":null,"last_sale_mortgage_amount":null,"last_sale_lender":null,"cash_sale_proxy":null,"prior_sale_date":null,"prior_sale_price":null,"last_purchase_date":null,"last_purchase_price":null},"tax":{"assessed_total":45870,"assessed_land":null,"assessed_improvement":null,"assessment_year":2026,"market_value_total":458700,"tax_amount":1228,"tax_year":2025,"tax_delinquent_year":null,"tax_exemptions":null},"listing":{"status":"Off Market","status_category":"Off Market","price":null,"listed_on":null,"status_updated_on":null,"sold_on":null,"sold_price":null,"is_rental":false,"mls_number":null,"brokerage":null},"valuation":null,"financing":null,"permits":null,"history":null,"quicklists":null}],"page":{"next_cursor":"eyJ2IjoxLCJydW4iOiIxNzg5NTc0MjY4IiwicSI6ImNiMzdhYTZjZDI0ZWYxYWY4Nzk4YTk5Y2I1MGFiMjAxYzc4YzBkMjAyZGNjMDhlNjg5YTdjMjkzMWU5ZDBkYTQiLCJrIjpbMjEuMzUwNzQ1NjY1ODUwNTQzLCIyYTNhYTNlMDg2ODBmM2I5YTgzOGU1OGM2ZTgwODFlOSJdfQ","limit":3,"returned":3},"meta":{"generated_at":"2026-09-16T21:00:00.000Z","reference_point":{"lat":33.476917,"lng":-111.920385},"geometry":{"kind":"radius","lat":33.476917,"lng":-111.920385,"radius_miles":2,"bbox":null,"property_id":null,"zip":null,"city":null},"coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-27","build_run_id":3,"registry_run":11,"registry_version":"v6-auction","dataset_version":1789574268,"loaded_at":"2026-09-16T15:57:47.926Z","metro_buy_to_resale_ratio":0.719,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836311,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":"2026-08-27","address_as_of":"2026-08-27","parcel":{"parcel_as_of":"2026-08-27","n_parcels":1836311,"sale_mortgage_measured":false,"financing":{"as_of":"2026-06-25","dated":true,"dated_reason":"dataset not in current delivery","n_parcels":1611957,"n_with_open_lien":1032808,"n_free_and_clear":579149,"n_avm":1528967,"n_involuntary":192400,"n_lenders":76212},"permits":{"as_of":"2026-09-01","n_permits":2377496,"n_parcels":663045,"n_unmatched":355,"jurisdictions":[{"jurisdiction":"PHOENIX","n_permits":795764,"last_issue_date":"2026-05-11","windows_measured":null},{"jurisdiction":"MESA","n_permits":330809,"last_issue_date":"2026-05-29","windows_measured":null}]},"owner_profile":{"as_of":"2026-09-09","n_parcels":1611077,"n_multi":646963,"n_portfolio_5":277841},"history":{"first_week":"2025-07-24","last_week":"2026-09-09","zips":["85251"],"n_parcels":18774,"n_events":236022,"n_weeks":62,"domains":{"tax":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":18597},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":17615},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1700},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":21122},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2128},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2583},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25","n_events":6420},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1297},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":3238},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2548},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25","n_events":83657},"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":16450},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":58404},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":263}}}},"lenders":{"as_of":"2026-06-25","recordings_through":"2026-06-11","counties":["04013"],"history_capture_share":0.183706,"n_lender_ids":32046,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false,"dated":true,"n_parcels_uncovered":224192}}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"},"summary":{"total":null,"datasets":["core","owner","sale","tax","listing"],"dated_filters":[]}}}},"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"},"X-Credits-Charged":{"$ref":"#/components/headers/X-Credits-Charged"},"X-Credits-Remaining":{"$ref":"#/components/headers/X-Credits-Remaining"}}},"400":{"description":"Bad request (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"dataset_unavailable":{"summary":"Dataset unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#dataset_unavailable","title":"Dataset unavailable","status":400,"code":"dataset_unavailable","detail":"demographic is not a block this API serves (demographics).","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"datasets","message":"demographic needs demographics","code":"dataset_unavailable"}]}},"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"quicklist_unavailable":{"summary":"Quicklist unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quicklist_unavailable","title":"Quicklist unavailable","status":400,"code":"quicklist_unavailable","detail":"notice-of-default needs pre-foreclosure notices, which no delivery carries.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"quicklists","message":"notice-of-default needs pre-foreclosure notices","code":"quicklist_unavailable"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/properties/search","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":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/search","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":"/v1/properties/search","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":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"410":{"description":"Gone: a retired investor, agent or lender id, with superseded_by (gone)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"gone":{"summary":"Gone","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#gone","title":"Gone","status":410,"code":"gone","detail":"The registry retired investor inv_003c1db2782c in run 8 (RETIRED). No current investor holds its names. Use /v1/investors/search instead.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","superseded_by":null,"reason":"RETIRED","market":"phx"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"cash_sale_unavailable":{"summary":"Cash sale proxy unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#cash_sale_unavailable","title":"Cash sale proxy unavailable","status":422,"code":"cash_sale_unavailable","detail":"The delivery records a purchase mortgage on fewer than one priced last sale in five of phx. So meta.coverage[].parcel.sale_mortgage_measured is false and cash_sale_proxy is null on every parcel there.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"quicklists","message":"cash sale proxy not measured for phx","code":"cash_sale_unavailable"}]}},"dated_refused":{"summary":"Dated data refused","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#dated_refused","title":"Dated data refused","status":422,"code":"dated_refused","detail":"require_current is true and the request reads dated blocks: filters.financing, datasets valuation. The financing, lien and valuation data is a snapshot valued at 2026-06-25.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","as_of":"2026-06-25","errors":[{"param":"filters.financing","message":"reads the dated financing slice","code":"dated"},{"param":"datasets","message":"valuation is a dated block","code":"dated"}]}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"parcels_unavailable":{"summary":"Parcel products unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#parcels_unavailable","title":"Parcel products unavailable","status":422,"code":"parcels_unavailable","detail":"Market hou has no published parcel product tables (meta.coverage[].parcel is null). The location matches no market that carries them.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/properties/search","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":"/v1/properties/search","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":"/v1/properties/search","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, ledger_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":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/properties/search","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":"/v1/properties/search","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/properties/{property_id}/financing":{"get":{"operationId":"getFinancing","summary":"Read the financing, liens and valuation of a parcel (dated)","tags":["properties"],"description":"The financing of one parcel at the slice date: the AVM with equity and LTV, every open lien with its lender, balance and rate. Also the recorded mortgage history and the involuntary liens.\n\nDated: valued at the last delivery that carried the Recorder & Mortgage and AVM datasets, stamped in `meta.dated[]`. With `require_current=true` the API refuses instead. This host does not serve borrower and lien party names: the records omit them.\n\n[Lender classes, the dated rule and what each block means](https://developers.investorlift.com/api-reference/endpoints/properties-financing).","parameters":[{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"require_current","required":false,"description":"With true the API refuses the request with 422 dated_refused while the financing slice is a dated snapshot. With the default false the API serves the slice with meta.dated[]."},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"property_id","required":true,"description":"Parcel id, `prop_<32 hex>`, from /v1/properties/resolve or any deal's property.id. The prefix is part of the id (400 invalid_id otherwise)."}],"responses":{"200":{"description":"The financing, liens and valuation of one parcel, dated.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Financing"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The financing, liens and valuation of one parcel, dated."},"example":{"data":{"property_id":"prop_e93c776c53354a88de4e58448a6bf21b","as_of":"2026-06-25","dated":true,"valuation":{"as_of":"2026-06-25","estimated_value":762815,"range_low":701789,"range_high":823840,"confidence":92,"avm_date":"2026-04-08","equity_balance":762815,"equity_percent":100,"ltv":0},"summary":{"as_of":"2026-06-25","open_lien_count":0,"open_lien_balance":null,"first_lien_lender":null,"first_lien_lender_class":null,"first_lien_rate":null,"first_lien_balance":null,"has_heloc":false,"cash_purchase":null,"free_and_clear":true,"involuntary_lien_count":1,"last_mortgage_recording_date":null,"last_mortgage_lender":null,"last_mortgage_lender_class":null,"last_mortgage_amount":null,"last_mortgage_rate":null,"first_lien_lender_id":null,"last_mortgage_lender_id":null},"open_liens":[],"mortgage_history":[],"involuntary_liens":[{"position":1,"lien_type":"Economic Lien","document_type":"Financing Statement","document_number":"20230447028","recording_date":"2023-08-25","filing_date":null,"lien_amount":null,"judgement_amount":null,"tax_period_end_date":null}]},"meta":{"generated_at":"2026-09-16T21:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-27","build_run_id":3,"registry_run":11,"registry_version":"v6-auction","dataset_version":1789574268,"loaded_at":"2026-09-16T15:57:47.926Z","metro_buy_to_resale_ratio":0.719,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836311,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":"2026-08-27","address_as_of":"2026-08-27","parcel":{"parcel_as_of":"2026-08-27","n_parcels":1836311,"sale_mortgage_measured":false,"financing":{"as_of":"2026-06-25","dated":true,"dated_reason":"dataset not in current delivery","n_parcels":1611957,"n_with_open_lien":1032808,"n_free_and_clear":579149,"n_avm":1528967,"n_involuntary":192400,"n_lenders":76212},"permits":{"as_of":"2026-09-01","n_permits":2377496,"n_parcels":663045,"n_unmatched":355,"jurisdictions":[{"jurisdiction":"PHOENIX","n_permits":795764,"last_issue_date":"2026-05-11","windows_measured":null},{"jurisdiction":"MESA","n_permits":330809,"last_issue_date":"2026-05-29","windows_measured":null}]},"owner_profile":{"as_of":"2026-09-09","n_parcels":1611077,"n_multi":646963,"n_portfolio_5":277841},"history":{"first_week":"2025-07-24","last_week":"2026-09-09","zips":["85251"],"n_parcels":18774,"n_events":236022,"n_weeks":62,"domains":{"tax":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":18597},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":17615},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1700},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":21122},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2128},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2583},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25","n_events":6420},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1297},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":3238},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2548},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25","n_events":83657},"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":16450},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":58404},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":263}}}},"lenders":{"as_of":"2026-06-25","recordings_through":"2026-06-11","counties":["04013"],"history_capture_share":0.183706,"n_lender_ids":32046,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false,"dated":true,"n_parcels_uncovered":224192}}],"dated":[{"block":"financing","as_of":"2026-06-25","reason":"dataset not in current delivery"},{"block":"liens","as_of":"2026-06-25","reason":"dataset not in current delivery"},{"block":"valuation","as_of":"2026-06-25","reason":"dataset not in current delivery"}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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"},"X-Credits-Charged":{"$ref":"#/components/headers/X-Credits-Charged"},"X-Credits-Remaining":{"$ref":"#/components/headers/X-Credits-Remaining"}}},"400":{"description":"Bad request (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/properties/{property_id}/financing","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":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/{property_id}/financing","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":"/v1/properties/{property_id}/financing","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":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"dated_refused":{"summary":"Dated data refused","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#dated_refused","title":"Dated data refused","status":422,"code":"dated_refused","detail":"require_current is true and the request reads dated blocks: filters.financing, datasets valuation. The financing, lien and valuation data is a snapshot valued at 2026-06-25.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","as_of":"2026-06-25","errors":[{"param":"filters.financing","message":"reads the dated financing slice","code":"dated"},{"param":"datasets","message":"valuation is a dated block","code":"dated"}]}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"parcels_unavailable":{"summary":"Parcel products unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#parcels_unavailable","title":"Parcel products unavailable","status":422,"code":"parcels_unavailable","detail":"Market hou has no published parcel product tables (meta.coverage[].parcel is null). The location matches no market that carries them.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/properties/{property_id}/financing","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":"/v1/properties/{property_id}/financing","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":"/v1/properties/{property_id}/financing","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, ledger_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":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/properties/{property_id}/financing","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":"/v1/properties/{property_id}/financing","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/properties/{property_id}/permits":{"get":{"operationId":"getPermits","summary":"List the building permits on a parcel","tags":["properties"],"description":"Every building permit on one parcel from the jurisdictions' own rolls, newest first. Each row carries the normalised work tags, the dates, the job value and the aggregates the search filters read.\n\nThe API never serves applicant names, phones and addresses. A parcel with no permit answers with an empty list and a null summary.\n\n[Tags, statuses and coverage by jurisdiction](https://developers.investorlift.com/api-reference/endpoints/properties-permits).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"property_id","required":true,"description":"Parcel id, `prop_<32 hex>`, from /v1/properties/resolve or any deal's property.id. The prefix is part of the id (400 invalid_id otherwise)."}],"responses":{"200":{"description":"The permits of one parcel.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Permits"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The permits of one parcel."},"example":{"data":{"property_id":"prop_e93c776c53354a88de4e58448a6bf21b","as_of":"2026-09-01","summary":null,"permits":[]},"meta":{"generated_at":"2026-09-16T21:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-27","build_run_id":3,"registry_run":11,"registry_version":"v6-auction","dataset_version":1789574268,"loaded_at":"2026-09-16T15:57:47.926Z","metro_buy_to_resale_ratio":0.719,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836311,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":"2026-08-27","address_as_of":"2026-08-27","parcel":{"parcel_as_of":"2026-08-27","n_parcels":1836311,"sale_mortgage_measured":false,"financing":{"as_of":"2026-06-25","dated":true,"dated_reason":"dataset not in current delivery","n_parcels":1611957,"n_with_open_lien":1032808,"n_free_and_clear":579149,"n_avm":1528967,"n_involuntary":192400,"n_lenders":76212},"permits":{"as_of":"2026-09-01","n_permits":2377496,"n_parcels":663045,"n_unmatched":355,"jurisdictions":[{"jurisdiction":"PHOENIX","n_permits":795764,"last_issue_date":"2026-05-11","windows_measured":null},{"jurisdiction":"MESA","n_permits":330809,"last_issue_date":"2026-05-29","windows_measured":null}]},"owner_profile":{"as_of":"2026-09-09","n_parcels":1611077,"n_multi":646963,"n_portfolio_5":277841},"history":{"first_week":"2025-07-24","last_week":"2026-09-09","zips":["85251"],"n_parcels":18774,"n_events":236022,"n_weeks":62,"domains":{"tax":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":18597},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":17615},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1700},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":21122},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2128},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2583},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25","n_events":6420},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1297},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":3238},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2548},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25","n_events":83657},"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":16450},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":58404},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":263}}}},"lenders":{"as_of":"2026-06-25","recordings_through":"2026-06-11","counties":["04013"],"history_capture_share":0.183706,"n_lender_ids":32046,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false,"dated":true,"n_parcels_uncovered":224192}}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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"},"X-Credits-Charged":{"$ref":"#/components/headers/X-Credits-Charged"},"X-Credits-Remaining":{"$ref":"#/components/headers/X-Credits-Remaining"}}},"400":{"description":"Bad request (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/properties/{property_id}/permits","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":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/{property_id}/permits","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":"/v1/properties/{property_id}/permits","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":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"parcels_unavailable":{"summary":"Parcel products unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#parcels_unavailable","title":"Parcel products unavailable","status":422,"code":"parcels_unavailable","detail":"Market hou has no published parcel product tables (meta.coverage[].parcel is null). The location matches no market that carries them.","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/properties/{property_id}/permits","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":"/v1/properties/{property_id}/permits","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":"/v1/properties/{property_id}/permits","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, ledger_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":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/properties/{property_id}/permits","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":"/v1/properties/{property_id}/permits","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/properties/{property_id}/history":{"get":{"operationId":"getHistory","summary":"Read what changed on a parcel, week by week","tags":["properties"],"description":"What changed on one parcel, week by week, since the history lake began. Owner changes with their deed, listing moves, assessment and tax changes, vacancy, and the financing events of the dated window. Each has the values before and after.\n\nOnly parcels in the lake's ZIP codes have a timeline (`meta.coverage[].parcel.history.zips`), and the rest answer 422 history_unavailable. This host does not serve person-naming columns: the payloads omit them.\n\n[Event kinds, gaps and coverage by domain](https://developers.investorlift.com/api-reference/endpoints/properties-history).","parameters":[{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["ownership","mailing","occupancy","vacancy","classification","structure","assessment","tax","sale","deed","listing","owner_profile","valuation","financing"],"description":"The domain of the weekly file an event comes from."}},"in":"query","name":"domains","required":false,"description":"Keep events of these domains only (comma list or repeated key)."},{"schema":{"type":"string"},"in":"query","name":"since","required":false,"description":"Keep events seen in this week or later, YYYY-MM-DD."},{"schema":{"default":200,"type":"integer","minimum":1,"maximum":500},"in":"query","name":"limit","required":false,"description":"Page size, 1-500 (default 200)."},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"property_id","required":true,"description":"Parcel id, `prop_<32 hex>`, from /v1/properties/resolve or any deal's property.id. The prefix is part of the id (400 invalid_id otherwise)."}],"responses":{"200":{"description":"The history of one parcel.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PropertyHistory"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The history of one parcel."},"example":{"data":{"property_id":"prop_5fd69b38fbb3dba53367a0130dac9b5e","coverage":{"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09"},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09"},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09"},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25"},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09"},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09"},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09"},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09"},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09"},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09"},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09"},"tax":{"first_week":"2025-07-24","last_week":"2026-09-09"},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09"},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25"}},"summary":{"first_week":"2025-11-06","last_week":"2026-09-09","n_events":36,"owner_changes_3y":1,"last_owner_change":"2026-09-09","listing_cycles_1y":3,"price_cuts_current_listing":1,"vacant_since":null,"delinquent_since":null},"events":[{"id":"54d240f268a2d69b7381c821fd58bb5f","week":"2026-09-09","domain":"deed","kind":"deed","before":{"deedHistory_1_reoSale":null,"deedHistory_1_saleDate":"2023-10-18","deedHistory_1_salePrice":"380000","deedHistory_1_foreclosure":null,"deedHistory_1_interFamily":null,"deedHistory_1_documentType":"Warranty Deed","deedHistory_1_recordingDate":"2023-10-18","deedHistory_1_documentNumber":"2023.541090","deedHistory_1_newConstruction":null,"deedHistory_1_buyerMailingAddress_hash":"031817c9479df161ba5d0cc02783fc2d"},"after":{"deedHistory_1_reoSale":null,"deedHistory_1_saleDate":"2026-08-24","deedHistory_1_salePrice":"344000","deedHistory_1_foreclosure":null,"deedHistory_1_interFamily":null,"deedHistory_1_documentType":"Warranty Deed","deedHistory_1_recordingDate":"2026-08-25","deedHistory_1_documentNumber":"2026.501339","deedHistory_1_newConstruction":null,"deedHistory_1_buyerMailingAddress_hash":"3cb7fe177756396a095400d35ee5a538"},"deed":null,"span_weeks":1},{"id":"29a8d737eb86714729dadeb3f56517e3","week":"2026-09-09","domain":"listing","kind":"delist","before":{"listing_price":"350000","listing_rental":"false","listing_status":"Pending","listing_soldDate":null,"listing_listingId":null,"listing_soldPrice":null,"listing_rentalPrice":null,"listing_listingNumber":"7043339","listing_statusSubtype":"Unknown","listing_listingCategory":null,"listing_statusUpdatedAt":"2026-08-13T00:00:00.000Z","listing_originalListingDate":"2026-06-19"},"after":{"listing_price":"350000","listing_rental":"false","listing_status":"Off Market","listing_soldDate":"2023-10-18","listing_listingId":null,"listing_soldPrice":"380000","listing_rentalPrice":null,"listing_listingNumber":"7043339","listing_statusSubtype":null,"listing_listingCategory":null,"listing_statusUpdatedAt":"2026-07-06T00:00:00.000Z","listing_originalListingDate":"2026-06-12"},"deed":null,"span_weeks":1},{"id":"64d8413a87464adc8fa20019c2568a6e","week":"2026-09-09","domain":"mailing","kind":"mailing_change","before":{"owner_mailingAddress_hash":"031817c9479df161ba5d0cc02783fc2d"},"after":{"owner_mailingAddress_hash":"3cb7fe177756396a095400d35ee5a538"},"deed":null,"span_weeks":1},{"id":"7faafc3f8109b978083a71dffde06096","week":"2026-09-09","domain":"occupancy","kind":"occupancy_change","before":{"owner_ownerOccupied":"true"},"after":{"owner_ownerOccupied":"false"},"deed":null,"span_weeks":1},{"id":"d1c7c5d797e4f91d5614ef0e95f20f4b","week":"2026-09-09","domain":"owner_profile","kind":"portfolio_change","before":{"propertyOwnerProfile_mortgagesCount":"1","propertyOwnerProfile_propertiesCount":"1","propertyOwnerProfile_averageYearBuilt":"1997","propertyOwnerProfile_totalPurchasePrice":"380000","propertyOwnerProfile_averagePurchasePrice":"380000","propertyOwnerProfile_mortgagesTotalBalance":"350187","propertyOwnerProfile_propertiesTotalEquity":"-1410","propertyOwnerProfile_mortgagesAverageBalance":"350187","propertyOwnerProfile_propertiesTotalEstimatedValue":"348777"},"after":{"propertyOwnerProfile_mortgagesCount":"0","propertyOwnerProfile_propertiesCount":"1","propertyOwnerProfile_averageYearBuilt":"1997","propertyOwnerProfile_totalPurchasePrice":"344000","propertyOwnerProfile_averagePurchasePrice":"344000","propertyOwnerProfile_mortgagesTotalBalance":"0","propertyOwnerProfile_propertiesTotalEquity":"348851","propertyOwnerProfile_mortgagesAverageBalance":"0","propertyOwnerProfile_propertiesTotalEstimatedValue":"348851"},"deed":null,"span_weeks":1},{"id":"b0a5efe9c0e08d057ba2cd165a21f3c5","week":"2026-09-09","domain":"ownership","kind":"owner_change","before":{"owner_ownershipRights":"Unmarried Man","owner_ownershipStartDate":"2023-10-18","owner_lengthOfResidenceMonths":"34"},"after":{"owner_ownershipRights":"Single woman","owner_ownershipStartDate":"2026-08-25","owner_lengthOfResidenceMonths":"0"},"deed":{"deedHistory_1_reoSale":null,"deedHistory_1_saleDate":"2026-08-24","deedHistory_1_salePrice":"344000","deedHistory_1_foreclosure":null,"deedHistory_1_interFamily":null,"deedHistory_1_documentType":"Warranty Deed","deedHistory_1_recordingDate":"2026-08-25","deedHistory_1_documentNumber":"2026.501339","deedHistory_1_newConstruction":null,"deedHistory_1_buyerMailingAddress_hash":"3cb7fe177756396a095400d35ee5a538"},"span_weeks":1},{"id":"dcce9173a0f5acfba074649b1bdb9c6c","week":"2026-09-09","domain":"sale","kind":"sale","before":{"intel_lastSoldDate":"2023-10-18","intel_lastSoldPrice":"380000","sale_lastSale_price":"380000.0","sale_priorSale_price":"119397.0","sale_lastSale_saleDate":"2023-10-18","sale_priorSale_saleDate":"1998-09-24","sale_lastSale_documentType":"Warranty Deed","sale_lastSale_recordingDate":"2023-10-18","sale_lastSale_documentNumber":"541090","sale_lastSale_pricePerSquareFoot":"363"},"after":{"intel_lastSoldDate":"2026-08-24","intel_lastSoldPrice":"344000","sale_lastSale_price":"344000.0","sale_priorSale_price":"380000.0","sale_lastSale_saleDate":"2026-08-24","sale_priorSale_saleDate":"2023-10-18","sale_lastSale_documentType":"Warranty Deed","sale_lastSale_recordingDate":"2026-08-25","sale_lastSale_documentNumber":"501339","sale_lastSale_pricePerSquareFoot":"329"},"deed":null,"span_weeks":1},{"id":"dbaf964733c6aa33e9ecd0307496e16e","week":"2026-08-26","domain":"deed","kind":"deed","before":{"deedHistory_1_reoSale":null,"deedHistory_1_saleDate":"1998-09-24","deedHistory_1_salePrice":"119397","deedHistory_1_foreclosure":null,"deedHistory_1_interFamily":null,"deedHistory_1_documentType":"Cash Sale Deed","deedHistory_1_recordingDate":"1998-10-07","deedHistory_1_documentNumber":"1998.899198","deedHistory_1_newConstruction":null,"deedHistory_1_buyerMailingAddress_hash":"8d261d53a9e60df954a7bface026d9fc"},"after":{"deedHistory_1_reoSale":null,"deedHistory_1_saleDate":"2023-10-18","deedHistory_1_salePrice":"380000","deedHistory_1_foreclosure":null,"deedHistory_1_interFamily":null,"deedHistory_1_documentType":"Warranty Deed","deedHistory_1_recordingDate":"2023-10-18","deedHistory_1_documentNumber":"2023.541090","deedHistory_1_newConstruction":null,"deedHistory_1_buyerMailingAddress_hash":"031817c9479df161ba5d0cc02783fc2d"},"deed":null,"span_weeks":1},{"id":"e57bdd427a838d7c28d35dcf8674d2de","week":"2026-08-19","domain":"listing","kind":"status","before":{"listing_price":"350000","listing_rental":"false","listing_status":"Active","listing_soldDate":null,"listing_listingId":null,"listing_soldPrice":null,"listing_rentalPrice":null,"listing_listingNumber":"7043339","listing_statusSubtype":"Unknown","listing_listingCategory":null,"listing_statusUpdatedAt":"2026-06-23T18:47:52.437Z","listing_originalListingDate":"2026-06-19"},"after":{"listing_price":"350000","listing_rental":"false","listing_status":"Pending","listing_soldDate":null,"listing_listingId":null,"listing_soldPrice":null,"listing_rentalPrice":null,"listing_listingNumber":"7043339","listing_statusSubtype":"Unknown","listing_listingCategory":null,"listing_statusUpdatedAt":"2026-08-13T00:00:00.000Z","listing_originalListingDate":"2026-06-19"},"deed":null,"span_weeks":1},{"id":"de7a7fed77205ec1efd6b5ae005de136","week":"2026-07-22","domain":"listing","kind":"price_cut","before":{"listing_price":"357500","listing_rental":"false","listing_status":"Active","listing_soldDate":null,"listing_listingId":null,"listing_soldPrice":null,"listing_rentalPrice":null,"listing_listingNumber":"7043339","listing_statusSubtype":"Unknown","listing_listingCategory":null,"listing_statusUpdatedAt":"2026-06-23T18:47:52.437Z","listing_originalListingDate":"2026-06-19"},"after":{"listing_price":"350000","listing_rental":"false","listing_status":"Active","listing_soldDate":null,"listing_listingId":null,"listing_soldPrice":null,"listing_rentalPrice":null,"listing_listingNumber":"7043339","listing_statusSubtype":"Unknown","listing_listingCategory":null,"listing_statusUpdatedAt":"2026-06-23T18:47:52.437Z","listing_originalListingDate":"2026-06-19"},"deed":null,"span_weeks":1}]},"meta":{"generated_at":"2026-09-16T21:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-27","build_run_id":3,"registry_run":11,"registry_version":"v6-auction","dataset_version":1789574268,"loaded_at":"2026-09-16T15:57:47.926Z","metro_buy_to_resale_ratio":0.719,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836311,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":"2026-08-27","address_as_of":"2026-08-27","parcel":{"parcel_as_of":"2026-08-27","n_parcels":1836311,"sale_mortgage_measured":false,"financing":{"as_of":"2026-06-25","dated":true,"dated_reason":"dataset not in current delivery","n_parcels":1611957,"n_with_open_lien":1032808,"n_free_and_clear":579149,"n_avm":1528967,"n_involuntary":192400,"n_lenders":76212},"permits":{"as_of":"2026-09-01","n_permits":2377496,"n_parcels":663045,"n_unmatched":355,"jurisdictions":[{"jurisdiction":"PHOENIX","n_permits":795764,"last_issue_date":"2026-05-11","windows_measured":null},{"jurisdiction":"MESA","n_permits":330809,"last_issue_date":"2026-05-29","windows_measured":null}]},"owner_profile":{"as_of":"2026-09-09","n_parcels":1611077,"n_multi":646963,"n_portfolio_5":277841},"history":{"first_week":"2025-07-24","last_week":"2026-09-09","zips":["85251"],"n_parcels":18774,"n_events":236022,"n_weeks":62,"domains":{"tax":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":18597},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":17615},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1700},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":21122},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2128},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2583},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25","n_events":6420},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1297},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":3238},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2548},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25","n_events":83657},"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":16450},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":58404},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":263}}}},"lenders":{"as_of":"2026-06-25","recordings_through":"2026-06-11","counties":["04013"],"history_capture_share":0.183706,"n_lender_ids":32046,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false,"dated":true,"n_parcels_uncovered":224192}}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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"},"X-Credits-Charged":{"$ref":"#/components/headers/X-Credits-Charged"},"X-Credits-Remaining":{"$ref":"#/components/headers/X-Credits-Remaining"}}},"400":{"description":"Bad request (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/properties/{property_id}/history","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":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/{property_id}/history","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":"/v1/properties/{property_id}/history","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":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"history_unavailable":{"summary":"History unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#history_unavailable","title":"History unavailable","status":422,"code":"history_unavailable","detail":"The parcel is in ZIP 85257. The history lake covers 85251 for market phx (meta.coverage[].parcel.history.zips).","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","zips":["85251"]}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"parcels_unavailable":{"summary":"Parcel products unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#parcels_unavailable","title":"Parcel products unavailable","status":422,"code":"parcels_unavailable","detail":"Market hou has no published parcel product tables (meta.coverage[].parcel is null). The location matches no market that carries them.","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/properties/{property_id}/history","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":"/v1/properties/{property_id}/history","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":"/v1/properties/{property_id}/history","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, ledger_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":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/properties/{property_id}/history","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":"/v1/properties/{property_id}/history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/properties/{property_id}/listing-history":{"get":{"operationId":"getListingHistory","summary":"Read the listing cycles of a parcel","tags":["properties"],"description":"Every listing cycle seen on one parcel: the active date, the price path and cuts, the outcome, the sold price and the days on market. Outcomes: sold, canceled, expired, withdrawn, off market or still active.\n\nFrom the weekly files since the history lake began (`meta.coverage[].parcel.history.first_week`), for the ZIP codes it covers. This host does not serve agent names and licence numbers. The cycles omit `agent_name` and `agent_license`.\n\n[How a cycle is cut and what each outcome means](https://developers.investorlift.com/api-reference/endpoints/properties-listing-history).","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"property_id","required":true,"description":"Parcel id, `prop_<32 hex>`, from /v1/properties/resolve or any deal's property.id. The prefix is part of the id (400 invalid_id otherwise)."}],"responses":{"200":{"description":"The listing cycles of one parcel.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ListingHistory"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The listing cycles of one parcel."},"example":{"data":{"property_id":"prop_5fd69b38fbb3dba53367a0130dac9b5e","cycles":[{"id":"6b05295cd3dcc1adbebde0d90edec890","cycle_no":3,"first_week":"2026-06-25","last_week":"2026-09-09","listing_id":null,"listed_on":"2026-06-19","original_price":357500,"last_price":350000,"min_price":350000,"n_price_cuts":1,"n_price_rises":0,"status_path":["Active","Pending","Off Market"],"outcome":"off_market","sold_price":380000,"sold_on":"2023-10-18","days_on_market":82,"price_path":[{"week":"2026-06-25","price":357500,"status":"Active","kind":"relist"},{"week":"2026-07-22","price":350000,"status":"Active","kind":"price_cut"},{"week":"2026-08-19","price":350000,"status":"Pending","kind":"status"},{"week":"2026-09-09","price":350000,"status":"Off Market","kind":"delist"}]},{"id":"d3ea34d261b9eeb2e32a7485cfdc04ca","cycle_no":2,"first_week":"2026-02-12","last_week":"2026-06-04","listing_id":null,"listed_on":"2025-12-12","original_price":405000,"last_price":380000,"min_price":380000,"n_price_cuts":3,"n_price_rises":0,"status_path":["Active","Off Market"],"outcome":"off_market","sold_price":0,"sold_on":null,"days_on_market":174,"price_path":[{"week":"2026-02-12","price":405000,"status":"Active","kind":"relist"},{"week":"2026-02-26","price":399990,"status":"Active","kind":"price_cut"},{"week":"2026-03-19","price":390000,"status":"Active","kind":"price_cut"},{"week":"2026-04-16","price":385000,"status":"Active","kind":"price_cut"},{"week":"2026-04-30","price":null,"status":"Active","kind":"status"},{"week":"2026-05-07","price":380000,"status":"Active","kind":"status"},{"week":"2026-06-04","price":380000,"status":"Off Market","kind":"delist"}]},{"id":"c6cb718fdf2ac389cb138fd94ee77850","cycle_no":1,"first_week":"2026-01-01","last_week":"2026-01-21","listing_id":null,"listed_on":"2025-12-12","original_price":415000,"last_price":415000,"min_price":415000,"n_price_cuts":0,"n_price_rises":0,"status_path":["Active","Canceled"],"outcome":"canceled","sold_price":0,"sold_on":null,"days_on_market":40,"price_path":[{"week":"2026-01-01","price":415000,"status":"Active","kind":"relist"},{"week":"2026-01-21","price":415000,"status":"Canceled","kind":"delist"}]}]},"meta":{"generated_at":"2026-09-16T21:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-27","build_run_id":3,"registry_run":11,"registry_version":"v6-auction","dataset_version":1789574268,"loaded_at":"2026-09-16T15:57:47.926Z","metro_buy_to_resale_ratio":0.719,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836311,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":"2026-08-27","address_as_of":"2026-08-27","parcel":{"parcel_as_of":"2026-08-27","n_parcels":1836311,"sale_mortgage_measured":false,"financing":{"as_of":"2026-06-25","dated":true,"dated_reason":"dataset not in current delivery","n_parcels":1611957,"n_with_open_lien":1032808,"n_free_and_clear":579149,"n_avm":1528967,"n_involuntary":192400,"n_lenders":76212},"permits":{"as_of":"2026-09-01","n_permits":2377496,"n_parcels":663045,"n_unmatched":355,"jurisdictions":[{"jurisdiction":"PHOENIX","n_permits":795764,"last_issue_date":"2026-05-11","windows_measured":null},{"jurisdiction":"MESA","n_permits":330809,"last_issue_date":"2026-05-29","windows_measured":null}]},"owner_profile":{"as_of":"2026-09-09","n_parcels":1611077,"n_multi":646963,"n_portfolio_5":277841},"history":{"first_week":"2025-07-24","last_week":"2026-09-09","zips":["85251"],"n_parcels":18774,"n_events":236022,"n_weeks":62,"domains":{"tax":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":18597},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":17615},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1700},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":21122},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2128},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2583},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25","n_events":6420},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1297},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":3238},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2548},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25","n_events":83657},"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":16450},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":58404},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":263}}}},"lenders":{"as_of":"2026-06-25","recordings_through":"2026-06-11","counties":["04013"],"history_capture_share":0.183706,"n_lender_ids":32046,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false,"dated":true,"n_parcels_uncovered":224192}}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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"},"X-Credits-Charged":{"$ref":"#/components/headers/X-Credits-Charged"},"X-Credits-Remaining":{"$ref":"#/components/headers/X-Credits-Remaining"}}},"400":{"description":"Bad request (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/properties/{property_id}/listing-history","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":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/{property_id}/listing-history","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":"/v1/properties/{property_id}/listing-history","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":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"history_unavailable":{"summary":"History unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#history_unavailable","title":"History unavailable","status":422,"code":"history_unavailable","detail":"The parcel is in ZIP 85257. The history lake covers 85251 for market phx (meta.coverage[].parcel.history.zips).","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","zips":["85251"]}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"parcels_unavailable":{"summary":"Parcel products unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#parcels_unavailable","title":"Parcel products unavailable","status":422,"code":"parcels_unavailable","detail":"Market hou has no published parcel product tables (meta.coverage[].parcel is null). The location matches no market that carries them.","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/properties/{property_id}/listing-history","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":"/v1/properties/{property_id}/listing-history","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":"/v1/properties/{property_id}/listing-history","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, ledger_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":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/properties/{property_id}/listing-history","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":"/v1/properties/{property_id}/listing-history","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/properties/{property_id}/comps":{"get":{"operationId":"getComps","summary":"Read the comparable sales around a parcel","tags":["properties"],"description":"The comparable sales around one parcel, most similar first, plus the medians and an indicative price per square foot. A comp is a priced sale in the radius and the window on a parcel within the subject's bedroom, size and age tolerances. One per parcel, from the deed registry (DEED) and the SOLD listings where published (MLS), each with the investor exit the deal registry records.\n\nFor raw parcels with your own filters use the parcel search. For investor deals alone, the deal scan.\n\n[How a comp is chosen and ranked](https://developers.investorlift.com/api-reference/endpoints/properties-comps).","parameters":[{"schema":{"default":1,"type":"number","minimum":0.1,"maximum":5},"in":"query","name":"radius_miles","required":false,"description":"Radius around the subject in miles, 0.1 to 5 (default 1)."},{"schema":{"default":180,"type":"integer","minimum":30,"maximum":1095},"in":"query","name":"days_back","required":false,"description":"Sales in the last N days before the market's data_end, 30 to 1095 (default 180)."},{"schema":{"default":1,"type":"integer","minimum":0,"maximum":5},"in":"query","name":"beds_tolerance","required":false,"description":"Bedrooms either side of the subject's, 0 to 5 (default 1). The API skips it when the subject's bedrooms are unknown."},{"schema":{"default":20,"type":"integer","minimum":0,"maximum":50},"in":"query","name":"sqft_pct","required":false,"description":"Percent either side of the subject's sqft, 0 to 50 (default 20). The API skips it when the sqft is unknown."},{"schema":{"default":15,"type":"integer","minimum":0,"maximum":50},"in":"query","name":"year_tolerance","required":false,"description":"Years either side of the subject's year_built, 0 to 50 (default 15). The API skips it when the year_built is unknown."},{"schema":{"default":"both","type":"string","enum":["deed","mls","both"]},"in":"query","name":"source","required":false,"description":"With deed, the registry's arm's-length last purchases. With mls, SOLD listing records, and 422 listings_unavailable where the market has none. With both, the default, one sale per parcel, and the MLS record wins within 45 days of the deed."},{"schema":{"default":20,"type":"integer","minimum":1,"maximum":50},"in":"query","name":"limit","required":false,"description":"Comps to return, 1 to 50 (default 20), most similar first. A plan cap below this applies."},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"property_id","required":true,"description":"Parcel id, `prop_<32 hex>`, from /v1/properties/resolve or any deal's property.id. The prefix is part of the id (400 invalid_id otherwise)."}],"responses":{"200":{"description":"The comparable sales of one parcel.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Comps"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The comparable sales of one parcel."}}},"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"},"X-Credits-Charged":{"$ref":"#/components/headers/X-Credits-Charged"},"X-Credits-Remaining":{"$ref":"#/components/headers/X-Credits-Remaining"}}},"400":{"description":"Bad request (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/properties/{property_id}/comps","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":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/properties/{property_id}/comps","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":"/v1/properties/{property_id}/comps","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":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/properties/{property_id}/comps","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":"/v1/properties/{property_id}/comps","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":"/v1/properties/{property_id}/comps","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, ledger_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":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/properties/{property_id}/comps","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":"/v1/properties/{property_id}/comps","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}},"/v1/markets/{market}/changes":{"get":{"operationId":"getMarketChanges","summary":"Read the weekly change series of a ZIP","tags":["properties"],"description":"The weekly change series of one ZIP, week by week. The metrics: owner changes, new listings, price cuts, sales, delistings, vacancy and delinquency onsets. Also new mortgages and lien releases, the median AVM move and permits issued.\n\nIt serves the ZIP codes the history lake covers in the market. Pick the metrics you need and how many recent weeks.\n\n[Metrics, the week grid and what parcels_observed counts](https://developers.investorlift.com/api-reference/endpoints/markets-changes).","parameters":[{"schema":{"type":"string","pattern":"^\\d{5}$"},"in":"query","name":"zip","required":true,"description":"The ZIP code. It must be one of meta.coverage[].parcel.history.zips."},{"schema":{"default":52,"type":"integer","minimum":1,"maximum":160},"in":"query","name":"weeks","required":false,"description":"How many of the newest weeks to return (default 52, at most 160). Over 52 on Free and Starter, the API clamps the series to 52 over REST and data.weeks_applied says so. Over /mcp the API refuses that request by name (403 plan_limit)."},{"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["owner_changes","listings","relists","price_cuts","price_rises","solds","delists","vacancy_onsets","vacancy_cleared","delinquency_onsets","delinquency_cured","new_mortgages","lien_releases","involuntary_liens","assessment_changes","avm_changes","structure_changes","portfolio_changes","avm_change_median_pct","permits_issued"],"description":"A weekly series: event counts per kind, the median AVM move in percent among parcels whose AVM moved, or permits issued."}},"in":"query","name":"metrics","required":false,"description":"Which series to return (comma list or repeated key). Default: every metric."},{"schema":{"type":"string","minLength":1,"maxLength":16},"in":"path","name":"market","required":true,"description":"Market code, for example phx."}],"responses":{"200":{"description":"The weekly change series.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MarketChanges"},"meta":{"$ref":"#/components/schemas/Meta"}},"required":["data","meta"],"additionalProperties":false,"description":"The weekly change series."},"example":{"data":{"market":"phx","zip":"85251","first_week":"2025-10-02","last_week":"2026-09-09","weeks_applied":52,"weeks":[{"week":"2025-10-02","file_kind":"DELTA","parcels_observed":13920,"n_events":3244,"metrics":{"owner_changes":280,"listings":0,"relists":19,"price_cuts":14,"price_rises":2,"solds":17,"delists":10,"vacancy_onsets":6,"vacancy_cleared":6,"delinquency_onsets":4,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":678,"structure_changes":38,"portfolio_changes":1088,"avm_change_median_pct":-1.36,"permits_issued":6}},{"week":"2025-10-09","file_kind":"DELTA","parcels_observed":7432,"n_events":1195,"metrics":{"owner_changes":26,"listings":0,"relists":14,"price_cuts":5,"price_rises":1,"solds":14,"delists":12,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":203,"structure_changes":12,"portfolio_changes":679,"avm_change_median_pct":-0.1,"permits_issued":6}},{"week":"2025-10-16","file_kind":"DELTA","parcels_observed":8556,"n_events":1351,"metrics":{"owner_changes":45,"listings":0,"relists":8,"price_cuts":30,"price_rises":5,"solds":54,"delists":37,"vacancy_onsets":0,"vacancy_cleared":1,"delinquency_onsets":0,"delinquency_cured":1,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":424,"structure_changes":5,"portfolio_changes":517,"avm_change_median_pct":0.97,"permits_issued":8}},{"week":"2025-10-23","file_kind":"DELTA","parcels_observed":7046,"n_events":1311,"metrics":{"owner_changes":25,"listings":0,"relists":14,"price_cuts":12,"price_rises":1,"solds":18,"delists":16,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":68,"structure_changes":3,"portfolio_changes":1048,"avm_change_median_pct":-0.14,"permits_issued":5}},{"week":"2025-10-30","file_kind":"DELTA","parcels_observed":6899,"n_events":728,"metrics":{"owner_changes":24,"listings":0,"relists":9,"price_cuts":15,"price_rises":1,"solds":10,"delists":5,"vacancy_onsets":1,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":75,"structure_changes":1,"portfolio_changes":504,"avm_change_median_pct":0,"permits_issued":11}},{"week":"2025-11-06","file_kind":"DELTA","parcels_observed":18631,"n_events":25617,"metrics":{"owner_changes":455,"listings":0,"relists":170,"price_cuts":9,"price_rises":15,"solds":21,"delists":11,"vacancy_onsets":1,"vacancy_cleared":5,"delinquency_onsets":190,"delinquency_cured":1068,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":2757,"structure_changes":52,"portfolio_changes":2860,"avm_change_median_pct":-1.44,"permits_issued":7}},{"week":"2025-11-13","file_kind":"DELTA","parcels_observed":7251,"n_events":1387,"metrics":{"owner_changes":10,"listings":0,"relists":22,"price_cuts":3,"price_rises":0,"solds":13,"delists":8,"vacancy_onsets":0,"vacancy_cleared":1,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":247,"structure_changes":12,"portfolio_changes":1027,"avm_change_median_pct":-0.15,"permits_issued":24}},{"week":"2025-11-20","file_kind":"DELTA","parcels_observed":7665,"n_events":1077,"metrics":{"owner_changes":57,"listings":0,"relists":16,"price_cuts":7,"price_rises":1,"solds":4,"delists":6,"vacancy_onsets":1,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":257,"structure_changes":8,"portfolio_changes":601,"avm_change_median_pct":0,"permits_issued":11}},{"week":"2025-11-21","file_kind":"FULL","parcels_observed":18758,"n_events":493,"metrics":{"owner_changes":22,"listings":0,"relists":5,"price_cuts":3,"price_rises":0,"solds":4,"delists":0,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":70,"structure_changes":0,"portfolio_changes":346,"avm_change_median_pct":0,"permits_issued":11}},{"week":"2025-11-27","file_kind":"FULL","parcels_observed":18758,"n_events":285,"metrics":{"owner_changes":0,"listings":0,"relists":10,"price_cuts":3,"price_rises":1,"solds":14,"delists":4,"vacancy_onsets":1,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":79,"structure_changes":4,"portfolio_changes":157,"avm_change_median_pct":0,"permits_issued":4}},{"week":"2025-12-02","file_kind":"FULL","parcels_observed":18758,"n_events":1332,"metrics":{"owner_changes":28,"listings":0,"relists":12,"price_cuts":46,"price_rises":0,"solds":38,"delists":147,"vacancy_onsets":3,"vacancy_cleared":2,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":260,"structure_changes":4,"portfolio_changes":598,"avm_change_median_pct":-0.66,"permits_issued":3}},{"week":"2025-12-04","file_kind":"DELTA","parcels_observed":915,"n_events":3,"metrics":{"owner_changes":0,"listings":0,"relists":0,"price_cuts":0,"price_rises":0,"solds":1,"delists":1,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":1,"structure_changes":0,"portfolio_changes":0,"avm_change_median_pct":4.52,"permits_issued":5}},{"week":"2025-12-11","file_kind":"DELTA","parcels_observed":18289,"n_events":43419,"metrics":{"owner_changes":50,"listings":0,"relists":61,"price_cuts":20,"price_rises":2,"solds":14,"delists":172,"vacancy_onsets":122,"vacancy_cleared":72,"delinquency_onsets":3,"delinquency_cured":1,"new_mortgages":2269,"lien_releases":21,"involuntary_liens":89,"assessment_changes":16450,"avm_changes":16082,"structure_changes":2030,"portfolio_changes":4673,"avm_change_median_pct":-0.91,"permits_issued":8}},{"week":"2025-12-18","file_kind":"DELTA","parcels_observed":10360,"n_events":9244,"metrics":{"owner_changes":69,"listings":0,"relists":30,"price_cuts":6,"price_rises":0,"solds":13,"delists":21,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":68,"lien_releases":1829,"involuntary_liens":4,"assessment_changes":0,"avm_changes":2886,"structure_changes":5,"portfolio_changes":3869,"avm_change_median_pct":-0.21,"permits_issued":10}},{"week":"2025-12-25","file_kind":"DELTA","parcels_observed":18385,"n_events":1793,"metrics":{"owner_changes":32,"listings":0,"relists":38,"price_cuts":8,"price_rises":0,"solds":16,"delists":32,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":6,"lien_releases":13,"involuntary_liens":32,"assessment_changes":0,"avm_changes":284,"structure_changes":5,"portfolio_changes":1159,"avm_change_median_pct":0,"permits_issued":2}},{"week":"2026-01-01","file_kind":"DELTA","parcels_observed":8863,"n_events":2573,"metrics":{"owner_changes":41,"listings":0,"relists":180,"price_cuts":6,"price_rises":1,"solds":14,"delists":20,"vacancy_onsets":0,"vacancy_cleared":4,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":28,"lien_releases":14,"involuntary_liens":0,"assessment_changes":0,"avm_changes":460,"structure_changes":0,"portfolio_changes":1319,"avm_change_median_pct":0,"permits_issued":2}},{"week":"2026-01-08","file_kind":"DELTA","parcels_observed":7582,"n_events":2064,"metrics":{"owner_changes":32,"listings":0,"relists":19,"price_cuts":12,"price_rises":0,"solds":21,"delists":36,"vacancy_onsets":5,"vacancy_cleared":4,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":45,"lien_releases":45,"involuntary_liens":8,"assessment_changes":0,"avm_changes":360,"structure_changes":3,"portfolio_changes":1325,"avm_change_median_pct":-0.05,"permits_issued":4}},{"week":"2026-01-15","file_kind":"DELTA","parcels_observed":6857,"n_events":1267,"metrics":{"owner_changes":28,"listings":0,"relists":43,"price_cuts":13,"price_rises":1,"solds":24,"delists":41,"vacancy_onsets":1,"vacancy_cleared":1,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":6,"lien_releases":9,"involuntary_liens":0,"assessment_changes":0,"avm_changes":179,"structure_changes":9,"portfolio_changes":785,"avm_change_median_pct":-0.17,"permits_issued":3}},{"week":"2026-01-21","file_kind":"FULL","parcels_observed":18772,"n_events":17567,"metrics":{"owner_changes":57,"listings":0,"relists":35,"price_cuts":19,"price_rises":0,"solds":13,"delists":30,"vacancy_onsets":45,"vacancy_cleared":131,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":34,"lien_releases":19,"involuntary_liens":22,"assessment_changes":0,"avm_changes":16038,"structure_changes":4,"portfolio_changes":801,"avm_change_median_pct":-0.7,"permits_issued":3}},{"week":"2026-02-05","file_kind":"DELTA","parcels_observed":12950,"n_events":2629,"metrics":{"owner_changes":84,"listings":0,"relists":75,"price_cuts":51,"price_rises":3,"solds":23,"delists":50,"vacancy_onsets":8,"vacancy_cleared":6,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":44,"lien_releases":20,"involuntary_liens":2,"assessment_changes":0,"avm_changes":455,"structure_changes":7,"portfolio_changes":1485,"avm_change_median_pct":-0.22,"permits_issued":14}},{"week":"2026-02-12","file_kind":"DELTA","parcels_observed":6228,"n_events":510,"metrics":{"owner_changes":0,"listings":0,"relists":47,"price_cuts":32,"price_rises":0,"solds":15,"delists":21,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":19,"lien_releases":4,"involuntary_liens":2,"assessment_changes":0,"avm_changes":206,"structure_changes":4,"portfolio_changes":118,"avm_change_median_pct":-0.3,"permits_issued":7}},{"week":"2026-02-19","file_kind":"DELTA","parcels_observed":7633,"n_events":1637,"metrics":{"owner_changes":37,"listings":0,"relists":26,"price_cuts":26,"price_rises":0,"solds":9,"delists":22,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":31,"lien_releases":4,"involuntary_liens":1,"assessment_changes":0,"avm_changes":270,"structure_changes":2,"portfolio_changes":1099,"avm_change_median_pct":-0.2,"permits_issued":2}},{"week":"2026-02-26","file_kind":"DELTA","parcels_observed":9337,"n_events":1526,"metrics":{"owner_changes":28,"listings":0,"relists":46,"price_cuts":41,"price_rises":2,"solds":14,"delists":29,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":15,"lien_releases":3,"involuntary_liens":1,"assessment_changes":0,"avm_changes":198,"structure_changes":5,"portfolio_changes":348,"avm_change_median_pct":-0.68,"permits_issued":3}},{"week":"2026-03-05","file_kind":"DELTA","parcels_observed":9832,"n_events":1023,"metrics":{"owner_changes":36,"listings":0,"relists":39,"price_cuts":33,"price_rises":1,"solds":13,"delists":21,"vacancy_onsets":0,"vacancy_cleared":1,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":25,"lien_releases":3,"involuntary_liens":1,"assessment_changes":0,"avm_changes":307,"structure_changes":5,"portfolio_changes":464,"avm_change_median_pct":0.01,"permits_issued":6}},{"week":"2026-03-12","file_kind":"DELTA","parcels_observed":6936,"n_events":1633,"metrics":{"owner_changes":35,"listings":0,"relists":33,"price_cuts":40,"price_rises":2,"solds":13,"delists":26,"vacancy_onsets":5,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":20,"lien_releases":10,"involuntary_liens":2,"assessment_changes":0,"avm_changes":239,"structure_changes":4,"portfolio_changes":1114,"avm_change_median_pct":-0.28,"permits_issued":4}},{"week":"2026-03-19","file_kind":"DELTA","parcels_observed":8726,"n_events":1526,"metrics":{"owner_changes":36,"listings":0,"relists":30,"price_cuts":41,"price_rises":1,"solds":12,"delists":18,"vacancy_onsets":5,"vacancy_cleared":1,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":23,"lien_releases":8,"involuntary_liens":2,"assessment_changes":0,"avm_changes":748,"structure_changes":4,"portfolio_changes":491,"avm_change_median_pct":-2.02,"permits_issued":6}},{"week":"2026-03-26","file_kind":"DELTA","parcels_observed":8284,"n_events":1418,"metrics":{"owner_changes":30,"listings":0,"relists":40,"price_cuts":41,"price_rises":1,"solds":17,"delists":25,"vacancy_onsets":1,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":18,"lien_releases":42,"involuntary_liens":0,"assessment_changes":0,"avm_changes":468,"structure_changes":4,"portfolio_changes":631,"avm_change_median_pct":0,"permits_issued":2}},{"week":"2026-04-02","file_kind":"DELTA","parcels_observed":18647,"n_events":19230,"metrics":{"owner_changes":58,"listings":0,"relists":24,"price_cuts":53,"price_rises":1,"solds":17,"delists":14,"vacancy_onsets":185,"vacancy_cleared":111,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":46,"lien_releases":48,"involuntary_liens":94,"assessment_changes":0,"avm_changes":17357,"structure_changes":108,"portfolio_changes":743,"avm_change_median_pct":0.29,"permits_issued":1}},{"week":"2026-04-07","file_kind":"FULL","parcels_observed":18775,"n_events":1734,"metrics":{"owner_changes":44,"listings":0,"relists":16,"price_cuts":22,"price_rises":0,"solds":13,"delists":9,"vacancy_onsets":2,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":44,"lien_releases":8,"involuntary_liens":0,"assessment_changes":0,"avm_changes":276,"structure_changes":1,"portfolio_changes":1162,"avm_change_median_pct":0,"permits_issued":3}},{"week":"2026-04-09","file_kind":"DELTA","parcels_observed":1947,"n_events":55,"metrics":{"owner_changes":0,"listings":0,"relists":5,"price_cuts":12,"price_rises":0,"solds":0,"delists":3,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":24,"structure_changes":0,"portfolio_changes":0,"avm_change_median_pct":-1.54,"permits_issued":4}},{"week":"2026-04-16","file_kind":"DELTA","parcels_observed":7222,"n_events":1664,"metrics":{"owner_changes":37,"listings":0,"relists":31,"price_cuts":59,"price_rises":0,"solds":16,"delists":30,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":32,"lien_releases":10,"involuntary_liens":2,"assessment_changes":0,"avm_changes":214,"structure_changes":4,"portfolio_changes":1118,"avm_change_median_pct":-0.76,"permits_issued":8}},{"week":"2026-04-23","file_kind":"DELTA","parcels_observed":18403,"n_events":18134,"metrics":{"owner_changes":28,"listings":0,"relists":33,"price_cuts":12,"price_rises":0,"solds":17,"delists":22,"vacancy_onsets":24,"vacancy_cleared":28,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":51,"lien_releases":23,"involuntary_liens":284,"assessment_changes":0,"avm_changes":16046,"structure_changes":4,"portfolio_changes":1277,"avm_change_median_pct":1.24,"permits_issued":18}},{"week":"2026-04-30","file_kind":"DELTA","parcels_observed":9227,"n_events":1967,"metrics":{"owner_changes":46,"listings":0,"relists":36,"price_cuts":1,"price_rises":0,"solds":8,"delists":27,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":16,"lien_releases":8,"involuntary_liens":0,"assessment_changes":0,"avm_changes":329,"structure_changes":6,"portfolio_changes":1299,"avm_change_median_pct":-0.19,"permits_issued":4}},{"week":"2026-05-07","file_kind":"DELTA","parcels_observed":8786,"n_events":1674,"metrics":{"owner_changes":23,"listings":0,"relists":39,"price_cuts":26,"price_rises":1,"solds":15,"delists":47,"vacancy_onsets":2,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":19,"lien_releases":8,"involuntary_liens":0,"assessment_changes":0,"avm_changes":388,"structure_changes":4,"portfolio_changes":737,"avm_change_median_pct":0.07,"permits_issued":1}},{"week":"2026-05-14","file_kind":"DELTA","parcels_observed":6914,"n_events":1343,"metrics":{"owner_changes":174,"listings":0,"relists":32,"price_cuts":38,"price_rises":0,"solds":18,"delists":41,"vacancy_onsets":2,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":29,"lien_releases":13,"involuntary_liens":0,"assessment_changes":0,"avm_changes":270,"structure_changes":3,"portfolio_changes":575,"avm_change_median_pct":-0.13,"permits_issued":2}},{"week":"2026-05-21","file_kind":"DELTA","parcels_observed":7285,"n_events":1042,"metrics":{"owner_changes":35,"listings":0,"relists":29,"price_cuts":37,"price_rises":0,"solds":16,"delists":38,"vacancy_onsets":2,"vacancy_cleared":1,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":32,"lien_releases":11,"involuntary_liens":2,"assessment_changes":0,"avm_changes":256,"structure_changes":5,"portfolio_changes":474,"avm_change_median_pct":-0.12,"permits_issued":1}},{"week":"2026-05-28","file_kind":"DELTA","parcels_observed":7778,"n_events":1555,"metrics":{"owner_changes":40,"listings":0,"relists":25,"price_cuts":26,"price_rises":0,"solds":9,"delists":20,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":25,"lien_releases":10,"involuntary_liens":3,"assessment_changes":0,"avm_changes":273,"structure_changes":5,"portfolio_changes":1030,"avm_change_median_pct":-0.05,"permits_issued":7}},{"week":"2026-06-04","file_kind":"DELTA","parcels_observed":8090,"n_events":1797,"metrics":{"owner_changes":45,"listings":0,"relists":29,"price_cuts":31,"price_rises":0,"solds":13,"delists":24,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":19,"lien_releases":12,"involuntary_liens":0,"assessment_changes":0,"avm_changes":203,"structure_changes":4,"portfolio_changes":1269,"avm_change_median_pct":-0.22,"permits_issued":4}},{"week":"2026-06-11","file_kind":"DELTA","parcels_observed":7896,"n_events":1888,"metrics":{"owner_changes":30,"listings":0,"relists":48,"price_cuts":39,"price_rises":1,"solds":14,"delists":46,"vacancy_onsets":4,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":41,"lien_releases":9,"involuntary_liens":3,"assessment_changes":0,"avm_changes":900,"structure_changes":7,"portfolio_changes":648,"avm_change_median_pct":-0.31,"permits_issued":0}},{"week":"2026-06-18","file_kind":"DELTA","parcels_observed":9368,"n_events":1724,"metrics":{"owner_changes":35,"listings":0,"relists":30,"price_cuts":30,"price_rises":0,"solds":11,"delists":30,"vacancy_onsets":1,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":14,"lien_releases":17,"involuntary_liens":0,"assessment_changes":0,"avm_changes":322,"structure_changes":4,"portfolio_changes":425,"avm_change_median_pct":0,"permits_issued":0}},{"week":"2026-06-25","file_kind":"DELTA","parcels_observed":7849,"n_events":1833,"metrics":{"owner_changes":26,"listings":0,"relists":24,"price_cuts":39,"price_rises":1,"solds":17,"delists":31,"vacancy_onsets":1,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":46,"lien_releases":16,"involuntary_liens":5,"assessment_changes":0,"avm_changes":931,"structure_changes":7,"portfolio_changes":598,"avm_change_median_pct":-0.12,"permits_issued":0}},{"week":"2026-07-01","file_kind":"FULL","parcels_observed":18771,"n_events":2979,"metrics":{"owner_changes":40,"listings":0,"relists":16,"price_cuts":26,"price_rises":0,"solds":8,"delists":33,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":0,"structure_changes":3,"portfolio_changes":432,"avm_change_median_pct":null,"permits_issued":0}},{"week":"2026-07-08","file_kind":"FULL","parcels_observed":18773,"n_events":1208,"metrics":{"owner_changes":133,"listings":0,"relists":12,"price_cuts":8,"price_rises":2,"solds":11,"delists":19,"vacancy_onsets":1,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":0,"structure_changes":1,"portfolio_changes":609,"avm_change_median_pct":null,"permits_issued":0}},{"week":"2026-07-15","file_kind":"DELTA","parcels_observed":7699,"n_events":756,"metrics":{"owner_changes":52,"listings":0,"relists":30,"price_cuts":33,"price_rises":0,"solds":15,"delists":43,"vacancy_onsets":7,"vacancy_cleared":3,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":0,"structure_changes":0,"portfolio_changes":454,"avm_change_median_pct":null,"permits_issued":0}},{"week":"2026-07-22","file_kind":"DELTA","parcels_observed":8422,"n_events":1912,"metrics":{"owner_changes":40,"listings":0,"relists":41,"price_cuts":33,"price_rises":0,"solds":33,"delists":32,"vacancy_onsets":16,"vacancy_cleared":3,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":0,"structure_changes":3,"portfolio_changes":1213,"avm_change_median_pct":null,"permits_issued":0}},{"week":"2026-07-29","file_kind":"DELTA","parcels_observed":8093,"n_events":1293,"metrics":{"owner_changes":33,"listings":0,"relists":20,"price_cuts":28,"price_rises":0,"solds":11,"delists":30,"vacancy_onsets":4,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":0,"structure_changes":2,"portfolio_changes":1087,"avm_change_median_pct":null,"permits_issued":0}},{"week":"2026-08-05","file_kind":"DELTA","parcels_observed":18151,"n_events":2453,"metrics":{"owner_changes":32,"listings":0,"relists":13,"price_cuts":13,"price_rises":0,"solds":10,"delists":14,"vacancy_onsets":303,"vacancy_cleared":93,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":0,"structure_changes":3,"portfolio_changes":1634,"avm_change_median_pct":null,"permits_issued":0}},{"week":"2026-08-12","file_kind":"DELTA","parcels_observed":18008,"n_events":965,"metrics":{"owner_changes":30,"listings":0,"relists":25,"price_cuts":36,"price_rises":0,"solds":9,"delists":34,"vacancy_onsets":9,"vacancy_cleared":3,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":0,"structure_changes":67,"portfolio_changes":496,"avm_change_median_pct":null,"permits_issued":0}},{"week":"2026-08-19","file_kind":"DELTA","parcels_observed":7828,"n_events":1318,"metrics":{"owner_changes":29,"listings":0,"relists":16,"price_cuts":25,"price_rises":2,"solds":12,"delists":24,"vacancy_onsets":1,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":0,"structure_changes":0,"portfolio_changes":1131,"avm_change_median_pct":null,"permits_issued":0}},{"week":"2026-08-26","file_kind":"FULL","parcels_observed":18774,"n_events":16463,"metrics":{"owner_changes":37,"listings":0,"relists":31,"price_cuts":28,"price_rises":0,"solds":8,"delists":19,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":0,"structure_changes":1,"portfolio_changes":380,"avm_change_median_pct":null,"permits_issued":0}},{"week":"2026-09-02","file_kind":"DELTA","parcels_observed":8236,"n_events":1384,"metrics":{"owner_changes":38,"listings":0,"relists":18,"price_cuts":25,"price_rises":0,"solds":12,"delists":18,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":0,"structure_changes":0,"portfolio_changes":1139,"avm_change_median_pct":null,"permits_issued":0}},{"week":"2026-09-09","file_kind":"DELTA","parcels_observed":18069,"n_events":3511,"metrics":{"owner_changes":62,"listings":0,"relists":107,"price_cuts":14,"price_rises":31,"solds":164,"delists":27,"vacancy_onsets":0,"vacancy_cleared":0,"delinquency_onsets":0,"delinquency_cured":0,"new_mortgages":0,"lien_releases":0,"involuntary_liens":0,"assessment_changes":0,"avm_changes":0,"structure_changes":6,"portfolio_changes":1568,"avm_change_median_pct":null,"permits_issued":0}}],"totals":{"owner_changes":2714,"listings":0,"relists":1771,"price_cuts":1230,"price_rises":80,"solds":916,"delists":1496,"vacancy_onsets":769,"vacancy_cleared":477,"delinquency_onsets":197,"delinquency_cured":1070,"new_mortgages":3065,"lien_releases":2237,"involuntary_liens":559,"assessment_changes":16450,"avm_changes":82088,"structure_changes":2478,"portfolio_changes":50604,"avm_change_median_pct":-0.14,"permits_issued":230}},"meta":{"generated_at":"2026-09-16T21:00:00.000Z","coverage":[{"market":"phx","state":"AZ","counties":[{"fips":"04013","name":"Maricopa","data_end":"2026-08-12"},{"fips":"04021","name":"Pinal","data_end":"2026-08-06"}],"bbox":[-113.332773,32.46915,-110.455491,33.999503],"data_end":"2026-08-27","build_run_id":3,"registry_run":11,"registry_version":"v6-auction","dataset_version":1789574268,"loaded_at":"2026-09-16T15:57:47.926Z","metro_buy_to_resale_ratio":0.719,"universe_kind":"metro","universe_zips":null,"point_tolerance_miles":20,"n_parcels":1836311,"listings_data_end":"2026-08-31","agents_data_end":"2026-08-31","wholesale_as_of":"2026-09-09","str_as_of":"2026-09-10","str":{"jurisdictions":[{"name":"APACHE_JUNCTION","regime":"NOT_REQUIRED","coverage_reason":"NO_REQUIREMENT","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null},{"name":"AVONDALE","regime":"REQUIRED","coverage_reason":"REQUIRED_NOT_PUBLISHED","served":false,"snapshot_only":false,"licence_start":null,"snapshot_date":null,"feed_stale":false,"sources":[],"n_licensed":0,"n_pending":0,"n_expired":0,"n_advertised":0,"share_unmatched":null,"share_assumed":null}]},"auction_counted":true,"parcel_as_of":"2026-08-27","address_as_of":"2026-08-27","parcel":{"parcel_as_of":"2026-08-27","n_parcels":1836311,"sale_mortgage_measured":false,"financing":{"as_of":"2026-06-25","dated":true,"dated_reason":"dataset not in current delivery","n_parcels":1611957,"n_with_open_lien":1032808,"n_free_and_clear":579149,"n_avm":1528967,"n_involuntary":192400,"n_lenders":76212},"permits":{"as_of":"2026-09-01","n_permits":2377496,"n_parcels":663045,"n_unmatched":355,"jurisdictions":[{"jurisdiction":"PHOENIX","n_permits":795764,"last_issue_date":"2026-05-11","windows_measured":null},{"jurisdiction":"MESA","n_permits":330809,"last_issue_date":"2026-05-29","windows_measured":null}]},"owner_profile":{"as_of":"2026-09-09","n_parcels":1611077,"n_multi":646963,"n_portfolio_5":277841},"history":{"first_week":"2025-07-24","last_week":"2026-09-09","zips":["85251"],"n_parcels":18774,"n_events":236022,"n_weeks":62,"domains":{"tax":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":18597},"deed":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":17615},"sale":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1700},"listing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":21122},"mailing":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2128},"vacancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2583},"financing":{"first_week":"2025-12-02","last_week":"2026-06-25","n_events":6420},"occupancy":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":1297},"ownership":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":3238},"structure":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":2548},"valuation":{"first_week":"2025-07-24","last_week":"2026-06-25","n_events":83657},"assessment":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":16450},"owner_profile":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":58404},"classification":{"first_week":"2025-07-24","last_week":"2026-09-09","n_events":263}}}},"lenders":{"as_of":"2026-06-25","recordings_through":"2026-06-11","counties":["04013"],"history_capture_share":0.183706,"n_lender_ids":32046,"purchase_measured":true,"investor_lending_measured":true,"flips_measured":true,"borrowers_measured":true,"takebacks_measured":true,"counties_measured":false,"dated":true,"n_parcels_uncovered":224192}}],"dated":[{"block":"financing","as_of":"2026-06-25","reason":"dataset not in current delivery"},{"block":"liens","as_of":"2026-06-25","reason":"dataset not in current delivery"},{"block":"valuation","as_of":"2026-06-25","reason":"dataset not in current delivery"}],"terms":"Data: Investorlift Data Services. Public-record and MLS listing data licensed through BatchData; municipal short-term rental registries; Investorlift marketplace records. Attribution and data-use terms: https://developers.investorlift.com/guides/terms"}}}},"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 (dataset_unavailable, geometry_conflict, geometry_required, invalid_cursor, invalid_id, market_required, quicklist_unavailable, sort_requires_point, unknown_parameter, validation_error)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"geometry_conflict":{"summary":"Geometry conflict","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_conflict","title":"Geometry conflict","status":400,"code":"geometry_conflict","detail":"You cannot combine radius_miles with bbox. Send one geometry only.","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"geometry_required":{"summary":"Geometry required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#geometry_required","title":"Geometry required","status":400,"code":"geometry_required","detail":"The request needs one geometry: lat and lng with radius_miles, bbox, property_id, zip (a list) or city.","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"invalid_cursor":{"summary":"Invalid cursor","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#invalid_cursor","title":"Invalid cursor","status":400,"code":"invalid_cursor","detail":"The API issued the cursor for another query. Restart from page 1.","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"market_required":{"summary":"Market required","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#market_required","title":"Market required","status":400,"code":"market_required","detail":"inv_0a20a550f33b exists in 2 loaded markets. Pass market=. The codes are in markets[].","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["phx","hou"],"errors":[{"param":"market","message":"one of phx, hou","code":"market_required"}]}},"sort_requires_point":{"summary":"Sort requires a reference point","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#sort_requires_point","title":"Sort requires a reference point","status":400,"code":"sort_requires_point","detail":"sort=distance needs a reference point: add lat and lng, or property_id.","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"unknown_parameter":{"summary":"Unknown parameter","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#unknown_parameter","title":"Unknown parameter","status":400,"code":"unknown_parameter","detail":"The query carries a parameter this endpoint does not define: kind[]. Write the list as kind=flip,hold or as repeated keys.","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","errors":[{"param":"kind[]","message":"unknown parameter","code":"unknown_parameter"}]}},"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":"/v1/markets/{market}/changes","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":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"403":{"description":"Forbidden (payment_overdue, plan_limit, quota_exceeded, subscription_required)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"plan_limit":{"summary":"Plan limit","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#plan_limit","title":"Plan limit","status":403,"code":"plan_limit","detail":"The free plan searches within 5 miles of a point, a viewport up to 10 miles across, or one ZIP code. Your zip parameter lists 2 ZIP codes. Upgrade in the developer console for city-wide and multi-ZIP searches.","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","tier":"free","limit":"geometry","max_radius_miles":5,"max_bbox_diagonal_miles":10,"max_zips":1}},"quota_exceeded":{"summary":"Quota exceeded","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#quota_exceeded","title":"Quota exceeded","status":403,"code":"quota_exceeded","detail":"Your requests spent the plan's credits for this billing period (5000 of 5000). Wait for the period to reset on the subscription's billing date, or upgrade in the developer console.","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","used":5000,"line":5000}},"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":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"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":"/v1/markets/{market}/changes","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":"/v1/markets/{market}/changes","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":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"Unprocessable (addresses_unavailable, agents_unavailable, ambiguous_address, ambiguous_apn, auction_unavailable, cash_sale_unavailable, dated_refused, history_unavailable, lenders_unavailable, listings_unavailable, outside_coverage, parcels_unavailable, str_unavailable, wholesale_unavailable)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"},"examples":{"agents_unavailable":{"summary":"Agents unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#agents_unavailable","title":"Agents unavailable","status":422,"code":"agents_unavailable","detail":"This market has no published agent registry. See meta.coverage[].agents_data_end.","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"auction_unavailable":{"summary":"Auction counts unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#auction_unavailable","title":"Auction counts unavailable","status":422,"code":"auction_unavailable","detail":"This market has no published foreclosure-auction counts: its registry predates them. So the API cannot answer buys_at_auction, buys_reo and bought_auction_kind there, and meta.coverage[].auction_counted is false for it. Drop the parameter to list every row.","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"history_unavailable":{"summary":"History unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#history_unavailable","title":"History unavailable","status":422,"code":"history_unavailable","detail":"The parcel is in ZIP 85257. The history lake covers 85251 for market phx (meta.coverage[].parcel.history.zips).","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","zips":["85251"]}},"lenders_unavailable":{"summary":"Lenders unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#lenders_unavailable","title":"Lenders unavailable","status":422,"code":"lenders_unavailable","detail":"Market hou has no published lender registry (meta.coverage[].lenders is null there). The API still serves the financing block on parcels where the slice is.","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"listings_unavailable":{"summary":"Listings unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#listings_unavailable","title":"Listings unavailable","status":422,"code":"listings_unavailable","detail":"You gave listing_status for a market with no published listing tables. See meta.coverage[].listings_data_end.","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"outside_coverage":{"summary":"Outside coverage","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#outside_coverage","title":"Outside coverage","status":422,"code":"outside_coverage","detail":"The point 40.712776, -74.005974 is outside every loaded market's point tolerance (loaded: phx, hou). See meta.coverage[].bbox and point_tolerance_miles on any list response.","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"parcels_unavailable":{"summary":"Parcel products unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#parcels_unavailable","title":"Parcel products unavailable","status":422,"code":"parcels_unavailable","detail":"Market hou has no published parcel product tables (meta.coverage[].parcel is null). The location matches no market that carries them.","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","markets":["hou"]}},"str_unavailable":{"summary":"Short-term rental data unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#str_unavailable","title":"Short-term rental data unavailable","status":422,"code":"str_unavailable","detail":"This market has no published short-term rental tables. See meta.coverage[].str_as_of.","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"wholesale_unavailable":{"summary":"Wholesale transactions unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#wholesale_unavailable","title":"Wholesale transactions unavailable","status":422,"code":"wholesale_unavailable","detail":"This market has no published Investorlift wholesale tables. See meta.coverage[].wholesale_as_of.","instance":"/v1/markets/{market}/changes","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":"/v1/markets/{market}/changes","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":"/v1/markets/{market}/changes","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, ledger_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":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}},"ledger_unavailable":{"summary":"Ledger unavailable","value":{"type":"https://developers.investorlift.com/guides/concepts/errors#ledger_unavailable","title":"Ledger unavailable","status":503,"code":"ledger_unavailable","detail":"The credit ledger is unreachable. The API charged nothing. Retry in 5 seconds.","instance":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3","retry_after":5}},"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":"/v1/markets/{market}/changes","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":"/v1/markets/{market}/changes","request_id":"6f1c2a8e-3b7d-4f21-9a0c-2e5b81d7a4f3"}}}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}}}}}},"servers":[{"url":"https://api.investorlift.com","description":"Production"}],"security":[{"bearerAuth":[]}],"tags":[{"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":"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"}}