# Xome Scraper \[$0.90/1K💰] | Foreclosure Auctions (`ahmed_jasarevic/xome-scraper`) Actor

Scrape Xome foreclosure and auction listings with opening and current bids, reserve status, auction dates, foreclosure stage, beds/baths, square footage, occupancy and photos. Build REO and CWCOT deal pipelines from live US auction data.

- **URL**: https://apify.com/ahmed_jasarevic/xome-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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

## Xome Scraper

Scrape **Xome** foreclosure, bank-owned (REO), CWCOT and short-sale auction listings — search results and property detail pages — into investor-ready JSON with bids, reserve status, auction dates, property facts and photos.

### Build A Foreclosure And REO Deal Pipeline

- Pull nationwide Xome inventory or target a state, city, ZIP or Xome filter URL
- Track opening bids, current bids, buy-it-now prices and reserve status
- Monitor auction start/end dates and foreclosure stage before the sale
- Enrich listings with county, lot size, occupancy, seller code and the full photo set
- Feed wholesaling, fix-and-flip, valuation models or a county-level auction calendar

### How It Works

![How the Xome Scraper turns Xome auction search pages and property pages into a dataset of foreclosure listings with bids, reserve status and auction dates.](https://api.apify.com/v2/key-value-stores/oeuA0kLOyhbRM4fzt/records/how-it-works-xome-scraper.webp)

The Actor collects publicly available Xome auction search and property pages and normalizes them into one schema. Provide any Xome auction URL or start from the nationwide page; it reads the result cards, optionally follows each property and writes one row per listing.

- One search page returns up to **48 listings**.
- `includeDetails` adds county, lot size, occupancy, seller code and the full photo set.
- Xome is US-only; enable an Apify US proxy when running outside the United States.

### Scrape Xome Auctions By State, City Or Filter URL

`searchUrls` accepts any Xome auction URL. Xome's own filters work in the URL, for example:

- `https://www.xome.com/auctions?bank-owned`
- `https://www.xome.com/auctions?non-bank-owned`
- `https://www.xome.com/auctions?cwcot-second-chance-foreclosure`
- `https://www.xome.com/auctions?ptype=commercial`
- `https://www.xome.com/auctions?featured=bankruptcy-trustee`

Result pages are followed automatically until `maxItems` is reached. Leave `searchUrls` empty to start from the nationwide auction page. At the time of writing Xome listed roughly 8,200 auction properties nationwide.

`maxItems` is a hard cap on saved listings. Free users are capped at 10 listings per run; paying users get the full allowance.

### Track Bids, Reserve Status And Auction Deadlines

Each listing carries the numbers and dates an investor needs:

- `openingBid`, `currentBid`, `buyItNowPrice` and `reservePrice` — parsed to integers; missing values are `null`, never `0` unless Xome really says 0
- `reserveStatus` — `Reserve met`, `Reserve not met` or `No reserve`
- `auctionStart` and `auctionEnd` — ISO timestamps
- `auctionType` and `bidType` — the sale format and bidding mode
- `foreclosureStage` — normalized to `REO`, `CWCOT`, `Short Sale`, `2nd Chance Foreclosure`, `Foreclosure` or `Bankruptcy`
- `listingStatus` and `saleType` — the raw Xome labels
- `hasBuyersPremium` — whether the auction applies a buyer's premium

Auction data is time-sensitive: bids, reserve status and countdowns reflect the moment of the run. Schedule runs close to the auction date if you need current numbers.

### Enrich Listings With County, Lot Size, Occupancy And Photos

`includeDetails` is on by default. For each listing the Actor opens the property page and adds:

- `county`, `lotSize` and `occupancy` (`Vacant` or `Occupied`)
- the full `photos` array and `imageUrl`
- `publicRemarks`, `sellerCode`, `reportedVacant`, `viewsCount` and `savedCount`
- `yearBuilt` and the detail-page property facts

Detail mode adds one `detail-page` event per listing. Turn it off for a card-only run that is roughly five times faster and cheaper; `county`, `lotSize`, `occupancy` and the full photo set are then absent because Xome does not publish them on search cards.

Xome is a US-only site. If the Actor is not running on US infrastructure, enable an Apify US proxy. Non-US runs can receive Xome's geo-block page; the Actor reports a clear error.

### Input

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `searchUrls` | array | nationwide auctions | Xome auction search URLs. Any Xome filter works; result pages are followed automatically. |
| `maxItems` | integer | `50` | Hard cap on saved listings. Free users are capped at 10. |
| `includeDetails` | boolean | `true` | Collect county, lot size, occupancy, photos and remarks for each listing. |
| `proxy` | object | disabled | Standard Apify proxy configuration. Use a US proxy outside the US. |

Example — bank-owned listings with details:

```json
{
  "searchUrls": ["https://www.xome.com/auctions?bank-owned"],
  "maxItems": 100,
  "includeDetails": true,
  "proxy": { "useApifyProxy": true, "apifyProxyCountry": "US" }
}
```

Example — fast card-only sweep:

```json
{
  "searchUrls": ["https://www.xome.com/auctions?ptype=commercial"],
  "maxItems": 500,
  "includeDetails": false
}
```

### Output

One row per auction listing.

```json
{
  "listingId": "1234567",
  "listingNumber": "XOME-1234567",
  "listingUrl": "https://www.xome.com/auctions/1234-example-st-dallas-tx-75201-1234567",
  "address": "1234 Example St",
  "city": "Dallas",
  "state": "TX",
  "zip": "75201",
  "county": "Dallas County",
  "latitude": 32.7767,
  "longitude": -96.797,
  "auctionEventId": "EVT-2026-11",
  "auctionEventName": "November Online Auction",
  "auctionType": "Online",
  "auctionStart": "2026-11-01T14:00:00.000Z",
  "auctionEnd": "2026-11-03T18:00:00.000Z",
  "bidType": "Online",
  "openingBid": 27500,
  "currentBid": 31200,
  "buyItNowPrice": null,
  "reservePrice": 35000,
  "reserveStatus": "Reserve not met",
  "hasBuyersPremium": true,
  "propertyType": "Single Family",
  "propertyCategory": "Residential",
  "saleType": "Bank Owned",
  "foreclosureStage": "REO",
  "listingStatus": "Active",
  "bedrooms": 3,
  "bathrooms": 2,
  "sqft": 1650,
  "lotSize": "0.18 acres",
  "yearBuilt": 1998,
  "occupancy": "Vacant",
  "reportedVacant": true,
  "photos": ["https://images.example.com/xome/1234567-1.jpg"],
  "imageUrl": "https://images.example.com/xome/1234567-1.jpg",
  "publicRemarks": "Example remarks shown for illustration.",
  "sellerCode": "HUD",
  "viewsCount": 412,
  "savedCount": 18,
  "scrapedAt": "2026-10-26T09:00:00.000Z"
}
```

| Group | Fields |
| --- | --- |
| Identity & location | `listingId`, `listingNumber`, `listingUrl`, `address`, `city`, `state`, `zip`, `county`, `latitude`, `longitude` |
| Auction | `auctionEventId`, `auctionEventName`, `auctionType`, `auctionStart`, `auctionEnd`, `bidType` |
| Pricing | `openingBid`, `currentBid`, `buyItNowPrice`, `reservePrice`, `reserveStatus`, `hasBuyersPremium` |
| Classification | `propertyType`, `propertyCategory`, `saleType`, `foreclosureStage`, `listingStatus` |
| Property | `bedrooms`, `bathrooms`, `sqft`, `lotSize`, `yearBuilt`, `occupancy`, `reportedVacant` |
| Media & notes | `photos`, `imageUrl`, `publicRemarks`, `sellerCode`, `viewsCount`, `savedCount` |
| Meta | `scrapedAt` |

### Pricing

This Actor uses pay-per-event pricing:

- **$0.0009 per saved listing** — about **$0.90 per 1,000 listings**
- **$0.002 per detail page** — about **$2 per 1,000 listings** when `includeDetails` is on
- **$0.00005 per Actor start**

A 1,000-listing run with details costs about **$2.90** in event charges; card-only runs cost about **$0.90**. Free users receive the first 10 listings of a run; paying users get the full `maxItems`. Memory use is 512 MB, so compute cost stays low.

### Schedule Xome Auction Monitoring

- **Pre-auction shortlists** — run daily and filter by `auctionEnd` to catch properties closing this week.
- **Reserve and bid tracking** — re-run before the auction and diff `currentBid` and `reserveStatus` against your last snapshot.
- **County calendars** — collect a state or filter URL and group rows by `county` and `auctionEnd`.
- **Lead scoring** — combine `openingBid`, `sqft`, `yearBuilt` and `occupancy` with your own valuation model.
- **Webhooks** — send new rows to Slack, Google Sheets, Airtable or a CRM through the Apify API.

### Related Actors

- [Xome Foreclosure & Auction Property Scraper](https://apify.com/jongoose/xome-scraper) — Xome-only alternative with state, city and ZIP inputs.
- [Hubzu Scraper](https://apify.com/jongoose/hubzu-scraper) — Hubzu foreclosure and REO auction listings.
- [Zillow Foreclosure Scraper](https://apify.com/memo23/zillow-foreclosure-scraper) — Zillow REO, pre-foreclosure and auction data.
- [HUD Home Store Scraper](https://apify.com/ahmed_jasarevic/hudhomestore-scraper) — HUD REO listings with broker contacts.
- [GovDeals Scraper](https://apify.com/ahmed_jasarevic/govdeals-scraper) — government surplus auctions, including real estate.
- [Crexi Property & Broker Data Scraper](https://apify.com/ahmed_jasarevic/crexi-property-broker-data-scraper-pro) — commercial property listings and broker records.

### FAQ

#### Does Xome offer a public API?

No public listing API is documented for third-party developers. This Actor collects the same publicly visible listing data that Xome shows to any visitor. It does not log in, bid or change any account state.

#### Why does the Actor need a US proxy?

Xome geo-blocks non-US IPs and serves a "Geo Blocked Users" page instead of listings. If you run the Actor outside the United States, enable an Apify US proxy.

#### Why are county, lot size or occupancy missing?

Those fields exist only on property detail pages. Set `includeDetails: true` to collect them. With details off, the Actor returns the card-level fields only.

#### Are bids and reserve prices final?

No. Xome updates bids and reserve status during the auction. The dataset reflects the moment of the run, so schedule a fresh run before you rely on a number. Always verify the current status on the Xome listing page before bidding.

#### Why is a bid `null` instead of `0`?

Xome sometimes publishes `$0` or an empty value when the opening bid is still to be determined. The Actor stores `null` rather than inventing a zero price.

#### Can I get a free preview?

Yes. Free Apify users receive the first 10 listings of a run; paying users receive the full `maxItems` allowance.

#### Is this data a consumer report?

No. The dataset is for market research and lead generation. It is not a consumer report and must not be used for FCRA-covered purposes such as tenant, credit or employment screening.

### For AI Agents & LLM Apps

Returns Xome foreclosure and auction listings as one row per property.

Minimal input:

```json
{ "maxItems": 25 }
```

Bank-owned listings in one state:

```json
{ "searchUrls": ["https://www.xome.com/auctions?bank-owned"], "maxItems": 100 }
```

Card-only commercial sweep:

```json
{ "searchUrls": ["https://www.xome.com/auctions?ptype=commercial"], "maxItems": 250, "includeDetails": false }
```

Output fields: `listingId`, `listingNumber`, `listingUrl`, `address`, `city`, `state`, `zip`, `county`, `latitude`, `longitude`, `auctionEventId`, `auctionEventName`, `auctionType`, `auctionStart`, `auctionEnd`, `bidType`, `openingBid`, `currentBid`, `buyItNowPrice`, `reservePrice`, `reserveStatus`, `hasBuyersPremium`, `propertyType`, `propertyCategory`, `saleType`, `foreclosureStage`, `listingStatus`, `bedrooms`, `bathrooms`, `sqft`, `lotSize`, `yearBuilt`, `occupancy`, `reportedVacant`, `photos`, `imageUrl`, `publicRemarks`, `sellerCode`, `viewsCount`, `savedCount`, `scrapedAt`.

Behaviors an agent should know:

- An empty `searchUrls` array starts from the nationwide Xome auction page.
- `includeDetails` defaults to `true`; turning it off removes county, lot size, occupancy and the full photo set.
- `maxItems` is a hard cap; free users are capped at 10 listings.
- Bids and reserve status are point-in-time values, not a live feed.
- Billing: $0.0009 per listing, $0.002 per detail page and a $0.00005 start event.

### Legal & Compliance Disclaimer

This Actor is independent and is not affiliated with, endorsed by or sponsored by Xome. It reads only publicly reachable auction listing pages that Xome serves to any visitor; it does not bypass a login, paywall or CAPTCHA, and it does not bid, register or change any account state. Listing data may include property addresses and public remarks but no bidder or seller personal data. You are responsible for complying with Xome's terms of use and applicable law when you store, republish or commercialize the data. This data is not a consumer report and must not be used for FCRA-covered purposes.

### SEO Keywords

xome scraper, xome foreclosure auction, xome auction listings, xome reo properties, foreclosure auction data, bank owned homes data, cwcot listings, xome api, foreclosure listings dataset, reo auction scraper, real estate auction data, xome property data, foreclosure stage, auction bids data, xome csv, xome json, us foreclosure auctions, second chance foreclosure, xome auction calendar, reo investment data

# Actor input Schema

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

Xome auction search pages to crawl. Use any filter Xome supports in the URL, e.g. https://www.xome.com/auctions?bank-owned , ?non-bank-owned , ?cwcot-second-chance-foreclosure , ?ptype=commercial , ?featured=bankruptcy-trustee . Pagination (?page=N) is followed automatically until Max listings is reached.

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

Hard cap on the number of listings saved to the dataset. Result pages are followed automatically until this many listings are collected (free users are capped at 10).

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

Open each listing's detail page for county, lot size, occupancy status, full photo set, seller code and full remarks. Adds one request per listing and one `detail-page` pay-per-event charge per listing. Disable for a faster, cheaper run with card-level data only.

## `proxy` (type: `object`):

Select proxies to be used by your crawler. Xome is a US-only site (it geo-blocks non-US IPs), so use a US proxy if you are not connecting from the US.

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.xome.com/auctions"
  ],
  "maxItems": 50,
  "includeDetails": true,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

# API

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

## JavaScript example

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

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

// Prepare Actor input
const input = {
    "searchUrls": [
        "https://www.xome.com/auctions"
    ],
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/xome-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 = {
    "searchUrls": ["https://www.xome.com/auctions"],
    "proxy": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/xome-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 '{
  "searchUrls": [
    "https://www.xome.com/auctions"
  ],
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call ahmed_jasarevic/xome-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/xome-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/xcoC29LIdZMRCXGz3/builds/7HwbC75AbS9SZPkDz/openapi.json
