# Montana Distressed Rental Finder – Motivated Seller Leads (`appetizing_horsefly/mt-distressed-rental-finder`) Actor

Scored motivated-seller leads for Montana 2+ unit rentals: tax delinquency scaled to property value, trustee/sheriff sales, recorded trustee notices, open code cases, long ownership, absentee owners. Parcel-centric, no owner names, with record ids and document numbers to verify each signal.

- **URL**: https://apify.com/appetizing_horsefly/mt-distressed-rental-finder.md
- **Developed by:** [GM Labs](https://apify.com/appetizing_horsefly) (community)
- **Categories:** Real estate, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$15.00 / 1,000 scored leads

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Montana Distressed Rental Finder: Motivated Seller Leads

Find **duplexes, fourplexes and apartment buildings in Montana whose owners show signs they may want to sell**: delinquent property taxes including tax liens sold under assignment (scaled to the size of the property), trustee or sheriff sales, recorded trustee-sale notices and lis pendens, open city code cases, long ownership, and absentee or out-of-state owners. Each lead gets a **motivation score** and the **record ids behind its signals** (parcel geocode, tax id, recorder document numbers, code case numbers), so you can verify it yourself in a few minutes.

Built for multifamily investors, wholesalers, acquisition analysts and lenders working **Billings and Laurel (Yellowstone), Bozeman, Belgrade, Big Sky, Manhattan, Three Forks and West Yellowstone (Gallatin), and Livingston and Gardiner (Park)**.

- **Parcel-centric and privacy-first.** The output has no owner names and no mailing addresses. You get owner-type flags (individual / LLC-corp / trust-estate), absentee yes/no/unknown and out-of-state yes/no/unknown, plus the record ids to look each parcel up yourself. Rows never link to a page that shows owner names, mailing addresses or document parties: the only links are the Yellowstone treasurer tax page (no owner shown) and the public trustee and sheriff sale lists.
- **One building, one lead.** Parcels on the same street with the same owner, unit count and year built (for example two identical 6-plexes side by side) are merged into one lead, listed in `merged_parcel_ids`, and billed once. `minUnits` is applied after merging.
- **Only official public sources:** the Montana Department of Revenue CAMA database (ORION), Montana Cadastral, county treasurer delinquency lists, Billings code enforcement GIS, the county sheriff sale list, a foreclosure trustee's public sale list, and the Yellowstone Clerk & Recorder index. No listing sites.
- **No blanks.** If a value can't be determined from the public record, the field says `unknown` (with the reason where there is one) instead of being empty.
- **Pay only for scored leads.** Empty runs, filtered-out parcels and merged duplicates are free.

### Try it free in 1 click

The input form is **prefilled with a small, working example**. Press **Start** without changing anything: the run returns the 20 highest-scoring distressed 2+ unit rentals in Yellowstone County (Billings and Laurel). Our test runs of this input finish in about 2 minutes. At $0.015 per lead that is $0.30, which fits inside the free monthly credit of Apify's free plan. Then pick another county, set **Minimum units** to 5 for apartment buildings only, or raise the score.

Prefilled input:

```json
{
  "county": "Yellowstone",
  "minScore": 4,
  "maxResults": 20,
  "minUnits": 2
}
```

### Sample output

Selected rows from cloud run R9lXDoACplEUx56Rf on build 1.0.15 (prefilled input, 2026-10-19); that run returned 20 leads, and these rows are a selection of them. Owner names are never output. "≥" means a minimum (see *Years owned* below).

| Score | Address | City | Units | Built | Assessed $ | Possibly mixed-use | Owner type | Absentee | Out of state | Yrs owned | Signals |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 8 | 720 N 25th St | Billings | 2 | 1910 | 82,232 | n/a (only assessed for 5+ units) | individual | yes | yes | 16.2 | Tax delinquent 2025 ($639 = 0.78% of value, high); open code case CE-24-03327; closed code case (24 mo, 0 points) CE20263265 |
| 7 | 213 S 30th St | Billings | 3 | 1935 | 74,472 | n/a (only assessed for 5+ units) | individual | yes | no | 6.4 | Tax delinquent 2024-2025 ($1,223 = 1.64% of value, severe); open code case CE-26-00132; closed code case (24 mo, 0 points) CE20261028, CE20262657 |
| 6 | 620 W Main St | Laurel | 12 | 1949 | 640,300 | no | individual | yes | no | 10.7 | Tax delinquent 2024-2025 ($6,235 = 0.97% of value, high) |
| 5 | 315 S 29th St | Billings | 16 | 1910 | 415,913 | yes | individual | yes | no | 4.9 | Tax delinquent 2025 ($2,903 = 0.70% of value, high); incl. a tax lien sold under assignment; open code case CE-24-01542 |
| 5 | 1431 & 1441 Sourdough Ln | Billings | 12 | 1977 | 1,215,600 | no | individual | yes | no | ≥19 | Tax delinquent 2023-2024 ($16,067 = 1.32% of value, high); closed code case (24 mo, 0 points) CE-24-03482; 2 parcels merged, billed once |
| 5 | 114 3rd Ave | Laurel | 6 | 2020 | 991,900 | yes | llc_corp | unknown | no | 5.3 | Tax delinquent 2023-2025 ($24,240 = 2.44% of value, severe) |
| 4 | 936 Terry Ave | Billings | 2 | 1925 | 252,306 | n/a (only assessed for 5+ units) | individual | yes | no | 4.9 | trustee sale listed for 12/30/2026 (Halliday, Watkins & Mann file MT23184); trustee sale notice recorded 2026-08-25 (doc 4144306, legal-description match) |

One full item (JSON, a merged two-parcel lead):

```json
{
  "parcel_id": "03-1033-21-1-19-01-0000",
  "property_id": 212473,
  "tax_id": "A20893",
  "county": "Yellowstone",
  "state": "MT",
  "address": "1431 & 1441 Sourdough Ln",
  "address_raw": "1431 SOURDOUGH LN | 1441 SOURDOUGH LN",
  "city": "Billings",
  "units": 12,
  "size_class": "5+",
  "year_built": 1977,
  "assessed_value": 1215600,
  "property_type": "Apartment",
  "possible_mixed_use": "no",
  "owner_type": "individual",
  "absentee_owner": "yes",
  "out_of_state_owner": "no",
  "years_owned": 19,
  "years_owned_basis": "minimum: no deed on file with MT DOR; owner of record unchanged since the state's 2007 system conversion",
  "last_deed_date": "unknown (no deed on file; owner unchanged since 2007-11-06)",
  "last_deed_type": "unknown",
  "tax_delinquent": "yes",
  "tax_delinquent_years": [
    2023,
    2024
  ],
  "tax_delinquent_amount": 16067.09,
  "tax_delinquent_pct_of_value": 1.322,
  "tax_delinquency_tier": "high (0.5-1.5% of assessed value)",
  "code_case": "closed (24 mo)",
  "code_cases": [
    {
      "case_number": "CE-24-03482",
      "status": "closed",
      "case_status_detail": "Legacy Closed",
      "type": "Parking",
      "date_cited": "2024-12-10",
      "dangerous": false
    }
  ],
  "foreclosure_sale": "none",
  "recorded_distress_docs": [],
  "score": 5,
  "score_breakdown": {
    "tax_delinquent": 3,
    "tax_delinquent_multi_year": 1,
    "owned_10y": 1
  },
  "signals": [
    "TAX DELINQUENT 2023, 2024 $16,067 across 2 parcels = 1.32% of combined assessed value, high tier (excl. penalty & interest)",
    "closed code case (24 mo), display only, not scored: CE-24-03482 Parking",
    "long ownership at least 19 yrs",
    "merged 2 parcels on the same street with the same owner, units and year built into this one lead (charged once)"
  ],
  "source_links": [
    "https://www.yellowstonecountymt.gov/treasurer/propertysearch/csadelin.asp?propid=A20893",
    "https://www.yellowstonecountymt.gov/treasurer/propertysearch/csadelin.asp?propid=A20892"
  ],
  "verification_notes": [
    "parcel record: search geocode 03-1033-21-1-19-01-0000 on Montana Cadastral (Montana State Library); not linked because the parcel page shows the owner's name and mailing address",
    "code case: look up case CE-24-03482 with the City of Billings Code Enforcement Division (no link: the city's case pages show owner details)",
    "parcel record: search geocode 03-1033-21-1-19-02-0000 on Montana Cadastral (Montana State Library); not linked because the parcel page shows the owner's name and mailing address"
  ],
  "merged_parcel_ids": [
    "03-1033-21-1-19-01-0000",
    "03-1033-21-1-19-02-0000"
  ],
  "merged_parcels": [
    {
      "parcel_id": "03-1033-21-1-19-01-0000",
      "tax_id": "A20893",
      "address": "1431 Sourdough Ln",
      "units": 6,
      "assessed_value": 607800,
      "tax_delinquent_amount": 7906.86,
      "score": 5
    },
    {
      "parcel_id": "03-1033-21-1-19-02-0000",
      "tax_id": "A20892",
      "address": "1441 Sourdough Ln",
      "units": 6,
      "assessed_value": 607800,
      "tax_delinquent_amount": 8160.23,
      "score": 5
    }
  ],
  "parcel_count": 2,
  "data_as_of": {
    "orion_extract": "2026-10-15",
    "treasurer_list": "10/19/2026",
    "recorder_index": "2026-10-17",
    "tax_lien_assignments": "point-in-time snapshot taken 2026-10-18 (not refreshed automatically)",
    "run_date": "2026-10-19"
  }
}
```

### Input

| Field | Default | What it does |
|---|---|---|
| `county` | Yellowstone | Yellowstone (Billings, Laurel), Gallatin (Bozeman, Belgrade, Big Sky, Manhattan, Three Forks, West Yellowstone) or Park (Livingston, Gardiner). |
| `minScore` | 4 | Minimum motivation score (see Scoring). 7+ is a short, hot list. A live trustee or sheriff sale listing is returned at any score, and the run's status message says how many such leads came back below your minimum. |
| `maxResults` | 20 | Cap on returned leads, highest score first. 0 = all. |
| `minUnits` | 2 | 2 = duplexes and up. 5 = apartment buildings with 5+ units only. |
| `requireDistressSignal` | true | Every lead has at least one **hard** signal: tax delinquency of at least 0.1% of assessed value, a foreclosure / sale listing, a recorded trustee notice / lis pendens / tax deed application, or an **open** code case. Closed code cases score 0 (display only) and token delinquencies (<0.1% of value) add 1 point but are not hard signals. A live trustee or sheriff sale qualifies a lead on its own. Turn it off to include soft-only leads (for example long-held + out-of-state). |
| `onlyNewSinceLastRun` | false | Skip parcels you already received for this county. Good for a weekly schedule, because you pay only for new leads. |

### Scoring

Points add up. A lead needs `minScore` points or more.

| Signal | Points | Hard signal? | Counties |
|---|---|---|---|
| Delinquent tax ≥ 1.5% of assessed value (*severe*) | +4 | yes | all 3 |
| Delinquent tax 0.5–1.5% of assessed value (*high*) | +3 | yes | all 3 |
| Delinquent tax 0.1–0.5% of assessed value (*moderate*) | +2 | yes | all 3 |
| Delinquent tax under 0.1% of assessed value (*token*) | +1 | no | all 3 |
| Delinquent tax, assessed value unknown | +2 | yes | all 3 |
| More than one delinquent tax year (hard tiers only) | +1 | – | all 3 |
| Trustee or sheriff sale listed: only sales dated today or later (Montana time) and not marked cancelled, postponed, bankruptcy, completed or sold (**qualifies on its own**, whatever `minScore`) | +4 | yes | all 3 (trustee list); Yellowstone sheriff list |
| Trustee sale notice, lis pendens or tax deed application recorded in the last 180 days, matched by legal description | +2 (not added on top of a sale listing) | yes | Yellowstone |
| **Open** code-enforcement case (+1 if flagged dangerous) | +2 | yes | Billings city limits |
| Closed code case (24 mo): closed, cited in the last 24 months | 0 (display only) | no | Billings city limits |
| Owned 20+ years / 10+ years | +2 / +1 | no | all 3 |
| Out-of-state owner / non-local Montana owner | +2 / +1 | no | all 3 |
| Estate or deceased indicator / trust owner | +2 / +1 | no | all 3 |
| Death, PR or distribution deed within 5 years | +1 | no | all 3 |

**Why tax tiers?** Montana property tax runs roughly 0.8–1.2% of value a year, so a delinquency of 1.5% of value is more than a full year behind, while $498 owed on a $7.7M building is a rounding error. Balances under $250 are ignored. Tiers use the amount excluding penalty and interest, and match the treasurer's own totals (each tax year counted once). Tax liens the county has sold to a third party (**assignments**) are still unpaid taxes and are included; the signal says so. For merged leads the combined amount is compared with the combined assessed value.

### Output fields

| Field | Meaning |
|---|---|
| `parcel_id`, `merged_parcel_ids`, `parcel_count`, `merged_parcels` | Montana geocode of the lead; all parcels merged into it (with per-parcel units, value and delinquency) |
| `address`, `address_raw` | Readable address (e.g. `1512, 1542 & 1584 Governors Blvd`) and the address exactly as on the state record (`1512,42,84 GOVERNORS BLVD`) |
| `city`, `county`, `state`, `tax_id`, `property_id`, `property_type` | Location and record ids. Where Montana Cadastral lists no city for an address, `city` is taken from the parcel's levy district (the city nearly all other parcels in that district name) and `verification_notes` says so |
| `possible_mixed_use` | Assessed only for leads with 5+ units (after merging). `yes` when Montana Cadastral classes the parcel as generic *Improved Property* rather than *Apartment*, so the building may be mixed-use (for example shops below apartments); `no` for *Apartment* and other residential types; `unknown` when Cadastral has no type. 2–4 unit leads read `n/a (only assessed for 5+ units)`, because *Improved Property* is the normal type for small rentals |
| `units`, `size_class`, `year_built`, `assessed_value` | Building profile (summed across merged parcels) |
| `owner_type`, `absentee_owner`, `out_of_state_owner` | individual / llc_corp / trust_estate / unknown; yes / no / unknown |
| `years_owned`, `years_owned_basis`, `last_deed_date`, `last_deed_type` | Ownership length and how it was determined. When the state deed table has a deed date but no document type, `last_deed_type` says so and `verification_notes` gives the deed's document number or book/page |
| `tax_delinquent`, `tax_delinquent_years`, `tax_delinquent_amount`, `tax_delinquent_pct_of_value`, `tax_delinquency_tier` | Delinquency and its tier |
| `code_case`, `code_cases` | open / open-dangerous / closed (24 mo) / none; each case with number, status, type and date cited. Not linked, because the city's case pages show owner names and mailing addresses |
| `foreclosure_sale` | Sheriff or trustee sale listing, or `none` |
| `recorded_distress_docs` | Type, document number, recording date and a `lookup` note. Not linked, because recorded documents name the parties |
| `score`, `score_breakdown`, `signals` | Score, points per signal, readable signal list |
| `source_links`, `verification_notes` | Links only to official pages that show no owner names (Yellowstone treasurer tax page, trustee / sheriff sale lists); everything else as a plain-text lookup reference: the geocode for Montana Cadastral, the tax id for the county treasurer, document numbers for the recorder, case numbers for the city |
| `data_as_of` | Freshness of each source: ORION snapshot, treasurer list date (`treasurer_list`; for Gallatin and Park the date printed on the county's latest published list), whether the listed delinquency was re-checked on the county tax page (`treasurer_current_status`, Gallatin and Park), and the date of the tax-lien assignment snapshot (`tax_lien_assignments`) |

The `STATS` record in the key-value store shows each source's status and row count for the run.

#### Verifying a lead

- **Code cases** are not linked: the City of Billings case pages show the owner's name and mailing address. `verification_notes` lists the case numbers; look them up with the City of Billings Code Enforcement Division.
- **Recorded documents** are attached only when the document's recorded legal description (subdivision + block + lot) names the parcel. Documents with a truncated or unit-only legal description are left out rather than guessed. They are not linked, because recorded documents name the parties. Each entry gives the document number and recording date with a `lookup` note: search that number in the Yellowstone County Clerk & Recorder's free guest search (*Public/Guest Login*).
- **Parcel record:** `verification_notes` gives the parcel geocode to search on Montana Cadastral (Montana State Library). Not linked, because the parcel page shows the owner's name and mailing address.
- **Treasurer:** Yellowstone rows link to the county's parcel tax page, which shows taxes due but no owner. Gallatin and Park rows are not linked, because the county iTax page shows the owner's name and mailing address; `verification_notes` gives the tax id to look up on the county treasurer's online tax search.
- **Sale listings** (sheriff and trustee) link to the public list, where you find the address; the sheriff's per-sale notices name the parties and are not linked. We never link a homepage in place of a record.

#### `unknown` values and years owned

- `years_owned` is the time since the last recorded deed (`years_owned_basis: "since last recorded deed"`).
- Some long-held parcels have no deed in the state database at all, because the owner of record hasn't changed since Montana's 2007 system conversion. For these, `years_owned` is a **minimum** (time since 2007-11-06), the basis says so, and `last_deed_date` reads `unknown (no deed on file; owner unchanged since 2007-11-06)`. The real ownership is usually longer.
- Where neither is available, the field is `unknown`. The same applies to absentee / out-of-state (missing mailing address), year built, assessed value and city.

### Pricing

Pay per event: **$0.015 per scored lead**. A lead is one de-duplicated building (one parcel, or several merged same-owner parcels on one street) that passes your filters. Runs that return nothing cost nothing. Use **Max results** or Apify's maximum charge per run to cap your spend; the run stops cleanly at your limit.

### Data sources, freshness and terms

| Source | Used for | Refreshed |
|---|---|---|
| MT Dept. of Revenue ORION CAMA database (public download) | Units, year built, last deed date and type | Snapshot as of 2026-10-15 (the state's ORION refresh date, all 3 counties), built into the Actor; rebuilt by hand, not on a schedule |
| Montana Cadastral (ArcGIS REST, public) | Property address, assessed value, owner-type, absentee and out-of-state flags | Live, every run |
| Yellowstone Co. Treasurer delinquent lists | Tax delinquency (years and amount) | Live, every run (the list's own date is in `data_as_of.treasurer_list`) |
| Yellowstone Co. Treasurer parcel tax pages | Tax liens sold under assignment (not on the delinquent lists) | Point-in-time snapshot taken 2026-10-18 (608 parcels checked, paced at 10 s per page), built into the Actor and not refreshed automatically; the date is in each row's `data_as_of.tax_lien_assignments` |
| Gallatin Co. Treasurer delinquent list (lien-attachment PDF) | Tax delinquency | The county's latest published list, downloaded every run; Gallatin publishes it about once a year. The date of the list used is shown on every row in `data_as_of.treasurer_list`. The current tax year is re-checked per parcel on the county's iTax page (see Limitations) |
| Park Co. Treasurer delinquent tax list (PDF) | Tax delinquency | The county's latest published list, downloaded every run. The date of the list used is shown on every row in `data_as_of.treasurer_list`. The current tax year is re-checked per parcel on the county's iTax page (see Limitations) |
| Halliday, Watkins & Mann public sale list (MT) | Trustee and foreclosure sales | Live; only sales dated today or later (Montana time) and not marked cancelled / postponed / sold / bankruptcy count |
| Yellowstone Co. Sheriff sales | Sheriff sales | Live; cancelled, postponed, bankruptcy-stayed, completed (sold) and past sales are skipped (dates in Montana time) |
| City of Billings code enforcement GIS | Open code cases and cases closed in the last 24 months | Live |
| Yellowstone Clerk & Recorder guest index | Trustee sale notices, lis pendens, tax deed applications (index with legal descriptions) | Snapshot of the index as of 2026-10-17 (one guest search), built into the Actor; not refreshed automatically. This Actor never queries the recorder itself. |

Every source is free and public. We pace requests: 10 seconds between county website requests, per the county's robots.txt. No listing sites (Zillow, LoopNet, Crexi) are used.

### Limitations

- **Years owned** resets on any recorded deed, including a family quitclaim or a transfer into an LLC.
- **Recorded documents** are matched by legal description only, so a notice whose index entry is truncated or lists only condo units is not attached even when it concerns the building.
- **Tax-lien assignments** (Yellowstone) come from a point-in-time snapshot taken 2026-10-18 (not refreshed automatically) covering every 5+ unit parcel, plus 2–4 unit parcels with an open Billings code case, a sale listing or a recorded notice. A 2–4 unit parcel whose only distress is an assigned lien can be missed, and a lien redeemed since the snapshot can still show.
- **Mobile home / RV parks** and non-valued or exempt parcels are excluded: this is a list of rental buildings.
- **Parcels without a property address** (Montana Cadastral has no situs address for them) are never returned or billed, even when they qualify; the run's `STATS` record counts them under `skipped_no_address` and the status message mentions them.
- **Possible mixed-use** is assessed for 5+ unit leads only. Montana Cadastral uses the generic type *Improved Property* for most small rentals and for mixed-use buildings alike, so on a 5+ unit lead `possible_mixed_use: yes` means "check the building", not "is commercial". Unit counts are residential units from the state database.
- **Deed type:** for some deeds (mostly before 2008) the state deed table has a date but no document type; `last_deed_type` then reads `unknown (...)`.
- **Code cases** are available only inside Billings city limits. Recorded documents are available only for Yellowstone County.
- **Gallatin and Park lists are dated** (Gallatin: the August lien list; Park: the latest list the county has posted; the date is on every row in `data_as_of.treasurer_list`). During the run each lead is re-checked on the county's per-parcel iTax page, which shows **only the current tax year**:
  - The current tax year, if it is on the list, is confirmed or corrected from the county page: paid → removed; re-billed lower or part paid → reduced, and the signal states the page's bill, any payment and the list amount (for example "2025 bill on county page is $X (list showed $Y), nothing paid"). The lead is then re-scored. A lead is dropped (not returned, not billed) when nothing scorable is left owing (counted as `dropped_paid` in `STATS`), or when it still owes but falls below `minScore` after the correction (counted separately as `dropped_below_min_score_after_recheck`).
  - Earlier years on the list can't be seen on that page. They are kept at the list amount and labelled *not checked (as of the list date)* in the signal and in `data_as_of.treasurer_current_status`.
  - If the page's tax year is not on the list at all (for example after the county page rolls over to the next tax year, before the county posts a new list), nothing can be confirmed: the row keeps the list amounts and is labelled *current status not checked*.
  - Leads past `maxResults` are never re-checked, returned or billed; the status message reports them as "N more past maxResults, not checked or billed" rather than as matches.
  - **Rows that could not be re-checked (page unreachable, check budget used, or the page's year not on the list) are still returned and billed**, labelled *current status not checked*. They are real listed delinquencies, just not re-confirmed; use `data_as_of.treasurer_current_status` to filter them out if you only want re-checked rows.
- This is research data. Follow federal and state rules (including do-not-call and do-not-mail obligations) before you contact anyone.

### FAQ

**Why are there no owner names?** By design. Each row gives the parcel geocode and tax id, so you can look up the current owner of record yourself on Montana Cadastral or the county treasurer. The Yellowstone treasurer page linked from a row shows taxes only, not the owner. That keeps this dataset parcel-focused while pointing you to the authoritative record.

**Why did two addresses come back as one lead?** They are parcels on the same street with the same owner, units and year built, i.e. one property in practice. You are billed once; every parcel id is in `merged_parcel_ids`.

**More counties?** Missoula, Flathead, Cascade and Lewis & Clark are next. Each needs a public treasurer delinquency source; see the Issues tab to request one.

**Support:** open an issue on the Actor's Issues tab. GM Labs replies within 48 hours.

# Actor input Schema

## `county` (type: `string`):

County to search. All three are live: Yellowstone (Billings, Laurel), Gallatin (Bozeman, Belgrade, Big Sky, Manhattan, Three Forks, West Yellowstone) and Park (Livingston, Gardiner).

## `minScore` (type: `integer`):

Only return leads at or above this score. Tax delinquency (incl. Yellowstone tax liens sold under assignment, from a point-in-time snapshot taken 2026-10-18 and not refreshed automatically) (Gallatin / Park: from the county's latest published list, the current tax year re-checked per parcel on the county tax page, so parcels paid since the list date drop out) scales with size: 4 if the delinquent amount is >=1.5% of assessed value, 3 for 0.5-1.5%, 2 for 0.1-0.5%, 1 below 0.1% (+1 if multiple years). Trustee / sheriff sale listed 4 (only sales dated today or later (Montana time) and not marked cancelled, postponed, bankruptcy, completed or sold; such a live sale always qualifies, whatever this score, so a run can return sale leads scored below it), recorded trustee notice / lis pendens / tax deed application 2, OPEN code case 2 (+1 dangerous), owned 20+ yrs 2 / 10+ yrs 1, out-of-state owner 2, estate 2 / trust 1. Closed code cases are shown for context but score 0. 4 is a good start; 7+ is a short, hot list.

## `maxResults` (type: `integer`):

Maximum number of leads to return (highest score first). Each lead is one billable event; same-owner parcels on the same street with the same units and year built are merged into one lead and billed once. 0 = no cap.

## `minUnits` (type: `integer`):

2 = duplexes and up. 5 = apartment buildings with 5+ units only. Applied after same-owner parcels are merged, so two side-by-side 4-plexes count as one 8-unit lead.

## `requireDistressSignal` (type: `boolean`):

On (recommended): every lead has at least one HARD signal: tax delinquency of at least 0.1% of assessed value, a trustee / sheriff sale listing, a recorded trustee notice / lis pendens / tax deed application (matched by legal description), or an OPEN code case. Closed code cases (display only, 0 points) and token delinquencies (<0.1% of value) never qualify a lead. Off: soft-only leads (e.g. long-held + out-of-state) are included too.

## `onlyNewSinceLastRun` (type: `boolean`):

Skip parcels this account already received for this county (kept in a named key-value store in your own account). Handy for weekly schedules: you pay only for new leads.

## Actor input object example

```json
{
  "county": "Yellowstone",
  "minScore": 4,
  "maxResults": 20,
  "minUnits": 2,
  "requireDistressSignal": true,
  "onlyNewSinceLastRun": false
}
```

# Actor output Schema

## `leads` (type: `string`):

No description

## `stats` (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 = {
    "county": "Yellowstone",
    "minScore": 4,
    "maxResults": 20,
    "minUnits": 2
};

// Run the Actor and wait for it to finish
const run = await client.actor("appetizing_horsefly/mt-distressed-rental-finder").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 = {
    "county": "Yellowstone",
    "minScore": 4,
    "maxResults": 20,
    "minUnits": 2,
}

# Run the Actor and wait for it to finish
run = client.actor("appetizing_horsefly/mt-distressed-rental-finder").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 '{
  "county": "Yellowstone",
  "minScore": 4,
  "maxResults": 20,
  "minUnits": 2
}' |
apify call appetizing_horsefly/mt-distressed-rental-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,appetizing_horsefly/mt-distressed-rental-finder"
        }
    }
}
```

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/nVYj9kvRoNX2sCmF2/builds/hkiPSEEOUVnmaVtKo/openapi.json
