Distressed Property Scraper — Tax Delinquent & Pre-Foreclosure avatar

Distressed Property Scraper — Tax Delinquent & Pre-Foreclosure

Pricing

from $60.00 / 1,000 enriched leads

Go to Apify Store
Distressed Property Scraper — Tax Delinquent & Pre-Foreclosure

Distressed Property Scraper — Tax Delinquent & Pre-Foreclosure

Pull a tax delinquent properties list, pre-foreclosure list, sheriff sale list, code violations, vacant property & probate leads from US county/city records — fused per property, scored for distress, and skip-traced to a callable owner. Motivated seller leads, pay-per-event.

Pricing

from $60.00 / 1,000 enriched leads

Rating

0.0

(0)

Developer

Domin Vo

Domin Vo

Maintained by Community

Actor stats

1

Bookmarked

115

Total users

44

Monthly active users

9 days ago

Last modified

Share

Distressed Property AI Scraper turns official public records into clean motivated seller leads — tax-delinquent properties, pre-foreclosures, blight tickets, code violations, vacant properties, sheriff sales, and probate signals — fused per parcel, scored, monitored, and optionally enriched to a callable owner.

Pull a tax delinquent properties list, pre-foreclosure leads, code violation property list, Detroit blight tickets, Harris County tax delinquent properties, vacant property registries, sheriff sales, and probate filings from official county and city sources. The Actor deduplicates signals onto one property, computes a DISTRESS-SCORE, monitors new or changed records, and optionally does skip tracing to find the owner's phone.

Coverage status (technical): Primary cluster modes (discover_leads, check_for_changes, reset_baseline) select only verified free registry sources. The SourceSpec matrix is signed off for 12 of 13 clusters, backed by 16 buyer-path verified sources. Northeast Florida remains the explicit unsupported gap. This is not nationwide coverage.

It's a real PropStream alternative / API for the automation buyer: pulled direct from county and city open data (Socrata SODA, ArcGIS REST, county recorder feeds), not a reseller feed that can vanish or raise prices.

What does Distressed Property AI Scraper do?

It scrapes pre-public distress triggers, fuses them per property, and scores motivation. Pick the mode that matches the list you want:

Lead list you wantMode to start withWhat you get
Tax delinquent properties list / tax lien properties listdiscover_leads or tax_delinquentVerified county tax-distress records where coverage is available
Pre-foreclosure listdiscover_leads or pre_foreclosureVerified recorder or court distress records where coverage is available
Sheriff sale list / trustee sale list / foreclosure auction listforeclosure_auctionsSheriff and trustee sale records where a verified source is configured
Code violation property listcode_violationsAddress + violation type from verified city open-data endpoints
Vacant property list / condemned property listvacant_registryRegistered vacant / blighted / condemned parcels (verified cities only)
Probate leads (real estate)probate_filingsProbate-linked property records where a verified source is configured
Absentee owner listabsentee_ownerDeed-vs-mailing mismatch owners (when source available)
High equity property listhigh_equityAssessment-vs-mortgage equity headroom (when source available)
Fused distress scoredistress_matchOne row per property, stacked verified signals, scored
Enriched callable leadenriched_leadDistress match + owner name, mailing, phone
Primary discoverdiscover_leadsCluster-scoped qualified matches (requires verified free sources)
Primary monitorcheck_for_changesFirst run baselines; later runs emit new/changed only
Primary resetreset_baselineClears one exact monitor scope (no fetch / no bill)

All data is pulled direct from free public sources — Socrata SODA, ArcGIS REST, county recorder feeds — not from a reseller that can vanish or raise prices.

Newly verified motivated-seller markets

  • Houston / Harris County, Texas: Harris County tax delinquent properties and delinquent tax lawsuit signals, including parcel ID, address, years due, and case dates.
  • Detroit / Wayne County, Michigan: Detroit blight tickets and property code violations with parcel ID, address, disposition, issue date, and update watermark.
  • Fort Worth / Tarrant County, Texas: Fort Worth code violations from the city's official weekly-updated property data.

Use discover_leads for a current list or schedule check_for_changes to emit only new or materially changed properties after the first baseline run.

