Distressed Property Scraper — Tax Delinquent & Pre-Foreclosure
Pricing
from $60.00 / 1,000 enriched leads
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
Maintained by CommunityActor stats
1
Bookmarked
115
Total users
44
Monthly active users
9 days ago
Last modified
Categories
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 want | Mode to start with | What you get |
|---|---|---|
| Tax delinquent properties list / tax lien properties list | discover_leads or tax_delinquent | Verified county tax-distress records where coverage is available |
| Pre-foreclosure list | discover_leads or pre_foreclosure | Verified recorder or court distress records where coverage is available |
| Sheriff sale list / trustee sale list / foreclosure auction list | foreclosure_auctions | Sheriff and trustee sale records where a verified source is configured |
| Code violation property list | code_violations | Address + violation type from verified city open-data endpoints |
| Vacant property list / condemned property list | vacant_registry | Registered vacant / blighted / condemned parcels (verified cities only) |
| Probate leads (real estate) | probate_filings | Probate-linked property records where a verified source is configured |
| Absentee owner list | absentee_owner | Deed-vs-mailing mismatch owners (when source available) |
| High equity property list | high_equity | Assessment-vs-mortgage equity headroom (when source available) |
| Fused distress score | distress_match | One row per property, stacked verified signals, scored |
| Enriched callable lead | enriched_lead | Distress match + owner name, mailing, phone |
| Primary discover | discover_leads | Cluster-scoped qualified matches (requires verified free sources) |
| Primary monitor | check_for_changes | First run baselines; later runs emit new/changed only |
| Primary reset | reset_baseline | Clears 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?
| Persona | Best 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 investors | distress_match, code_violations, vacant_registry, high_equity, absentee_owner |
How to use Distressed Property AI Scraper
- Open the Actor on Apify and click Try for free.
- Pick a
mode: start withcode_violationsortax_delinquentfor the fastest signal. - Set
cities(e.g.["Chicago", "Philadelphia"]) orcountiesfor county-based modes. - 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). - 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)
| Field | Used by | Notes |
|---|---|---|
mode | all | 15 modes: 12 legacy + discover_leads, check_for_changes, reset_baseline |
clusters | primary | Required for primary modes; registered cluster IDs only |
lookbackDays / maxResults / includeContacts / minSignals | primary | CamelCase primary controls |
cities / counties / county / metros | legacy | Location for raw / composite modes |
output_format | all | json (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
| Field | Meaning |
|---|---|
sha256 | Stable fingerprint per record — use for change detection between runs |
mode | The signal or composite mode that produced this row |
parcel_key | Normalized USPS Pub-28 address key — stable dedup identifier across sources |
address | Raw address string from the source |
signal_date | Date the signal was recorded at the source |
payload.distress_score | Computed DISTRESS-SCORE (see explainer below) — only on distress_match / enriched_lead |
payload.signal_count | Number of distinct distress signals stacked on this parcel |
payload.signals | List of signal modes that fired on this parcel |
payload.owner_name | Skip-traced owner name — only on enriched_lead |
payload.mailing_address | Skip-traced owner mailing address — only on enriched_lead |
payload.phones | Skip-traced phone numbers (list) — only on enriched_lead |
payload.emails | Skip-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):
| Signal | Base weight | Why |
|---|---|---|
tax_delinquent | 3.0 | Financial default — highest urgency |
pre_foreclosure | 3.0 | Active foreclosure timeline — time-critical |
foreclosure_auctions | 2.5 | Sheriff/trustee sale date set — near-term forced sale |
probate_filings | 2.0 | Estate/heir — motivated to liquidate |
code_violations | 1.5 | Deferred maintenance — can't or won't fix |
vacant_registry | 1.5 | Abandoned / blighted — owner disengaged |
demolition_permits | 1.0 | City has given up — owner likely motivated |
Owner-state multipliers:
| Condition | Multiplier |
|---|---|
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 Actor | PropStream | BatchLeads | DealMachine | |
|---|---|---|---|---|
| Access | API-first (Apify) | Web app + limited API | Web app + API | App (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 source | Source-direct county/city open data | Aggregated third-party feed | Aggregated feed | Aggregated feed |
| Cross-signal fusion | Yes — scored distress match | No (filter flags) | No | No |
| Pre-public triggers | Yes (tax, NOD, probate, sheriff sale) | Partial | Partial | Limited |
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 type | Price per row | Free tier | What you get |
|---|---|---|---|
| Raw signal record | $0.002 | first 20/run free | One address + signal event |
| Owner attribute | $0.003 | first 20/run free | Absentee owner / high-equity flag |
| Distress match (fused) | $0.02 | first 20/run free | One property, all signals stacked, scored |
| Enriched lead (callable) | $0.06 | billed from row 1 | Distress 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_violationsin Chicago — dense, daily-updated, fast to verify. - Run
distress_matchbeforeenriched_lead— filter bydistress_score > 4before 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 ApifyClientclient = 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.
Is this legal to use?
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.