← Health board

County Assessor

US Property Records Export & Owner Lookup (County Assessor)

Export every property in a US county, state or ZIP from the official assessor roll — owner, mailing address, absentee flag, values, last sale, year built — or look up by address, parcel or owner. 525 counties.

93%golden-diff pass
Run it on Apify → verified nightly

Verification

93%golden-diff success
43canary runs
0days since last canary run

Output fields

Authoritative field set from the dataset schema.

FieldType
querystring|null
query_typestring|null
input_indexinteger|null
statusstring|null
error_classstring|null
retrystring|null
statestring|null
countystring|null
county_fipsstring|null
parcel_idstring|null
situs_addressstring|null
situs_citystring|null
situs_zipstring|null
latitudenumber|null
longitudenumber|null
owner_namestring|null
owner_name_2string|null
owner_typestring|null
mailing_addressstring|null
mailing_citystring|null
mailing_statestring|null
mailing_zipstring|null
absentee_tierstring|null
absentee_basisstring|null
absentee_ownerboolean|null
market_valueinteger|null
assessed_valueinteger|null
land_valueinteger|null
improvement_valueinteger|null
taxable_valueinteger|null
tax_yearinteger|null
property_classstring|null
property_class_descstring|null
year_builtinteger|null
building_sqftinteger|null
lot_sqftinteger|null
lot_acresnumber|null
bedroomsinteger|null
bathroomsnumber|null
unitsinteger|null
last_sale_datestring|null
last_sale_priceinteger|null
sale_historyarray|null
tax_historyarray|null
sourcestring|null
source_idstring|null
field_notesarray|null
billing_eligibleboolean|null
parcel_count_returnedinteger|null
truncatedboolean|null
countiesobject|string|null
assessed_value_totalinteger|null
market_value_totalinteger|null
absentee_countinteger|null
areastring|null
matching_rowsinteger|null
count_basisstring|null
estimated_cost_usdnumber|null
completenessstring|null
fields_availablearray|null
noticestring|null
notice_typestring|null
source_urlstring|null

Sample row

{
  "query": "85323",
  "query_type": "export",
  "state": "AZ",
  "county": "Maricopa",
  "county_fips": "04013",
  "parcel_id": "101-01-026",
  "situs_address": "810 S 114TH DR",
  "situs_city": "AVONDALE",
  "situs_zip": "85323",
  "owner_name": "J AND L AZ PROPERTIES LLC",
  "owner_type": "company",
  "mailing_address": "5001 142ND LN NW",
  "mailing_city": "RAMSEY",
  "mailing_state": "MN",
  "mailing_zip": "55303",
  "absentee_tier": "out_of_state",
  "absentee_owner": true,
  "market_value": 331000,
  "assessed_value": 169254,
  "tax_year": 2027,
  "year_built": 2008,
  "building_sqft": 1804,
  "lot_sqft": 6722,
  "last_sale_date": "2013-03-01",
  "last_sale_price": 128000,
  "source": "Maricopa County Assessor"
}

Inputs

FieldTypeReqDefaultDescription
areas array no ["Cook, IL"] One per line. A state ('FL' or 'Florida'), a county ('Miami-Dade, FL', 'Cook County, Illinois', 'IL/Cook'), a city ('St. Augustine, FL' or 'saint augustine florida') or a 5-digit ZIP code ('85323'). A city becomes its county plus a city filter, a ZIP its county plus a ZIP filter. An area we don't cover returns a free notice, never an error.
area string no — Same as one line of 'Areas to export'; kept for saved tasks and API callers that send one value.
preset string no "absentee_owners" A ready-made filter for common lead lists. Any filter you set below overrides the preset's value for that filter. Absentee presets leave out government owners.
countOnly boolean no false Don't export: return, per area, how many properties match and the estimated cost of exporting them. Free. Counts are exact where the county's server applies the filter (ZIP, city or value on most feeds); row-by-row filters (absentee, owner type, property type, bedrooms, or a ZIP on a feed with no ZIP column) are applied during export, and count_basis says when the preview is from before them.
maxResultsPerArea integer no 100 Cap on rows returned for EACH area line (not per run), so adding areas never cuts off the later ones. 0 = no cap: the whole filtered area, bounded only by your run's max charge and time.
zipCodes array no [] Only properties in these ZIP codes.
cities array no [] Only properties whose situs (property) city is one of these, e.g. 'OAK LAWN'. Case, punctuation and 'St.'/'Saint' do not matter.
propertyUse array no [] Words to match in the county's property-use description ('single family', 'condo', 'vacant', 'commercial', 'multi') or a class-code prefix. Matches if ANY entry matches.
ownerTypes array no [] Keep only these owner types, one per line: individual, company (LLC, Inc, LP, ...), trust, government. Classified from the owner name.
absentee array no [] Keep only these occupancy tiers, one per line: out_of_state, out_of_city, same_city_diff_address, owner_occupied, unknown. Compares the owner's mailing address with the property; out_of_state and out_of_city are the classic absentee-owner lists, and unknown means the roll has no mailing address to compare.
minValue integer no — Market value, or assessed value where the county publishes no market value.
maxValue integer no — Market value, or assessed value where the county publishes no market value.
soldAfter string no — YYYY-MM-DD. Keeps properties whose last recorded sale is on or after this date (month precision where the county records only the month).
soldBefore string no — YYYY-MM-DD. Keeps properties whose last recorded sale is before this date.
minYearBuilt integer no — Year built, where the county publishes it.
maxYearBuilt integer no — Year built, where the county publishes it.
minBedrooms integer no — Bedrooms, where the county publishes them (run with 'List coverage only' to see which do). A county that does not is skipped with a free notice; parcels with no count are left out.
maxBedrooms integer no — Bedrooms, where the county publishes them.
minBathrooms number no — Bathrooms, as the county counts them. Cook County and New York publish full baths only, so a 2.5-bath home there reads 2.
maxBathrooms number no — Bathrooms, where the county publishes them.
lookups array no [] E.g. '1001 Preston St, Houston, TX 77002', 'IL/Cook/17-09-100-001-0000', 'FL/Miami-Dade/ACME HOLDINGS LLC'. No limit on how many per run.
addresses array no [] Street addresses with city, state and preferably ZIP. Same as 'Lookups', but always read as addresses.
parcelLookups array no [] STATE/County/ParcelID, e.g. 'IL/Cook/17-09-100-001-0000'. A bare ID works with the State and County hints below.
ownerLookups array no [] STATE/Owner Name or STATE/County/Owner Name. Matches names that START with what you type. Returns every parcel found plus a free portfolio summary row.
address string no — One address; kept for API callers that send one value.
parcelLookup string no — One parcel lookup.
ownerLookup string no — One owner lookup.
stateHint string no — Two-letter state for bare parcel IDs or owner names, e.g. 'IL'.
countyHint string no — County for bare parcel IDs or addresses, e.g. 'Cook' (use with State hint).
maxResultsPerOwner integer no 50 Cap on properties returned for EACH owner lookup.
includeHistory boolean no true Add every recorded sale (with buyer and seller where published) and prior-year values to each row. Turn off for a smaller, flatter dataset.
listCoverage boolean no false Return one free row per county/state source this actor reads, with the fields each one publishes. Nothing else runs.
proxyConfiguration object no {"useApifyProxy":false} Optional. The assessor feeds answer direct requests; enable a proxy only if a run returns a 'blocked' notice.

