# House Flipper Leads - Zillow Listings + Flip Score, ARV, MAO (`seibs.co/house-flipper-leads`) Actor

Bulk Zillow active listings for house flippers. Filter by city/state, price, beds/baths/sqft, year built, days on market, price drops. Auto-computes flip score, ARV estimate, rehab cost, MAO (70% rule), and detects distress keywords (as-is, fixer, motivated seller, etc).

- **URL**: https://apify.com/seibs.co/house-flipper-leads.md
- **Developed by:** [Seibs.co](https://apify.com/seibs.co) (community)
- **Categories:** Real estate, Lead generation, Business
- **Stats:** 2 total users, 1 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

## House Flipper Leads - Zillow Listings + Flip Score, ARV, MAO

Bulk Zillow listings scraper for flippers and BRRRR investors. Every record ships with flip score, ARV, rehab cost, and 70%-rule MAO.

### What does House Flipper Leads do?

Pulls active and distressed Zillow listings for the cities you specify, applies a full filter set (price, beds, baths, sqft, year built, home type, FSBO, foreclosure inclusion, days-on-market, price drops), and for each listing optionally fetches the detail page to extract description, full price history, nearby active and sold comparables, schools, HOA, property tax rate, and listing agent contact. Each record includes a transparent flip score (0.0 - 1.0) with full per-component breakdown plus deal metrics: ARV estimate, rehab cost, MAO on 70%/75%/65% rules, gross profit, margin, holding cost, rent-to-price ratio.

### Features

- Filter set: city/state, price, beds/baths/sqft, year built, home types, FSBO, only-foreclosures, only-auctions, days-on-Zillow buckets, price drops, min flip score.
- Detail-page enrichment: description, photo count, full price history, up to 15 nearby ACTIVE comps, up to 15 recently SOLD comps (ARV ground truth), schools, HOA, property tax rate, agent name + phone.
- Transparent flip score - 8 weighted components, each independently exposed: keyword score, anti-keyword penalty, days-on-market, price-drop, status, Zestimate gap, age, low-photo.
- Three exit-strategy MAOs: flip 70%, BRRRR 75%, wholesale 65% - all with profit/margin breakdowns.
- ARV with provenance: `sold_comps` > `nearby_active_comps` > `zestimate` > `list_price_x_1.15` fallback chain.
- Comp-adjusted predicted price with sqft/beds/year-built adjustments and confidence rating.
- Owner intel: skip-trace-ready record, absentee inference, estimated equity %, years-owned.
- Distress sub-categorization: tax delinquent, code violation, water/fire/structural damage, mold, hoarder, divorce sale, bankruptcy.
- Climate risk (flood, fire, heat, wind, air) + walk/transit/bike scores + flood zone + septic/well/solar flags.

### Use cases

- **Fix-and-flip operators** - sourcing distressed inventory below the 70%-rule MAO.
- **BRRRR investors** - the `annual_rent_to_price` field surfaces 1%+ candidates fast.
- **Real-estate wholesalers** - bird-dog motivated sellers (as-is, fixer, estate sale) at scale.
- **Hard money / private lenders** - prospect active flippers via the listings they bid on.
- **Real-estate VCs / iBuyer ops** - backfill internal CMA pipelines with structured Zillow snapshots.
- **Skip-trace pipelines** - the `skip_trace_record` field is pre-flattened for BatchSkipTracing, REISkip, IDI Data ingestion.

### FAQ

**Q: Is this legal?**
A: Yes. The actor only scrapes data Zillow publishes publicly to anonymous browsers - listing details, listing-agent contact, broker name, and the owner / mailing fields Zillow itself exposes. No login walls are bypassed; no private MLS data is touched. You are responsible for compliance with your jurisdiction's do-not-call, do-not-mail, and TCPA rules before contacting owners or agents.

**Q: Why might a run fail or return zero records?**
A: The most common cause is Zillow rate-limiting or block-walls reached through upstream proxies - Zillow blocks datacenter IPs within seconds and aggressively throttles RESIDENTIAL too if a single IP hammers detail pages. RESIDENTIAL US proxy is mandatory and is the default. Free-plan Apify accounts can also exhaust compute / proxy credits mid-run on large detail-enriched jobs; we soft-fail and dataset everything collected before the ceiling hit.

**Q: How accurate is the ARV estimate?**
A: It is a heuristic - treat it as a first-pass filter, not an underwriting figure. Ground-truth ranking: when `enrich_details=true` and at least 3 nearby SOLD comps are available, the actor uses the sold-comp median (best, ±15%). It falls back to `nearby_active_comps` median, then Zestimate, then `list_price x 1.15`. The `arv_source` field tells you which path was used. Net accuracy is roughly ±25% even on the best path - always run your own CMA on the shortlist before underwriting or sending a hard-money LOI.

**Q: How fresh is the data?**
A: Records are fetched live at run time - Zillow listings reflect the current snapshot, and the detail page reflects what was rendered at the run timestamp (`scraped_at`). There is no stale cache.

**Q: Can I schedule daily or weekly runs?**
A: Yes. Use Apify's built-in Schedules feature to run this actor on any cron interval. Pair with a webhook to push only the diff (new listings, price drops, status changes) to your CRM. Dedupe across runs on `zpid` - it's stable.

**Q: Does it integrate with my CRM or skip-trace pipeline?**
A: Yes - via Zapier, Make, n8n, or direct webhook into REI Reply, Investorfuse, Podio, GoHighLevel, HubSpot, etc. The `skip_trace_record` field is pre-flattened for BatchSkipTracing, REISkip, and IDI Data ingestion. See the Integrations section below.

**Q: What does it cost in practice?**
A: Pay-per-event: $0.005 base, $0.010 with detail enrichment, $0.015 when the listing scores `flip_score.score >= 0.6`. A typical metro-wide detail-enriched flipper run lands at $5-25 per 1,000 listings depending on flip-score density. No subscription, no minimum.

---

### Related Actors

Pair this actor with other SEIB property-intel sources to build a deeper distressed-deal pipeline:

- [Foreclosure Property Leads](https://apify.com/seibs.co/foreclosure-property-leads) - same engine, defaulted to `only_foreclosures=true` for pre-foreclosure and bank-owned inventory
- [Property Auction Leads](https://apify.com/seibs.co/property-auction-leads) - same engine, defaulted to `only_auctions=true` for trustee, sheriff, and tax-deed sales
- [Court Records Intel](https://apify.com/seibs.co/court-records-intel) - surface litigation-driven distressed-sale candidates (divorce, probate, partition, bankruptcy filings) before they list

---

### 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"],
    "min_price": 100000,
    "max_price": 350000,
    "min_beds": 3,
    "min_baths": 1.5,
    "min_sqft": 1000,
    "max_sqft": 2400,
    "max_year_built": 1990,
    "home_types": ["SingleFamily", "Townhouse"],
    "include_foreclosures": true,
    "days_on_zillow_min": 30,
    "has_price_drop": true,
    "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": "60013837",
  "address": "3412 E Roosevelt St",
  "city": "Phoenix",
  "state": "AZ",
  "zip": "85008",
  "lat": 33.4647,
  "lng": -112.0319,
  "price": 265000,
  "zestimate": 395000,
  "rent_zestimate": 2252,
  "tax_assessed_value": 308100,
  "beds": 3,
  "baths": 2.0,
  "sqft": 1480,
  "lot_size_sqft": 8880,
  "year_built": 1962,
  "home_type": "SingleFamily",
  "home_status": "FOR_SALE",
  "listing_status_category": "for_sale",
  "days_on_zillow": 87,
  "price_reduction": 15000,
  "detail_url": "https://www.zillow.com/homedetails/60013837_zpid/",
  "img_src": "https://photos.zillowstatic.com/fp/101-house.jpg",
  "broker_name": "Keller Williams Heritage",
  "scraped_at": "2026-05-13T12:14:32Z",
  "source": "house_flipper",
  "description": "Investor special \u2014 Sold AS-IS. 3 bed / 2.0 bath, 1480 sqft. Sold AS-IS. Cash or hard-money only.",
  "price_history": [
    {
      "date": "2026-04-12",
      "event": "Price change",
      "price": 265000,
      "priceChangeRate": -0.06,
      "source": "Zillow"
    },
    {
      "date": "2026-02-28",
      "event": "Listed for sale",
      "price": 280000,
      "priceChangeRate": null,
      "source": "MLS"
    },
    {
      "date": "2019-07-15",
      "event": "Sold",
      "price": 164300,
      "priceChangeRate": null,
      "source": "Public Record"
    }
  ],
  "photo_count": 8,
  "schools": [
    {
      "name": "Phoenix Elementary",
      "rating": 6,
      "distance": 0.4
    },
    {
      "name": "Phoenix Middle School",
      "rating": 5,
      "distance": 1.2
    },
    {
      "name": "Phoenix High School",
      "rating": 7,
      "distance": 2.8
    }
  ],
  "hoa_fee": null,
  "property_tax_rate": 1.85,
  "contact_phone": "(480) 555-1012",
  "contact_agent": "Priya Shah",
  "owner_occupied": false,
  "likely_owner_occupied": false,
  "detail_enriched": true,
  "flipper_keywords": {
    "sold": [
      "Sold AS-IS"
    ],
    "fixer": [
      "fixer upper"
    ],
    "investor": [
      "investor special"
    ],
    "motivated": [
      "motivated seller \u2014 bring offers"
    ]
  },
  "flip_score": {
    "score": 0.82,
    "components": {
      "keyword_score": 0.35,
      "anti_keyword_penalty": 0.0,
      "dom_score": 0.2,
      "price_drop_score": 0.15,
      "status_score": 0.05,
      "zestimate_gap_score": 0.1,
      "age_score": 0.05,
      "low_photo_score": 0.05
    },
    "matched_keywords": [
      "Sold AS-IS",
      "fixer upper",
      "investor special",
      "motivated seller \u2014 bring offers"
    ],
    "anti_keywords": []
  },
  "deal_metrics": {
    "arv_estimate": 434500,
    "arv_source": "sold_comps",
    "rehab_cost_estimate": 66600,
    "estimated_rehab_months": 7,
    "exit_strategies": {
      "flip_70_rule": {
        "mao": 237550,
        "rule": "ARV * 0.70 - rehab"
      },
      "brrrr_75_rule": {
        "mao": 259275,
        "rule": "ARV * 0.75 - rehab"
      },
      "wholesale_65_rule": {
        "mao": 215825,
        "rule": "ARV * 0.65 - rehab"
      }
    },
    "gross_profit_estimate": 97980,
    "gross_margin_pct": 22.6,
    "net_profit_estimate": 83283,
    "all_in_cost_estimate": 336520,
    "monthly_holding_cost": 615,
    "total_holding_cost_estimate": 4920,
    "annual_rent_to_price": 0.102,
    "monthly_rent_estimate": 2252,
    "price_per_sqft": 179.05,
    "cash_on_cash_return_pct": 18.4
  },
  "tax_history": [
    {
      "year": 2025,
      "value": 308100,
      "tax_paid": 7307
    },
    {
      "year": 2024,
      "value": 292300,
      "tax_paid": 7189
    }
  ],
  "active_nearby_homes": [],
  "sold_nearby_homes": [
    {
      "address": "1200 Maple St",
      "sold_price": 412775,
      "sqft": 1480,
      "beds": 3,
      "sold_date": "2026-03-15"
    },
    {
      "address": "1242 Pine St",
      "sold_price": 425810,
      "sqft": 1530,
      "beds": 3,
      "sold_date": "2026-03-15"
    },
    {
      "address": "1284 Oak St",
      "sold_price": 438845,
      "sqft": 1580,
      "beds": 3,
      "sold_date": "2026-03-15"
    }
  ],
  "best_school_rating": 7,
  "contact_email": null,
  "parcel_id": "00000101-02",
  "owner_info": {
    "owner_name": "Linda Hernandez",
    "owner_first_name": "Linda",
    "owner_last_name": "Hernandez",
    "is_owner_occupied": false,
    "mailing_address": "8842 W Camelback Rd, Glendale, AZ 85305",
    "last_sold_price": 164300,
    "last_sold_date": "2019-07-15",
    "years_owned": 7,
    "likely_absentee": true
  },
  "distress_categories": {
    "as_is": [
      "Sold AS-IS"
    ],
    "fixer": [
      "fixer upper"
    ],
    "motivated_seller": [
      "motivated seller \u2014 bring offers"
    ]
  },
  "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": "heavy_rehab",
  "predicted_price_from_comps": {
    "predicted_price": 434500,
    "confidence": "medium",
    "comp_count_used": 6,
    "comp_median_ppsf": 293.58,
    "adjustments_applied": {
      "sqft_adj": 1.02,
      "year_built_adj": 0.98,
      "beds_adj": 1.0
    }
  },
  "skip_trace_record": {
    "first_name": "Linda",
    "last_name": "Hernandez",
    "full_name": "Linda Hernandez",
    "mailing_address": "8842 W Camelback Rd, Glendale, AZ 85305",
    "mailing_city": "Phoenix",
    "mailing_state": "AZ",
    "mailing_zip": "85001",
    "property_address": "3412 E Roosevelt St",
    "property_city": "Phoenix",
    "property_state": "AZ",
    "property_zip": "85008",
    "is_absentee_owner": true,
    "years_owned": 7,
    "last_sold_price": 164300,
    "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": 53,
  "transit_score": 39,
  "bike_score": 49,
  "climate_zone": "subtropical",
  "flood_zone": "X",
  "has_septic": false,
  "has_well": false,
  "has_solar": false
}
```

Sample record (abridged):

```json
{
    "zpid": 28934712,
    "address": "1247 Maple St",
    "city": "Austin",
    "state": "TX",
    "zip": "78704",
    "price": 285000,
    "zestimate": 412000,
    "beds": 3,
    "baths": 2,
    "sqft": 1480,
    "year_built": 1968,
    "home_type": "SingleFamily",
    "listing_status_category": "for_sale",
    "days_on_zillow": 67,
    "price_reduction": 25000,
    "flipper_keywords": {
        "as_is": ["sold as-is"],
        "motivated_seller": ["motivated seller"],
        "investor_special": ["investor special"]
    },
    "flip_score": {
        "score": 0.74,
        "components": {
            "keyword_score": 0.32,
            "dom_score": 0.10,
            "price_drop_score": 0.08,
            "zestimate_gap_score": 0.20,
            "age_score": 0.10,
            "low_photo_score": 0.05
        },
        "matched_keywords": ["as_is", "motivated_seller", "investor_special"]
    },
    "deal_metrics": {
        "arv_estimate": 415000,
        "arv_source": "sold_comps",
        "rehab_cost_estimate": 78000,
        "exit_strategies": {
            "flip_70_rule": {"mao": 212500, "fits_rule": false},
            "brrrr_75_rule": {"mao": 233250, "fits_rule": false}
        },
        "gross_profit_estimate": 52000,
        "gross_margin_pct": 12.5,
        "annual_rent_to_price": 0.094
    },
    "sold_nearby_homes": [
        {"address": "1235 Maple St", "sold_price": 419000, "sqft": 1510, "sold_date": "2026-03-15"}
    ],
    "scraped_at": "2026-05-14T12:00:00Z"
}
```

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

### Pricing

PAY\_PER\_EVENT.

| Event | Price | When |
|---|---|---|
| `listing_record` | $0.005 | One Zillow record with flip score + deal metrics |
| `detail_enrichment` | $0.005 | When detail page (description, photos, comps) is fetched |
| `high_flip_score` | $0.005 | Surcharge when `flip_score.score >= 0.6` |

Typical cost with detail enrichment + a high-scoring listing: **$0.015/record**. Base-only listing without enrichment: **$0.005/record**.

### 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/house-flipper-leads#reviews

# Actor input Schema

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

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

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

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

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

Upper bound on Zillow list price. Flippers usually cap here to keep MAO realistic.

## `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: `number`):

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`):

Older properties usually score higher for flip potential. Leave high to allow all.

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

Property types to include. SingleFamily is the default flipper target.

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

Include foreclosure / REO / pre-foreclosure listings alongside regular for-sale homes.

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

Restrict to foreclosure / REO / bank-owned listings.

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

Restrict to For-Sale-By-Owner listings (no agent fees, often more motivated sellers).

## `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`):

Filter to listings that have had at least one price reduction on 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, photos, price history, and nearby comps. Adds $0.005 per enriched record.

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

Parallel detail-page fetches. 4 is the safe default; raise cautiously if Zillow doesn't rate-limit. 16 is the hard ceiling.

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

Strongly recommended. Zillow aggressively blocks datacenter IPs. RESIDENTIAL is required.

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

Proxy groups to use. RESIDENTIAL is required 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`):

Cap on listings returned per location. Hard ceiling: 100 to keep compute cost predictable.

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

Zillow paginates ~40 results per page. 5 pages = ~200 listings max per location.

## `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"
  ],
  "home_types": [
    "SingleFamily"
  ],
  "include_foreclosures": true,
  "only_foreclosures": false,
  "only_fsbo": false,
  "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": "house-flipper-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"
    ],
    "home_types": [
        "SingleFamily"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("seibs.co/house-flipper-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"],
    "home_types": ["SingleFamily"],
}

