# Foreclosure Leads - Pre-Foreclosure, REO, Bank-Owned Homes (`seibs.co/foreclosure-property-leads`) Actor

Bulk Zillow foreclosure listings: pre-foreclosure, REO, bank-owned, auction. Filter by city/state, price, beds/baths/sqft. Auto-computes flip score, ARV estimate, rehab cost, MAO (70% rule). Built for flippers, wholesalers, BRRRR investors targeting distressed inventory.

- **URL**: https://apify.com/seibs.co/foreclosure-property-leads.md
- **Developed by:** [Seibs.co](https://apify.com/seibs.co) (community)
- **Categories:** Real estate, Lead generation, Business
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Foreclosure Leads - Pre-Foreclosure, REO, Bank-Owned, Auction

Bulk Zillow scraper for distressed inventory with first-pass underwriting (flip score, ARV, MAO 70% rule) attached to every record.

### What does Foreclosure Property Leads do?

Pre-configured for foreclosure, pre-foreclosure, REO, bank-owned, and auction listings. Sibling of `house-flipper-leads` and `property-auction-leads` - shared engine, different default filters. For each location you provide, the actor builds a Zillow search URL with `isForeclosures=true`, your price/bed/bath/sqft constraints, and the home types you want, paginates to your cap, optionally fetches each detail page for description + price history + comps + schools + HOA + tax rate + agent, computes a transparent flip score, and runs 70%-rule deal metrics.

### Features

- Defaults to `only_foreclosures=true` so you do not have to remember to toggle it.
- Normalized status buckets: `pre_foreclosure`, `foreclosure`, `reo`, `auction` - so you can fan out to the right contact path (owner direct, listing agent, bank asset manager, auction trustee).
- Detail-page enrichment: description, photo count, price history, up to 15 nearby ACTIVE comps, up to 15 recently SOLD comps, schools, HOA, property tax rate, contact agent.
- Flip score (0.0 - 1.0) with per-signal breakdown: keywords, DOM, price-vs-Zestimate, price drop, age, status, photo count.
- Deal metrics: ARV (Zestimate + comp blend), rehab cost (sqft x age x status multiplier), MAO 70% / 75% / 65%, gross profit, margin, holding cost, rent-to-price.
- Status-aware rehab pricing: REO +$15/sqft, auction +$20/sqft sight-unseen premium.
- Owner intel: skip-trace-ready record (BatchSkipTracing / REISkip / IDI Data ready), absentee inference, equity %, last sold price/date.
- Distress sub-categorization: tax delinquent, code violation, water/fire/structural damage, mold, hoarder, divorce, bankruptcy, squatter.
- Climate risk (flood/fire/heat/wind/air) + walk/transit/bike scores.

### Use cases

- **House flippers** sourcing distressed SFR inventory in a defined geography.
- **Wholesalers** building cash-buyer lead lists with first-pass underwriting attached.
- **BRRRR investors** filtering by rent-Zestimate / list-price yield.
- **Hard money / private lenders** prospecting active flippers via the listings they bid on.
- **Real-estate SaaS / CRM vendors** seeding their pipelines with fresh distressed inventory.
- **Asset-management firms** monitoring REO inventory shed by regional banks.

### FAQ

**Q: Is this legal?**
A: Yes. Every record originates from Zillow's publicly accessible listing pages. No login, no paywall, no private data. You are responsible for complying with Zillow's terms of service and any local laws governing how you contact owners (TCPA, state do-not-call lists, mailer disclosure rules).

**Q: What's pre-foreclosure vs REO vs auction, and when does each pattern matter?**
A: `pre_foreclosure` = Notice of Default filed but the owner still holds title and still lives there in most cases - best pattern for direct-to-owner mail / cold-call wholesalers chasing equity-rich distressed sellers. `foreclosure` = active legal proceeding still wrapping up. `reo` = the bank took title back after a failed auction and is reselling it through an asset manager / listing agent - best pattern for fix-and-flip buyers who want a clean title and inspection access. `auction` = sheriff or trustee sale, cash-only, no inspection, no title insurance until after the gavel - best pattern for experienced auction bidders with cash on hand.

**Q: Why might a run fail?**
A: The three most common failure modes are (1) Zillow blocking your IP because you skipped the residential proxy default, (2) a location string that Zillow's geocoder cannot resolve, and (3) hitting Zillow's hard 500-result cap per search URL - if a metro returns more than 500 distressed listings, split it into smaller geographies (county / ZIP-cluster) and run them as separate locations.

**Q: How fresh is the data?**
A: Every run pulls live from Zillow at execution time. Pre-foreclosure NODs typically appear on Zillow 7-21 days after the county filing. REO listings appear within hours of bank assignment. Auction dates can be stale - cross-check trustee / sheriff sites for sale-day truth.

**Q: Can I schedule this daily or weekly?**
A: Yes. Use Apify Schedules to run the actor on cron. Daily is appropriate for high-velocity markets (Phoenix, Tampa, Atlanta). Weekly is fine for steady metros. Pair with the `zpid` dedupe key so your CRM only ingests new records.

**Q: Does it integrate with my CRM or data tooling?**
A: Yes. Apify webhooks POST every successful run to HubSpot, Salesforce, Pipedrive, Apollo, or any HTTP endpoint. Zapier, Make.com, and n8n templates exist for one-click pushes. The dataset exports as JSON / CSV / Excel / XML for BI tools (Looker, Metabase, PowerBI).

**Q: How does pricing work?**
A: PAY_PER_EVENT. You pay $0.008 per listing record, $0.005 when a detail page is enriched, and a $0.007 surcharge for any record with `flip_score.score >= 0.6`. A typical run with `enrich_details=true` and 100 results per location bills roughly $1.30 - $2.00 per location. You only pay for what the actor actually emits - cancelled or zero-result runs cost nothing.

**Q: Can I dedupe across runs?**
A: Yes. Dedupe on `zpid` - it's Zillow's stable parcel identifier and persists across runs, status changes, and price drops.

### Related Actors

- [house-flipper-leads](https://apify.com/) - same engine, full active inventory instead of distressed-only.
- [property-auction-leads](https://apify.com/) - sheriff / trustee auction specialist sibling actor.
- [court-records-intel](https://apify.com/) - pull the underlying foreclosure complaint, lis pendens, and case docket for any distressed property by party name.

### Integrations

- Zapier - push to HubSpot/Salesforce/Pipedrive/Apollo
- Make.com - workflow automation
- n8n - self-hosted automation
- Apify webhooks - POST to your endpoint
- API + dataset export (JSON/CSV/Excel/XML)
- MCP / AI agents - call from Claude/GPT/LangChain

### Input

```json
{
    "locations": ["Austin, TX", "Phoenix, AZ"],
    "only_foreclosures": true,
    "include_foreclosures": true,
    "min_price": 80000,
    "max_price": 400000,
    "min_beds": 3,
    "min_baths": 1,
    "min_sqft": 900,
    "home_types": ["SingleFamily", "Townhouse"],
    "days_on_zillow_min": 30,
    "min_flip_score": 0.6,
    "enrich_details": true,
    "enrich_concurrency": 6,
    "use_apify_proxy": true,
    "apify_proxy_groups": ["RESIDENTIAL"],
    "apify_proxy_country": "US",
    "max_results_per_location": 100,
    "max_pages_per_location": 5
}
````

### Output

**Sample output:** [`.actor/sample-output.json`](./.actor/sample-output.json) — copy-paste-ready preview of real-looking records.

First record inline:

```json
{
  "zpid": "60082337",
  "address": "6204 N 30th St",
  "city": "Tampa",
  "state": "FL",
  "zip": "33610",
  "lat": 27.9506,
  "lng": -82.4015,
  "price": 148000,
  "zestimate": 232000,
  "rent_zestimate": 1258,
  "tax_assessed_value": 180960,
  "beds": 3,
  "baths": 2.0,
  "sqft": 1340,
  "lot_size_sqft": 8040,
  "year_built": 1968,
  "home_type": "SingleFamily",
  "home_status": "PRE_FORECLOSURE",
  "listing_status_category": "pre_foreclosure",
  "days_on_zillow": 29,
  "price_reduction": null,
  "detail_url": "https://www.zillow.com/homedetails/60082337_zpid/",
  "img_src": "https://photos.zillowstatic.com/fp/601-house.jpg",
  "broker_name": "Keller Williams Heritage",
  "scraped_at": "2026-05-09T17:14:32Z",
  "source": "foreclosure",
  "description": "Investor special \u2014 pre-foreclosure. 3 bed / 2.0 bath, 1340 sqft. Sold AS-IS. Cash or hard-money only.",
  "price_history": [
    {
      "date": "2026-04-12",
      "event": "Price change",
      "price": 148000,
      "priceChangeRate": -0.06,
      "source": "Zillow"
    },
    {
      "date": "2026-02-28",
      "event": "Listed for sale",
      "price": 163000,
      "priceChangeRate": null,
      "source": "MLS"
    },
    {
      "date": "2023-07-15",
      "event": "Sold",
      "price": 91760,
      "priceChangeRate": null,
      "source": "Public Record"
    }
  ],
  "photo_count": 24,
  "schools": [
    {
      "name": "Tampa Elementary",
      "rating": 6,
      "distance": 0.4
    },
    {
      "name": "Tampa Middle School",
      "rating": 5,
      "distance": 1.2
    },
    {
      "name": "Tampa High School",
      "rating": 7,
      "distance": 2.8
    }
  ],
  "hoa_fee": null,
  "property_tax_rate": 1.85,
  "contact_phone": "(480) 555-1067",
  "contact_agent": "Priya Shah",
  "owner_occupied": false,
  "likely_owner_occupied": false,
  "detail_enriched": true,
  "flipper_keywords": {
    "pre-foreclosure": [
      "pre-foreclosure"
    ],
    "lender": [
      "lender approval required"
    ],
    "as-is": [
      "as-is"
    ]
  },
  "flip_score": {
    "score": 0.88,
    "components": {
      "keyword_score": 0.35,
      "anti_keyword_penalty": 0.0,
      "dom_score": 0.1,
      "price_drop_score": 0.0,
      "status_score": 0.15,
      "zestimate_gap_score": 0.1,
      "age_score": 0.05,
      "low_photo_score": 0.0
    },
    "matched_keywords": [
      "pre-foreclosure",
      "lender approval required",
      "as-is"
    ],
    "anti_keywords": []
  },
  "deal_metrics": {
    "arv_estimate": 241280,
    "arv_source": "sold_comps",
    "rehab_cost_estimate": 37520,
    "estimated_rehab_months": 5,
    "exit_strategies": {
      "flip_70_rule": {
        "mao": 131376,
        "rule": "ARV * 0.70 - rehab"
      },
      "brrrr_75_rule": {
        "mao": 143440,
        "rule": "ARV * 0.75 - rehab"
      },
      "wholesale_65_rule": {
        "mao": 119312,
        "rule": "ARV * 0.65 - rehab"
      }
    },
    "gross_profit_estimate": 52772,
    "gross_margin_pct": 21.9,
    "net_profit_estimate": 44856,
    "all_in_cost_estimate": 188508,
    "monthly_holding_cost": 498,
    "total_holding_cost_estimate": 2988,
    "annual_rent_to_price": 0.102,
    "monthly_rent_estimate": 1258,
    "price_per_sqft": 110.45,
    "cash_on_cash_return_pct": 18.4
  },
  "tax_history": [
    {
      "year": 2025,
      "value": 180960,
      "tax_paid": 4292
    },
    {
      "year": 2024,
      "value": 171680,
      "tax_paid": 4222
    }
  ],
  "active_nearby_homes": [],
  "sold_nearby_homes": [
    {
      "address": "1200 Maple St",
      "sold_price": 229216,
      "sqft": 1340,
      "beds": 3,
      "sold_date": "2026-03-15"
    },
    {
      "address": "1242 Pine St",
      "sold_price": 236454,
      "sqft": 1390,
      "beds": 3,
      "sold_date": "2026-03-15"
    },
    {
      "address": "1284 Oak St",
      "sold_price": 243692,
      "sqft": 1440,
      "beds": 3,
      "sold_date": "2026-03-15"
    }
  ],
  "best_school_rating": 7,
  "contact_email": null,
  "parcel_id": "00000601-07",
  "owner_info": {
    "owner_name": "Carlos Mendez",
    "owner_first_name": "Carlos",
    "owner_last_name": "Mendez",
    "is_owner_occupied": false,
    "mailing_address": "6204 N 30th St, Tampa, FL 33610",
    "last_sold_price": 91760,
    "last_sold_date": "2023-07-15",
    "years_owned": 3,
    "likely_absentee": false
  },
  "distress_categories": {
    "as_is": [
      "as-is"
    ],
    "fixer": [],
    "motivated_seller": []
  },
  "neighborhood_delta": {
    "vs_neighborhood_active_pct": -18.4,
    "vs_neighborhood_ppsf_pct": -22.1,
    "below_neighborhood_median": true
  },
  "appreciation": {
    "yoy_appreciation_pct": 4.2,
    "five_year_appreciation_pct": 38.6,
    "history_span_years": 8
  },
  "estimated_owner_equity_pct": 63,
  "property_condition_tier": "medium_rehab",
  "predicted_price_from_comps": {
    "predicted_price": 241280,
    "confidence": "high",
    "comp_count_used": 6,
    "comp_median_ppsf": 180.06,
    "adjustments_applied": {
      "sqft_adj": 1.02,
      "year_built_adj": 0.98,
      "beds_adj": 1.0
    }
  },
  "skip_trace_record": {
    "first_name": "Carlos",
    "last_name": "Mendez",
    "full_name": "Carlos Mendez",
    "mailing_address": "6204 N 30th St, Tampa, FL 33610",
    "mailing_city": "Tampa",
    "mailing_state": "FL",
    "mailing_zip": "33610",
    "property_address": "6204 N 30th St",
    "property_city": "Tampa",
    "property_state": "FL",
    "property_zip": "33610",
    "is_absentee_owner": false,
    "years_owned": 3,
    "last_sold_price": 91760,
    "skip_trace_ready": true
  },
  "climate_risk": {
    "flood": {
      "risk_score": 2,
      "risk_level": "minor"
    },
    "fire": {
      "risk_score": 4,
      "risk_level": "moderate"
    },
    "heat": {
      "risk_score": 7,
      "risk_level": "major"
    },
    "wind": {
      "risk_score": 3,
      "risk_level": "minor"
    },
    "air": {
      "risk_score": 5,
      "risk_level": "moderate"
    }
  },
  "walk_score": 43,
  "transit_score": 29,
  "bike_score": 39,
  "climate_zone": "subtropical",
  "flood_zone": "X",
  "has_septic": false,
  "has_well": false,
  "has_solar": false
}
```

Sample record (abridged):

```json
{
    "zpid": "31482912",
    "address": "2501 Elm St",
    "city": "Phoenix",
    "state": "AZ",
    "zip": "85015",
    "price": 175000,
    "zestimate": 268000,
    "beds": 3,
    "baths": 2,
    "sqft": 1320,
    "year_built": 1962,
    "home_status": "FORECLOSED",
    "listing_status_category": "reo",
    "days_on_zillow": 92,
    "flipper_keywords": ["as-is", "cash only", "needs work", "investor special"],
    "flip_score": {
        "score": 0.81,
        "signals": {
            "keywords": 0.85,
            "dom": 0.62,
            "price_vs_zestimate": 0.78,
            "status": 1.0,
            "age": 0.7,
            "photo_count": 0.4
        }
    },
    "deal_metrics": {
        "arv_estimate": 270000,
        "arv_source": "sold_comps",
        "rehab_cost_estimate": 66000,
        "exit_strategies": {
            "flip_70_rule": {"mao": 123000, "fits_rule": false}
        },
        "gross_profit_estimate": 29000,
        "annual_rent_to_price": 0.115
    },
    "sold_nearby_homes": [
        {"address": "2517 Elm St", "sold_price": 268000, "sqft": 1305, "sold_date": "2026-04-02"}
    ],
    "scraped_at": "2026-05-14T12:00:00Z"
}
```

The dataset preview ships with four views: **Overview** (key columns), **Detailed** (every field), **Sold comps** (one row per sold comparable per subject - exploded via unwind), and a CSV download.

### Pricing

PAY\_PER\_EVENT.

| Event | Price | When |
|---|---|---|
| `listing_record` | $0.008 | One foreclosure / REO / pre-foreclosure / auction record |
| `detail_enrichment` | $0.005 | When detail page is fetched successfully |
| `high_flip_score` | $0.007 | Surcharge when `flip_score.score >= 0.6` |

A typical run with `enrich_details=true` and 100 results per location bills roughly **$1.30 - $2.00 per location** depending on how many records clear the 0.6 flip-score bar.

### FAQ

**Q: How do the four foreclosure status categories differ?**
A: `pre_foreclosure` = NOD filed but owner still holds title; sell directly to owner. `foreclosure` = active proceeding. `reo` = bank took title and is selling; contact bank's listing agent. `auction` = sheriff or trustee sale; cash, no inspection.

**Q: Does this surface off-market pre-foreclosures?**
A: No. Zillow's `isForeclosures=true` parameter only surfaces listings flagged by Zillow itself. Off-market pre-foreclosures (NOD filed, not yet listed) require county-records sourcing - out of scope here.

**Q: How accurate are the auction sale-day details?**
A: Limited. Sale date, opening bid, and trustee details are inconsistently published by Zillow. Treat the `auction` category as a lead pointer, not a sale-day source of truth.

**Q: Why do I need a residential proxy?**
A: Zillow blocks datacenter IPs within seconds. RESIDENTIAL is the only viable group for sustained scraping. The actor defaults to it.

**Q: Can I dedupe across runs?**
A: Yes - dedupe on `zpid`. It is stable across runs.

**Q: What's the difference between this and `house-flipper-leads`?**
A: Same engine. This actor defaults `only_foreclosures=true` so you only get distressed status. `house-flipper-leads` defaults to the full active inventory.

**Q: Are owner names included?**
A: When Zillow exposes them on the detail page, yes - in `owner_info` and `skip_trace_record`. Many records will have null owner data; pair with a county-records source for full coverage.

### Support

GitHub issues or DM via the Apify Store contact form.

### Found this useful?

If this actor saved you time or money, please consider leaving a quick review on the Apify Store. Reviews help other buyers find work that solves their problem and let me prioritize the features paying customers actually use. Leave a review: https://apify.com/seibs.co/foreclosure-property-leads#reviews

# Actor input Schema

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

US locations to search in. Format: 'City, ST'. Example: \['Austin, TX', 'Dallas, TX', 'Phoenix, AZ']. Max 25 locations per run.

## `only_foreclosures` (type: `boolean`):

Restrict to foreclosure/pre-foreclosure/REO/bank-owned listings only (recommended for this actor).

## `include_foreclosures` (type: `boolean`):

Allow foreclosure-status listings into the result set. Leave on.

## `only_auctions` (type: `boolean`):

Restrict to active auction (sheriff sale / trustee sale) listings only.

## `only_fsbo` (type: `boolean`):

Restrict to FSBO listings. Rarely useful on the foreclosure actor; leave off.

## `min_price` (type: `integer`):

Lower bound on Zillow list price. Leave blank for no floor.

## `max_price` (type: `integer`):

Upper bound on Zillow list price. Leave blank for no ceiling.

## `min_beds` (type: `integer`):

Minimum number of bedrooms (inclusive). Leave blank for no floor.

## `max_beds` (type: `integer`):

Maximum number of bedrooms (inclusive). Leave blank for no ceiling.

## `min_baths` (type: `integer`):

Minimum number of bathrooms (decimals OK, e.g. 1.5). Leave blank for no floor.

## `min_sqft` (type: `integer`):

Minimum interior living area in square feet. Leave blank for no floor.

## `max_sqft` (type: `integer`):

Maximum interior living area in square feet. Leave blank for no ceiling.

## `min_year_built` (type: `integer`):

Minimum year built (inclusive). Set to 1970 to focus on older inventory with more rehab opportunity. Leave blank for no floor.

## `max_year_built` (type: `integer`):

Maximum year built (inclusive). Leave blank for no ceiling.

## `home_types` (type: `array`):

Zillow home type filter. SingleFamily and Townhouse are the standard flip targets.

## `days_on_zillow_min` (type: `integer`):

Only return listings that have been on Zillow at least this many days. Common buckets: 30 (moderate aging), 60 (motivated seller territory), 90 (very motivated), 180+ (stale, often distressed). Leave blank to skip.

## `has_price_drop` (type: `boolean`):

Restrict to listings with at least one price reduction recorded by Zillow.

## `min_flip_score` (type: `string`):

Drop records whose computed flip score is below this threshold. 0.6+ = high-confidence flip candidate. Leave blank to emit everything. Enter as a decimal between 0.0 and 1.0 (e.g. 0.5).

## `enrich_details` (type: `boolean`):

Fetch each listing's detail page for description, price history, photos, schools, HOA, tax rate, and contact agent. Adds detail\_enrichment PPE charge per record.

## `enrich_concurrency` (type: `integer`):

Parallel HTTP fetches against Zillow detail pages. 4 is the safe default; raise cautiously to reduce proxy bill spikes and Zillow rate-limit risk.

## `use_apify_proxy` (type: `boolean`):

Route Zillow requests through Apify Proxy. Required for any non-trivial volume.

## `apify_proxy_groups` (type: `array`):

Apify proxy groups to use. RESIDENTIAL is recommended for Zillow.

## `apify_proxy_country` (type: `string`):

Two-letter country code for residential proxy (e.g. 'US'). Leave blank for any.

## `max_results_per_location` (type: `integer`):

Hard cap on listings emitted per location (sums across pages). Capped at 100 to keep compute cost predictable.

## `max_pages_per_location` (type: `integer`):

Cap on Zillow search-result pages crawled per location. Zillow shows roughly 40 results per page.

## `preset_filter` (type: `string`):

Apply a flipper-strategy preset. User-supplied fields below override the preset.

## `min_lot_sqft` (type: `integer`):

Lot area floor in sqft. 43560 = 1 acre. Useful for finding subdivide/ADU opportunities.

## `max_lot_sqft` (type: `integer`):

Lot area ceiling in sqft. Leave blank for no ceiling.

## `max_hoa_fee` (type: `integer`):

Drop listings with monthly HOA above this. High HOAs kill flip math (eat into holding cost). 100 is a strict filter; 300 is moderate.

## `min_school_rating` (type: `integer`):

Drop listings whose best nearby school rates below this (impacts ARV directly). Requires enrich\_details=true.

## `sort_order` (type: `string`):

How Zillow returns results. 'best\_deals' is the default global relevance ranking; 'biggest\_discount' surfaces price-drop listings first.

## `must_include_keywords` (type: `array`):

Server-side filter: only emit listings whose description contains ALL of these case-insensitive substrings. Example: \['as-is', 'cash'].

## `must_exclude_keywords` (type: `array`):

Drop any listing whose description contains ANY of these case-insensitive substrings. Example: \['turnkey', 'renovated', 'new construction'].

## `only_absentee_owners` (type: `boolean`):

Drop listings where the owner's mailing address matches the property address. Absentee owners (landlords, out-of-state heirs) are typically more flexible on price. Requires enrich\_details=true.

## `estimated_rehab_months` (type: `integer`):

How long you expect rehab + listing + closing to take. Used to estimate total holding cost (mortgage interest + tax + utilities + HOA) during the project.

## Actor input object example

```json
{
  "locations": [
    "Austin, TX"
  ],
  "only_foreclosures": true,
  "include_foreclosures": true,
  "only_auctions": false,
  "only_fsbo": false,
  "home_types": [
    "SingleFamily",
    "Townhouse"
  ],
  "has_price_drop": false,
  "min_flip_score": "",
  "enrich_details": true,
  "enrich_concurrency": 4,
  "use_apify_proxy": true,
  "apify_proxy_groups": [
    "RESIDENTIAL"
  ],
  "apify_proxy_country": "US",
  "max_results_per_location": 100,
  "max_pages_per_location": 5,
  "preset_filter": "",
  "sort_order": "best_deals",
  "must_include_keywords": [],
  "must_exclude_keywords": [],
  "only_absentee_owners": false,
  "estimated_rehab_months": 4
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

Narrow, token-efficient slice of every record. Consumer: LLM agents (Claude, GPT, LangChain tools), MCP hosts, dashboards. Property fields: address, city, state, list price, ARV, MAO (flip), flip score, distress tier, contact phone.

## `datasetItemsDetailed` (type: `string`):

All fields for every record. Consumer: humans browsing the dataset in the Apify UI, RAG ingest pipelines, and full backups. Larger payload — not recommended as a direct LLM tool response.

## `datasetItemsUnwind` (type: `string`):

Same records, but each element of the `sold_comps` array is promoted to its own row. Consumer: Zapier / Make / n8n / Google Sheets users who want one row per item, and LLM agents that prefer flat rows over nested arrays.

## `datasetItemsMcp` (type: `string`):

First 50 overview records as a clean JSON array. Wrap on the agent side in an MCP tool-call response envelope, e.g. `{ "ok": true, "data": <this array>, "meta": { "actor": "foreclosure-property-leads", "count": <len>, "view": "overview" } }`. Consumer: MCP servers, Claude Desktop, Cursor, OpenAI Assistants tool calls.

## `datasetItemsCsv` (type: `string`):

Spreadsheet-friendly export of the overview view. Consumer: humans, sales-ops teams, Excel / Google Sheets users.

# 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 = {
    "locations": [
        "Austin, TX"
    ],
    "only_foreclosures": true,
    "include_foreclosures": true,
    "enrich_details": true,
    "use_apify_proxy": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("seibs.co/foreclosure-property-leads").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 = {
    "locations": ["Austin, TX"],
    "only_foreclosures": True,
    "include_foreclosures": True,
    "enrich_details": True,
    "use_apify_proxy": True,
}

# Run the Actor and wait for it to finish
run = client.actor("seibs.co/foreclosure-property-leads").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "locations": [
    "Austin, TX"
  ],
  "only_foreclosures": true,
  "include_foreclosures": true,
  "enrich_details": true,
  "use_apify_proxy": true
}' |
apify call seibs.co/foreclosure-property-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=seibs.co/foreclosure-property-leads",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Foreclosure Leads - Pre-Foreclosure, REO, Bank-Owned Homes",
        "description": "Bulk Zillow foreclosure listings: pre-foreclosure, REO, bank-owned, auction. Filter by city/state, price, beds/baths/sqft. Auto-computes flip score, ARV estimate, rehab cost, MAO (70% rule). Built for flippers, wholesalers, BRRRR investors targeting distressed inventory.",
        "version": "0.1",
        "x-build-id": "mcHf1tu8aZSmfytG6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/seibs.co~foreclosure-property-leads/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-seibs.co-foreclosure-property-leads",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/seibs.co~foreclosure-property-leads/runs": {
            "post": {
                "operationId": "runs-sync-seibs.co-foreclosure-property-leads",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/seibs.co~foreclosure-property-leads/run-sync": {
            "post": {
                "operationId": "run-sync-seibs.co-foreclosure-property-leads",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "locations"
                ],
                "properties": {
                    "locations": {
                        "title": "Locations",
                        "maxItems": 25,
                        "type": "array",
                        "description": "US locations to search in. Format: 'City, ST'. Example: ['Austin, TX', 'Dallas, TX', 'Phoenix, AZ']. Max 25 locations per run.",
                        "default": [
                            "Austin, TX"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "only_foreclosures": {
                        "title": "Only foreclosures (recommended)",
                        "type": "boolean",
                        "description": "Restrict to foreclosure/pre-foreclosure/REO/bank-owned listings only (recommended for this actor).",
                        "default": true
                    },
                    "include_foreclosures": {
                        "title": "Include foreclosure listings",
                        "type": "boolean",
                        "description": "Allow foreclosure-status listings into the result set. Leave on.",
                        "default": true
                    },
                    "only_auctions": {
                        "title": "Only auction listings",
                        "type": "boolean",
                        "description": "Restrict to active auction (sheriff sale / trustee sale) listings only.",
                        "default": false
                    },
                    "only_fsbo": {
                        "title": "Only For Sale By Owner",
                        "type": "boolean",
                        "description": "Restrict to FSBO listings. Rarely useful on the foreclosure actor; leave off.",
                        "default": false
                    },
                    "min_price": {
                        "title": "Minimum list price (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Lower bound on Zillow list price. Leave blank for no floor."
                    },
                    "max_price": {
                        "title": "Maximum list price (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Upper bound on Zillow list price. Leave blank for no ceiling."
                    },
                    "min_beds": {
                        "title": "Minimum bedrooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Minimum number of bedrooms (inclusive). Leave blank for no floor."
                    },
                    "max_beds": {
                        "title": "Maximum bedrooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of bedrooms (inclusive). Leave blank for no ceiling."
                    },
                    "min_baths": {
                        "title": "Minimum bathrooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Minimum number of bathrooms (decimals OK, e.g. 1.5). Leave blank for no floor."
                    },
                    "min_sqft": {
                        "title": "Minimum square footage",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum interior living area in square feet. Leave blank for no floor."
                    },
                    "max_sqft": {
                        "title": "Maximum square footage",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum interior living area in square feet. Leave blank for no ceiling."
                    },
                    "min_year_built": {
                        "title": "Minimum year built",
                        "minimum": 1800,
                        "maximum": 2030,
                        "type": "integer",
                        "description": "Minimum year built (inclusive). Set to 1970 to focus on older inventory with more rehab opportunity. Leave blank for no floor."
                    },
                    "max_year_built": {
                        "title": "Maximum year built",
                        "minimum": 1800,
                        "maximum": 2030,
                        "type": "integer",
                        "description": "Maximum year built (inclusive). Leave blank for no ceiling."
                    },
                    "home_types": {
                        "title": "Home types",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Zillow home type filter. SingleFamily and Townhouse are the standard flip targets.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "SingleFamily",
                                "Townhouse",
                                "Condo",
                                "MultiFamily",
                                "Manufactured",
                                "LotsLand",
                                "Apartment"
                            ]
                        },
                        "default": [
                            "SingleFamily",
                            "Townhouse"
                        ]
                    },
                    "days_on_zillow_min": {
                        "title": "Minimum days on Zillow",
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Only return listings that have been on Zillow at least this many days. Common buckets: 30 (moderate aging), 60 (motivated seller territory), 90 (very motivated), 180+ (stale, often distressed). Leave blank to skip."
                    },
                    "has_price_drop": {
                        "title": "Only price-reduced listings",
                        "type": "boolean",
                        "description": "Restrict to listings with at least one price reduction recorded by Zillow.",
                        "default": false
                    },
                    "min_flip_score": {
                        "title": "Minimum flip score (0.0 - 1.0)",
                        "type": "string",
                        "description": "Drop records whose computed flip score is below this threshold. 0.6+ = high-confidence flip candidate. Leave blank to emit everything. Enter as a decimal between 0.0 and 1.0 (e.g. 0.5).",
                        "default": ""
                    },
                    "enrich_details": {
                        "title": "Enrich listing detail pages",
                        "type": "boolean",
                        "description": "Fetch each listing's detail page for description, price history, photos, schools, HOA, tax rate, and contact agent. Adds detail_enrichment PPE charge per record.",
                        "default": true
                    },
                    "enrich_concurrency": {
                        "title": "Detail-page concurrency",
                        "minimum": 1,
                        "maximum": 16,
                        "type": "integer",
                        "description": "Parallel HTTP fetches against Zillow detail pages. 4 is the safe default; raise cautiously to reduce proxy bill spikes and Zillow rate-limit risk.",
                        "default": 4
                    },
                    "use_apify_proxy": {
                        "title": "Use Apify proxy",
                        "type": "boolean",
                        "description": "Route Zillow requests through Apify Proxy. Required for any non-trivial volume.",
                        "default": true
                    },
                    "apify_proxy_groups": {
                        "title": "Apify proxy groups",
                        "type": "array",
                        "description": "Apify proxy groups to use. RESIDENTIAL is recommended for Zillow.",
                        "default": [
                            "RESIDENTIAL"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "apify_proxy_country": {
                        "title": "Apify proxy country",
                        "type": "string",
                        "description": "Two-letter country code for residential proxy (e.g. 'US'). Leave blank for any.",
                        "default": "US"
                    },
                    "max_results_per_location": {
                        "title": "Max results per location",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Hard cap on listings emitted per location (sums across pages). Capped at 100 to keep compute cost predictable.",
                        "default": 100
                    },
                    "max_pages_per_location": {
                        "title": "Max search pages per location",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Cap on Zillow search-result pages crawled per location. Zillow shows roughly 40 results per page.",
                        "default": 5
                    },
                    "preset_filter": {
                        "title": "Preset filter (optional)",
                        "enum": [
                            "",
                            "conservative_flipper",
                            "aggressive_flipper",
                            "brrrr_investor",
                            "wholesaler"
                        ],
                        "type": "string",
                        "description": "Apply a flipper-strategy preset. User-supplied fields below override the preset.",
                        "default": ""
                    },
                    "min_lot_sqft": {
                        "title": "Min lot size (sqft)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Lot area floor in sqft. 43560 = 1 acre. Useful for finding subdivide/ADU opportunities."
                    },
                    "max_lot_sqft": {
                        "title": "Max lot size (sqft)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Lot area ceiling in sqft. Leave blank for no ceiling."
                    },
                    "max_hoa_fee": {
                        "title": "Max HOA fee per month ($)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Drop listings with monthly HOA above this. High HOAs kill flip math (eat into holding cost). 100 is a strict filter; 300 is moderate."
                    },
                    "min_school_rating": {
                        "title": "Min school rating (1-10)",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Drop listings whose best nearby school rates below this (impacts ARV directly). Requires enrich_details=true."
                    },
                    "sort_order": {
                        "title": "Sort order",
                        "enum": [
                            "best_deals",
                            "newest",
                            "lowest_price",
                            "biggest_discount",
                            "largest_sqft",
                            "oldest_built"
                        ],
                        "type": "string",
                        "description": "How Zillow returns results. 'best_deals' is the default global relevance ranking; 'biggest_discount' surfaces price-drop listings first.",
                        "default": "best_deals"
                    },
                    "must_include_keywords": {
                        "title": "Required keywords (must all appear in description)",
                        "type": "array",
                        "description": "Server-side filter: only emit listings whose description contains ALL of these case-insensitive substrings. Example: ['as-is', 'cash'].",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "must_exclude_keywords": {
                        "title": "Excluded keywords (drop if any appear)",
                        "type": "array",
                        "description": "Drop any listing whose description contains ANY of these case-insensitive substrings. Example: ['turnkey', 'renovated', 'new construction'].",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "only_absentee_owners": {
                        "title": "Only absentee owners",
                        "type": "boolean",
                        "description": "Drop listings where the owner's mailing address matches the property address. Absentee owners (landlords, out-of-state heirs) are typically more flexible on price. Requires enrich_details=true.",
                        "default": false
                    },
                    "estimated_rehab_months": {
                        "title": "Estimated rehab months (for holding cost)",
                        "minimum": 1,
                        "maximum": 18,
                        "type": "integer",
                        "description": "How long you expect rehab + listing + closing to take. Used to estimate total holding cost (mortgage interest + tax + utilities + HOA) during the project.",
                        "default": 4
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
