# Propwire Distressed & High-Equity Property Lead Finder (`vexaloom-labs/propwire-distressed-and-high-equity-property-lead`) Actor

Search Propwire by city, state, or ZIP and pull property, owner, equity, MLS, and tax data tagged with lead-type flags like absentee owner, high equity, vacant, and pre-foreclosure.

- **URL**: https://apify.com/vexaloom-labs/propwire-distressed-and-high-equity-property-lead.md
- **Developed by:** [vexaloom-labs](https://apify.com/vexaloom-labs) (community)
- **Categories:** Lead generation, Real estate, Automation
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.49 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Propwire Property & Owner Lead Finder

Propwire publishes US property records with owner names and mailing addresses, valuation and equity estimates, MLS history, tax assessments and dozens of motivated-seller flags. This actor turns that public index into structured property-lead and owner-lead datasets. It uses Propwire's public guest session: no account, no cookies, no API key, and no proxy setup.

### Modes

| Mode | What it does |
|---|---|
| **Find property leads** | Search by city, county or ZIP, by a saved `propwire.com/search?filters=...` URL, or by property IDs. Apply lead-type, property, equity, ownership, foreclosure and MLS filters; paginate up to 10,000 rows per search. |
| **Get property details by ID or URL** | Fetch full records for property IDs or property links: parcel/APN, zoning, building details, mortgages, transfer history, foreclosure/auction, tax bill, MLS listing and photos. |
| **Find owner leads** | Search Propwire's agent or cash-buyer directory by city, county or ZIP; filter by name, deal count, portfolio size, average sale price and last transaction date. |
| **Get owner profile by ID or URL** | Fetch an agent or cash-buyer profile, including email, license, recent listings or a cash-buyer portfolio. |

Every dataset row has `recordType` (`property` or `owner`), `sourceUrl` and `scrapedAt`.

### Property output

Each property row carries the original Propwire field names in camelCase:

- **Address & geography** — `address`, `city`, `state`, `zip`, `zip4`, `county`, `fips`, `latitude`, `longitude`, `addressLabel`.
- **Building** — `propertyType`, `propertyTypeCode`, `bedrooms`, `bathrooms`, `livingAreaSf`, `buildingAreaSf`, `lotSizeSf`, `lotSizeAcres`, `yearBuilt`, `stories`, `units`, `construction`, `foundation`, `roofMaterial`, `pool`, `garageType`, `basementType`.
- **Valuation & sale** — `estimatedValue`, `estimatedEquity`, `estimatedEquityPercentage`, `estimatedLtv`, `estimatedPricePerSf`, `lastSoldDate`, `lastSoldPrice`, `monthsOfOwnership`, `yearsOfOwnership`.
- **Owner** — `ownerName`, `ownerNames`, `ownerMailingAddress`, `ownerMailingCity`, `ownerMailingState`, `ownerMailingZip`, `ownerOccupied`, `companyOwned`, `individualOwned`, `trustOwned`, `ownerPortfolioProperties`, `ownerPortfolioValue`, `ownerTypes`.
- **MLS** — `mlsStatus`, `mlsListPrice`, `mlsListDate`, `mlsSoldPrice`, `mlsSoldDate`, `daysOnMarket`, `mlsListingUrl`, `mlsListingAgentName`, `mlsPhotos`.
- **Tax & foreclosure** — `taxAssessedTotal`, `taxAssessedLand`, `taxAssessedImprovements`, `taxBilledAmount`, `taxDelinquentYear`, `foreclosureActive`, `foreclosureNoticeType`, `openingBid`, `auctionDate`, `auctionCityState`.
- **Lead flags** — `leadTypes`, the active Propwire list flags for that property.
- **Details mode** — `apn`, `legalDescription`, `subdivision`, `zoning`, `propertyUseDescription`, `mortgages`, `transferHistory`, `taxExemptions`, `photos`, and more.

Empty values are omitted rather than written as `null` or `""`.

### Owner output

Owner profile rows carry `ownerId`, `ownerName`, `ownerProfileType` (`agent` or `cash_buyer`), `ownerCompany`, `ownerPhone`, `ownerEmail`, `ownerLicenseNumber`, `ownerLicenseState`, `ownerTransactionsCount`, `ownerAvgSalePrice`, `ownerPropertiesOwned`, `ownerLastTransactionDate`, `ownerCity`, `ownerCounty`, `ownerZip`, `ownerProfileUrl`, plus portfolio and listing blocks when **Fetch full owner profiles** is on.

### Inputs

| Input | Type | Default | Description |
|---|---|---|---|
| `mode` | select | `properties` | What to fetch. Property search is the default and cheapest mode. |
| `locations` | string\[] | – | US places to search (mode=properties, owners): 'Miami, FL', 'Miami-Dade County, FL', or a 5-digit ZIP. Add one entry per place. A bare state code is accepted but Propwire's search API is unreliable for state-wide queries; use a city, county or ZIP for stable results. St./Ft./Mt. abbreviations are expanded automatically. |
| `searchUrls` | string\[] | – | Optional (mode=properties). Paste one or more propwire.com/search?filters=... links copied from your browser; the actor replays the same area and filters. When present, these URLs take precedence over Locations and the filter fields below. Property URLs are also accepted as an ID shortcut. |
| `propertyIds` | string\[] | – | Property IDs (e.g. 88441) or propwire.com/realestate/... URLs (mode=properties, propertyDetails). Results are deduplicated. |
| `ownerProfileIds` | string\[] | – | 32-character agent / cash-buyer profile IDs, or propwire.com/agents/<id> and /cash-buyers/<id> URLs (mode=ownerDetails). |
| `peopleType` | select | `cash_buyer` | Which owner directory to search (mode=owners). |
| `ownerName` | string | – | Optional (mode=owners). Case-insensitive name fragment, e.g. 'Smith'. |
| `transactionsMin` | integer | – | Optional (mode=owners). Minimum recorded transactions / deals. |
| `transactionsMax` | integer | – | Optional (mode=owners). Maximum recorded transactions / deals. |
| `ownerPropertiesMin` | integer | – | Optional (mode=owners). Minimum properties in the owner's portfolio. |
| `ownerPropertiesMax` | integer | – | Optional (mode=owners). Maximum properties in the owner's portfolio. |
| `avgSalePriceMin` | integer | – | Optional (mode=owners). |
| `avgSalePriceMax` | integer | – | Optional (mode=owners). |
| `lastTransactionFrom` | string | – | Optional (mode=owners). Date in YYYY-MM-DD format. |
| `lastTransactionTo` | string | – | Optional (mode=owners). Date in YYYY-MM-DD format. |
| `ownerSortBy` | select | – | Optional (mode=owners). |
| `leadTypes` | string\[] | – | Optional (mode=properties). Only properties carrying every selected flag are returned. Supported free flags: absentee_owner, adjustable_loan, assumable_loan, auction, bank_owned, cash_buyer, empty_nester, flipped_property, free_and_clear, high_equity, intrafamily_transfer, low_equity, mls_active, mls_failed, mls_pending, mls_sold, negative_equity, out_of_state_owner, preforeclosure, preprobate, private_lender, tired_landlord, vacant_home, vacant_lot, zombie_property. Paid-membership flags are ignored and named in the run status. |
| `propertyTypes` | select | `[]` | Optional (mode=properties). Leave empty for every type. |
| `ownerKinds` | select | `[]` | Optional (mode=properties). Restrict to individual, company, or bank-owned properties. |
| `bedsMin` | integer | – | Optional (mode=properties). |
| `bedsMax` | integer | – | Optional (mode=properties). |
| `bathsMin` | integer | – | Optional (mode=properties). |
| `bathsMax` | integer | – | Optional (mode=properties). |
| `storiesMin` | integer | – | Optional (mode=properties). |
| `storiesMax` | integer | – | Optional (mode=properties). |
| `sqftMin` | integer | – | Optional (mode=properties). |
| `sqftMax` | integer | – | Optional (mode=properties). |
| `lotSqftMin` | integer | – | Optional (mode=properties). |
| `lotSqftMax` | integer | – | Optional (mode=properties). |
| `yearBuiltMin` | integer | – | Optional (mode=properties). |
| `yearBuiltMax` | integer | – | Optional (mode=properties). |
| `unitsMin` | integer | – | Optional (mode=properties). |
| `unitsMax` | integer | – | Optional (mode=properties). |
| `valueMin` | integer | – | Optional (mode=properties). |
| `valueMax` | integer | – | Optional (mode=properties). |
| `equityMin` | integer | – | Optional (mode=properties). |
| `equityMax` | integer | – | Optional (mode=properties). |
| `equityPercentMin` | integer | – | Optional (mode=properties). 0-100. |
| `equityPercentMax` | integer | – | Optional (mode=properties). 0-100. |
| `ltvMin` | integer | – | Optional (mode=properties). |
| `ltvMax` | integer | – | Optional (mode=properties). |
| `lastSoldPriceMin` | integer | – | Optional (mode=properties). |
| `lastSoldPriceMax` | integer | – | Optional (mode=properties). |
| `lastSoldDateFrom` | string | – | Optional (mode=properties). YYYY-MM-DD. |
| `lastSoldDateTo` | string | – | Optional (mode=properties). YYYY-MM-DD. |
| `assessedValueMin` | integer | – | Optional (mode=properties). |
| `assessedValueMax` | integer | – | Optional (mode=properties). |
| `yearsOwnedMin` | integer | – | Optional (mode=properties). |
| `yearsOwnedMax` | integer | – | Optional (mode=properties). |
| `propertiesOwnedMin` | integer | – | Optional (mode=properties). |
| `propertiesOwnedMax` | integer | – | Optional (mode=properties). |
| `portfolioValueMin` | integer | – | Optional (mode=properties). |
| `portfolioValueMax` | integer | – | Optional (mode=properties). |
| `taxDelinquentSince` | integer | – | Optional (mode=properties). Minimum tax-delinquent year. |
| `ownerOccupied` | select | `any` | Optional (mode=properties). |
| `outOfStateOwner` | select | `any` | Optional (mode=properties). |
| `vacant` | select | `any` | Optional (mode=properties). |
| `pool` | select | `any` | Optional (mode=properties). |
| `privateLender` | select | `any` | Optional (mode=properties). |
| `cashBuyer` | select | `any` | Optional (mode=properties). |
| `preforeclosure` | select | `any` | Optional (mode=properties). |
| `noticeType` | select | – | Optional (mode=properties). |
| `noticeDateFrom` | string | – | Optional (mode=properties). YYYY-MM-DD. |
| `noticeDateTo` | string | – | Optional (mode=properties). YYYY-MM-DD. |
| `auctionDateFrom` | string | – | Optional (mode=properties). YYYY-MM-DD. |
| `auctionDateTo` | string | – | Optional (mode=properties). YYYY-MM-DD. |
| `openingBidMin` | integer | – | Optional (mode=properties). |
| `openingBidMax` | integer | – | Optional (mode=properties). |
| `mlsStatus` | select | – | Optional (mode=properties). |
| `daysOnMarketMin` | integer | – | Optional (mode=properties). |
| `daysOnMarketMax` | integer | – | Optional (mode=properties). |
| `listPriceMin` | integer | – | Optional (mode=properties). |
| `listPriceMax` | integer | – | Optional (mode=properties). |
| `sortBy` | select | – | Optional (mode=properties). |
| `sortOrder` | select | `desc` | Used by sortBy and ownerSortBy. |
| `includeDetails` | boolean | `false` | Optional (mode=properties). Adds one detail request per property: parcel/APN, mortgages, transfer history, foreclosure, tax bill and photos. Slower and uses more requests; leave off for large lists. |
| `includeProfile` | boolean | `false` | Optional (mode=owners). Adds one profile request per owner: email, license, recent listings or cash-buyer portfolio. |
| `maxItems` | integer | – (50 when omitted) | Maximum records to push across all locations. Propwire serves at most 10,000 rows per search. |

Property filters: `leadTypes`, `propertyTypes`, `ownerKinds`, bed/bath/story/square-foot/lot/year/unit ranges, value/equity/equity-percent/LTV ranges, last-sale and assessed-value ranges, owner-occupied / out-of-state / vacant / pool / private-lender / cash-buyer / pre-foreclosure flags, owner portfolio and years-owned ranges, tax-delinquent year, foreclosure notice type and date range, auction date range and opening bid, MLS status, days on market, MLS list price, `sortBy` and `sortOrder`.

Owner filters: `ownerName`, transaction range, portfolio-size range, average-sale-price range, last-transaction date range and `ownerSortBy`.

### Examples

High-equity absentee owners in Miami:

```json
{
  "mode": "properties",
  "locations": ["Miami, FL"],
  "leadTypes": ["high_equity", "absentee_owner"],
  "maxItems": 100
}
```

Full records for two properties:

```json
{
  "mode": "propertyDetails",
  "propertyIds": ["88441", "https://propwire.com/realestate/840-Tennessee-Ave-Fort-Lauderdale-FL/88441/property-details"],
  "maxItems": 2
}
```

Cash buyers with 5+ properties in Austin:

```json
{
  "mode": "owners",
  "peopleType": "cash_buyer",
  "locations": ["Austin, TX"],
  "ownerPropertiesMin": 5,
  "includeProfile": true,
  "maxItems": 25
}
```

Replay a search you built on the site:

```json
{
  "mode": "properties",
  "searchUrls": ["https://propwire.com/search?filters=%7B%22locations%22%3A%5B%7B%22city%22%3A%22Austin%22%2C%22state%22%3A%22TX%22%7D%5D%2C%22lead_type%22%3A%5B%22high_equity%22%5D%7D"],
  "maxItems": 200
}
```

### Pagination and limits

- Property searches page in blocks of 100 rows. The actor stops at your `maxItems`, at the search's reported total, or at Propwire's 10,000-row ceiling, whichever comes first.
- Owner searches use Propwire's own people-count endpoint and paginate the same way.
- Duplicate property IDs and owner IDs are removed across pages and locations.
- State-only searches (`"FL"`) are accepted, but Propwire's search API does not reliably apply a state filter. Use a city, county or ZIP for predictable results.
- Lead types that Propwire reserves for paid memberships (for example `divorce`, `bankruptcy`, `code_violation`) are not available to a guest session. The actor ignores them and says so in the run status.
- `includeDetails` and `includeProfile` add one request per row; keep those runs small.

### Reliability

Requests are cookieless: the actor opens Propwire's public homepage, uses the guest token it issues, and keeps the resulting session cookies in memory. When an exit is challenged, it rotates the browser fingerprint, proxy session and token, then retries. No cookies, logins, API keys or proxy configuration are required from you; the actor selects its own proxy. It never writes invented rows: if Propwire is unreachable after retries, the run fails with a clear status message instead of returning sentinel records.

### Limitations

- Propwire's guest search does not expose paid lead types, owner phone numbers or skip-trace contact data.
- Cash-buyer contact fields depend on Propwire's profile access level; some profiles return portfolio data without contact details.
- State-only property searches are unreliable at the API level, as noted above.
- Propwire serves at most 10,000 rows per search. Split broad markets by city, county or ZIP to collect more.
- The actor reads Propwire's public index; it does not log in or bypass paywalls.

### FAQ

**Do I need a Propwire account or cookies?** No. The actor uses Propwire's public guest session.

**Do I need a proxy?** No. The actor picks its own proxy automatically.

**Can I search several places at once?** Yes — add multiple entries to `locations`, mix cities, counties and ZIPs, or paste several saved search URLs.

**Can I get phone numbers or emails?** Agent profiles expose the public phone and email Propwire publishes. Cash-buyer contact data is limited by Propwire's profile access level; use `includeProfile` and check `ownerEmail` / `ownerPhone`.

**Why are some fields missing on a row?** Propwire does not report that value for that property or person. The actor omits empty fields instead of writing `null`.

**Is this affiliated with Propwire?** No. This is an independent tool that reads Propwire's publicly available property and owner search. You are responsible for complying with Propwire's terms and applicable law.

# Actor input Schema

## `mode` (type: `string`):

What to fetch. Property search is the default and cheapest mode.

## `locations` (type: `array`):

US places to search (mode=properties, owners): 'Miami, FL', 'Miami-Dade County, FL', or a 5-digit ZIP. Add one entry per place. A bare state code is accepted but Propwire's search API is unreliable for state-wide queries; use a city, county or ZIP for stable results. St./Ft./Mt. abbreviations are expanded automatically.

## `searchUrls` (type: `array`):

Optional (mode=properties). Paste one or more propwire.com/search?filters=... links copied from your browser; the actor replays the same area and filters. When present, these URLs take precedence over Locations and the filter fields below. Property URLs are also accepted as an ID shortcut.

## `propertyIds` (type: `array`):

Property IDs (e.g. 88441) or propwire.com/realestate/... URLs (mode=properties, propertyDetails). Results are deduplicated.

## `ownerProfileIds` (type: `array`):

32-character agent / cash-buyer profile IDs, or propwire.com/agents/<id> and /cash-buyers/<id> URLs (mode=ownerDetails).

## `peopleType` (type: `string`):

Which owner directory to search (mode=owners).

## `ownerName` (type: `string`):

Optional (mode=owners). Case-insensitive name fragment, e.g. 'Smith'.

## `transactionsMin` (type: `integer`):

Optional (mode=owners). Minimum recorded transactions / deals.

## `transactionsMax` (type: `integer`):

Optional (mode=owners). Maximum recorded transactions / deals.

## `ownerPropertiesMin` (type: `integer`):

Optional (mode=owners). Minimum properties in the owner's portfolio.

## `ownerPropertiesMax` (type: `integer`):

Optional (mode=owners). Maximum properties in the owner's portfolio.

## `avgSalePriceMin` (type: `integer`):

Optional (mode=owners).

## `avgSalePriceMax` (type: `integer`):

Optional (mode=owners).

## `lastTransactionFrom` (type: `string`):

Optional (mode=owners). Date in YYYY-MM-DD format.

## `lastTransactionTo` (type: `string`):

Optional (mode=owners). Date in YYYY-MM-DD format.

## `ownerSortBy` (type: `string`):

Optional (mode=owners).

## `leadTypes` (type: `array`):

Optional (mode=properties). Only properties carrying every selected flag are returned. Supported free flags: absentee_owner, adjustable_loan, assumable_loan, auction, bank_owned, cash_buyer, empty_nester, flipped_property, free_and_clear, high_equity, intrafamily_transfer, low_equity, mls_active, mls_failed, mls_pending, mls_sold, negative_equity, out_of_state_owner, preforeclosure, preprobate, private_lender, tired_landlord, vacant_home, vacant_lot, zombie_property. Paid-membership flags are ignored and named in the run status.

## `propertyTypes` (type: `array`):

Optional (mode=properties). Leave empty for every type.

## `ownerKinds` (type: `array`):

Optional (mode=properties). Restrict to individual, company, or bank-owned properties.

## `bedsMin` (type: `integer`):

Optional (mode=properties).

## `bedsMax` (type: `integer`):

Optional (mode=properties).

## `bathsMin` (type: `number`):

Optional (mode=properties).

## `bathsMax` (type: `number`):

Optional (mode=properties).

## `storiesMin` (type: `integer`):

Optional (mode=properties).

## `storiesMax` (type: `integer`):

Optional (mode=properties).

## `sqftMin` (type: `integer`):

Optional (mode=properties).

## `sqftMax` (type: `integer`):

Optional (mode=properties).

## `lotSqftMin` (type: `integer`):

Optional (mode=properties).

## `lotSqftMax` (type: `integer`):

Optional (mode=properties).

## `yearBuiltMin` (type: `integer`):

Optional (mode=properties).

## `yearBuiltMax` (type: `integer`):

Optional (mode=properties).

## `unitsMin` (type: `integer`):

Optional (mode=properties).

## `unitsMax` (type: `integer`):

Optional (mode=properties).

## `valueMin` (type: `integer`):

Optional (mode=properties).

## `valueMax` (type: `integer`):

Optional (mode=properties).

## `equityMin` (type: `integer`):

Optional (mode=properties).

## `equityMax` (type: `integer`):

Optional (mode=properties).

## `equityPercentMin` (type: `integer`):

Optional (mode=properties). 0-100.

## `equityPercentMax` (type: `integer`):

Optional (mode=properties). 0-100.

## `ltvMin` (type: `integer`):

Optional (mode=properties).

## `ltvMax` (type: `integer`):

Optional (mode=properties).

## `lastSoldPriceMin` (type: `integer`):

Optional (mode=properties).

## `lastSoldPriceMax` (type: `integer`):

Optional (mode=properties).

## `lastSoldDateFrom` (type: `string`):

Optional (mode=properties). YYYY-MM-DD.

## `lastSoldDateTo` (type: `string`):

Optional (mode=properties). YYYY-MM-DD.

## `assessedValueMin` (type: `integer`):

Optional (mode=properties).

## `assessedValueMax` (type: `integer`):

Optional (mode=properties).

## `yearsOwnedMin` (type: `integer`):

Optional (mode=properties).

## `yearsOwnedMax` (type: `integer`):

Optional (mode=properties).

## `propertiesOwnedMin` (type: `integer`):

Optional (mode=properties).

## `propertiesOwnedMax` (type: `integer`):

Optional (mode=properties).

## `portfolioValueMin` (type: `integer`):

Optional (mode=properties).

## `portfolioValueMax` (type: `integer`):

Optional (mode=properties).

## `taxDelinquentSince` (type: `integer`):

Optional (mode=properties). Minimum tax-delinquent year.

## `ownerOccupied` (type: `string`):

Optional (mode=properties).

## `outOfStateOwner` (type: `string`):

Optional (mode=properties).

## `vacant` (type: `string`):

Optional (mode=properties).

## `pool` (type: `string`):

Optional (mode=properties).

## `privateLender` (type: `string`):

Optional (mode=properties).

## `cashBuyer` (type: `string`):

Optional (mode=properties).

## `preforeclosure` (type: `string`):

Optional (mode=properties).

## `noticeType` (type: `string`):

Optional (mode=properties).

## `noticeDateFrom` (type: `string`):

Optional (mode=properties). YYYY-MM-DD.

## `noticeDateTo` (type: `string`):

Optional (mode=properties). YYYY-MM-DD.

## `auctionDateFrom` (type: `string`):

Optional (mode=properties). YYYY-MM-DD.

## `auctionDateTo` (type: `string`):

Optional (mode=properties). YYYY-MM-DD.

## `openingBidMin` (type: `integer`):

Optional (mode=properties).

## `openingBidMax` (type: `integer`):

Optional (mode=properties).

## `mlsStatus` (type: `string`):

Optional (mode=properties).

## `daysOnMarketMin` (type: `integer`):

Optional (mode=properties).

## `daysOnMarketMax` (type: `integer`):

Optional (mode=properties).

## `listPriceMin` (type: `integer`):

Optional (mode=properties).

## `listPriceMax` (type: `integer`):

Optional (mode=properties).

## `sortBy` (type: `string`):

Optional (mode=properties).

## `sortOrder` (type: `string`):

Used by sortBy and ownerSortBy.

## `includeDetails` (type: `boolean`):

Optional (mode=properties). Adds one detail request per property: parcel/APN, mortgages, transfer history, foreclosure, tax bill and photos. Slower and uses more requests; leave off for large lists.

## `includeProfile` (type: `boolean`):

Optional (mode=owners). Adds one profile request per owner: email, license, recent listings or cash-buyer portfolio.

## `maxItems` (type: `integer`):

Maximum records to push across all locations (default 50 when omitted). Propwire serves at most 10,000 rows per search.

## Actor input object example

```json
{
  "mode": "properties",
  "locations": [
    "Miami, FL"
  ],
  "searchUrls": [],
  "propertyIds": [],
  "ownerProfileIds": [],
  "peopleType": "cash_buyer",
  "leadTypes": [],
  "propertyTypes": [],
  "ownerKinds": [],
  "ownerOccupied": "any",
  "outOfStateOwner": "any",
  "vacant": "any",
  "pool": "any",
  "privateLender": "any",
  "cashBuyer": "any",
  "preforeclosure": "any",
  "sortOrder": "desc",
  "includeDetails": false,
  "includeProfile": false,
  "maxItems": 3
}
```

# Actor output Schema

## `leads` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "properties",
    "locations": [
        "Miami, FL"
    ],
    "searchUrls": [],
    "propertyIds": [],
    "ownerProfileIds": [],
    "peopleType": "cash_buyer",
    "leadTypes": [],
    "propertyTypes": [],
    "ownerKinds": [],
    "ownerOccupied": "any",
    "outOfStateOwner": "any",
    "vacant": "any",
    "pool": "any",
    "privateLender": "any",
    "cashBuyer": "any",
    "preforeclosure": "any",
    "sortOrder": "desc",
    "includeDetails": false,
    "includeProfile": false,
    "maxItems": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("vexaloom-labs/propwire-distressed-and-high-equity-property-lead").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "properties",
    "locations": ["Miami, FL"],
    "searchUrls": [],
    "propertyIds": [],
    "ownerProfileIds": [],
    "peopleType": "cash_buyer",
    "leadTypes": [],
    "propertyTypes": [],
    "ownerKinds": [],
    "ownerOccupied": "any",
    "outOfStateOwner": "any",
    "vacant": "any",
    "pool": "any",
    "privateLender": "any",
    "cashBuyer": "any",
    "preforeclosure": "any",
    "sortOrder": "desc",
    "includeDetails": False,
    "includeProfile": False,
    "maxItems": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("vexaloom-labs/propwire-distressed-and-high-equity-property-lead").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "properties",
  "locations": [
    "Miami, FL"
  ],
  "searchUrls": [],
  "propertyIds": [],
  "ownerProfileIds": [],
  "peopleType": "cash_buyer",
  "leadTypes": [],
  "propertyTypes": [],
  "ownerKinds": [],
  "ownerOccupied": "any",
  "outOfStateOwner": "any",
  "vacant": "any",
  "pool": "any",
  "privateLender": "any",
  "cashBuyer": "any",
  "preforeclosure": "any",
  "sortOrder": "desc",
  "includeDetails": false,
  "includeProfile": false,
  "maxItems": 3
}' |
apify call vexaloom-labs/propwire-distressed-and-high-equity-property-lead --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vexaloom-labs/propwire-distressed-and-high-equity-property-lead"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/IcUcc0YEEIiCY2Jl3/builds/1vR0Cz4HPqF7tkeVe/openapi.json