Why use this motivated seller leads scraper?

  • Beat the market. Catch motivated sellers before they list publicly. Tax-delinquent, pre-foreclosure, and sheriff-sale owners are weeks to months ahead of the MLS.
  • One API, every trigger. Tax delinquent list + tax liens + code violations + vacant property list + pre-foreclosure + probate, all in one run. No juggling five subscriptions.
  • The fusion moat. Other tools dump raw events. This Actor deduplicates signals onto a single parcel key and hands you a ranked distress score — so your dialer works the hottest leads first.
  • Built-in skip tracing for real estate. Optionally enrich any distress match to a callable owner phone and mailing address — no separate skip-trace subscription.
  • Price vs incumbents. $0.06 per enriched lead (owner + phone) vs $0.12+ per PropStream credit. The first 20 raw signal rows per run are free; enriched leads are billed per lead from the first.
  • AI-first output. Clean structured JSON with a distress score, ready for a wholesaler's dialer, an LLM workflow, or a spreadsheet.
  • No reseller dependency. Data is fetched directly from official city/county open-data portals — a true source-direct PropStream alternative, not a third-party feed that can vanish.

Who is this for?

PersonaBest modes
P1 — Real estate wholesalers (wholesale real estate leads)enriched_lead, distress_match, pre_foreclosure, tax_delinquent, probate_filings
P2 — Fix-and-flip / buy-and-hold investorsdistress_match, code_violations, vacant_registry, high_equity, absentee_owner

How to use Distressed Property AI Scraper

  1. Open the Actor on Apify and click Try for free.
  2. Pick a mode: start with code_violations or tax_delinquent for the fastest signal.
  3. Set cities (e.g. ["Chicago", "Philadelphia"]) or counties for county-based modes.
  4. For enriched_lead, just pick the mode — owner contact is resolved automatically via a built-in skip-trace step. You're billed $0.06 per fully enriched lead, from the first lead (enriched leads have no free tier; the 20-free-rows allowance covers raw signal rows).
  5. Click Save & Start and download results from the Output tab.

Quickest first test: leave the default mode as code_violations, set cities to ["Chicago"], and run. You'll get signal rows in under 2 minutes.

Input example

{
"mode": "discover_leads",
"clusters": ["houston_harris"],
"lookbackDays": 180,
"maxResults": 100
}

For enriched leads with skip tracing — owner contact is resolved automatically via an integrated skip-trace step, so no extra setup is required:

{
"mode": "enriched_lead",
"metros": ["Philadelphia"],
"min_signals": 2,
"output_format": "json"
}

Inputs (summary)

FieldUsed byNotes
modeall15 modes: 12 legacy + discover_leads, check_for_changes, reset_baseline
clustersprimaryRequired for primary modes; registered cluster IDs only
lookbackDays / maxResults / includeContacts / minSignalsprimaryCamelCase primary controls
cities / counties / county / metroslegacyLocation for raw / composite modes
output_formatalljson (Dataset) or ndjson / csv / xlsx (KV secondary)

Output

Canonical rows go to the default Dataset. Optional secondary files and non-PII RUN_SUMMARY land in the default key-value store (see .actor/output_schema.json).

signal_record (raw distress signal)

{
"sha256": "a3f9c1...",
"mode": "code_violations",
"parcel_key": "1420-N-CLARK-ST-CHICAGO-IL-60610",
"address": "1420 N Clark St, Chicago, IL 60610",
"signal_date": "2026-05-01",
"payload": {
"violation_type": "FAILED EXTERIOR",
"status": "OPEN",
"source": "chicago_socrata",
"dataset_id": "wvhk-k5uv"
}
}

distress_match (fused + scored)

{
"sha256": "b7d2e8...",
"mode": "distress_match",
"parcel_key": "1420-N-CLARK-ST-CHICAGO-IL-60610",
"address": "1420 N Clark St, Chicago, IL 60610",
"signal_date": "2026-05-01",
"payload": {
"distress_score": 7.4,
"signal_count": 3,
"signals": ["code_violations", "tax_delinquent", "vacant_registry"],
"absentee_owner": true,
"days_since_oldest_signal": 42
}
}

enriched_lead (callable owner)

