CRE Market Data API - Cap Rates, NAV, Forecasts
Pricing
from $3.00 / 1,000 reference row returneds
CRE Market Data API - Cap Rates, NAV, Forecasts
Commercial real estate research across 90 datasets: market cap rates, quality grades and rent growth, REIT net asset values and fundamentals, forecast scenarios by release, CMBS and CRE CLO deals and tranches, property sale comps, retail centre and tenant analytics, executive pay and total returns.
Pricing
from $3.00 / 1,000 reference row returneds
Rating
0.0
(0)
Developer
Nabeel Hassan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
Read commercial real estate research data straight into a dataset: market cap rates and quality grades, REIT net asset values and fundamentals, forecast scenarios with the release they were published in, securitised debt deals and tranches, property sale comps, retail centre and tenant analytics, executive pay and total return track records, across the United States, Europe, Canada and Asia Pacific.
What this actor does
- Ninety datasets, one query language. Companies, sectors, markets, forecasts, macro series, CMBS and CRE CLO and ABS deals, high yield funds, sale comps, retail analytics, executive compensation, model portfolios and total returns. Pick one per run.
- Filters checked before the request, not after it. Each endpoint accepts its own subset of filters. A filter that does not apply to your dataset is dropped and named in the log rather than sent, because a silently ignored filter returns a result set that looks filtered and is not.
- The region trap, handled. The provider uses two region vocabularies across its own API: most endpoints take
usa,eur,can,apacorother, a handful takenaandeu. Pick either spelling; this actor translates it into the one your dataset accepts, and stops the run with the accepted list when no translation exists. - Reference datasets built in. Company, market, sector, scenario, grade, weight, attribute, property and debt entity IDs, plus the provider's own data dictionary. Every filter on every other dataset takes IDs, and these are where you get them.
- A free preview dataset. The examples dataset is published without authentication. Run it first to confirm the network path works before spending a credential on it.
- Paging done for you. Skip and limit paging runs until a short page arrives, so a full dataset is one run rather than one run per thousand rows. A run never asks for more rows than it is allowed to keep.
- The long tail reachable. Several hundred filters exist across these endpoints. The ones worth a form field have one; everything else goes in as
name=valuelines, checked against the same catalogue. - Pay per result. You are charged for rows carrying a real record. Filter combinations that return nothing are free.
Bring your own key
This actor calls the provider with your own client ID and client secret, taken from the client credentials page of your account. They are exchanged once for an access token, which is cached for its full lifetime exactly as the provider asks rather than re-fetched per request, and refreshed a minute early so a long run never lands on the far side of an expiry. You can also paste an access token you already hold.
Paste the secret into the input or set it as the DATA_API_KEY secret. Nothing runs on anyone else's credentials, and a run without them ends cleanly with an explanation rather than failing.
The User-Agent header nobody mentions until it bites
The provider requires a User-Agent header on both the token request and every data request, and refuses requests that arrive without one as access denied. Node's own fetch sends no User-Agent by default, which is exactly why this shows up in the provider's troubleshooting notes.
That matters here because a missing User-Agent and a wrong client secret produce the same access_denied answer. This actor always sends one, so if you see that error the cause is the credential rather than the header.
Two region vocabularies, one API
/companies/summaries takes usa, eur, can, apac or other. /companies/nav_operating_breakouts takes na and eu. They sit next to each other in the same API and the parameter has the same name in both.
Sending usa to the second one does not return North American data. It returns a validation error about region, which is a parameter you set correctly, in a spelling that endpoint does not use. There is nothing in the message to tell you that. This actor carries the accepted list for every dataset, translates between the two spellings where they mean the same thing, refuses a Canadian request to an na/eu endpoint rather than quietly widening it to North America, and says in the log when it translated something.
Column names are the provider's, on purpose
There are several thousand data series across these endpoints, and the provider publishes a data dictionary describing them, which is one of the datasets in this actor. Renaming columns here would break every join anyone writes against that documentation, so rows come through under the provider's own names. This actor adds four columns of its own, written last: recordType, dataset, datasetGroup and requestedRegion.
Example output
{"date": "2026-09-01","comp_id": 10,"sector_id": 9,"symbol": "BXP","sector": "Office","currency_symbol": "USD","price": 67.06,"recordType": "record","dataset": "examples","datasetGroup": "Preview","requestedRegion": "na"}
FAQ
What commercial real estate data does this actor return?
Market and sector analytics including cap rates, rent and NOI growth, occupancy, quality grades and market rankings. Listed company fundamentals including net asset value, NAV breakouts by operating line, balance sheet, geography and property type, earnings, surprises, tenant exposure and transaction activity. Forecast scenarios by market, sector and release. Macroeconomic and fair value model series. Securitised debt: CMBS, CRE CLO and ABS deals, tranches and participants, issuance volumes and high yield funds. Property sale comps with prices and cap rates. Retail property, tenant and geography analytics. Executive compensation. Total returns and model portfolio weights.
Do I need an account?
Yes, for everything except the examples dataset, which the provider publishes without authentication. Datasets are entitled separately, so a credential that works on one family can be refused on another; the actor reports that as an entitlement answer rather than as a bad key.
How do I find the IDs the filters take?
Run a reference dataset first. Company IDs returns IDs, names, tickers and coverage flags. Market IDs returns markets by region, level and zoom. Sector, scenario, grade, weight and attribute IDs do the same for their own dimensions, and property IDs looks a property up by name or address. The data dictionary dataset explains what any returned column means.
Why did my forecast run stop before calling the API?
Because forecast datasets require a market level and a scenario, and market sector summaries require a market level and a zoom. Without them the provider returns a validation error naming a field you were never shown a form for, so this actor checks first and names the missing input instead.
Can I get historical cap rates by market?
Yes. Use the historical market sector summaries dataset with a market level and zoom, a date range and the market IDs you want. Each row carries the date it belongs to, so the series comes back ready to plot.
How do I compare a forecast against the one it replaced?
Use the historical forecast scenarios dataset and filter on release IDs. Each row carries the release it was published in, which is what makes the comparison meaningful: a projection without its vintage cannot be checked against what actually happened.
What if the filter I need has no input field?
Put it in extra filters as a name=value line. Around six hundred filters exist across these endpoints - CMBS deals alone accepts about forty - so the ones worth a form field have one and the rest go in as lines. A name your chosen dataset does not accept is reported in the log and not sent.
How many rows can one run collect?
As many as you set. Paging runs on skip and limit up to the provider's ceiling of 1000 records per request, and continues until a short page arrives or your row cap is reached. Set a start offset to resume a large dataset where a previous run stopped.
Keyword map
CRE data API, commercial real estate data API, cap rate data API, REIT data API, NAV data API, net asset value REIT, CRE forecast API, rent growth forecast data, NOI forecast API, market grades commercial real estate, CMBS data API, CRE CLO data, ABS deal data API, commercial mortgage data, sales comps API, property transaction data API, retail analytics API, shopping centre data, retail vacancy data API, executive compensation data API, REIT total returns, NAREIT index data, model portfolio data, real estate research API, institutional CRE data