NYU APIpages.stern.nyu.edu ↗
Access enterprise value multiples (EV/EBITDA, EV/EBIT, EV/EBITDAR&D) by industry for ~94 US sectors via the NYU Stern Damodaran dataset API.
What is the NYU API?
The NYU Stern EV/EBITDA Multiples API exposes one endpoint — list_ebitda_multiples — that returns a full table of enterprise value multiples across approximately 94 industry rows plus two market-total aggregates. Each row includes EV/EBITDA, EV/EBIT, EV/EBITDAR&D, and EV/EBIT after tax, computed separately for firms with positive EBITDA and for all firms. The data reflects the annually updated Damodaran sector dataset for US companies.
curl -X GET 'https://api.parse.bot/scraper/817bdb9b-1621-4adf-afed-48d6547a310d/list_ebitda_multiples?industry=software' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace pages-stern-nyu-edu-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Damodaran EV/EBITDA multiples — fetch and compare industry valuations."""
from parse_apis.pages_stern_nyu_edu_api import Damodaran, ParseError
client = Damodaran()
# Fetch the full sector report (all ~94 industries).
report = client.sector_reports.get()
print(f"Dataset: {report.source_page_title} — {report.region}, {report.as_of}")
print(f"Industries covered: {report.industry_count}")
# Browse the first five industries and their positive-EBITDA multiples.
for ind in report.industries[:5]:
mult = ind.positive_ebitda_firms
print(f" {ind.industry} ({ind.number_of_firms} firms): "
f"EV/EBITDA {mult.ev_to_ebitda}x, EV/EBIT {mult.ev_to_ebit}x")
# Market-wide aggregates live in market_totals.
for total in report.market_totals:
print(f" {total.industry}: EV/EBITDA {total.all_firms.ev_to_ebitda}x")
# Narrow to software industries using the substring filter.
try:
software = client.sector_reports.get(industry="software")
except ParseError as e:
print(f"Extraction failed ({e.code}): {e}")
else:
print(f"\nSoftware filter: {software.industry_count} matching industries")
for ind in software.industries:
mult = ind.all_firms
print(f" {ind.industry}: EV/EBITDA {mult.ev_to_ebitda}x, "
f"EV/EBIT {mult.ev_to_ebit}x")
print("\nexercised: sector_reports.get (full + filtered)")
Returns the full table of enterprise value multiples by industry for US firms in one round trip (no pagination; roughly 94 industry rows plus two market-total rows). Each industry row carries the number of firms and two groups of multiples: one computed over firms with positive EBITDA only and one over all firms. Multiples are ratios (e.g. 12.0 means 12.0x); a multiple the source reports as NA is returned as null. The market_totals array holds the 'Total Market' and 'Total Market (without financials)' aggregate rows and is always returned unfiltered. as_of is the dataset's stated data date (e.g. 'January 2026'); the dataset is refreshed by its publisher about once a year. An optional case-insensitive substring filter on industry name narrows the industries array; a filter that matches nothing yields an empty industries array with industry_count 0.
| Param | Type | Description |
|---|---|---|
| industry | string | Case-insensitive substring matched against industry names (e.g. 'software' matches 'Software (Internet)'). Omitted = all industries. |
{
"type": "object",
"fields": {
"as_of": "data date stated by the source, e.g. 'January 2026'",
"region": "market covered by the dataset (US)",
"industries": "array of industry rows: industry, number_of_firms, positive_ebitda_firms (multiples over positive-EBITDA firms), all_firms (multiples over all firms); each multiples object has ev_to_ebitdar_and_d, ev_to_ebitda, ev_to_ebit, ev_to_ebit_after_tax as numbers or null",
"market_totals": "array of aggregate rows (Total Market, Total Market without financials) with the same shape as industry rows",
"industry_count": "number of industry rows returned after filtering",
"source_page_title": "title of the source table"
},
"sample": {
"data": {
"as_of": "January 2026",
"region": "US",
"industries": [
{
"industry": "Software (Entertainment)",
"all_firms": {
"ev_to_ebit": 27.11,
"ev_to_ebitda": 26.16,
"ev_to_ebitdar_and_d": 17.06,
"ev_to_ebit_after_tax": 35.19
},
"number_of_firms": 77,
"positive_ebitda_firms": {
"ev_to_ebit": 26.98,
"ev_to_ebitda": 22.01,
"ev_to_ebitdar_and_d": 15.17,
"ev_to_ebit_after_tax": 35.01
}
},
{
"industry": "Software (Internet)",
"all_firms": {
"ev_to_ebit": null,
"ev_to_ebitda": 100.45,
"ev_to_ebitdar_and_d": 32.66,
"ev_to_ebit_after_tax": null
},
"number_of_firms": 29,
"positive_ebitda_firms": {
"ev_to_ebit": 172.99,
"ev_to_ebitda": 30.26,
"ev_to_ebitdar_and_d": 15.73,
"ev_to_ebit_after_tax": null
}
}
],
"market_totals": [
{
"industry": "Total Market",
"all_firms": {
"ev_to_ebit": 31.12,
"ev_to_ebitda": 23.95,
"ev_to_ebitdar_and_d": 19.54,
"ev_to_ebit_after_tax": 38.88
},
"number_of_firms": 5994,
"positive_ebitda_firms": {
"ev_to_ebit": 29.12,
"ev_to_ebitda": 19.73,
"ev_to_ebitdar_and_d": 16.46,
"ev_to_ebit_after_tax": 36.39
}
}
],
"industry_count": 3,
"source_page_title": "Enterprise Value Multiples by Sector (US)"
},
"status": "success"
}
}About the NYU API
What the API Returns
The single list_ebitda_multiples endpoint returns the complete enterprise value multiples table in one response — no pagination. The top-level response includes as_of (the data date, e.g. 'January 2026'), region (always US), source_page_title, industry_count, and two main arrays: industries and market_totals.
Each element in industries contains the industry name, number_of_firms, and two sub-objects: positive_ebitda_firms and all_firms. Both sub-objects carry the same four multiples — EV/EBITDA, EV/EBIT, EV/EBITDAR&D, and EV/EBIT after tax — computed over their respective firm populations. The market_totals array holds two aggregate rows (Total Market and Total Market without financials) in the same shape.
Filtering and Coverage
The optional industry parameter accepts a case-insensitive substring. Passing 'software' will match rows like 'Software (Internet)' and 'Software (System & Application)'. Omitting the parameter returns all rows. The industry_count field in the response reflects how many industry rows matched after filtering.
Coverage is US-listed companies only, organized into roughly 94 sectors as defined by the Damodaran classification. The dataset is updated annually, so as_of is the authoritative freshness indicator. The market_totals rows provide ready-made benchmarks without requiring client-side aggregation.
The NYU API is a managed, monitored endpoint for pages.stern.nyu.edu — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pages.stern.nyu.edu changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official pages.stern.nyu.edu API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Benchmark a private company's valuation against the EV/EBITDA median for its specific sector
- Build a sector screening tool that flags industries trading above or below market-average EV/EBIT multiples
- Compare EV/EBITDAR&D multiples across R&D-intensive industries like biotech and semiconductors
- Populate a DCF model's terminal-value assumptions using industry-level EV/EBIT after tax figures
- Track year-over-year shifts in sector multiples by storing annual snapshots keyed on
as_of - Filter to a single sector using the
industryparameter to power an in-app valuation widget
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does NYU Stern's Damodaran site offer an official developer API?+
What does the `positive_ebitda_firms` sub-object contain, and how does it differ from `all_firms`?+
positive_ebitda_firms computes them only over companies that reported positive EBITDA, while all_firms includes every firm in the industry regardless of profitability. For capital-light or early-stage sectors, the two sets of multiples can differ significantly.Does the API cover international or non-US markets?+
region field is always US, reflecting the US-only scope of this dataset. Damodaran publishes separate tables for global and emerging-market companies. You can fork this API on Parse and revise it to point at those source pages and add the missing regional coverage.How fresh is the data, and how often is it updated?+
as_of field in every response states the exact data date as declared by the source. There are no intra-year revisions, so the multiples reflect a single annual snapshot of US market conditions.