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.
Verification
Output fields
Authoritative field set from the dataset schema.
| Field | Type |
|---|---|
query | string|null |
query_type | string|null |
input_index | integer|null |
status | string|null |
error_class | string|null |
retry | string|null |
state | string|null |
county | string|null |
county_fips | string|null |
parcel_id | string|null |
situs_address | string|null |
situs_city | string|null |
situs_zip | string|null |
latitude | number|null |
longitude | number|null |
owner_name | string|null |
owner_name_2 | string|null |
owner_type | string|null |
mailing_address | string|null |
mailing_city | string|null |
mailing_state | string|null |
mailing_zip | string|null |
absentee_tier | string|null |
absentee_basis | string|null |
absentee_owner | boolean|null |
market_value | integer|null |
assessed_value | integer|null |
land_value | integer|null |
improvement_value | integer|null |
taxable_value | integer|null |
tax_year | integer|null |
property_class | string|null |
property_class_desc | string|null |
year_built | integer|null |
building_sqft | integer|null |
lot_sqft | integer|null |
lot_acres | number|null |
bedrooms | integer|null |
bathrooms | number|null |
units | integer|null |
last_sale_date | string|null |
last_sale_price | integer|null |
sale_history | array|null |
tax_history | array|null |
source | string|null |
source_id | string|null |
field_notes | array|null |
billing_eligible | boolean|null |
parcel_count_returned | integer|null |
truncated | boolean|null |
counties | object|string|null |
assessed_value_total | integer|null |
market_value_total | integer|null |
absentee_count | integer|null |
area | string|null |
matching_rows | integer|null |
count_basis | string|null |
estimated_cost_usd | number|null |
completeness | string|null |
fields_available | array|null |
notice | string|null |
notice_type | string|null |
source_url | string|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
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
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