US Property Owner & Parcel Records Scraper
Pricing
from $0.67 / 1,000 parcel records
US Property Owner & Parcel Records Scraper
US property owner lookup from public assessment rolls in 13 jurisdictions. Search by address, owner name, city, ZIP or parcel id: one row per parcel with owner of record, mailing address, property use, areas, assessed value, last sale and record link. $0.70 per 1,000 parcels.
Pricing
from $0.67 / 1,000 parcel records
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
Pick one or more of thirteen US jurisdictions, search by street address, owner name, city, postal code or parcel id, and get one row per parcel off the public assessment roll: the owner of record, the mailing address where the roll has one, the property address and use, areas, year built, assessed value, the last sale and a link back to the public record.
That is about 7.6 million parcels, each read from the government host that publishes it, with nothing joined from anywhere else. It is not national coverage and it is not a deed search: thirteen places only, rolls that lag recent sales, and no chain of title, mortgage or lien.
| Input | Jurisdictions, plus an address, owner name, city, postal code or parcel ids |
| Output | One row per parcel: owner of record, mailing address, property address and use, areas, year built, assessed value, last sale, link to the public record |
| Ceiling | 5,000 parcels and 200 parcel ids per run |
| Account needed | None |
| Price | $0.70 per 1,000 parcels on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 7,000 |
🔍 What US Property Owner & Parcel Records Scraper does
Your filters go to each roll's own host, and every row that comes back is checked again against what you asked before it is charged. A record that does not match, or has no owner name on it, is dropped for free, and one ROWS_DROPPED row counts them.
Address search forgives the roll's spelling: "Blvd" finds BOULEVARD and "Ave" finds AV. The house number has to come first, and a street name with no number returns the whole street. Owner search ignores word order, so "John Smith" finds a roll that writes "SMITH JOHN", but every word you type has to appear.
A place that cannot answer one of your filters is skipped with a free FILTER_UNSUPPORTED row rather than answering a different question. Four of the rolls keep several years in one table, so each run asks them for their newest year instead of assuming it.
What is covered, counted on the live rolls in September 2026:
| Where | Parcels | Published by | The owner name is |
|---|---|---|---|
| New York City, NY | 858,284 | NYC Department of City Planning (PLUTO) | the assessment roll |
| Connecticut, statewide | 1,347,910 | State of Connecticut Office of Policy and Management | the assessment roll |
| Cook County, IL | 1,863,562 | Cook County Assessor | the taxpayer of record |
| Philadelphia, PA | 583,779 | City of Philadelphia Office of Property Assessment | the assessment roll |
| Collin County, TX | 479,364 | Collin Central Appraisal District | the appraisal roll |
| Williamson County, TX | 291,076 | Williamson Central Appraisal District | the appraisal roll |
| Norfolk, VA | 74,329 | City of Norfolk Office of the Real Estate Assessor | the assessment roll |
| Cambridge, MA | 30,156 | City of Cambridge Assessing Department | the assessment roll |
| Montana, statewide | 921,301 | Montana State Library, from Department of Revenue data | the appraisal roll |
| Wake County, NC | 438,403 | Wake County Department of Tax Administration | the assessment roll |
| Vermont, statewide | 344,019 | Vermont Center for Geographic Information | the grand list |
| Nashville and Davidson County, TN | 287,112 | Metro Nashville Assessor of Property | the assessment roll |
| Washington, DC | 137,400 | DC Office of Tax and Revenue, via DC GIS | the assessment roll |
That is the whole list. Most US counties publish nothing machine-readable, and plenty of those that do blank out the owner column: New Jersey publishes 3.5 million parcels that way.
📋 What data you get from each parcel record
| What you get | Field |
|---|---|
| The place, its state, and which kind of roll the owner name comes from | jurisdiction, jurisdictionName, state, ownerNameSource |
| The parcel id and what kind of id it is | parcelId, parcelIdType |
| Owner and co-owner, as the roll writes them | ownerName, coOwnerName |
| The owner's mailing address | ownerMailingAddress, ownerMailingCity, ownerMailingState, ownerMailingZip |
| The property's address and unit | propertyAddress, propertyCity, propertyState, propertyZip, unit |
| Use, building and legal description, and zoning | propertyUse, buildingDescription, legalDescription, zoning |
| Land, building and living area in square feet | landAreaSqFt, buildingAreaSqFt, livingAreaSqFt |
| Units, buildings, bedrooms, bathrooms, stories and year built | unitsTotal, unitsResidential, buildingCount, bedrooms, bathrooms, stories, yearBuilt |
| Assessed land, building and total value, and market value | assessedLandUsd, assessedBuildingUsd, assessedTotalUsd, marketValueUsd |
| The last sale's date and price | lastSaleDate, lastSalePriceUsd |
| Coordinates | latitude, longitude |
| Which roll it came from, who publishes it, and the public record | rollLabel, dataPublisher, recordUrl |
Rolls differ, so a column one city publishes another simply does not have. Where a roll has no value, the field is null:
| Where | Owner mailing address | Assessed or market value | Year built | Last sale | Coordinates |
|---|---|---|---|---|---|
| New York City, NY | not published | assessed | yes | not published | yes |
| Connecticut | yes | both | yes | date and price | not published |
| Cook County, IL | yes | not published | not published | not published | not published |
| Philadelphia, PA | yes | both | yes | date and price | not published |
| Collin County, TX | yes | both | yes | date only | not published |
| Williamson County, TX | yes | assessed | yes | not published | not published |
| Norfolk, VA | not published | assessed | yes | date and price | not published |
| Cambridge, MA | not published | not published | yes | not published | yes |
| Montana | yes | assessed | not published | not published | not published |
| Wake County, NC | yes | assessed | yes | date and price | not published |
| Vermont | yes | assessed | not published | not published | not published |
| Nashville, TN | yes | both | not published | date and price | not published |
| Washington, DC | yes | assessed | not published | date and price | not published |
▶️ How to scrape property owner records
- Open US Property Owner & Parcel Records Scraper and click Try for free.
- Tick the places in Where to search. For one address, tick only the place it is in.
- Fill in one of Street address, Owner name, City or town, Postal code or Parcel ids.
- Set Maximum rows, remembering it is shared between the places you ticked.
- Click Start, then export the dataset as CSV, JSON or Excel.
A run needs at least one place and something to search on. Without both, it returns one free sample row.
💰 How much does it cost to scrape property owner records?
$0.70 per 1,000 parcels on the Free plan. Paid plans pay a little less: $0.69 on Starter, $0.68 on Scale and $0.67 on Business. On the free plan, the $5 Apify gives you each month covers about 7,000 parcels.
Not charged: the sample row, every diagnostic row, records dropped for not matching, a parcel that turns up twice in one run, and a place skipped because it cannot answer your filter. The most one run returns, 5,000 parcels, comes to $3.50.
📥 What you give it
{"jurisdictions": ["nyc"],"address": "2125 Bruckner Blvd","maxItems": 25}
| Field | Default | What it is |
|---|---|---|
jurisdictions | none: a free sample row | One or more of nyc, connecticut, cook-county-il, philadelphia, collin-county-tx, williamson-county-tx, norfolk-va, cambridge-ma, montana, wake-county-nc, vermont, nashville-tn and washington-dc. |
address | no address filter | A street address as you would write it, house number first, without the apartment or unit. |
ownerName | no owner filter | Part of an owner name. Every word has to appear, in any order, so fewer words find more. |
city | no city filter | A city or town, for the places that cover more than one. In New York City it is the borough. |
zipCode | no postal filter | The property's five-digit postal code, not the owner's. Connecticut, Vermont and Cambridge publish none, so they are skipped with a note. |
parcelIds | none | Up to 200 local ids: a New York BBL, a Cook County PIN, a Philadelphia OPA account, a Vermont SPAN, a Montana geocode, a DC square-suffix-lot or a Texas property id. Type a DC lot with single spaces, such as 1077 0130. |
maxItems | 25 | Rows across every place you ticked, 1 to 5,000, shared evenly: thirteen places and 25 rows is about two each. |
proxyUrls | empty | Optional, only if you want the requests to go through servers of your own, as http://user:pass@host:port. |
📤 What you get back
A real row from a run on 30 September 2026:
{"ok": true,"charged": true,"recordType": "parcel","jurisdiction": "nyc","jurisdictionName": "New York City, NY","state": "NY","ownerNameSource": "assessment roll","parcelId": "2038060070","parcelIdType": "BBL (borough-block-lot)","ownerName": "...","coOwnerName": null,"ownerMailingAddress": null,"ownerMailingCity": null,"ownerMailingState": null,"ownerMailingZip": null,"propertyAddress": "2125 BRUCKNER BOULEVARD","propertyCity": "Bronx","propertyState": "NY","propertyZip": "10472","unit": null,"propertyUse": "Mixed residential and commercial buildings","buildingDescription": "Building class S4","legalDescription": null,"landAreaSqFt": 2627,"buildingAreaSqFt": 5003,"livingAreaSqFt": null,"unitsTotal": 5,"unitsResidential": 4,"buildingCount": 1,"bedrooms": null,"bathrooms": null,"stories": 2,"yearBuilt": 1929,"assessedLandUsd": 182700,"assessedBuildingUsd": null,"assessedTotalUsd": 359550,"marketValueUsd": null,"lastSaleDate": null,"lastSalePriceUsd": null,"zoning": "R5","latitude": 40.8275484,"longitude": -73.8521013,"rollLabel": "PLUTO 26v2","dataPublisher": "NYC Department of City Planning (PLUTO)","recordUrl": "https://data.cityofnewyork.us/resource/64uk-42ks.json?bbl=2038060070","scrapedAt": "2026-09-30T02:38:03.813Z"}
| Field | How to read it |
|---|---|
ownerName, coOwnerName | The name exactly as the roll writes it, so "SMITH JOHN A & MARY B" and "Smith, John" are both normal. |
ownerNameSource | assessment roll, appraisal roll, Vermont's grand list, or Cook County's taxpayer of record, which is not the same as a deeded owner. |
ownerMailingAddress | Where the roll sends the bill, next to the property address. New York City publishes none, which is why it is null above. |
parcelId, parcelIdType | The local id and what kind it is. It is stable, so it is the key to run against again. |
assessedTotalUsd, marketValueUsd | The assessed figure, which in most places is not the market price, and a market value where the roll has one. |
lastSaleDate, lastSalePriceUsd | The last transfer the roll records. |
rollLabel | Which roll the row came from, such as "PLUTO 26v2" or "Grand list 2025". |
propertyCity | In New York City, the borough. |
recordUrl | The public record the row was read from. Open it and you see the same parcel. |
🧾 Reading the output
| Row | How to spot it | Charged |
|---|---|---|
| A parcel | charged: true, recordType: "parcel" | yes |
| The sample row | _sample: true, charged: false. Only when the run had no place or nothing to search on | no |
| A diagnostic row | _diagnostic: true, charged: false, and an errorCode | no |
The sample row carries recordType: "parcel" as well, so filter on charged, not on recordType. Read charged: true as "a real row", not as a receipt.
errorCode | What happened |
|---|---|
NO_RESULTS | Nothing on that roll matched. |
FILTER_UNSUPPORTED | That place cannot answer one of your filters, so it was skipped. |
ROWS_DROPPED | Records came back that did not match, had no owner name or repeated a parcel. The row gives the counts. |
QUERY_REFUSED | That roll would not run the query. |
SERVER_ERROR, NETWORK | The government host did not answer. They go down for maintenance now and then. |
TIME_BUDGET | The run ran out of time before it reached that place. |
BAD_INPUT | A jurisdiction that is not on the list. |
💡 What people use it for
- Finding out who the roll lists as the owner of a building when the listing, the letterbox and the management company all say something different.
- Seeing which parcels one owner of record holds in a city, by owner name.
- Checking a portfolio against the record: feed in the parcel ids and compare
ownerNameafter each new roll.
🚧 What it does not do
- Anywhere else. Thirteen places, and a parcel outside them is not in here.
- Deeds. No chain of title, no mortgage, no lien, no document image.
- Last month's sale. Rolls lag reality, and a few are a full cycle behind.
rollLabelsays which roll a row came from. - One year for Vermont. Each town is on the year it last filed, from 2026 down to 2018, and about one parcel in eight has no grand list entry matched yet, so it has no owner and is dropped.
- Montana addresses. Owner and value are on 99% of its parcels, but only about half carry a street address, so an address search misses land an owner search finds.
- Values in Cook County or Cambridge. Cook County publishes the owner and the two addresses only; Cambridge publishes building detail but no value.
- Tidy condominiums. Cambridge has a building record whose owner reads "Condominium Building - See Individual Unit Records", and other rolls repeat the address once per unit.
- One answer per address. A multi-tenant address returns every parcel at it: "2300 W Plano Pkwy" is five.
- Contact data. No emails, phones or dates of birth, and nothing is joined to anything. A phone or email that ever turned up in a roll column would read
[removed]. - It is not an official tool of any platform or company named on this page. Dami's Studio is independent and is not affiliated with or endorsed by any of them.
🧭 Which US property scraper do you need?
| If you want | Use |
|---|---|
| Who owns a parcel, off the public assessment roll | This one |
| Building permits from 14 US cities and counties | US Building Permits Scraper |
| Businesses in the same ZIP codes, by trade | Yellow Pages US Scraper |
❓ Questions people ask
Does it cover the whole United States?
No. Thirteen jurisdictions across eleven states and the District of Columbia, three of them whole states. The list is above.
Is this the deed or the tax roll?
The tax roll. It tells you who to look up at the recorder's office and not much more.
How current is the data?
As current as each roll. Read rollLabel, and in Vermont read the year on the row before acting on an owner.
What if I search a postal code in a place that has none?
That place is skipped with a free FILTER_UNSUPPORTED row. It does not guess at parcels that might be in that postal code.
Do I need an API key or an account?
No.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/us-property-ownership-scraper. Either way the run happens on your Apify account at the same price.
Is it legal to collect property owner names?
The government publishes them on purpose, but some places regulate what they may be used for, and that call is yours. Every row carries recordUrl so you can read the original. Apify's write-up on the legality of web scraping is a fair start, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Include the run ID, the places you ticked and what you searched for.