Absentee Owner Lead List Builder — County Assessor Rolls avatar

Absentee Owner Lead List Builder — County Assessor Rolls

Pricing

from $13.75 / 1,000 results

Go to Apify Store
Absentee Owner Lead List Builder — County Assessor Rolls

Absentee Owner Lead List Builder — County Assessor Rolls

Build absentee-owner lead lists from county assessor rolls: Cook County IL, Philadelphia PA, NYC. Flags out-of-state and out-of-city owners by situs-vs-mailing mismatch, LLC/trust entity owners, with class and value filters. Clean JSON/CSV leads for wholesalers, flippers, direct mail and agents.

Pricing

from $13.75 / 1,000 results

Rating

0.0

(0)

Developer

Kyle Maloney

Kyle Maloney

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 days ago

Last modified

Share

Build absentee-owner lead lists straight from official county assessor / parcel rolls — no scraping of paywalled lead vendors, no stale resold data. The actor pulls live parcel records, compares the property (situs) address against the owner's tax-bill mailing address, and classifies every parcel into an absentee tier, so you can pull a targeted list of out-of-state landlords, tired out-of-town owners, or LLC-held inventory in minutes.

Covered jurisdictions (v1):

County keySourceWhat you get
cook-ilCook County Assessor Parcel Universe (Socrata, latest assessment year auto-resolved)Full mismatch classification + owner mailing address
philadelphia-paPhiladelphia OPA Properties (Carto SQL API)Full mismatch classification + market value
nycNYC PLUTO (Socrata)Owner-name lists only — see limitation below

Who this is for

  • Wholesalers & flippers — pull every out-of-state owner of residential parcels in Cook County and start driving for dollars with a real list.
  • Direct-mail investors — export mailing name + address columns, dedupe, and drop a campaign; the tier field lets you segment "out-of-state" vs "same city, different address."
  • Real-estate agents & farm builders — find absentee landlords in your farm area likely to sell.
  • Data / prop-tech teams — a clean, unified JSON schema across counties, callable as an API or MCP tool.

Example input

{
"county": "cook-il",
"absenteeTier": "out_of_state",
"propertyClassPrefix": "2",
"entityOnly": false,
"maxResults": 100
}

Filters:

  • county — cook-il | philadelphia-pa | nyc
  • absenteeTier — any | out_of_state | out_of_city (alias out_of_county) | same_area_diff_address | owner_occupied_likely
  • entityOnly — keep only LLC / trust / corp / partnership owners
  • propertyClassPrefix — source class-code prefix (Cook 2 = residential, 5 = commercial; PLUTO A = one-family; OPA 1 = single family)
  • minAssessedValue — value floor (Philadelphia market_value, NYC assesstot; not available for Cook)
  • maxResults — cost cap, up to 10,000 rows per run

How complete is the contact data? (measured, not claimed)

Measured on 2026-08-01 against the live sources, using each county's own out-of-state filter, n = 100 rows per county:

Contact / identity fieldCook County ILPhiladelphia PANYC
owner_name100.0%100.0%see note
owner_mailing_address100.0%100.0%0% - not published
owner_mailing_city100.0%100.0%0%
owner_mailing_state100.0%100.0%0%
owner_mailing_zip99.0%100.0%0%
owner_mailing_care_ofn/a6.0%n/a
owner_name_secondaryn/a35.0%n/a
situs_address / situs_city / situs_state100.0%100.0%100.0%
situs_zip97.0%100.0%100.0%
entity_flag_basis (of rows flagged as entities)14.0%35.0%varies
assessed_value0% - not published100.0%published
lat / lon0% - not published100.0%published

There are no phone numbers or email addresses in any of these sources. The assessor rolls publish an owner name and an owner mailing address. This is the list you feed to a skip-trace, not a replacement for one.

Per-county coverage differs and every row says so. mailing_address_available, assessed_value_available and geo_available are published on every row:

  • Cook County IL - full owner mailing address, but the Parcel Universe publishes no value column and no coordinates at all (verified live: lat IS NOT NULL returns 0 of 1,587,209 rows). assessed_value, lat and lon are null there and minAssessedValue is ignored.
  • Philadelphia PA - full owner mailing address, market value and coordinates.
  • NYC - PLUTO publishes owner names only, with no owner mailing address. Absentee status is therefore structurally unanswerable for NYC: absentee_tier reads unknown and absentee_tier_basis reads no_mailing_data. It is not a verified negative. Use NYC for the corporate/LLC-owner flag (entityOnly: true), not for absentee tiering.

How many of the matching parcels do you actually get?

Every row carries total_matching_rows, rows_scanned, pages_scanned, scan_complete, selection_method, page_order_key and page_order_is_parcel_id. A run reads at most 30,000 source rows and returns the first maxResults matches.

