How anonymous teaser access, free-account access to the full multiples database, and authenticated connector access differ on the Upswitch Index API.
The Upswitch Index API keeps anonymous access teaser-safe: public requests can browse the benchmark surface, while signed-in free accounts unlock the full database of EV/EBITDA, EV/Revenue, and P/E multiples. Historical vintages, draft preview, and audit-grade exports remain paid/authenticated surfaces.
GET /api/benchmarks/v1/index
Query parameters mirror the index UI: country_code (ISO, e.g. BE, NL, GB, DE) scopes rows to that market (non-Benelux markets use region-wide GLOBAL rows plus that country). Optional business_type_id returns the exact published activity slice used by business-type detail pages. Optional benelux_scope=aggregate with no country_code returns only Benelux-wide aggregate rows (null country_code) for integrations — the public index UI uses a per-country filter instead. Optional metric_name (exact, e.g. EV_EBITDA); optional min_confidence (default 0; use e.g. 0.3 to filter, comma or dot decimals); as_of and snapshot_id are available for Pro vintages; optional locale (en or nl) for business type row titles (default en; falls back to canonical titles when a translation is missing). Anonymous access stays teaser-safe; signed-in free accounts unlock the full database; draft_preview requires a Pro session or API token.
All endpoints are read-only GET requests. Anonymous access is teaser-safe; signed-in free accounts unlock the full database; Pro-only endpoints require a personal access token or browser session.
GET /api/benchmarks/v1/index — Anonymous teaser rows, or the full database for signed-in users; add include_market_data=1 for country market context (draft_preview requires Pro session or API token)
GET /api/benchmarks/v1/snapshots — Published vintage list (public; Pro sees all vintages)
GET /api/benchmarks/v1/audit — Row-level audit JSON (Pro session or API token; source detail redacted)
GET /api/benchmarks/v1/audit/pdf — Audit PDF working paper (Pro session or API token)
GET /api/benchmarks/v1/accuracy — Backtest accuracy summary (public)
GET /api/benchmarks/v1/diff?from=&to= — Diff between two published vintages (public; Pro for non-active 'from' snapshot)
GET /api/benchmarks/v1/sources — Named sourcing registry by country (public; IP-rate-limited; same data as /markets/sources)
GET /api/benchmarks/v1/country-summary?country_code= — Published business-type counts by country_basis for the active vintage (public; matches the country-page evidence footnote)
GET /api/benchmarks/v1/market-data — Country macro, currency, tax, risk-free, and country-risk inputs for all published markets (public; country_code=BE for one market, countries=BE,NL,DE for a bounded set, format=csv for Excel export)
GET /api/benchmarks/v1/context — Model-ready bundle with multiples plus embedded country market data in one JSON response (same filters as /index; add format=csv for a flat Excel-ready export)
GET /api/benchmarks/v1/openapi.json — Versioned OpenAPI 3.1 spec for this API (public)
The full machine contract for this API is published as OpenAPI 3.1 at /api/benchmarks/v1/openapi.json. Drop it into Postman, Insomnia, Stoplight, or your preferred SDK generator. The spec is the citable reference for downstream M&A tooling — Excel models, deal binders, fairness-opinion workpapers — and is the canonical record of which fields are public-safe vs. Pro-gated.
Open the OpenAPI spec →Each index row may include a coarse `source_alignment` field (`independent_confirmation`, `single_source`, or `not_disclosed`) — a trust signal only, with no provider names, raw evidence counts, or blend weights. Public rows also return a bounded `provenance` object (selected triage layer, freshness band, optional NACE walk) and `evidence_class` (`observed` / `hybrid` / `inferred`); they still omit `source_mix`, citations, chain-of-thought, and other raw attribution. The product is the benchmark standard itself, not a data-vendor disclosure feed.
Pro users can generate personal access tokens from their account settings. Tokens grant the same privileges as a browser session: historical vintages, draft preview, audit JSON, and audit PDFs.
curl -H "Authorization: Bearer upat_..." /api/benchmarks/v1/index?draft_preview=1
Alternative: curl -H "x-api-key: upat_..." /api/benchmarks/v1/index
Tokens are rate-limited at 600 requests per minute (vs 120/min per IP for anonymous access). Create and revoke tokens under Settings → API Access in your Upswitch dashboard.
All responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers so you can track your quota programmatically. When the limit is exceeded, the API returns 429 with a Retry-After header.
All benchmark endpoints support CORS (Access-Control-Allow-Origin: *) and handle OPTIONS preflight requests, so tokens can be used from browser-based applications.
Paid integrations that need richer multiples access, automation, or provenance belong on authenticated API routes with contractual access control. That keeps the public benchmark surface clean while still supporting institutional workflows.
Examples: /api/benchmarks/v1/current, /history, /coverage
Upswitch.app
This database is the public benchmark layer. Upswitch is the full platform: company-specific valuations, client-ready reports, advisor workflow, and API access for teams. Free accounts work across both.