Property Sales Records - US Home Sale Prices & Comps
Pricing
from $2.00 / 1,000 property sale records
Property Sales Records - US Home Sale Prices & Comps
Property sales records with recorded sale prices and comps from official public records: NYC (5 boroughs), Cook County IL, Maryland (24 counties), Connecticut (169 towns), Norfolk VA. Sale date, price, address, ZIP, parcel ID, sq ft, year built, arm's-length flag. $2.00 per 1,000 sales.
Pricing
from $2.00 / 1,000 property sale records
Rating
0.0
(0)
Developer
OFFGRID LABS
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Property sales records: US home sale prices and comps from official county and state data
TL;DR: Property Sales Records returns recorded property sales from the official open-data APIs of New York City (5 boroughs), Cook County IL (Chicago), Maryland (all 24 counties), Connecticut (all 169 towns) and Norfolk VA in one unified format: sale date, sale price, address, ZIP, parcel ID, property type and class, year built, building and land area, price per sq ft, assessed value, sales ratio, deed type and an arm's-length flag. It is built for real-estate investors, appraisers, agents, proptech teams, lenders and AI agents that need sold-price comps from the public record rather than listing sites. No buyer, seller or owner names are ever returned. You pay $2.00 per 1,000 sales saved.
All data comes from official government Socrata open-data APIs. No browser, no login, no proxy, no Zillow scraping.
Sources
| Source ID | Coverage | Official dataset | Update cadence |
|---|---|---|---|
nyc | New York City, all 5 boroughs | NYC Dept. of Finance Rolling Calendar Sales (data.cityofnewyork.us, usep-8jbt) | Monthly, rolling 12 months |
cook-county | Cook County, IL (Chicago and suburbs) | Cook County Assessor Parcel Sales (wvhk-k5uv) + parcel addresses (3723-97qp) | Weekly, 1-3 month recording lag |
maryland | Maryland, all 24 counties | SDAT Real Property Assessments (opendata.maryland.gov, ed4q-f8tm), latest sale per parcel | Weekly |
connecticut | Connecticut, all 169 towns | OPM Real Estate Sales 2001-2024 (data.ct.gov, 5mzw-sjtu), sales of $2,000+ | Annually (by Oct 1 list year) |
norfolk-va | Norfolk, VA | Property Assessment and Sales (data.norfolk.gov, qva7-tzrf) | Current fiscal year |
What data you get
One dataset row per recorded sale, with the same fields for every source. Values a source does not publish are null, never guessed.
| Field | What it is | Example |
|---|---|---|
source, sourceName, state | Source ID, coverage, state | maryland, Maryland (all 24 counties), MD |
county, city, neighborhood | Location as published | Baltimore, GWYNN OAK |
saleDate | Recorded transfer date (YYYY-MM-DD) | 2026-11-03 |
salePrice | Sale price / consideration, USD | 386000 |
pricePerSqft | salePrice / buildingAreaSqft | 337.41 |
address, unit, zip | Property address (never a mailing address) | 1303 DORCHESTER AVE, 21207 |
parcelId | Parcel / PIN / BBL / account number | 04010122450050 |
propertyType | Normalised: Residential, Condo / co-op, Multi-family, Commercial / industrial, Vacant land, Exempt / institutional, Other | Residential |
propertyClass | Class as published by the source | Residential (R) |
yearBuilt, buildingAreaSqft, landAreaSqft, units | Building facts where published | 1942, 1144 |
assessedValue, salesRatio | Assessed value and assessed / sale ratio | 214100, 0.5547 |
deedType, documentId | Deed / conveyance type and recording number | Private arms-length transfer, Improved (1) |
isArmsLength | true / false when the source flags it, null if unknown | true |
latitude, longitude | Coordinates (Maryland, Connecticut) | 39.298072, -76.727057 |
recordUrl, datasetUrl, sourceUrl | Official record page, dataset, API query | https://opendata.maryland.gov/d/ed4q-f8tm |
raw | Every non-personal column the source publishes (optional) |
Use cases
- Real-estate investors and wholesalers: pull every sale in a ZIP or neighbourhood for comps and price-per-sq-ft trends.
- Appraisers and agents: arm's-length comparable sales with parcel IDs and links to the official record.
- Proptech, lenders and analysts: one schema across NYC, Chicago, Maryland, Connecticut and Norfolk for AVMs, dashboards and sales-ratio studies.
- Tax-appeal consultants: compare assessed values with recent sale prices (
salesRatio).
How to get property sales records
- Pick Sources (or leave empty for all 5).
- Set Sold within last N days (default 90) or a fixed Sold on or after / Sold on or before date (YYYY-MM-DD).
- Optional filters: ZIP codes or prefixes (
100,21207), City / county / neighborhood contains (Brooklyn,Chicago,Hartford), Property types, Minimum / Maximum sale price (USD), Arm's-length sales only. - Set Max sales per source (default 200; 0 = no limit) and click Start. For a monthly comps feed, schedule a run with Sold within last N days = 31.
Input example
{"sources": ["nyc", "cook-county"],"soldWithinDays": 90,"zipCodes": ["112", "606"],"propertyTypes": ["Residential", "Condo / co-op"],"minPrice": 100000,"armsLengthOnly": true,"maxItemsPerSource": 500}
Output example
{"source": "maryland","sourceName": "Maryland (all 24 counties)","state": "MD","county": "Baltimore","city": "GWYNN OAK","neighborhood": null,"saleDate": "2026-11-03","salePrice": 386000,"pricePerSqft": 337.41,"address": "1303 DORCHESTER AVE","unit": null,"zip": "21207","parcelId": "04010122450050","propertyType": "Residential","propertyClass": "Residential (R)","yearBuilt": 1942,"buildingAreaSqft": 1144,"landAreaSqft": null,"units": 1,"assessedValue": 214100,"salesRatio": 0.5547,"deedType": "Private arms-length transfer, Improved (1)","documentId": "000000","isArmsLength": true,"latitude": 39.298072,"longitude": -76.727057,"recordUrl": "https://sdat.dat.maryland.gov/RealProperty/Pages/viewdetails.aspx?County=04&SearchType=ACCT&District=01&AccountNumber=0122450050","datasetUrl": "https://opendata.maryland.gov/d/ed4q-f8tm","sourceUrl": "https://opendata.maryland.gov/resource/ed4q-f8tm.json?...","scrapedAt": "2026-11-03T14:41:21.301Z"}
A per-source summary (saved, scanned, requests, errors) is stored in the key-value store record RUN_SUMMARY.
How much does it cost to get property sales data?
Pay per event: filters run before saving, so you only pay for sales you keep. Compute is included. The price is the same on every Apify plan.
| Event | Charged when | Price |
|---|---|---|
sale | One property sale saved | $2.00 per 1,000 ($0.002 each) |
apify-actor-start | Once per run (Apify's standard start fee) | $0.00005 |
Worked examples
- 1,000 sales = 1,000 × $0.002 = $2.00 (+ $0.00005 start fee).
- Comps for one Brooklyn ZIP over 12 months (about 400 sales): $0.80.
- A monthly feed of all arm's-length Maryland sales over $100,000 (about 5,000 a month): $10.00 per month.
Set Maximum cost per run in the run options; the actor stops cleanly at the limit and never charges twice for the same sale.
How it compares (by approach)
| This actor (official open data) | Listing-site scrapers (Zillow, Redfin, Realtor) | County-records lookup actors | Commercial property-data APIs | |
|---|---|---|---|---|
| Source | Recorder / assessor / finance-department datasets | Listing portals | County assessor sites, one parcel at a time | Aggregated public records |
| Sale price | Recorded consideration | Listed / reported sold price | Varies | Recorded |
| Coverage | 5 jurisdictions, every recorded sale | Nationwide, listed homes only | Per lookup | Nationwide |
| Non-arm's-length flag, deed type, parcel ID | Yes, where published | Rarely | Sometimes | Yes |
| Personal names | Never returned | Agent names | Often owner names | Owner names |
| Blocking risk | None (public APIs) | High (anti-bot, proxies) | Medium | None |
| Cost | $2.00 per 1,000 sales | about $0.90-$3.80 per 1,000 | about $45-$50 per 1,000 records | Subscription, often $100s per month |
FAQ
Where can I find recent home sale prices for comps?
Run this actor with Sold within last N days and a ZIP code or Locality filter. Each row has the recorded sale price, date, address, parcel ID and, where published, building area and price per sq ft.
Which areas are covered?
New York City (all 5 boroughs), Cook County IL (Chicago), all 24 Maryland counties, all 169 Connecticut towns and Norfolk VA. More jurisdictions that publish sales on Socrata can be added on request.
Does it include buyer, seller or owner names?
No. Buyer, seller, grantor, grantee and owner columns are never output, not even in the optional raw record. The data describes the property and the transaction only.
How fresh is the data?
As fresh as each source: Maryland weekly, Cook County weekly with a 1-3 month recording lag, NYC monthly (rolling 12 months), Norfolk for the current fiscal year, and Connecticut annually. If a recent window returns nothing for Connecticut, widen Sold within last N days to 400+.
How do I keep only real market sales?
Turn on Arm's-length sales only. It drops sales the source flags as non-arm's-length (Cook County sale filters, Maryland conveyance codes, Connecticut non-use codes, NYC nominal transfers of $10,000 or less). Sales with no flag (null) are kept. A Minimum sale price (default $1,000) also removes nominal transfers.
Why are some fields empty?
Sources publish different columns: for example NYC does not publish assessed values, Cook County sales carry no building area, and Connecticut has no ZIP codes. Missing values are null, never estimated.
Can I filter by ZIP code, property type or price?
Yes. ZIP codes accepts full ZIPs or prefixes, Property types uses the normalised types listed above, and Minimum / Maximum sale price are applied server-side so you only pay for matching sales.
Is it legal to use this property sales data?
All data comes from official government open-data APIs published for public reuse under each portal's terms. The actor keeps to one request per second per portal and returns no personal names.
Can an AI agent use this property sales API?
Yes. Through the Apify MCP server an agent can find it with search-actors, read the input schema and run it, for example "arm's-length condo sales in Brooklyn ZIP 11201 in the last 90 days". See Integrations.
Something wrong?
Open an issue on the Issues tab; we aim to respond within 24 hours.
Integrations
- API:
POST https://api.apify.com/v2/acts/offgrid-labs~property-sales-records/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>with the input JSON as the body returns the sales directly (runs under 5 minutes; otherwise start a run and read its dataset). - Python / JavaScript:
pip install apify-client/npm install apify-client, thenclient.actor("offgrid-labs/property-sales-records").call(run_input={...}). - No-code: Apify's integrations for Make, Zapier and n8n, plus Google Sheets, Slack, webhooks and Schedules (for example new sales in your ZIPs into a sheet every week).
- MCP / AI agents: add
https://mcp.apify.com?tools=offgrid-labs/property-sales-recordsto your MCP client to expose this actor as a tool.
Changelog
- 2026-11-03 · First release: NYC, Cook County (with parcel-address join), Maryland, Connecticut and Norfolk VA via official Socrata APIs; unified schema with price per sq ft, sales ratio and arm's-length flag; ZIP / locality / type / price filters; buyer, seller and owner names never output;
RUN_SUMMARY.
Related actors
| Actor | What it does |
|---|---|
| US Building Permits Scraper | New construction, renovation and demolition permits from 12 US cities |
| Local Business Leads Scraper | Contractors, agents and other local businesses by category and city |
| Company Registry Lookup (KYB) | Official company records for LLC buyers and developers |
// OFFGRID LABS ─────────────────────────────────────────────// status: monitored 24/7 by a self-hosted agent swarm// health checks: every 6h · auto-repair + rollback on failure// sources: official public APIs and open data only// support: open an issue — human-reviewed response within 24h// ───────────────────────────────────────────────────────────