Which order the rows are read in differs by county, and every row says which:

  • Philadelphia and NYC read in parcel-id order (page_order_is_parcel_id: true).
  • Cook County reads in the source's own stable row order (page_order_key: ":id", page_order_is_parcel_id: false). Parcel-id order was dropped in v1.2 because sorting Cook's 1.8M-row parcel roll by parcel id took two to four minutes per page and repeatedly timed the run out — see below.

Either way the ordering is stable, so a repeated run with the same filters returns the same rows, and paging cannot skip or double-count. pagination_stable and duplicate_parcel_ids_skipped report that directly: if the source ever re-orders itself mid-scan, any parcel that comes back twice is emitted — and billed — once, and the row says the scan was not stable.

The actor's own example input (Cook County, out-of-state owners, class 2) matches 42,587 parcels county-wide and returns 100 of them, so scan_complete reads false. Every row is a genuine out-of-state-owned class-2 Cook County parcel, but 100 rows are not a county-wide sample, and the run log says so loudly.

To move the window, narrow the filters (propertyClassPrefix, minAssessedValue, a tighter absenteeTier) until scan_complete reads true.

What v1.2 fixed (2026-09-09): Cook County runs were taking up to 7 minutes

Cook County runs were slow enough to be unreliable — 122s at the median, 404s at worst, and two runs on 2026-09-06 hit the 600s ceiling and returned nothing at all.

The cause was the ordering, not the filters. Asking the source to sort ~1.8M filtered parcel rows by parcel id is not something it can do quickly, and it was paying that cost on every page. Measured on one 1,000-row page of the example input:

OrderingTime for one page
by parcel id (v1.1)118s, and repeatedly over 200s
by parcel id, "keyset" style68s, and over 90s
by the source's own row order (v1.2)0.5–1.5s

Cook County now pages by the source's own row identifier. It is still a total, stable ordering — three separate rounds returned byte-identical pages at offsets 0, 1,000, 5,000 and 40,000 — so repeat runs are reproducible and paging stays sound. What changes is which 100 of the 42,587 matching parcels a capped run returns, and that is why selection_method now reads "first N in the source's own stable row order" instead of "first N by parcel id ascending". Nothing about an individual row changed.

One thing that was not the problem, and was deliberately left alone: the mailing-state filter uses a case-insensitive comparison, and that was measured at 0.2–1.5s — the same as any alternative. It also has to stay: Cook stores 63 distinct mailing-state values and exactly one row spells Illinois in lowercase, so a plain case-sensitive comparison returns 42,588 parcels instead of 42,587 and that extra row is an Illinois owner published as an out-of-state lead. The Philadelphia and NYC legs were measured too and left unchanged; both order in under a second.

Four fields were added and none removed.

Output fields (one row per parcel lead)

county, parcel_id, situs_address, situs_city, situs_state, owner_name, owner_mailing_address, owner_mailing_city, owner_mailing_state, owner_mailing_zip, absentee_tier, entity_flag, assessed_value, property_class, property_class_desc, lat, lon, source, source_url

The absentee-tier classifier

TierMeaning
out_of_stateMailing state differs from the property state — the strongest absentee/motivated-seller signal
out_of_cityMailing city differs, same state (out-of-town landlord)
same_area_diff_addressSame city, different street address (local landlord)
owner_occupied_likelyMailing address matches the property (street-normalized; same-building condo units count as matches)
unknownNo mailing data in the source (all nyc rows)

entity_flag is true when the owner name matches LLC, L.L.C., LP, LLP, LTD, TRUST, TR, CORP, INC, CO, COMPANY, PARTNERS, HOLDINGS, PROPERTIES, or BANK — combine entityOnly: true with a tier for investor-owned absentee inventory.

Provenance and coverage (new in v1.1)

FieldMeaning
absentee_tier_basisWhat the tier was decided from: mailing_address (a full owner mailing street was compared), city_state_only (only the mailing city/state were published), no_mailing_data (nothing was published, so the tier is unknown)
entity_flag_basisThe token that made entity_flag true (LLC, LP, TRUST, TR, CORP, INC, CO, COMPANY, PARTNERS, HOLDINGS, PROPERTIES, BANK). TR is a trustee suffix - a real trust, but not an LLC
situs_zipZIP of the property itself
townshipCook County assessment township
owner_mailing_care_ofCare-of line on the owner mailing address (Philadelphia)
owner_name_secondarySecond owner of record (Philadelphia owner_2)
assessment_yearAssessment roll year the parcel row belongs to (Cook)
source_statusok when the county source answered and its filters were proven applied by a negative control
source_errorError text when it did not. Null on a healthy run
year_statusok / not_applicable for the live Cook assessment-year resolution
assessment_year_usedThe Cook assessment year this run actually queried
total_matching_rowsHow many parcels match your filters upstream, before the scan cap
rows_scannedHow many source rows this run read
pages_scannedHow many source pages this run read
scan_completeTrue only when every matching parcel upstream was examined
selection_methodHow the emitted rows were chosen from that universe
page_order_keyThe column the source was asked to page in order of (:id for Cook, parcel_number for Philadelphia, bbl for NYC)
page_order_is_parcel_idTrue when the rows were drawn in parcel-id order; false for Cook, which uses the source's own row order
duplicate_parcel_ids_skippedParcels returned on more than one page and therefore emitted and billed only once. Normally 0
pagination_stableTrue when no parcel appeared twice, i.e. paging held together for the whole scan
mailing_address_availableFalse for NYC
assessed_value_availableFalse for Cook County
geo_availableFalse for Cook County
data_as_ofUTC date the run executed

