Absentee Owner Lead List Builder — County Assessor Rolls
Pricing
from $13.75 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 days ago
Last modified
Categories
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 key | Source | What you get |
|---|---|---|
cook-il | Cook County Assessor Parcel Universe (Socrata, latest assessment year auto-resolved) | Full mismatch classification + owner mailing address |
philadelphia-pa | Philadelphia OPA Properties (Carto SQL API) | Full mismatch classification + market value |
nyc | NYC 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|nycabsenteeTier—any|out_of_state|out_of_city(aliasout_of_county) |same_area_diff_address|owner_occupied_likelyentityOnly— keep only LLC / trust / corp / partnership ownerspropertyClassPrefix— source class-code prefix (Cook2= residential,5= commercial; PLUTOA= one-family; OPA1= single family)minAssessedValue— value floor (Philadelphiamarket_value, NYCassesstot; 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 field | Cook County IL | Philadelphia PA | NYC |
|---|---|---|---|
owner_name | 100.0% | 100.0% | see note |
owner_mailing_address | 100.0% | 100.0% | 0% - not published |
owner_mailing_city | 100.0% | 100.0% | 0% |
owner_mailing_state | 100.0% | 100.0% | 0% |
owner_mailing_zip | 99.0% | 100.0% | 0% |
owner_mailing_care_of | n/a | 6.0% | n/a |
owner_name_secondary | n/a | 35.0% | n/a |
situs_address / situs_city / situs_state | 100.0% | 100.0% | 100.0% |
situs_zip | 97.0% | 100.0% | 100.0% |
entity_flag_basis (of rows flagged as entities) | 14.0% | 35.0% | varies |
assessed_value | 0% - not published | 100.0% | published |
lat / lon | 0% - not published | 100.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 NULLreturns 0 of 1,587,209 rows).assessed_value,latandlonare null there andminAssessedValueis 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_tierreadsunknownandabsentee_tier_basisreadsno_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:
| Ordering | Time for one page |
|---|---|
| by parcel id (v1.1) | 118s, and repeatedly over 200s |
| by parcel id, "keyset" style | 68s, 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
| Tier | Meaning |
|---|---|
out_of_state | Mailing state differs from the property state — the strongest absentee/motivated-seller signal |
out_of_city | Mailing city differs, same state (out-of-town landlord) |
same_area_diff_address | Same city, different street address (local landlord) |
owner_occupied_likely | Mailing address matches the property (street-normalized; same-building condo units count as matches) |
unknown | No 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)
| Field | Meaning |
|---|---|
absentee_tier_basis | What 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_basis | The 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_zip | ZIP of the property itself |
township | Cook County assessment township |
owner_mailing_care_of | Care-of line on the owner mailing address (Philadelphia) |
owner_name_secondary | Second owner of record (Philadelphia owner_2) |
assessment_year | Assessment roll year the parcel row belongs to (Cook) |
source_status | ok when the county source answered and its filters were proven applied by a negative control |
source_error | Error text when it did not. Null on a healthy run |
year_status | ok / not_applicable for the live Cook assessment-year resolution |
assessment_year_used | The Cook assessment year this run actually queried |
total_matching_rows | How many parcels match your filters upstream, before the scan cap |
rows_scanned | How many source rows this run read |
pages_scanned | How many source pages this run read |
scan_complete | True only when every matching parcel upstream was examined |
selection_method | How the emitted rows were chosen from that universe |
page_order_key | The column the source was asked to page in order of (:id for Cook, parcel_number for Philadelphia, bbl for NYC) |
page_order_is_parcel_id | True when the rows were drawn in parcel-id order; false for Cook, which uses the source's own row order |
duplicate_parcel_ids_skipped | Parcels returned on more than one page and therefore emitted and billed only once. Normally 0 |
pagination_stable | True when no parcel appeared twice, i.e. paging held together for the whole scan |
mailing_address_available | False for NYC |
assessed_value_available | False for Cook County |
geo_available | False for Cook County |
data_as_of | UTC 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_likelywhenevermailing_streetwas null, regardless of the mailing city and state on the same row. Live: 3,601 Philadelphia rows have a nullmailing_street, of which 208 carry an out-of-statestate_codeand 616 carry a non-Philadelphia PA mailing city. Every one of those was dropped from everyout_of_stateandout_of_cityrun - 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 readunknown. Verified on real parcels: 1923 Pratt St (owner mailing NJ) and 1437 W Passyunk Ave 1-2 (owner mailing DE) now classifyout_of_state. - The Cook assessment year was resolved inside a silent catch. v1.0 fell back
to a hard-coded
2023on 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 asassessment_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
absenteeTierwas silently coerced toany, so a run asking for out-of-state owners quietly returned owner-occupied parcels too. It now fails before anything is billed. mailing_care_ofandtownship_namewere fetched and discarded in the mappers.- Cook publishes no coordinates at all -
lat IS NOT NULLreturns 0 of 1,587,209 rows - solat/lonrendered permanently empty there with no explanation. Now flagged bygeo_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.