| name | azure-pricing |
| description | Azure retail pricing and cost estimate workflow. Use when estimating Azure service costs, comparing SKUs or regions, building dev/uat/prd cost tables, pricing Azure Container Apps, PostgreSQL, Redis, Service Bus, Event Hubs, Storage, Key Vault, Log Analytics, or validating Azure monthly cost assumptions. |
Azure Pricing
Source: adapted from github/awesome-copilot skill azure-pricing and aligned to this repo's Azure Container Apps/Terraform environment model.
When to Use
- Estimating monthly or annual Azure costs
- Comparing SKUs, regions, reservations, savings plans, or pay-as-you-go pricing
- Supporting
@cost-estimator or az-cost-optimize work
- Pricing this repo's
dev, uat, and prd Terraform environments
Preferred Data Source
- Prefer Azure MCP pricing tools when available.
- If MCP pricing is unavailable, use the public Azure Retail Prices API:
GET https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview&$filter=<odata-filter>
Use 2023-01-01-preview so savings plan data is included when available.
Procedure
- Identify service, SKU, meter, region, currency, price type, and usage pattern.
- Resolve the region to an
armRegionName using REGIONS.md. This repo defaults to centralus unless a tfvars file says otherwise.
- Resolve the exact
serviceName using SERVICE-NAMES.md. The API is case-sensitive.
- Build the OData filter with fields such as
serviceName, serviceFamily, armRegionName, armSkuName, skuName, meterName, and priceType.
- Parse the returned
Items array and prefer rows with isPrimaryMeterRegion = true unless the user asks otherwise.
- Follow
NextPageLink if the response is paged.
- Convert unit prices to monthly and annual estimates using COST-ESTIMATOR.md.
- Show assumptions clearly: hours/month, utilization, storage volume, transactions, throughput units, replica counts, or retention.
Common Filters
serviceName eq 'Azure Container Apps' and armRegionName eq 'centralus' and priceType eq 'Consumption'
serviceName eq 'Azure Database for PostgreSQL' and armRegionName eq 'centralus'
serviceName eq 'Redis Cache' and armRegionName eq 'centralus'
serviceName eq 'Service Bus' and armRegionName eq 'centralus'
serviceName eq 'Event Hubs' and armRegionName eq 'centralus'
serviceName eq 'Storage' and armRegionName eq 'centralus'
serviceName eq 'Log Analytics' and armRegionName eq 'centralus'
Output Format
| Service | SKU | Region | Unit Price | Unit | Monthly Est. | Annual Est. | Assumptions |
|---|---|---|---:|---|---:|---:|---|
| Azure Container Apps | Consumption | centralus | $X | vCPU-second | $Y | $Z | 730h, 50% avg utilization |
Troubleshooting
- Empty results: remove the most specific filter first, usually
armSkuName or priceType.
- Wrong service: search by
serviceFamily in the target region to discover exact service names.
- Unexpected duplicates: filter to
isPrimaryMeterRegion = true and compare meterName/productName.
- Currency mismatch: note that default API prices are USD unless
currencyCode is requested.