What v1.1 fixed (2026-08-01)

All three assessor rolls were re-probed live. Nothing was removed or renamed.

  • Philadelphia: 824 genuinely absentee owners were labelled owner-occupied and filtered out. v1.0 hard-coded owner_occupied_likely whenever mailing_street was null, regardless of the mailing city and state on the same row. Live: 3,601 Philadelphia rows have a null mailing_street, of which 208 carry an out-of-state state_code and 616 carry a non-Philadelphia PA mailing city. Every one of those was dropped from every out_of_state and out_of_city run - exactly the leads the product exists to find. A further 1,098 rows have no mailing data at all and were asserting owner-occupancy from nothing; they now read unknown. Verified on real parcels: 1923 Pratt St (owner mailing NJ) and 1437 W Passyunk Ave 1-2 (owner mailing DE) now classify out_of_state.
  • The Cook assessment year was resolved inside a silent catch. v1.0 fell back to a hard-coded 2023 on any failure. That is harmless only while the constant happens to match - and it does today - but the moment Cook publishes 2024, a transient failure would ship a year-old roll as current with no signal. The year is now resolved loudly, band-checked, and published as assessment_year_used.
  • The scan cap was invisible. See the section above: the prefill returns 100 of 42,587 matches, all from one corner of Cook County. Selection is unchanged; it is now disclosed on every row.
  • No filter was ever proven applied. Each source now runs a negative control (a predicate that cannot match) before any row is read; a non-zero answer fails the run, because Socrata and Carto will both accept some malformed predicates and quietly return the unfiltered table.
  • A typo'd absenteeTier was silently coerced to any, so a run asking for out-of-state owners quietly returned owner-occupied parcels too. It now fails before anything is billed.
  • mailing_care_of and township_name were fetched and discarded in the mappers.
  • Cook publishes no coordinates at all - lat IS NOT NULL returns 0 of 1,587,209 rows - so lat/lon rendered permanently empty there with no explanation. Now flagged by geo_available.

Honest limitation: the NYC leg

NYC PLUTO publishes owner names but no owner mailing address, so the situs-vs-mailing comparison is impossible for NYC in v1. The nyc county therefore ships as a corporate/LLC-owner flag list (absentee_tier is always unknown; use entityOnly: true). Mailing-address enrichment for NYC is on the roadmap.

Other notes: Cook County's Parcel Universe has no assessed-value column, so assessed_value is null and minAssessedValue is ignored for cook-il. Tiers are heuristics computed from address strings — verify before making offers.

Use as an MCP tool

This actor is callable by AI agents (Claude, Cursor, etc.) via mcp.apify.com — the input and output schemas are fully described at field level, so an agent can request e.g. "out-of-state entity owners of multi-family parcels in Cook County" and chain the resulting leads into skip-tracing or CRM tools.

FAQ

How do I find absentee owners of a property for free? County assessor rolls are public record. This actor automates the pull and the situs-vs-mailing comparison across Cook County IL, Philadelphia PA, and NYC, and gives you export-ready JSON/CSV.

How do I get a list of out-of-state property owners in Chicago / Cook County? Run with county: "cook-il", absenteeTier: "out_of_state", propertyClassPrefix: "2" (residential). Each row includes the owner's out-of-state mailing address for direct mail.

Can I get absentee owner leads for Philadelphia? Yes — county: "philadelphia-pa" classifies every OPA parcel by mailing mismatch and includes market_value so you can set a value floor.

How do I find LLC-owned properties in NYC? Run county: "nyc" with entityOnly: true (optionally propertyClassPrefix like "C" for walk-up apartments). PLUTO has no mailing addresses, so NYC rows are owner-name flag lists.

Is this data legal to use for marketing? The sources are official open-data portals published for public use. You are responsible for complying with local telemarketing/mail regulations (e.g. do-not-call lists).

How fresh is the data? Live at run time. The Cook leg auto-resolves the latest assessment year in the Parcel Universe; Philadelphia OPA and NYC PLUTO are updated by their agencies on their own cycles.

Pricing

Pay per result row — you only pay for the leads you pull (set maxResults to cap spend). Empty runs cost virtually nothing.