DBU Watch API and MCP server
Free, read-only access to the same Databricks prices as this site, as JSON or as tools for AI assistants. No key, no sign-up. Data as of 2026-10-27, refreshed daily.
Quick start
curl "https://www.dbuwatch.com/api/v1/prices?cloud=Azure&product=Jobs%20Compute&tier=Premium&limit=5"
curl "https://www.dbuwatch.com/api/v1/compare?product=sql_serverless"
curl "https://www.dbuwatch.com/api/v1/estimate?cloud=AWS&product=jobs&instance=m5d.2xlarge&nodes=4&hours=200"
Every response is JSON, carries as_of (the snapshot date) and a source line to cite, and is cached at the edge for a few hours. CORS is open, so it works from a browser. The full description is the OpenAPI 3.1 document.
Endpoints
| Endpoint | Returns |
|---|---|
GET /api/v1/ | API index. Name, version, data date, links to docs, spec and MCP server, and the endpoint list. |
GET /api/v1/meta | Dataset metadata. Snapshot date, record counts per cloud, sources, price types, caveats, license and citation. |
GET /api/v1/prices | List and filter prices. Current Databricks price records for AWS, Azure and GCP. |
GET /api/v1/products | List products. Every product per cloud with its tiers, units, price types, region count and price range. |
GET /api/v1/families | List product families. Cross-cloud product families, usable wherever a product is accepted: `jobs` means Jobs Compute on all three clouds. |
GET /api/v1/regions | List regions. Regions per cloud with record and product counts. |
GET /api/v1/compare | Compare one product across clouds. The $/DBU list price for one product on AWS, Azure and GCP side by side, with each cloud's min and max across regions and the cheapest cloud per DBU. |
GET /api/v1/estimate | Estimate a Databricks bill. DBUs x $/DBU, plus the VM on-demand list price for classic compute when that price is in the data. |
GET /api/v1/history | Price history. Price series with every observation: daily captures since October 2026 plus archived observations back to 2019, each linked to its source. |
GET /api/v1/changes | Daily change log. One entry per daily run with the price changes, new SKUs and removed SKUs found. |
GET /api/v1/openapi.json | This API as an OpenAPI 3.1 document. |
Base URL: https://www.dbuwatch.com/api/v1. Products can be given by their listed name (Jobs Compute, case-insensitive) or a cross-cloud family key such as jobs, all_purpose_photon or sql_serverless (see /api/v1/families).
Filters for /api/v1/prices
| Parameter | What it does |
|---|---|
cloud | Cloud (case-insensitive). |
product | Product name as listed (e.g. `Jobs Compute`, `SQL Serverless Compute`; case-insensitive) or a cross-cloud family key: jobs, jobs_photon, all_purpose, all_purpose_photon, jobs_light, dlt_core, dlt_core_photon, dlt_pro, dlt_pro_photon, dlt_advanced, dlt_advanced_photon, sql_classic, sql_pro, sql_serverless, serverless_jobs, serverless_interactive. |
tier | Plan tier: Premium, Enterprise (AWS/GCP), Standard (Azure). |
region | Region code or name as listed by /regions (AWS/GCP classic list prices use `all`; Azure uses ARM names such as `eastus`). |
unit | Unit of measure, e.g. `1 Hour (DBU)`. |
price_type | List (databricks.com), Consumption (Azure pay-as-you-go) or Reservation (Azure pre-purchase). |
q | Free-text filter over product, region and meter names (case- and punctuation-insensitive). |
id | Exact record id from a previous response. |
sort | Sort order. |
limit | Max records (1-500). |
offset | Records to skip (pagination; use next_offset). |
Parameters for /api/v1/estimate
| Parameter | What it does |
|---|---|
cloud (required) | Cloud. |
product (required) | Product name or family key (see `product` above). |
tier | Plan tier (default Premium). |
region | AWS/GCP: databricks.com region name (`US East (N. Virginia)`) or region code (`us-east-1`, `us-central1`); Azure: ARM name (`eastus`). Defaults: us-east-1 / us-central1 / eastus. |
instance | Classic compute instance type (`m5d.2xlarge`, `n2-standard-8`, `d8dsv5`). Use this or dbu_per_hour. |
dbu_per_hour | DBUs per hour per node. Use this or instance (required for serverless and SQL). |
nodes | Nodes (driver + workers). |
hours | Hours in the period (730 = a month always on). |
What the numbers mean
- price_usd: the public list price (AWS, Google Cloud: databricks.com) or pay-as-you-go price (Azure Retail Prices API) in USD per unit.
1 Hour (DBU)means per DBU. Discounts and committed-use pricing aren't included. - region
all: AWS and Google Cloud list one price for classic compute in every region. - Estimates multiply the instance's DBU/hour rating (from the Databricks instance list or the Azure calculator) by nodes, hours and $/DBU. For classic compute they add the VM's on-demand list price when it's in our data. When it isn't,
vm.includedisfalse, the total covers DBUs only andvm.reasonsays why. VM prices are never guessed. - History points are
daily_capture(our daily check),archived_page(an Internet Archive capture of a pricing page) orazure_effective_date(Microsoft's own effective date). See the methodology.
MCP server for AI assistants
Add DBU Watch to Claude, ChatGPT, Cursor or any client that supports remote MCP servers, then ask things like “what does Jobs Compute cost on Azure vs AWS?” or “estimate a month of 4 × m5d.2xlarge jobs clusters”. Server URL (Streamable HTTP, no sign-in):
https://www.dbuwatch.com/mcp
| Tool | Inputs | What it answers |
|---|---|---|
estimate_databricks_bill | cloud, product, tier, region, instance or dbu_per_hour, nodes, hours | A bill estimate: DBUs times $/DBU, plus the VM list price for classic compute when we have it. |
compare_sku_prices | product, tier, azure_region | One product's $/DBU on AWS, Azure and GCP side by side, with each cloud's regional range. |
get_price_history | product, cloud, tier, region, since | Whether and when a price changed, with every observation linked to its source. |
get_price | cloud, product, tier, region, q | Current price records matching the filters. |
How to connect
- Claude (web and desktop): Settings › Connectors › Add custom connector, and paste the server URL.
- Claude Code: run this command:
claude mcp add --transport http dbu-watch https://www.dbuwatch.com/mcp
- ChatGPT: with developer mode on, Settings › Connectors › Create, and paste the server URL (no authentication).
- Cursor: add it to
~/.cursor/mcp.json:
{ "mcpServers": { "dbu-watch": { "url": "https://www.dbuwatch.com/mcp" } } }
- VS Code: add it to
.vscode/mcp.json:
{ "servers": { "dbu-watch": { "type": "http", "url": "https://www.dbuwatch.com/mcp" } } }
The server is stateless and read-only. It answers JSON-RPC over POST; a GET returns 405 because there's no event stream. Its server card is at /mcp/server-card.
Errors
Errors use RFC 9457 problem details (application/problem+json) with a stable code and a hint:
| code | HTTP | When |
|---|---|---|
not_found | 404 | No endpoint at that path. |
product_not_found | 404 | Unknown product name or family key; the body may include suggestions. |
price_not_found | 404 | The product has no price for that tier or region; the hint lists the ones that do. |
instance_not_found | 404 | Unknown instance type for that cloud; the body may include suggestions. |
invalid_parameter | 400 | A query parameter is missing, out of range or unknown (for example limit=0, an unknown cloud or region, or both instance and dbu_per_hour). |
method_not_allowed | 405 | Anything but GET, HEAD or OPTIONS on the API, or a GET on /mcp (the MCP server takes POST). |
payload_too_large | 413 | An MCP request body over 1 MB. |
rate_limited | 429 | More than 120 requests a minute from one address. Wait for Retry-After seconds. |
internal_error | 500 | Something broke on our side. Try again later. |
Limits, caching and versioning
- 120 requests a minute per address, counted per server instance, shown in the
RateLimitandRateLimit-Policyheaders. Responses are cached at the edge, so repeat calls are fast. - Responses have an
ETag; sendIf-None-Matchto get a 304. /api/v1/stays stable. A breaking change would ship as/api/v2/, with v1 kept running.
Discovery files
- /api/v1/openapi.json (OpenAPI 3.1, also at /openapi.json)
- /.well-known/api-catalog (RFC 9727 API catalog)
- /mcp/server-card and /.well-known/mcp.json (MCP server card)
- /llms.txt (site guide for AI agents) and the bulk data files /data/latest.json and /data/history.json
License and credit
The data is free to reuse under CC BY 4.0. Credit “DBU Watch (https://www.dbuwatch.com/), Databricks list prices as of …” with the as_of date. Questions or a field you need: hello@dbuwatch.com.