PropertyShark NYC Commercial Transactions Scraper avatar

PropertyShark NYC Commercial Transactions Scraper

Pricing

from $6.23 / 1,000 significant sales

Go to Apify Store
PropertyShark NYC Commercial Transactions Scraper

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

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

2

Monthly active users

18 days ago

Last modified

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.52 behind 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
SourcePropertyShark's own published market-trends pages — the numbers the site shows, not an estimate
AccessFully anonymous. No PropertyShark account, no cookies, no proxy needed
Coverage25 markets (5 property types × 5 boroughs), ~254 significant sales and ~2,700 rows per full refresh
HistoryQuarterly series back to Q1 2016 on four metrics
SpeedThe complete catalogue — all 25 markets, 2,725 rows — in 12 seconds on a 512 MB run
HonestyEvery 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 actorLoopNet / Crexi actors
Row typeClosed sale + market statsActive listing
Price fieldWhat it sold forWhat it is asking
GeographyNYC, five boroughsNational
HistoryQuarterly, back to 2016Current listings only
Market aggregatesYes, per borough and submarketNo

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.

EventPriceFires
apify-actor-start$0.02Once per run
market-page$0.02Per market page fetched and parsed
significant-sale$0.007Per closed sale row
market-overview$0.02Per market, opt-in
submarket-stats$0.007Per submarket row, opt-in
volume-by-property-type$0.007Per property-type slice, opt-in
metric-history-point$0.0005Per metric, market and quarter, opt-in
What you runRowsCost
Default preview (Manhattan commercial)10 sales$0.11
100 significant sales100$0.92
Every sale in all 25 markets254$2.30
The complete catalogue, every block on2,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

  1. Create a free Apify account — it comes with $5 of platform credit.
  2. Open PropertyShark NYC Commercial Transactions Scraper and press Start to run the default (Manhattan commercial, 10 sales).
  3. Add the boroughs and property types you want, and tick the opt-in blocks you need.
  4. 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

QuestionAnswer
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.