{
"sha256": "c9a4f2...",
"mode": "enriched_lead",
"parcel_key": "1420-N-CLARK-ST-CHICAGO-IL-60610",
"address": "1420 N Clark St, Chicago, IL 60610",
"signal_date": "2026-05-01",
"payload": {
"distress_score": 7.4,
"signal_count": 3,
"signals": ["code_violations", "tax_delinquent", "vacant_registry"],
"enriched": true,
"owner_name": "JAMES R EXAMPLE",
"owner": { "full_name": "JAMES R EXAMPLE", "givenname": "JAMES", "surname": "EXAMPLE" },
"mailing_address": "500 W Madison St, Chicago, IL 60661",
"phones": ["+13125550123"],
"emails": ["james.example@example.com"]
}
}

You can download results as JSON, CSV, Excel, or NDJSON. JSON streams to the Apify dataset; other formats are saved as files in the key-value store.

Data fields

FieldMeaning
sha256Stable fingerprint per record — use for change detection between runs
modeThe signal or composite mode that produced this row
parcel_keyNormalized USPS Pub-28 address key — stable dedup identifier across sources
addressRaw address string from the source
signal_dateDate the signal was recorded at the source
payload.distress_scoreComputed DISTRESS-SCORE (see explainer below) — only on distress_match / enriched_lead
payload.signal_countNumber of distinct distress signals stacked on this parcel
payload.signalsList of signal modes that fired on this parcel
payload.owner_nameSkip-traced owner name — only on enriched_lead
payload.mailing_addressSkip-traced owner mailing address — only on enriched_lead
payload.phonesSkip-traced phone numbers (list) — only on enriched_lead
payload.emailsSkip-traced emails (list, when available) — only on enriched_lead

DISTRESS-SCORE explainer

The DISTRESS-SCORE is a weighted sum of all signals stacked on one parcel, with owner-state multipliers.

Signal weights (additive):

SignalBase weightWhy
tax_delinquent3.0Financial default — highest urgency
pre_foreclosure3.0Active foreclosure timeline — time-critical
foreclosure_auctions2.5Sheriff/trustee sale date set — near-term forced sale
probate_filings2.0Estate/heir — motivated to liquidate
code_violations1.5Deferred maintenance — can't or won't fix
vacant_registry1.5Abandoned / blighted — owner disengaged
demolition_permits1.0City has given up — owner likely motivated

Owner-state multipliers:

ConditionMultiplier
absentee_owner (deed vs mailing mismatch)×1.3
high_equity (assessment vs mortgage headroom)×1.2

Score = sum of signal weights × applicable multipliers. A Chicago property with tax_delinquent + code_violations + vacant_registry and an absentee owner scores (3.0 + 1.5 + 1.5) × 1.3 = 7.8.

Scores above 5 are strong leads for a wholesaler's dialer. Scores above 8 suggest multiple financial defaults — prioritize these.

PropStream alternative: vs PropStream, BatchLeads & DealMachine

Looking for a PropStream alternative, a PropStream API, or a BatchLeads / DealMachine alternative you can automate? This Actor steals the enterprise vocabulary — motivated seller, distress signals, skip trace, absentee owner, high equity — and undercuts on per-lead price with a pure API.

This ActorPropStreamBatchLeadsDealMachine
AccessAPI-first (Apify)Web app + limited APIWeb app + APIApp (driving for dollars)
Pricing$0.06 / enriched lead (raw signal rows: 20 free/run)~$100/mo seat + credits~$100/mo + skip credits~$60–120/mo + credits
Data sourceSource-direct county/city open dataAggregated third-party feedAggregated feedAggregated feed
Cross-signal fusionYes — scored distress matchNo (filter flags)NoNo
Pre-public triggersYes (tax, NOD, probate, sheriff sale)PartialPartialLimited

Why it wins: PropStream charges $0.12+ per phone-enriched lead on credits; this Actor delivers the same callable lead for $0.06, source-direct, on your own schedule and format. No seat fee, no monthly minimum.

How much does it cost to pull motivated seller leads?

This Actor uses pay-per-event pricing. The first 20 raw signal rows per run are free; enriched leads are billed per lead from the first.

