Auction.com Scraper - Foreclosures, Auctions & Property Data avatar

Auction.com Scraper - Foreclosures, Auctions & Property Data

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Auction.com Scraper - Foreclosures, Auctions & Property Data

Auction.com Scraper - Foreclosures, Auctions & Property Data

From $1/1K. Extract foreclosure, REO, short-sale, and auction listings from Auction.com in minutes. Search by location and property filters or paste any Auction.com URL. Get 45+ structured fields, including auction dates, bids, estimated values, occupancy status, coordinates, and photos.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

16

Total users

7

Monthly active users

11 days ago

Last modified

Share

Auction.com Scraper: Foreclosure, Bank-Owned and Private-Seller Auction Listings

Auction.com Scraper turns Auction.com into structured real estate auction data. Search foreclosure, bank-owned, short-sale and private-seller listings by state, city, ZIP, property type, asset type, beds, baths, square footage, price and auction format, or paste one or more Auction.com search links straight from the site. Every listing comes back with dozens of structured fields including auction dates, starting bid, valuation estimates, occupancy and photos, and you can export to JSON, CSV or Excel, or pull results straight into your app through the API.

Why This Scraper?

  • Two ways to build a search. Filter by state, city, ZIP, property type, asset type, beds, baths, square footage, price and auction format, or paste one or more Auction.com search links and reuse work you already did on the site.
  • A wide field set per listing. Address, coordinates, property facts, auction window, starting bid, valuation and rental estimates, occupancy, financing and buyer-premium flags, plus the complete source object under raw for anything not surfaced flat.
  • Optional full-detail pass. Turn on fetchDetails for the complete photo gallery, financing preference, deposit and earnest-money minimums, leaseback terms and days-to-close per listing, billed only for listings that actually come back, not for every candidate checked. A pasted single-listing detail link always fetches full detail, regardless of this setting.
  • Resumable runs. resumeFromRunId collects only the listings a previous run doesn't already have, so you can pick up where an earlier run left off without paying twice. Long runs also checkpoint their own progress, so a platform migration never restarts a run from zero.
  • Built for schedules. Incremental mode remembers the previous run of the same search itself, so a recurring daily or weekly run returns only new and updated listings, and duplicates are suppressed and not billed.
  • One input controls volume. maxListings is the sole cap on how many listings a run collects. Page walking itself has no artificial ceiling, so a capped run still sees the most relevant part of the catalogue first.
  • Multi-state and multi-URL in one run, with automatic de-duplication across searches.

Use Cases

  • Real estate investors: filter foreclosure and bank-owned inventory by state, price range and property type to build a shortlist of deals.
  • Wholesalers and flippers: run the same search on a schedule with incremental mode to catch new listings and price or status changes as soon as they post.
  • Market researchers and analysts: build historical datasets of starting bids, valuation estimates and auction outcomes across states and asset types.
  • PropTech and lead-gen products: feed structured auction listings into your own app, CRM or alerting tool through the API.
  • Due diligence teams: pull full auction terms, financing preference and occupancy details for a shortlist of properties with fetchDetails.

Data You Get

Sample shape: values are illustrative placeholders, not from a live listing.

FieldExample
listingId"00000001"
url"https://www.auction.com/details/123-sample-st-city-st-00000001"
address"123 Sample St, Springfield, ST 00000"
city / state / zip"Springfield" / "ST" / "00000"
county"Sample County"
latitude / longitude38.0000 / -90.0000
propertyTypeGroup"SINGLE_FAMILY"
assetType"BANK_OWNED"
listingStatusGroup"ACTIVE"
bedrooms / bathrooms3 / 2
squareFootage1800
lotSize0.25
yearBuilt1995
startingBid150000
estimatedValue225000 (valuation estimate)
rentalEstimate1800 (monthly rent estimate)
auctionType"ONLINE"
auctionStartDate / auctionEndDate"2026-01-01T00:00:00Z" / "2026-01-03T00:00:00Z"
occupancyStatus"VACANT"
financingAvailable / buyerPremiumAvailabletrue / false
isRemoteBidEnabledtrue
auctionDate / auctionStatusthe site's auction day (a plain date, separate from the auctionStartDate start datetime above) and the auction status
saleType / auctionLocationthe auction event format reported by the site (LIVE or ONLINE; it can differ from auctionType on a few listings), and the venue address for in-person sales (empty for online)
primaryPhoto / photoCounta photo URL / 12
rawthe complete source listing object