# Run the Actor and wait for it to finish
run = client.actor("seibs.co/house-flipper-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"
  ],
  "home_types": [
    "SingleFamily"
  ]
}' |
apify call seibs.co/house-flipper-leads --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "House Flipper Leads - Zillow Listings + Flip Score, ARV, MAO",
        "description": "Bulk Zillow active listings for house flippers. Filter by city/state, price, beds/baths/sqft, year built, days on market, price drops. Auto-computes flip score, ARV estimate, rehab cost, MAO (70% rule), and detects distress keywords (as-is, fixer, motivated seller, etc).",
        "version": "0.1",
        "x-build-id": "vqeoQO4eAlltM9jLr"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/seibs.co~house-flipper-leads/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-seibs.co-house-flipper-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~house-flipper-leads/runs": {
            "post": {
                "operationId": "runs-sync-seibs.co-house-flipper-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~house-flipper-leads/run-sync": {
            "post": {
                "operationId": "run-sync-seibs.co-house-flipper-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. Format: 'City, ST'. Example: ['Austin, TX', 'Dallas, TX', 'Tampa, FL']. Max 25 locations per run.",
                        "default": [
                            "Austin, TX"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "min_price": {
                        "title": "Min list price (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Lower bound on Zillow list price. Leave blank for no minimum."
                    },
                    "max_price": {
                        "title": "Max list price (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Upper bound on Zillow list price. Flippers usually cap here to keep MAO realistic."
                    },
                    "min_beds": {
                        "title": "Min bedrooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Minimum number of bedrooms (inclusive). Leave blank for no floor."
                    },
                    "max_beds": {
                        "title": "Max bedrooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of bedrooms (inclusive). Leave blank for no ceiling."
                    },
                    "min_baths": {
                        "title": "Min bathrooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "number",
                        "description": "Minimum number of bathrooms (decimals OK, e.g. 1.5). Leave blank for no floor."
                    },
                    "min_sqft": {
                        "title": "Min living area (sqft)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum interior living area in square feet. Leave blank for no floor."
                    },
                    "max_sqft": {
                        "title": "Max living area (sqft)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum interior living area in square feet. Leave blank for no ceiling."
                    },
                    "min_year_built": {
                        "title": "Min 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": "Max year built",
                        "minimum": 1800,
                        "maximum": 2030,
                        "type": "integer",
                        "description": "Older properties usually score higher for flip potential. Leave high to allow all."
                    },
                    "home_types": {
                        "title": "Home types",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Property types to include. SingleFamily is the default flipper target.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "SingleFamily",
                                "Townhouse",
                                "MultiFamily",
                                "Condo",
                                "Manufactured",
                                "LotLand"
                            ]
                        },
                        "default": [
                            "SingleFamily"
                        ]
                    },
                    "include_foreclosures": {
                        "title": "Include foreclosures",
                        "type": "boolean",
                        "description": "Include foreclosure / REO / pre-foreclosure listings alongside regular for-sale homes.",
                        "default": true
                    },
                    "only_foreclosures": {
                        "title": "Only foreclosures",
                        "type": "boolean",
                        "description": "Restrict to foreclosure / REO / bank-owned listings.",
                        "default": false
                    },
                    "only_fsbo": {
                        "title": "Only FSBO",
                        "type": "boolean",
                        "description": "Restrict to For-Sale-By-Owner listings (no agent fees, often more motivated sellers).",
                        "default": false
                    },
                    "days_on_zillow_min": {
                        "title": "Min 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": "Has price drop",
                        "type": "boolean",
                        "description": "Filter to listings that have had at least one price reduction on Zillow.",
                        "default": false
                    },
                    "min_flip_score": {
                        "title": "Min 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 detail pages",
                        "type": "boolean",
                        "description": "Fetch each listing's detail page for description, photos, price history, and nearby comps. Adds $0.005 per enriched record.",
                        "default": true
                    },
                    "enrich_concurrency": {
                        "title": "Enrichment concurrency",
                        "minimum": 1,
                        "maximum": 16,
                        "type": "integer",
                        "description": "Parallel detail-page fetches. 4 is the safe default; raise cautiously if Zillow doesn't rate-limit. 16 is the hard ceiling.",
                        "default": 4
                    },
                    "use_apify_proxy": {
                        "title": "Use Apify Proxy",
                        "type": "boolean",
                        "description": "Strongly recommended. Zillow aggressively blocks datacenter IPs. RESIDENTIAL is required.",
                        "default": true
                    },
                    "apify_proxy_groups": {
                        "title": "Apify proxy groups",
                        "type": "array",
                        "description": "Proxy groups to use. RESIDENTIAL is required 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": "Cap on listings returned per location. Hard ceiling: 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": "Zillow paginates ~40 results per page. 5 pages = ~200 listings max per location.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