Output typePrice per rowFree tierWhat you get
Raw signal record$0.002first 20/run freeOne address + signal event
Owner attribute$0.003first 20/run freeAbsentee owner / high-equity flag
Distress match (fused)$0.02first 20/run freeOne property, all signals stacked, scored
Enriched lead (callable)$0.06billed from row 1Distress match + owner name, mailing, phone

vs PropStream credits: PropStream charges $0.12+ per phone-enriched lead. This Actor delivers the same callable lead for $0.06 — and you control the data source, schedule, and format.

For full pricing, check the Pricing tab on the Actor page.

Tips for best results

  • Start with code_violations in Chicago — dense, daily-updated, fast to verify.
  • Run distress_match before enriched_lead — filter by distress_score > 4 before paying for skip tracing.
  • For county modes (pre_foreclosure, tax_delinquent, foreclosure_auctions), the quality varies by county. NYC, Cook County (Chicago), and Philadelphia are the most reliable starting points.
  • Use output_format: "csv" to open results directly in Excel or import to your dialer.

Use from Python

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("dominvo/distressed-property-ai-scraper").call(run_input={
"mode": "distress_match",
"cities": ["Chicago"],
"signals": ["code_violations", "tax_delinquent"],
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["payload"]["distress_score"], row["address"])

FCRA Disclaimer

This Actor is intended for making real estate purchase offers and investment research only.

Data from this Actor may NOT be used for:

  • Tenant screening or rental decisions
  • Credit decisions or creditworthiness evaluation
  • Employment screening or background checks
  • Any other purpose regulated by the Fair Credit Reporting Act (FCRA), 15 U.S.C. § 1681 et seq.

Using this data for FCRA-regulated purposes without complying with FCRA requirements is illegal. You are solely responsible for your use of the output.

FAQ and support

Is this a PropStream alternative?

Yes — it's a source-direct, API-first PropStream alternative for the automation buyer. Instead of a monthly seat plus credits, you pay per result ($0.06 per enriched lead) and pull data straight from county/city open-data portals. It also serves as a PropStream API, BatchLeads API, or DealMachine alternative for anyone who wants motivated seller leads inside their own workflow.

The source data is pulled from official public government portals (city open-data APIs, county recorder sites). Accessing public records for investment research is legal in the US. You are responsible for how you use the results — see the FCRA disclaimer above.

Does this scrape PropStream or BatchLeads?

No. Data is pulled directly from official city/county open-data sources (Socrata, ArcGIS, county recorder feeds). No third-party reseller is involved.

Which cities and counties are covered?

Not nationwide. Only verified free open-data endpoints are selected at runtime.

Legacy city-signal modes (code_violations and related) use cities.py verified entries, including:

  • Socrata: New York City, Chicago, Los Angeles, Austin, San Francisco, Seattle
  • ArcGIS: Philadelphia, Columbus, Charlotte, Indianapolis; vacant registry for Washington DC

Unverified or candidate city configs are filtered out by default. County modes use only explicitly verified per-county free sources.

Primary cluster modes plan only status=verified free sources. Twelve clusters are signed off: Chicago, Central Florida I-4, South Florida, Atlanta core, Philadelphia, Charlotte, New York City, Ohio I-71, Central Indiana, Houston/Harris, Detroit/Wayne, and Fort Worth/Tarrant. Northeast Florida remains unsupported_coverage. See docs/source-registry.md.

What is skip tracing and why is it separate?

Skip tracing is the process of resolving a property owner's name, phone number, and mailing address from public records. This Actor handles it for you behind the enriched_lead mode — owner contact is resolved automatically via an integrated skip-trace step, so there's no separate subscription to wire up. It's isolated to enriched_lead so you only pay the lead price ($0.06) when you actually need a callable owner — never for raw signals or scored matches.

Can I schedule a daily tax delinquent or pre-foreclosure list?

Yes. Use Apify schedules to run the Actor daily, weekly, or on any cron. Each record carries a stable SHA-256 fingerprint, so you can dedupe against your prior pulls on your side.

Where do I get help?

Open the Issues tab on the Actor page for bugs, missing cities, or feature requests.