Pricing

Pay per result (export-row) — no charge for empty runs.
Example: 1000 absentee-owned properties in one ZIP at $0.02/result ≈ $20.00.

FAQ

Which counties are covered?

525 counties in 22 states, from 28 official feeds (counted from the source list 2026-10-28). Whole states: Florida, North Carolina, Wisconsin, Montana, Connecticut, Massachusetts (all 351 cities and towns), Arkansas, New Jersey, New York (38 of 62 counties, including all of New York City) and Minnesota (57 of 87). Single counties: Maricopa AZ, Cook IL, Harris TX, Philadelphia PA, Los Angeles, Alameda and Sacramento CA, Denver CO, Fulton GA, Marion IN, Davidson TN, Franklin, Cuyahoga and Hamilton OH, Hennepin MN, Oakland MI, Salt Lake UT, and the City of Detroit (the only part of Wayne County covered). Set listCoverage to get the full list with the fields each source publishes, free.

Why is owner_name empty for some counties?

Because the county does not publish it. California counties withhold owner names from their public rolls, and New Jersey blanks them on every row under Daniel's Law. Those rows still carry the property and (except in Sacramento) its values, and in Alameda, Sacramento and New Jersey the owner's mailing address; field_notes says which.

How is 'absentee' decided?

By comparing the owner's mailing address with the property: a different state is out_of_state; a different city is out_of_city; the same street address is owner_occupied. Where a county publishes no property city, a mailing ZIP outside the county counts as out_of_city. When the roll has no mailing address, the answer is unknown — never a guess.

Why is there no sale price in Texas, Montana or North Carolina?

Texas and Montana do not make sale prices public, and North Carolina's statewide parcel feed does not carry them. You still get the sale or title-transfer date where the roll records it.

Can I see how many rows an export will return before paying?

Yes. Turn on countOnly: each area returns a free row with the matching count and the estimated cost. Counts are exact where the county's own server applies the filter (ZIP, city or value, on most feeds); filters applied row by row, such as absentee, owner type, property type, bedrooms, or a ZIP on a feed that cannot filter by ZIP, are applied during the export, and the preview row's count_basis says when its count is from before them.

Can I filter by bedrooms and bathrooms?

Yes, where the county publishes them: Connecticut, New York, Cook, Los Angeles, Philadelphia, Franklin (OH) and Oakland (MI). Set minBedrooms, maxBedrooms, minBathrooms or maxBathrooms. A county that does not publish them (Massachusetts, Florida and most others) is skipped with a free notice instead of returning unfiltered rows. Cook and New York count full baths only.

How do lookups work?

Put addresses, parcels or owner names in 'Lookups', one per line, and each is recognised automatically: '1001 Preston St, Houston, TX 77002', 'IL/Cook/17-09-100-001-0000', or 'FL/Miami-Dade/ACME HOLDINGS LLC'. There is no limit per run. Every miss comes back as a free row with error_class (no_match, not_covered, source_error, ...) and retry (later, with_changes, never).

Can I get the data myself for free?

Yes — every source is a public feed, and for one county once, downloading it yourself is reasonable. This actor is for when you want several counties in one table, filtered to a lead list, with owner types and absentee tiers worked out, on demand or on a schedule.

How fresh is the data?

As fresh as each county's feed: most ArcGIS and Socrata feeds are read live at run time, and bulk files are downloaded fresh on every run.

Guides & use cases

Related actors