US Property Owner & Parcel Records Scraper avatar

US Property Owner & Parcel Records Scraper

Pricing

from $0.67 / 1,000 parcel records

Go to Apify Store
US Property Owner & Parcel Records Scraper

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

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

19 hours ago

Last modified

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.

InputJurisdictions, plus an address, owner name, city, postal code or parcel ids
OutputOne row per parcel: owner of record, mailing address, property address and use, areas, year built, assessed value, last sale, link to the public record
Ceiling5,000 parcels and 200 parcel ids per run
Account neededNone
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:

WhereParcelsPublished byThe owner name is
New York City, NY858,284NYC Department of City Planning (PLUTO)the assessment roll
Connecticut, statewide1,347,910State of Connecticut Office of Policy and Managementthe assessment roll
Cook County, IL1,863,562Cook County Assessorthe taxpayer of record
Philadelphia, PA583,779City of Philadelphia Office of Property Assessmentthe assessment roll
Collin County, TX479,364Collin Central Appraisal Districtthe appraisal roll
Williamson County, TX291,076Williamson Central Appraisal Districtthe appraisal roll
Norfolk, VA74,329City of Norfolk Office of the Real Estate Assessorthe assessment roll
Cambridge, MA30,156City of Cambridge Assessing Departmentthe assessment roll
Montana, statewide921,301Montana State Library, from Department of Revenue datathe appraisal roll
Wake County, NC438,403Wake County Department of Tax Administrationthe assessment roll
Vermont, statewide344,019Vermont Center for Geographic Informationthe grand list
Nashville and Davidson County, TN287,112Metro Nashville Assessor of Propertythe assessment roll
Washington, DC137,400DC Office of Tax and Revenue, via DC GISthe 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 getField
The place, its state, and which kind of roll the owner name comes fromjurisdiction, jurisdictionName, state, ownerNameSource
The parcel id and what kind of id it isparcelId, parcelIdType
Owner and co-owner, as the roll writes themownerName, coOwnerName
The owner's mailing addressownerMailingAddress, ownerMailingCity, ownerMailingState, ownerMailingZip
The property's address and unitpropertyAddress, propertyCity, propertyState, propertyZip, unit
Use, building and legal description, and zoningpropertyUse, buildingDescription, legalDescription, zoning
Land, building and living area in square feetlandAreaSqFt, buildingAreaSqFt, livingAreaSqFt
Units, buildings, bedrooms, bathrooms, stories and year builtunitsTotal, unitsResidential, buildingCount, bedrooms, bathrooms, stories, yearBuilt
Assessed land, building and total value, and market valueassessedLandUsd, assessedBuildingUsd, assessedTotalUsd, marketValueUsd
The last sale's date and pricelastSaleDate, lastSalePriceUsd
Coordinateslatitude, longitude
Which roll it came from, who publishes it, and the public recordrollLabel, 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:

WhereOwner mailing addressAssessed or market valueYear builtLast saleCoordinates
New York City, NYnot publishedassessedyesnot publishedyes
Connecticutyesbothyesdate and pricenot published
Cook County, ILyesnot publishednot publishednot publishednot published
Philadelphia, PAyesbothyesdate and pricenot published
Collin County, TXyesbothyesdate onlynot published
Williamson County, TXyesassessedyesnot publishednot published
Norfolk, VAnot publishedassessedyesdate and pricenot published
Cambridge, MAnot publishednot publishedyesnot publishedyes
Montanayesassessednot publishednot publishednot published
Wake County, NCyesassessedyesdate and pricenot published
Vermontyesassessednot publishednot publishednot published
Nashville, TNyesbothnot publisheddate and pricenot published
Washington, DCyesassessednot publisheddate and pricenot published

▶️ How to scrape property owner records

  1. Open US Property Owner & Parcel Records Scraper and click Try for free.
  2. Tick the places in Where to search. For one address, tick only the place it is in.
  3. Fill in one of Street address, Owner name, City or town, Postal code or Parcel ids.
  4. Set Maximum rows, remembering it is shared between the places you ticked.
  5. 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
}
FieldDefaultWhat it is
jurisdictionsnone: a free sample rowOne 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.
addressno address filterA street address as you would write it, house number first, without the apartment or unit.
ownerNameno owner filterPart of an owner name. Every word has to appear, in any order, so fewer words find more.
cityno city filterA city or town, for the places that cover more than one. In New York City it is the borough.
zipCodeno postal filterThe property's five-digit postal code, not the owner's. Connecticut, Vermont and Cambridge publish none, so they are skipped with a note.
parcelIdsnoneUp 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.
maxItems25Rows across every place you ticked, 1 to 5,000, shared evenly: thirteen places and 25 rows is about two each.
proxyUrlsemptyOptional, 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"
}
FieldHow to read it
ownerName, coOwnerNameThe name exactly as the roll writes it, so "SMITH JOHN A & MARY B" and "Smith, John" are both normal.
ownerNameSourceassessment roll, appraisal roll, Vermont's grand list, or Cook County's taxpayer of record, which is not the same as a deeded owner.
ownerMailingAddressWhere the roll sends the bill, next to the property address. New York City publishes none, which is why it is null above.
parcelId, parcelIdTypeThe local id and what kind it is. It is stable, so it is the key to run against again.
assessedTotalUsd, marketValueUsdThe assessed figure, which in most places is not the market price, and a market value where the roll has one.
lastSaleDate, lastSalePriceUsdThe last transfer the roll records.
rollLabelWhich roll the row came from, such as "PLUTO 26v2" or "Grand list 2025".
propertyCityIn New York City, the borough.
recordUrlThe public record the row was read from. Open it and you see the same parcel.

🧾 Reading the output

RowHow to spot itCharged
A parcelcharged: true, recordType: "parcel"yes
The sample row_sample: true, charged: false. Only when the run had no place or nothing to search onno
A diagnostic row_diagnostic: true, charged: false, and an errorCodeno

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.

errorCodeWhat happened
NO_RESULTSNothing on that roll matched.
FILTER_UNSUPPORTEDThat place cannot answer one of your filters, so it was skipped.
ROWS_DROPPEDRecords came back that did not match, had no owner name or repeated a parcel. The row gives the counts.
QUERY_REFUSEDThat roll would not run the query.
SERVER_ERROR, NETWORKThe government host did not answer. They go down for maintenance now and then.
TIME_BUDGETThe run ran out of time before it reached that place.
BAD_INPUTA 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 ownerName after 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. rollLabel says 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 wantUse
Who owns a parcel, off the public assessment rollThis one
Building permits from 14 US cities and countiesUS Building Permits Scraper
Businesses in the same ZIP codes, by tradeYellow 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.

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.