Every record also carries isThirdPartyOnline, isDirectOfferEnabled, eventId, listingCode, listingCreatedDate, listingUpdatedDate, appraisalValue, marketing tags, open house dates, trustee-sale and financing-broker flags, valuation bands (low/high) and an isHot marker, and the fields above cover only the flat, top-level view. When fetchDetails is on, each listing additionally gets a full photo array, financing preference, inspection and leaseback terms, days-to-close, earnest-money deposit minimum and the raw detail payload under detailRaw. When incremental mode is on, every returned record also carries changeType, changedFields, firstSeenAt and lastSeenAt (see "Resume and recurring updates" below).

Output views

The dataset has four tabs in the Console: Overview (address, city, state, ZIP, property and asset type, status, beds, baths, square footage, starting bid, estimated value, auction start date and type, listing URL, plus the incremental-change columns), Auction & Bidding (auction type, start and end dates, starting bid, online and remote-bid flags, occupancy, financing and buyer-premium availability), Incremental Changes (changeType, changedFields, first/last seen) and Listing Terms (fetchDetails) (seller terms intent, financing preference, financing and inspection contingencies, leaseback period and rent, days to close, private tours, earnest-money deposit minimum, program enrollment code). Fields are only added, none were renamed or removed.

How to Use

  1. Pick a mode: search (build a query from filters) or url (paste one or more Auction.com search links).
  2. Fill in the filters for search mode (state, city, ZIP, property type, asset type, beds, baths, square footage, price), or paste your links for URL mode.
  3. Turn on fetchDetails if you want full auction terms per listing, and set Max listings to control run size and cost.
  4. Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.

Search a single state for active listings:

{
"mode": "search",
"states": ["CA"],
"listingStatus": "active",
"maxListings": 200
}

Filtered search across two states (condos and townhouses, 3+ beds, under 300k):

{
"mode": "search",
"states": ["TX", "FL"],
"propertyTypes": ["condos-townhouses"],
"minBeds": 3,
"maxPrice": 300000,
"sortBy": "price-asc",
"maxListings": 500
}

Bank-owned, online auctions, with full details:

{
"mode": "search",
"states": ["GA"],
"assetTypes": ["bank-owned"],
"auctionFormats": ["online"],
"fetchDetails": true,
"maxListings": 100
}

Paste Auction.com links (apply filters on the website, then copy the link):

{
"mode": "url",
"urls": [
"https://www.auction.com/residential/CA/active_lt/single-family_pt",
"https://www.auction.com/residential/TX/active_lt"
],
"maxPages": 3
}

If you switch to URL mode and leave urls untouched, the actor now scrapes one example of each shape below (previously the field had no default). Behaviour change: previously urls had no default, so omitting it in URL mode scraped nothing; now it runs those example links. Always send your own urls (or []) in URL mode.

ShapeExample
Statehttps://www.auction.com/residential/CA/active_lt
Nationwidehttps://www.auction.com/residential/active_lt/
Cityhttps://www.auction.com/residential/CA/Los-Angeles_ct/active_lt
ZIPhttps://www.auction.com/residential/90210_zp/active_lt
Paginated (starts at page N)https://www.auction.com/residential/CA/active_lt/2_cp
Property / asset typehttps://www.auction.com/residential/CA/active_lt/single-family_pt/bank-owned_at
Auction formathttps://www.auction.com/residential/CA/active_lt/online_af
Beds / baths / sqfthttps://www.auction.com/residential/CA/active_lt/3_bd/2_bt/500_any_sqft
Sortedhttps://www.auction.com/residential/CA/active_lt/auction_date_order,resi_sort_v2_st
Without wwwhttps://auction.com/residential/TX/active_lt
Sold listingshttps://www.auction.com/residential/CA/sold_lt

