Cook County Property Sales & Assessed Values (Chicago)
We turn the Cook County Assessor's open data into clean JSON: every recorded parcel sale, assessed value, building permit and assessment appeal in Cook County, Illinois, all keyed on the parcel's 14-digit PIN. One record is a single Assessor row from whichever of the four datasets you choose, for example one recorded sale with buyer, seller, price and deed type.
- Size
- 2,686,366 sales
- Refresh
- Bi-weekly
- Price
- $3 per 1,000 records
This listing is being published to the Apify Store. If the link is not live yet, contact us and we will run it for you.
Who uses this
Chicago real estate investors and wholesalers
Pull every sale over a price in a township, or every sale to an LLC, as a weekly feed.
Appraisers
Assemble comparable sales by township, class and date window, with deed type and the Assessor's own arms-length flags on each.
Property tax appeal firms
Read a parcel's mailed vs certified values, the appeal history and outcomes in a township, and which agents are filing.
Lenders and title researchers
Check a PIN list's sale history and current assessed values in one call.
Contractors and suppliers
Watch permits by township and estimated job amount.
Sample records
Real records from the source, shown with a subset of the fields. Every run returns the full field set below.
| pinFormatted | townshipName | saleDate | salePrice | deedType | classCode |
|---|---|---|---|---|---|
| 17-04-207-086-1145 | North Chicago | 2026-07-14 | 162000 | Other | 299 |
| 04-33-112-007-0000 | Northfield | 2026-07-13 | 550000 | Trustee | 234 |
| 17-22-110-100-1199 | South Chicago | 2026-07-13 | 535000 | Warranty | 299 |
Sales fixture rows (3 of the 10 committed in tests/fixtures/sales.sample.js, unmodified Socrata rows fetched 2026-08-23) run through the actor's own normalizeRow('sales', ...) in src/parse.js. Buyer and seller names that are natural persons are withheld per this catalogue's policy; organization names are kept.
Fields
The most used fields in each record. The Apify listing documents the full output schema.
- pin
- 14-digit Cook County Parcel Index Number, zero-padded
- townshipName
- Township name; the eight Chicago townships are coded 70 to 77
- saleDate
- Recorded sale date
- salePrice
- Sale price as recorded on the deed
- deedType
- Deed type recorded on the sale
- buyerName
- Buyer name as recorded on the deed; absent on about 19% of the default window
- sellerName
- Seller name as recorded on the deed; absent on about 33% of the default window
- ccaoFilters
- The Assessor's own three non-market-sale flags: same PIN sold again within 365 days, price under $10,000, and a non-arms-length deed type
- documentNumber
- Cook County Clerk's recording number, lookup-able on the Clerk's site
How it works
1
Run it on Apify
Open the listing, sign in to Apify, and press Start. The actor reads the public source directly, normalizes each record, and writes the results to your Apify dataset. You can also schedule it to run on a cadence.
2
Filter to what you need
- •mode: which of the four datasets to read, sales, assessedValues, permits or appeals; defaults to sales
- •pins: up to 500 PINs, dashes allowed; switches off the default date/tax-year window so you get the full parcel history; lists over 100 are queried in chunks of 100 and merged
- •township: name or two-digit code, any case, e.g. Lake View, 73, Evanston; 38 townships, Chicago is 70 to 77
- •classCodes: Assessor class codes such as 211, 203, 299; applies to sales, assessed values and appeals, ignored for permits
- •taxYear: four-digit year; main selector for assessed values and appeals (defaults to the newest year), restricts sales and permits and turns off the default date window
- •dateFrom, dateTo: sale date (sales) or issue date (permits) range; ignored for assessed values and appeals
- •minPrice, maxPrice: sale price or permit estimated amount; ignored for assessed values and appeals
- •buyerName, sellerName: case-insensitive substring match on the deed name; sales only
- •saleFilter: under10k (default) drops sales flagged under $10,000; strict also drops repeat same-price sales within a year and quit claim, executor and beneficiary deeds; none delivers every recorded sale
- •maxResults: cap on delivered records and your cost cap, default 100, up to 50,000
- •includeRaw: attach the untouched source row as raw, default false
3
Export or connect
Download the dataset as CSV, JSON, or Excel from the Apify console, or pull it straight into your own system through the Apify API and integrations.
Default input with no fields set returns the 100 newest sales (price $10,000 or more) from the 60 days ending at the most recently published sale date, not today; the newest published sale lags real time by weeks (on 23 August 2026 the newest sale was dated 14 July 2026). The platform smoke run on the default input completed in 9.14s for 100 items. Three other modes read separate CCAO tables on the same PIN: assessedValues reads Assessor - Assessed Values (uzyt-m557, 50,670,538 rows, about 1.86 million parcels a year, 1999 to present), delivering mailed, certified and Board of Review value triplets per parcel-year, skipping parcel-years with no mailed value yet; permits reads Assessor - Permits (6yjf-dfxs, 726,959 rows); appeals reads Assessor - Appeals (y282-6ig3, 2,615,003 rows, agent named on 81% of 2025 appeals). Buyer name is present on 81% and seller name on 67% of the default sales window (90%/87% across all of 2025).
Pricing
$3 per 1,000 records
Pay per result, billed through your Apify account at $0.003 per record. You are charged only for the records the run delivers to your dataset, so a filtered run that matches nothing costs nothing. No subscription, no minimum.
Source, refresh, and licence
- Source
- Cook County Assessor's Office: Assessor - Parcel Sales
- Size
- Sales 2,686,366 rows, 1971 to the newest published date, 79,257 dated 2025. Assessed values about 1.86 million parcels per tax year, 1999 to present (50,670,538 rows total). Permits 726,959 rows, 10,480 issued in the 90 days to 23 August 2026. Appeals 2,615,003 rows, 362,530 for tax year 2025. Figures read live 2026-08-23.
- Refresh
- The Cook County open data portal lists all four datasets as updated bi-weekly ("semi-monthly" in the dataset notes). Each record carries its own dataset's sourcePublishedAt, the portal's last-updated stamp (sales 2026-08-19T19:36:06Z, values 2026-08-15T11:29:19Z, permits 2026-08-20T14:35:44Z, appeals 2026-08-15T11:04:54Z, read 2026-08-23).
- Licence
- The datasets carry no licence field. The portal's "About Open Data" page describes the data as free public data published by Cook County agencies under the County's Open Government Plan, and lists among its principles "Non-discriminatory: Data is available to anyone, with no registration requirement" and "License-free: Data is not subject to copyright, patent, trademark, or trade secret regulation where reasonable." The County's Terms of Use disclaim warranty and accuracy. This Actor is not affiliated with or endorsed by the Cook County Assessor's Office or Cook County Government.
- Attribution
- Cook County Assessor's Office
Questions buyers ask
How do I get Cook County property sales by township or neighborhood?
Set township (for example Lake View or 73) and optionally classCodes and a date window. Neighborhood is delivered on each record as neighborhoodCode (township plus Assessor neighborhood), so you can filter on it after the fact.
Can I search Cook County property records by owner or buyer name?
Sales records carry buyer and seller names as recorded on the deed, and buyerName and sellerName do a case-insensitive contains match. The Assessor's datasets do not publish a current-owner column, so the buyer on the most recent sale is a useful lead, not a current-owner or title determination. We recommend verifying ownership with the Assessor, the Clerk's Recordings office, or a title source.
How do I look up assessed values and appeals for a list of PINs?
Put the PINs in pins (any format, up to 500 per run) and choose assessedValues or appeals. With a PIN list the actor returns the full history, every tax year, for those parcels.
Related datasets
NYC ACRIS Deeds & Mortgages: Bulk Recordings with Parties
We turn the NYC Department of Finance's ACRIS property recordings into one record per document: every deed, mortgage and 120 more filing types, newest first, with the recording date, amount and document id already on it.
Licensing and permitsNYC DOB Permits: Approved Permits with Contractor & Owner
We turn NYC's DOB NOW approved-permits feed into one clean record per permit issuance: the licensed contractor with licence type and number, the building owner, the work type and job description, and the address, BIN, block and lot, plus approval, issue and expiry dates.
Pull the data you need
Run it yourself on Apify, or ask us for a custom extract, a join against another dataset, or a scheduled delivery.
We are not affiliated with or endorsed by Cook County Assessor's Office. The actor reads the public dataset linked above and adds no data of its own.