Cook County Parcel Sales - Buyer & Seller Names
Pricing
from $0.03 / 1,000 cook county parcel sale records
Cook County Parcel Sales - Buyer & Seller Names
2.69M recorded parcel sales in Cook County, Illinois (public open data, 1971-present): sale date, price, deed type, and BOTH named parties - seller (grantor) and buyer (grantee). Search by buyer, seller, PIN, township or price; filter to arms-length comparables; aggregate by class or township.
Pricing
from $0.03 / 1,000 cook county parcel sale records
Rating
0.0
(0)
Developer
Wenhao Yang
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share
Every time a parcel sells in Cook County, the deed is recorded and the Assessor keeps the record: the date, the price, the kind of deed - and both parties by name. This actor turns that register into a charged-per-record search, filter and aggregate tool over all 2,686,086 recorded sales, covering 1,334,404 distinct parcels.
Built for: comparable-sales work with real names attached, ownership-chain tracing, buyer and seller research, portfolio and investor mapping, and anyone who needs to ask who bought what, from whom, for how much in Cook County without paging a recorder's viewer.
What it covers
Each sale carries:
- the two named parties - seller (grantor) and buyer (grantee), as the Assessor recorded them
- the transaction - sale date, consideration, the recorded document number
- the deed - the Assessor's deed type and, where present, the recorder's own deed wording
- the parcel - 14-digit PIN, township code, neighborhood code, property class
- the Assessor's own comparability flags - see below
A row is a sale, not a parcel. The file carries 1,334,404 distinct PINs across 2,686,086 sales - a parcel appears once per time it sold, about twice on average. Search a PIN to get that parcel's full sale history.
The fine print that matters
The Assessor publishes its own comparability screen, and this actor exposes it. Three boolean columns mark the sales that are not clean market transactions:
| Flag | Rows | What it marks |
|---|---|---|
sale_filter_same_sale_within_365 | 13,375 | the same parcel sold again within a year - a flip, not a market price |
sale_filter_less_than_10k | 215,686 | consideration under $10,000 |
sale_filter_deed_type | 121,348 | a deed type the Assessor does not treat as a market sale |
2,409,818 of the 2,686,086 sales carry all three flags false. Setting onlyComps=true returns exactly those. That single flag is the difference between a comparable set and a raw deed dump - a median drawn over the unfiltered file is averaging in foreclosures, family transfers and $1 quit-claims.
Not every sale names both parties. The buyer name is blank on 165,739 rows (6.2%) and the seller name on 182,619 (6.8%) - the Assessor did not record the party. A name search cannot find those sales, and they are returned with the name field empty rather than dropped.
Multi-parcel conveyances repeat across rows. A sale covering several parcels appears once per parcel, sharing one document number, with isMultisale=true on 565,374 rows. It is returned so a comp run can exclude them (multisale=false leaves 2,120,712).
sale_type is blank on 511,936 rows (19%). That is not a defect - it is the Assessor not classifying the sale as LAND or LAND AND BUILDING. deed_type is blank on just 1,159.
Typical questions
- "Every sale of a given parcel by PIN - the full ownership chain."
- "What did buy in Cook County, and for how much?"
- "Who sold to ?"
- "Arms-length comparables over $400,000 in the last 12 months."
- "Recent sales in a township or by property class."
- "Sales that were part of a multi-parcel conveyance."
- "Aggregate by deed type, property class, township, sale type or year."
Inputs
| Input | What it does |
|---|---|
mode | rows (default) / aggregate |
pin | exact 14-digit parcel index number |
buyer / seller | name substring on the grantee / grantor |
township / propertyClass | exact township code / property class code |
deedType / saleType | exact deed type / land-only vs land-and-building |
saleFrom / saleTo | sale-date range (inclusive) |
minPrice / maxPrice | consideration range |
onlyComps | true applies the Assessor's comparability screen |
multisale | false excludes multi-parcel conveyances |
groupBy | aggregate over township / propertyClass / deedType / saleType / saleYear |
maxResults | cap records (default 50) |
Default run = 50 sales, newest first - a plain read of the register, fast enough for the daily auto-test. For a targeted query add a filter; for a broad view use aggregate.
Example inputs
One parcel's sale history - every recorded sale of that PIN.
{ "pin": "17221101001199" }
Arms-length comparables in a date window - onlyComps applies the
Assessor's three-flag screen.
{ "saleFrom": "2025-10-01", "saleTo": "2026-09-27", "minPrice": 400000, "onlyComps": "true", "maxResults": 5 }
What a buyer purchased
{ "buyer": "LLC", "maxResults": 5 }
Sales by an entity that sold - e.g. a trustee unwinding an estate.
{ "seller": "TRUSTEE", "maxResults": 5 }
How the register splits by deed type - one row per deed type.
{ "mode": "aggregate", "groupBy": "deedType" }
Low cost
From $0.00005 per record, down to $0.00003 at Gold Pay-per-event: you are charged per record delivered, and nothing for the query. Cost scales with what you pull, not with the size of the file, and each record is metered individually - one parcel's sale history costs a fraction of a cent.
Example output
One sale - pin=17221101001199 returns the parcel's most recent sale, with
both named parties:
{"platform": "cook-parcel-sales","source": "cook-county-parcel-sales","mode": "rows","groupKey": "","groupCount": "","groupBy": "","rowId": "7891346","pin": "17221101001199","saleYear": "2026","townshipCode": "76","neighborhood": "76012","propertyClass": "299","saleDate": "2026-07-13","salePrice": "535000","documentNumber": "2619521032","deedType": "Warranty","mydecDeedType": "","sellerName": "VICTOR A DES LAURIER","buyerName": "ALEX CUSUMANO","saleType": "","isMultisale": "true","numParcelsSale": "2","isMydecDate": "true","sameSaleWithin365": "false","lessThan10k": "false","nonMarketDeedType": "false","sourceUpdatedAt": "2026-09-15"}
Note isMultisale: "true" and numParcelsSale: "2" - this sale covered two
parcels, so it appears twice in the register under one document number.
An aggregate row - {"mode": "aggregate", "groupBy": "deedType"} returns one
row per deed type, with the record fields blank:
{"platform": "cook-parcel-sales","source": "cook-county-parcel-sales","mode": "aggregate","groupKey": "Warranty","groupCount": "1820065","groupBy": "deedType","pin": "","saleDate": "","salePrice": "","sellerName": "","buyerName": "","sourceUpdatedAt": "2026-09-15"}
Notes
- Source: Cook County Assessor, published on
datacatalog.cookcountyil.govas public open data. No login, no key. - Freshness: the portal stamps the dataset on each refresh; every record
carries it as
sourceUpdatedAt. - Coverage: Cook County, 1999 to present - the range the publisher states. A handful of records carry earlier dates (10 rows before 1999 against 2.68M), and they are returned as-is rather than hidden. Recording lags the sale date by design: measured content ran about two and a half months behind the probe date.
- A parcel's history may exceed one page. The most-recorded PIN in the file
carries 151 sales;
maxResultsdefaults to 50, so raise it when pulling a parcel's full chain.