A ?page=2 link is accepted, but the site ignores it and serves page 1. The run logs a warning; use /2_cp instead.

Single-listing /details/... links are fetched by listing id. /commercial/... links are not supported and are skipped with a warning. A search that matches 0 listings logs a warning. In incremental mode a /N_cp link is a partial scan and never marks listings as expired.

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/auction-com-scraper").call(run_input={"mode": "search", "states": ["CA"], "maxListings": 100})
for listing in client.dataset(run["defaultDatasetId"]).iterate_items():
print(listing["address"], listing["startingBid"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/auction-com-scraper').call({ mode: 'search', states: ['CA'], maxListings: 100 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Max pages and Max listings

maxPages bounds how many result pages (100 listings per page) a search walks. Left at its default of 0, it walks the whole catalogue: the run stops on its own once the site's own reported total is reached, a page comes back empty, or a page returns no listing that wasn't already collected. There is no artificial page-number ceiling. maxListings (default 20) is the only cap on how many listings a run actually collects; set it to 0 for no limit. The two are independent: a small maxPages can still stop a run before maxListings is reached, and vice versa.

Resume and recurring updates

There are two different things here, and they solve different problems.

Resume (resumeFromRunId) continues one specific earlier run: paste its run id or dataset id and this run skips every listing already collected there, returning only the remaining new listings. Combine both datasets afterward for the full set. A separate, automatic checkpoint also protects long unlimited runs against a platform migration, resuming the same run from where it stopped without any input needed.

Incremental mode (incrementalMode) is for running the exact same search again and again, for example daily from the Schedules tab. The actor remembers the previous run of that search itself, keyed by a hash of your filters (or by stateKey if you set one), so you never paste a run id. The first run returns everything as NEW. Every later run returns NEW listings, and UPDATED listings with changedFields naming what changed (price, status, auction date, occupancy, and so on). Listings that are unchanged are suppressed and not billed unless you turn on emitUnchanged. A listing counts as changed when any returned field differs from the copy stored on the previous run. Never counted (still returned in the output): scrapedAt, the verbatim raw and detailRaw payloads, primaryPhoto (its CDN host rotates), photosDetailed[].updatedDate, and the order of marketingTags and openHouses. Use Ignore fields when detecting changes (incremental mode only) (ignoreFieldsForChanges) to exclude more fields, with dots for nested ones (for example photosDetailed.updatedDate); editing that list never produces a wave of UPDATED rows.

REAPPEARED and EXPIRED are a separate pair, and neither shows up under default settings. EXPIRED is only produced when emitExpired is on and the run fully scans the tracked search: not capped by Max listings or Max pages, not a Resume run, and not interrupted by a platform checkpoint. A listing only becomes eligible to reappear after it has actually been marked EXPIRED this way; if you never turn on emitExpired, a listing that temporarily disappears and comes back later is simply classified as UNCHANGED or UPDATED next time, never REAPPEARED. Turn on emitExpired deliberately if you want that history tracked, and be aware it also returns (and bills) the extra tombstone rows.

Using resumeFromRunId together with incrementalMode for a search that already has saved incremental state stops the run with an error, since the two features would otherwise double-count the same listings; remove one of them or pick a different stateKey to start a separate campaign.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each listing, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (use filters) or url (paste links).
statesarraynone (prefill: ["CA"])Two-letter US state codes. Leave empty to search nationwide.
citystring(none)Optional city name to narrow the search.
zipCodesarray(none)Optional 5-digit ZIP codes.
keywordstring(none)Free-text search across street, city, state and ZIP.
listingStatusstringactiveactive (open for bidding) or sold (closed).
propertyTypesarray(none, all types)single-family, condos-townhouses, multi-family, land.
assetTypesarray(none, all types)bank-owned, foreclosures, short-sales, private-seller.
auctionFormatsarray(none, all formats)online, in-person, remote-bid.
minBedsinteger(none)Minimum bedrooms.
maxBedsinteger(none)Maximum bedrooms.
minBathsinteger(none)Minimum bathrooms.
minSqftinteger(none)Minimum living area in square feet.
maxSqftinteger(none)Maximum living area in square feet.
minPriceinteger(none)Minimum starting bid in USD.
maxPriceinteger(none)Maximum starting bid in USD.
sortBystringdefaultResult ordering.
urlsarrayone example link per supported shape (see below)Auction.com search links (URL mode).
fetchDetailsbooleanfalseFetch the full photo gallery and auction terms per listing.
maxPagesinteger0Bound on result pages walked per search/link (100 listings per page). 0 walks the whole catalogue and stops on its own; does not cap listing count.
maxListingsinteger20The sole cap on total listings collected (max 1,000,000). 0 means unlimited.
resumeFromRunIdstring(none)ID of a previous run (or dataset) of this actor. Listings already there are skipped.
incrementalModebooleanfalseTurn on for recurring monitoring of the same search.
ignoreFieldsForChangesarray[]Incremental mode only. Fields (dotted paths for nested ones) that never count as a change; still returned in the output.
stateKeystring(none)Optional name for a monitoring campaign, or to share state across runs.
emitUnchangedbooleanfalseAlso return (and bill) listings unchanged since the last run.
emitExpiredbooleanfalseAlso return (and bill) listings no longer found, once a run fully scans the tracked search.
proxyobjectApify datacenter proxyConnection settings.
mcpConnectorsarray(none)Optional: send a summary of each listing to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which items are created.
maxNotifyListingsinteger50Cap on items written to each connector per run.

Output Example

Sample shape: values are illustrative placeholders, not from a live listing.

{
"listingId": "00000001",
"url": "https://www.auction.com/details/123-sample-st-springfield-st-00000001",
"address": "123 Sample St, Springfield, ST 00000",
"city": "Springfield",
"state": "ST",
"zip": "00000",
"county": "Sample County",
"latitude": 38.0,
"longitude": -90.0,
"propertyTypeGroup": "SINGLE_FAMILY",
"assetType": "BANK_OWNED",
"occupancyStatus": "VACANT",
"listingStatusGroup": "ACTIVE",
"isHot": false,
"bedrooms": 3,
"bathrooms": 2,
"squareFootage": 1800,
"lotSize": 0.25,
"yearBuilt": 1995,
"startingBid": 150000,
"estimatedValue": 225000,
"estimatedValueLow": 210000,
"estimatedValueHigh": 240000,
"auctionType": "ONLINE",
"auctionStartDate": "2026-01-01T00:00:00Z",
"auctionEndDate": "2026-01-03T00:00:00Z",
"financingAvailable": true,
"buyerPremiumAvailable": false,
"isRemoteBidEnabled": true,
"primaryPhoto": "https://example.com/sample-property-photo.jpg",
"photoCount": 12,
"marketingTags": [],
"openHouses": [],
"scrapedAt": "2026-01-01T00:00:00Z"
}

Plan Requirement

This scraper works on the default Apify datacenter proxy connection (measured: Auction.com search pages and its listing data service load through datacenter addresses; a plain home connection with no proxy is blocked), so no residential proxy is required. A paid Apify plan gives the most reliable runs, but a free plan is not a dead end. Apify free plans do not include any Apify Proxy, so the Apify connections are refused for the account; the run does not stop. It logs this notice: "The selected connection is unavailable to this run. Apify free plans do not include residential proxies. Continuing on a backup connection; some pages may still be unavailable. For residential access, upgrade at https://apify.com/pricing or supply your own proxy URLs." and carries on over a backup connection (the log then says "Served over the backup connection (the default connection was unavailable)."), so listings are still returned, though some pages may fail more often than on a paid plan. The run ends with "The proxy connection was refused for this account, so no page could be read. Your Apify plan does not include proxy access; a paid plan is required: https://apify.com/pricing. If you entered your own proxy URLs, check that their credentials are valid." only when every connection, the backup included, is refused (for example when your own proxy URLs are all rejected). If you pick the residential group on a plan without it, you get the same notice and the same backup connection; if the backup cannot load pages either, the run ends with "No results: residential proxies are unavailable on this run (Apify free plans do not include them), and the backup connection could not load the requested Auction.com pages. Upgrade at https://apify.com/pricing or supply your own proxy URLs, then try again." If requests fail for any other reason and no results page ever loads, the status reads "Could not load any results page (the requests failed), so nothing was collected. This is a connection problem, not an empty search. Please try again later." The residential group gives more headroom for large or frequent runs. Turning on fetchDetails adds one extra request per listing, billed only for listings that are actually returned, never for a candidate that gets checked and then suppressed. A pasted single-listing detail link always fetches and bills this extra request, whatever fetchDetails is set to.

FAQ

How much does it cost?

You pay per listing returned, and the detail-enrichment charge is billed only for listings that actually come back in the dataset with detail fetched: search-mode or listing-URL results when Fetch listing details is on, and a pasted single-listing detail link always, since that always fetches full detail regardless of that setting. The Pricing tab shows the current rates. Use Max listings to cap the cost of any run.

This actor collects only publicly available auction listing data. You are responsible for how you use it: follow Auction.com's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Listing facts such as price, dates and property details are generally factual, but photos may be subject to third-party rights.

Can I get only new or changed listings on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Every run after the first then returns only new and updated listings, and unchanged ones are suppressed and not billed. See "Resume and recurring updates" above for exactly when REAPPEARED and EXPIRED show up, since both need emitExpired turned on ahead of time.

What's the difference between Resume and Incremental mode?

Resume (resumeFromRunId) continues one specific earlier run and is a one-time delta. Incremental mode is for running the same search over and over, for example daily, and tracks its own state without you ever pasting a run id. Using both together on a search that already has saved incremental state is rejected, since it would double-count listings.

Why did my run fail instead of returning an empty dataset?

A run only stops with an error when resumeFromRunId points at an id this account cannot read, or when it is combined with Incremental mode on a search that already has saved state. Everything else, including a search that matches no listings or an upstream request that could not be completed, finishes as a normal run; if nothing was returned, the status message says why, and the run log shows any page that could not be loaded. Try again if it points at a temporary connection issue.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push a summary of each listing into Notion, Linear or Airtable.

🔗 Want more real estate data?

Pair this actor with these related scrapers from the same team:

🧩 Propwire Scraper
Scrape Propwire.com: 157M+ US MLS & off-market properties with owner names, mailing...
🧩 Homes.com Scraper
Scrape US property records from Homes.com. Pick a city, state or ZIP and a channel (for...
🏠 Redfin Scraper
Scrape redfin.com home listings: price, beds, baths, sqft, lot, year built, coordinates...
🏠 RealestateCo NZ
From $1/1K. Search and extract all real estate properties for sale, rent, and sold across...
🧩 Spain Property & Judicial Auctions Scraper
Scrape Spain's official BOE auction portal: judicial and public auction listings with...
🏠 Rumah123 Scraper
Pull structured property listings from Rumah123.com, Indonesia’s largest property portal...

👉 Browse all abotapi scrapers

💬 Support

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email contact@abotapi.com.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.