# Hubzu Foreclosure & Auction Scraper · Agent & Trustee Contacts (`corent1robert/hubzu-foreclosure-auction-scraper`) Actor

Export Hubzu foreclosure, bank-owned and auction homes by state: address, bids, list price, beds, sqft, sale date — plus listing agent email and phone, trustee and case number, tax value. One row per property, CRM-ready. No login.

- **URL**: https://apify.com/corent1robert/hubzu-foreclosure-auction-scraper.md
- **Developed by:** [Corentin Robert](https://apify.com/corent1robert) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 property exporteds

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

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

## What's an Apify Actor?

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

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

## How to integrate an Actor?

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

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

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

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

# README

## Hubzu Foreclosure & Auction Scraper · Agent & Trustee Contacts

Turn **[Hubzu](https://www.hubzu.com)** (one of the largest US online auction sites for bank-owned and foreclosure homes) into a **clean spreadsheet you can act on**: address, bids, list price, beds, sqft, sale date, and **who to call**: the listing agent's email and phone, or the foreclosure trustee and case number.

**No login. No Hubzu account. No API key.**

**Free Apify plan:** 20 properties per run. Paid plans export as many as your budget allows.

***

### Who is this for?

| You are… | Typical goal | Suggested setup |
|----------|--------------|-----------------|
| Fix-and-flip / buy-and-hold investor | Find discounted homes before the auction closes | Your state + **Bank-owned** + max price |
| Wholesaler / acquisitions rep | Call listing agents on REO auctions | **Contacts** on, **Contacts (CRM)** view |
| Foreclosure auction bidder | Plan courthouse sales | **Foreclosure auction** + **Foreclosure calendar** view |
| Real estate agent / lender / title company | Prospect the agents and trustees behind distressed sales | Nationwide, **Contacts** on |
| Analyst / data team | Track distressed inventory and comps | **All, including ended sales**, scheduled weekly |
| Buyer with a watch list | Refresh bids and status on saved homes | Paste **Hubzu property links** |

**What you get by default:** every open listing in your states, with price fields, property facts, sale dates and the contact published on the property page.

**Honest fill rates** (test run, October 2026, 20 Florida + 20 Texas properties):

| Field | Bank-owned / online auctions (FL) | Courthouse foreclosure sales (TX) |
|-------|-----------------------------------|-----------------------------------|
| Address, beds, sqft, year built, photos | 95–100% | 100% |
| List price / opening bid | 100% | 0% (Hubzu does not publish one) |
| Current bid | 50% (auctions with bids) | 0% |
| Listing agent name, email, phone, brokerage | **100%** | n/a |
| Trustee / law firm + phone, case number | n/a | **100%** |
| Courthouse sale date, time, venue | n/a | 100% |
| Tax assessed value, annual tax | 100% | 70% |

Turn **Add agent / trustee contacts** off for a faster, cheaper listing-only export (address, prices, beds, sqft, dates, brokerage name).

***

### Quick start

1. Open the **Input** tab.
2. Keep **Florida** selected (or pick your states).
3. Click **Start**, then open the **Contacts (CRM)** or **Overview** view and export to CSV / Excel.

A 10-property run takes about 5 seconds.

***

### Ready-made examples

| Example | What you get |
|---------|--------------|
| Florida bank-owned homes with agent emails | Active REO auctions + listing agent contacts |
| Texas foreclosure auctions with trustee and case number | Courthouse sale calendar |
| Refresh Hubzu property links | Latest bids and status for your saved homes |
| Hubzu listing agent emails nationwide for CRM | One row per home, agent contact columns |

*(Links are added here once the examples are live in the Store.)*

***

### What it extracts

- **Sale:** sale type (Bank-owned, Foreclosure auction, Second-chance auction, Non-bank-owned, Short sale, Commercial), format (Online auction, Courthouse sale, Traditional), status, auction start/end, courthouse sale date/time/venue, bid count.
- **Price:** list price, opening bid, current bid, reserve (when shown), buyer's premium flag.
- **Property:** full address, county, GPS, property type, beds, baths, sqft, lot size, year built, occupancy, MLS #, parcel number, description, up to 10 photos.
- **Contact:** listing agent name, email, phone, brokerage, license #; or foreclosure trustee / law firm, phone and case number; seller / loan servicer.
- **Tax:** assessed value, annual tax, tax year.

Contacts are copied **only** when Hubzu publishes them on the property page. Nothing is guessed or invented.

***

### How much does it cost to scrape Hubzu?

Pay per result. You pay **$0.05 per run**, plus one of these per property:

| Event | Free | Bronze | Silver | Gold+ |
|-------|------|--------|--------|-------|
| Property (no contact) | $0.0015 | $0.0013 | $0.0012 | $0.0010 |
| Property with contact (agent email/phone or trustee phone) | $0.0050 | $0.0045 | $0.0040 | $0.0035 |

| Scenario (run fee included) | Free | Bronze | Silver | Gold+ |
|-----------------------------|------|--------|--------|-------|
| 20 properties with contacts | $0.15 | $0.14 | $0.13 | $0.12 |
| 100 properties with contacts | 20 per run | $0.50 | $0.45 | $0.40 |
| 1,000 properties with contacts | 20 per run | $4.55 | $4.05 | $3.55 |
| 1,000 properties, contacts off | 20 per run | $1.35 | $1.25 | $1.05 |

Set **Max cost per run** in the run options to cap your spend: the export stops cleanly when it is reached.

***

### Is it legal to scrape Hubzu?

This Actor only collects data that Hubzu shows publicly to any visitor, without logging in: listing details, prices and the contact details that agents and trustees publish so buyers can reach them. It does not bypass logins or access private accounts.

Personal data (such as an agent's name, email or phone) may be protected by laws like the GDPR or the CCPA. Use it for legitimate purposes only, respect opt-out requests and anti-spam rules (CAN-SPAM, TCPA), and check Hubzu's terms of use for your use case. If in doubt, ask a lawyer. Read more in Apify's post [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/).

***

### Limitations

- Hubzu inventory changes every day; online auctions usually last about a week. Schedule the Actor for fresh data.
- Courthouse foreclosure sales do not show an opening bid on Hubzu, so price filters skip them (leave price empty to keep them).
- Free Apify plan: 20 properties per run.

***

### Input

| Field | What it does | Default |
|-------|--------------|---------|
| `states` | Two-letter state codes. Empty = nationwide. | Florida (Console) |
| `saleTypes` | `bank_owned`, `foreclosure`, `second_chance`, `non_bank_owned`, `short_sale`, `commercial`. Empty = all. | all |
| `listingStatus` | `open`, `open_and_pending`, `all` | `open` |
| `minPrice` / `maxPrice` | Price range on current bid, else opening bid, else list price | none |
| `minBeds` | Minimum bedrooms | none |
| `cities` | Keep only these cities | all |
| `includeContacts` | Agent / trustee contacts, full details, photos, tax | `true` |
| `propertyUrls` | Hubzu property links or IDs (replaces the search) | empty |
| `maxItems` | Max properties, `0` = no cap | 20 |

**API-only options** (not in the Console form): `verboseLogs: true` adds technical debug lines; `detailConcurrency` (1–20, default 8).

```json
{
  "states": ["FL", "GA"],
  "saleTypes": ["bank_owned"],
  "maxPrice": 250000,
  "includeContacts": true,
  "maxItems": 200
}
```

***

### Output sample

One row per property (real values from a test run; agent contact anonymized, long fields shortened):

```json
{
  "property_id": "9321810859",
  "url": "https://www.hubzu.com/property/9321810859-330-Tudor-Drive-Unit-203-Cape-Coral-FL-33904",
  "sale_type": "Bank-owned (REO)",
  "sale_format": "Online auction",
  "status": "Active",
  "full_address": "330 Tudor Drive Unit #203, Cape Coral, FL 33904",
  "county": "Lee",
  "property_type": "Condo / Apartment",
  "beds": 2,
  "baths": 2,
  "sqft": 973,
  "year_built": 1964,
  "occupancy": "Vacant",
  "list_price": 125400,
  "starting_bid": 100320,
  "current_bid": 115320,
  "reserve_price": 119130,
  "bid_count": 3,
  "auction_end": "2026-10-09T13:44:18Z",
  "listing_brokerage": "All Florida Property Group",
  "seller": "Celink",
  "contact_role": "Listing agent",
  "contact_name": "Jane Sample",
  "contact_email": "jane@example-brokerage.com",
  "contact_phone": "(321) 555-0142",
  "contact_company": "All Florida Property Group",
  "mls_number": "2026037368",
  "tax_assessed_value": 59463,
  "annual_tax": 932,
  "photos": ["https://image-prod.hubzu.com/2026/9/9321810859/…_9.JPEG"]
}
```

A courthouse foreclosure row instead fills `sale_event_date` (e.g. `"2026-12-08"`), `sale_event_time` (`"11:00 AM CT"`), `sale_event_venue`, `foreclosure_case_number`, `trustee_name` and `contact_role: "Foreclosure trustee"`.

**Dataset views:** Overview · Contacts (CRM) · Foreclosure calendar · Property details. A readable **Run log** is saved with every run.

***

### How it works

The Actor reads Hubzu's public search results state by state, applies your filters, then opens each matching property page for contacts, photos and the tax record. Rows are saved as soon as they are ready, so you can download partial results while a large run is still going.

***

### Local development

```bash
npm install
npm test                      # unit tests (fixtures, no network)
apify run --input-file=.actor/INPUT.json
```

`src/lib/normalize.js` holds the pure mapping and filters; `src/lib/hubzuApi.js` the HTTP client; `src/main.js` the run flow. Published Store examples live in `published-tasks/` (not shipped in the image).

***

### Also available

- [InvestorLift · Wholesale Deals, Emails & Phones](https://apify.com/corent1robert/investorlift-scraper): off-market wholesale deals with seller company, emails and phones.
- [All Actors by corent1robert](https://apify.com/corent1robert)

***

### Support

Questions, a missing field or a custom export: **corentin@outreacher.fr**. Use the **Issues** tab for bugs.

# Changelog

This Actor's version history is a separate document: https://apify.com/corent1robert/hubzu-foreclosure-auction-scraper/changelog.md

# Actor input Schema

## `states` (type: `array`):

Get properties in these states. Empty = nationwide.

## `saleTypes` (type: `array`):

Bank-owned homes come with a listing agent to call; foreclosure sales come with the trustee and case number. Empty = all types.

## `listingStatus` (type: `string`):

**Open now** — live auctions and upcoming sales you can still bid on.

**Open + under contract** — also deals in review or under contract.

**All** — also sales that already ended (useful for comps).

## `minPrice` (type: `integer`):

Keep properties whose current bid, opening bid or list price is at least this amount.

## `maxPrice` (type: `integer`):

Keep properties at or under this amount. Leave empty for no maximum.

## `minBeds` (type: `integer`):

Keep homes with at least this many bedrooms.

## `cities` (type: `array`):

Keep only these cities (one per line, e.g. Jacksonville). Empty = every city in the chosen states.

## `includeContacts` (type: `boolean`):

Get the listing agent's name, email, phone and brokerage (bank-owned and online auctions) or the trustee and case number (foreclosure sales), plus year built, description, photos and tax value. Rows with a contact bill as Property with contact.

## `propertyUrls` (type: `array`):

One Hubzu property link (or numeric ID) per line. You get the same full row, with contacts.

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

Stop after this many properties. **0 = no cap**.

## Actor input object example

```json
{
  "states": [
    "FL"
  ],
  "listingStatus": "open",
  "includeContacts": true,
  "maxItems": 10
}
```

# Actor output Schema

## `overview` (type: `string`):

All exported properties (overview).

## `contacts` (type: `string`):

Listing agent and trustee contacts per property.

## `foreclosures` (type: `string`):

Courthouse sale dates, case numbers and trustees.

## `results` (type: `string`):

Every field for every property.

## `runLog` (type: `string`):

Readable summary of the run.

# 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 = {
    "states": [
        "FL"
    ],
    "includeContacts": true,
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("corent1robert/hubzu-foreclosure-auction-scraper").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 = {
    "states": ["FL"],
    "includeContacts": True,
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("corent1robert/hubzu-foreclosure-auction-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "states": [
    "FL"
  ],
  "includeContacts": true,
  "maxItems": 10
}' |
apify call corent1robert/hubzu-foreclosure-auction-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,corent1robert/hubzu-foreclosure-auction-scraper"
        }
    }
}
```

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

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/z5A6JAi6s30TgnZ78/builds/Kj6TdAm6Mj2nbIpNB/openapi.json
