PropertyShark NYC Commercial Transactions Scraper
Pricing
from $6.23 / 1,000 significant sales
PropertyShark NYC Commercial Transactions Scraper
Scrapes PropertyShark NYC commercial market pages: significant sales with address, sale date, price, sqft and price/sqft, plus borough and submarket stats and quarterly history back to 2016.
Pricing
from $6.23 / 1,000 significant sales
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
10
Total users
2
Monthly active users
18 days ago
Last modified
Categories
Share
Scrape New York City commercial property sales from PropertyShark: significant transactions with address, sale date, price, building sqft and price/sqft, plus the market and submarket context each sale sits in. No login, no PropertyShark subscription, no browser.
What it does
- 🏢 Significant commercial sales — address, submarket, sale date, sale price, building sqft, price/sqft, and whether the deal was a package (with the other addresses in it).
- 🗽 Five boroughs × five markets — Manhattan, Brooklyn, Queens, Bronx and Staten Island, each as Commercial (all), Office, Retail, Industrial or Multifamily.
- 📊 Market context on every sale row — the period's median price/sqft, transaction count, sales volume and total sqft for both the borough and the sale's own submarket, so a price is never just a number.
- 🧮 Computed comparisons — price/sqft versus the submarket median and the borough median, and the sale's share of the period's total volume and total sqft.
- 📈 Quarterly history back to 2016 (opt-in) — median price/sqft, transactions, sales volume and total sqft, one row per market, metric and quarter, each with its own year-over-year change.
- 🏙️ Submarket breakdown (opt-in) — Midtown Manhattan, Downtown Brooklyn, Long Island City and the rest, with median price/sqft, transactions, volume and sqft.
- 🥧 Sales volume split by property type (opt-in) — how much of a borough's commercial volume was office, retail, multifamily or other.
- ✅ Values PropertyShark publishes, not values we round — the exact
4624140476.52behind the site's own$4.6B, taken from the chart series rather than the headline label.
What you can do with PropertyShark NYC commercial data
Price a deal against the market it is actually in. Every sale row carries the median price/sqft for its submarket and for the borough in the same period, plus the percentage gap between them. A $851/sqft Midtown office trade reads very differently once you can see the Midtown median is $851 and the Manhattan median is $729.
Track a borough's cycle without a data subscription. The opt-in quarterly history goes back to Q1 2016 across four metrics and five property types. That is roughly 170 rows per market and enough to chart a full decade of NYC commercial volume, pricing and absorption.
Find the submarkets that are moving. The submarket block gives transactions, volume, total sqft and median price/sqft per submarket per quarter, with each one's share of the borough total already computed. Sort by share of volume to see where the money went this quarter.
Feed a comps or lead model. Package deals arrive flagged, with the sibling addresses listed and a package size, so a headline price spread across three buildings does not get treated as one building's valuation.
Why choose this scraper
| What you get | |
|---|---|
| Source | PropertyShark's own published market-trends pages — the numbers the site shows, not an estimate |
| Access | Fully anonymous. No PropertyShark account, no cookies, no proxy needed |
| Coverage | 25 markets (5 property types × 5 boroughs), ~254 significant sales and ~2,700 rows per full refresh |
| History | Quarterly series back to Q1 2016 on four metrics |
| Speed | The complete catalogue — all 25 markets, 2,725 rows — in 12 seconds on a 512 MB run |
| Honesty | Every borough page is checked against its own heading, so an unpublished market is reported, never silently served as its parent |
How it compares
PropertyShark itself is a paid subscription, and the Apify Store has no other actor reading it. The nearest neighbours cover different sources: LoopNet and Crexi actors (kazkn/commercial-real-estate-brokerage-intel, studio-amba/loopnet-scraper, solidcode/loopnet-com-scraper) return active listings — what is on the market and at what asking price. This actor returns closed sales plus the aggregate market statistics behind them.
| This actor | LoopNet / Crexi actors | |
|---|---|---|
| Row type | Closed sale + market stats | Active listing |
| Price field | What it sold for | What it is asking |
| Geography | NYC, five boroughs | National |
| History | Quarterly, back to 2016 | Current listings only |
| Market aggregates | Yes, per borough and submarket | No |
If you need asking prices on live inventory, use a LoopNet or Crexi actor. If you need what actually traded and where the market stands, use this one.
What a sale looks like
One unedited row from a default run:
{"recordType": "significant-sale","propertyType": "commercial","propertyTypeLabel": "Commercial","borough": "Manhattan","boroughSlug": "manhattan","marketUrl": "https://www.propertyshark.com/mason/market-trends/commercial/nyc/manhattan","rank": 2,"address": "575 5th Ave #A","submarket": "Midtown Manhattan","submarketUrl": "https://www.propertyshark.com/cre/commercial-real-estate/us/ny/manhattan/midtown-manhattan/","saleDate": "2026-04-16","saleYear": 2026,"saleMonth": 4,"saleQuarter": 2,"salePrice": 316000000,"buildingSqft": 371374,"pricePerSqft": 850.89,"isPackageDeal": false,"packageIncludes": [],"packageCount": 1,"submarketMedianPricePerSqft": 850.89,"submarketTransactions": 67,"submarketSalesVolume": 3021617965,"submarketTotalSqft": 6380631,"pricePerSqftVsSubmarketMedianPct": 0,"pricePerSqftVsMarketMedianPct": 16.75,"shareOfMarketVolumePct": 6.8337,"shareOfMarketSqftPct": 4.2868,"marketPeriod": "Quarter 2, 2026","marketPeriodType": "quarter","marketMedianPricePerSqft": 728.7933,"marketTransactions": 221,"marketSalesVolume": 4624140476.52,"marketTotalSqft": 8663218,"scrapedAt": "2026-09-07T14:44:27.589Z"}
Configure the run
Pick the markets you want with Property types and Boroughs — every combination of the two is fetched. maxItems caps the total rows across every output, and the significant sales are written first, so a small cap always spends itself on transactions rather than on history rows. The filters (price, building sqft, sale date) apply to significant sales only, and they run on the full row before it is billed: a sale you filter out never costs you anything.
Manhattan office trades over $50M this year:
{"propertyTypes": ["office"],"boroughs": ["manhattan"],"minSalePrice": 50000000,"saleDateFrom": "2026-01-01","maxItems": 100}
Every closed sale PropertyShark publishes, across all five boroughs and all five markets:
{"propertyTypes": ["commercial", "office", "retail", "industrial", "multifamily"],"boroughs": ["manhattan", "brooklyn", "queens", "bronx", "staten-island"],"maxItems": 1000}
A decade of Brooklyn and Queens industrial history, with the market and submarket tables:
{"propertyTypes": ["industrial"],"boroughs": ["brooklyn", "queens"],"includeMetricHistory": true,"includeMarketOverview": true,"includeSubmarketStats": true,"maxItems": 5000}
Pricing
Pay per event. You are billed for the rows you receive, and an opt-in block that returns nothing is not billed.
| Event | Price | Fires |
|---|---|---|
apify-actor-start | $0.02 | Once per run |
market-page | $0.02 | Per market page fetched and parsed |
significant-sale | $0.007 | Per closed sale row |
market-overview | $0.02 | Per market, opt-in |
submarket-stats | $0.007 | Per submarket row, opt-in |
volume-by-property-type | $0.007 | Per property-type slice, opt-in |
metric-history-point | $0.0005 | Per metric, market and quarter, opt-in |
| What you run | Rows | Cost |
|---|---|---|
| Default preview (Manhattan commercial) | 10 sales | $0.11 |
| 100 significant sales | 100 | $0.92 |
| Every sale in all 25 markets | 254 | $2.30 |
| The complete catalogue, every block on | 2,725 | $5.10 |
PropertyShark publishes roughly ten significant sales per market per period, so 254 sales is the real ceiling on a single refresh; the history block is what makes a run large. Tier discounts apply automatically on Bronze, Silver and Gold.
Free users
Free Apify accounts get 10 rows per run as a preview. Everything else is identical.
Upgrade for the full catalogue: https://console.apify.com/sign-up?fpr=vmoqkp
Run it
- Create a free Apify account — it comes with $5 of platform credit.
- Open PropertyShark NYC Commercial Transactions Scraper and press Start to run the default (Manhattan commercial, 10 sales).
- Add the boroughs and property types you want, and tick the opt-in blocks you need.
- Export from the Storage tab as JSON, CSV, Excel or XML, or pull it from the API.
Use with AI agents (MCP)
claude mcp add apify --transport http https://mcp.apify.com --header "Authorization: Bearer YOUR_APIFY_TOKEN"
Then ask:
- "What were the ten largest commercial sales in Manhattan last quarter, and how did each price per square foot compare with its submarket median?"
- "Chart Brooklyn industrial sales volume by quarter since 2016."
- "Which NYC submarket had the highest share of retail sales volume this period?"
Troubleshooting
No results at all. Check the log for a heading mismatch. PropertyShark answers an unpublished market with its parent page instead of a 404, so the actor refuses that response and says so rather than handing you the wrong borough's data.
Fewer rows than I expected. PropertyShark publishes about ten significant sales per market per period. Ten sales for one borough and one property type is the full set, not a truncation. To get more rows, add boroughs and property types, or tick the history block.
Fewer rows than maxItems. maxItems caps total rows across every output. With no opt-in blocks on, one market yields about ten rows however high you set it.
A field came back empty. submarketMedianPricePerSqft and the other submarket fields are null when the sale's submarket is not one of the ones PropertyShark tabulates for that borough. packageIncludes is empty on any sale that was not a package deal.
The run was slow, or I saw a Cloudflare warning. The source is behind Cloudflare but serves this path anonymously; the actor retries with a second TLS profile. If your account's egress starts getting challenged, switch on Apify Proxy in the input.
FAQ
| Question | Answer |
|---|---|
| Do I need a PropertyShark account? | No. Every page this actor reads is public. |
| Which cities are covered? | New York City only. PropertyShark publishes commercial market trends for the five boroughs; other metros have residential pages only. |
| Are these asking prices or closed sales? | Closed sales, with the recorded sale date and price. |
| How far back does the history go? | Q1 2016 on quarterly markets. Thinner markets are published annually instead, back to 2016. |
| Why do some markets say "Year 2025" instead of a quarter? | PropertyShark switches a market to annual reporting when quarterly volume is too thin. The row tells you which with periodType. |
| What is a package deal? | One recorded transaction covering several buildings. isPackageDeal flags it, packageIncludes lists the other addresses and packageCount gives the total. |
| How current is the data? | As current as PropertyShark's own pages, which lag the recording date by roughly a quarter. |
| Can I get individual property records? | Not from this actor. It reads the published market pages, which cover significant sales and aggregates. |
| How often should I run it? | Once per quarter is enough for the sales and aggregates; the numbers do not change between publications. |
| Does an empty opt-in block cost anything? | No. Blocks are billed per row returned. |