Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Get Azure VM and VM Scale Set recommendations based on workload, performance, and budget needs.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/retail-prices-api.md
1# Azure Retail Prices API Guide23The [Azure Retail Prices API](https://learn.microsoft.com/en-us/rest/api/cost-management/retail-prices/azure-retail-prices) is **unauthenticated** — no Azure account or subscription needed.45## Endpoint67```text8https://prices.azure.com/api/retail/prices9```1011Preview version (includes savings plan rates):12```text13https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview14```1516## Querying VM Prices1718> **No Azure CLI command exists** for the Retail Prices API. Since the API is unauthenticated, use `curl` (bash) or `Invoke-RestMethod` (PowerShell) directly. The `az rest` command also works but adds no auth benefit.1920### Basic VM price lookup2122```http23GET https://prices.azure.com/api/retail/prices?$filter=serviceName eq 'Virtual Machines' and armRegionName eq 'eastus' and armSkuName eq 'Standard_D4s_v5' and priceType eq 'Consumption'24```2526```bash27curl -s "https://prices.azure.com/api/retail/prices?\$filter=serviceName%20eq%20'Virtual%20Machines'%20and%20armRegionName%20eq%20'eastus'%20and%20armSkuName%20eq%20'Standard_D4s_v5'%20and%20priceType%20eq%20'Consumption'"28```2930```powershell31$filter = "serviceName eq 'Virtual Machines' and armRegionName eq 'eastus' and armSkuName eq 'Standard_D4s_v5' and priceType eq 'Consumption'"32$response = Invoke-RestMethod "https://prices.azure.com/api/retail/prices?`$filter=$filter"33$response.Items | Select-Object armSkuName, retailPrice, unitOfMeasure, meterName34```3536### Filter by family (all D-series in a region)3738```http39GET https://prices.azure.com/api/retail/prices?$filter=serviceName eq 'Virtual Machines' and armRegionName eq 'eastus' and contains(armSkuName, 'Standard_D') and priceType eq 'Consumption'40```4142```bash43curl -s "https://prices.azure.com/api/retail/prices?\$filter=serviceName%20eq%20'Virtual%20Machines'%20and%20armRegionName%20eq%20'eastus'%20and%20contains(armSkuName,%20'Standard_D')%20and%20priceType%20eq%20'Consumption'"44```4546```powershell47$filter = "serviceName eq 'Virtual Machines' and armRegionName eq 'eastus' and contains(armSkuName, 'Standard_D') and priceType eq 'Consumption'"48$response = Invoke-RestMethod "https://prices.azure.com/api/retail/prices?`$filter=$filter"49$response.Items | Select-Object armSkuName, retailPrice, meterName50```5152### Reservation pricing5354```http55GET https://prices.azure.com/api/retail/prices?$filter=serviceName eq 'Virtual Machines' and armSkuName eq 'Standard_D4s_v5' and priceType eq 'Reservation'56```5758```bash59curl -s "https://prices.azure.com/api/retail/prices?\$filter=serviceName%20eq%20'Virtual%20Machines'%20and%20armSkuName%20eq%20'Standard_D4s_v5'%20and%20priceType%20eq%20'Reservation'"60```6162```powershell63$filter = "serviceName eq 'Virtual Machines' and armSkuName eq 'Standard_D4s_v5' and priceType eq 'Reservation'"64$response = Invoke-RestMethod "https://prices.azure.com/api/retail/prices?`$filter=$filter"65$response.Items | Select-Object armSkuName, retailPrice, reservationTerm, meterName66```6768### Non-USD currency6970Append `currencyCode` parameter:71```http72GET https://prices.azure.com/api/retail/prices?currencyCode='EUR'&$filter=serviceName eq 'Virtual Machines' and armSkuName eq 'Standard_D4s_v5'73```7475```bash76curl -s "https://prices.azure.com/api/retail/prices?currencyCode='EUR'&\$filter=serviceName%20eq%20'Virtual%20Machines'%20and%20armSkuName%20eq%20'Standard_D4s_v5'"77```7879```powershell80$filter = "serviceName eq 'Virtual Machines' and armSkuName eq 'Standard_D4s_v5'"81$response = Invoke-RestMethod "https://prices.azure.com/api/retail/prices?currencyCode='EUR'&`$filter=$filter"82$response.Items | Select-Object armSkuName, retailPrice, currencyCode, meterName83```8485## Available Filters8687| Filter | Example Value | Notes |88| --------------- | -------------------------------- | ------------------------------ |89| `serviceName` | `'Virtual Machines'` | Case-sensitive in preview API |90| `armRegionName` | `'eastus'`, `'westeurope'` | ARM region name |91| `armSkuName` | `'Standard_D4s_v5'` | Full ARM SKU name |92| `priceType` | `'Consumption'`, `'Reservation'` | Pay-as-you-go vs reserved |93| `serviceFamily` | `'Compute'` | Broad category |94| `productName` | `'Virtual Machines Dv5 Series'` | Product line |95| `meterName` | `'D4s v5'`, `'D4s v5 Spot'` | Includes Spot and Low Priority |9697> **Warning:** Filter values are **case-sensitive** in API version `2023-01-01-preview` and later.9899## Response Fields100101| Field | Description |102| ---------------------- | ------------------------------------------------------------------ |103| `armSkuName` | ARM SKU name (e.g., `Standard_D4s_v5`) |104| `retailPrice` | Microsoft retail price (USD unless overridden) |105| `unitOfMeasure` | Usually `1 Hour` for VMs |106| `armRegionName` | Region code |107| `meterName` | Human-readable meter (includes "Spot" / "Low Priority" variants) |108| `productName` | Product line with OS (e.g., "Virtual Machines Dv5 Series Windows") |109| `type` | `Consumption`, `Reservation`, or `DevTestConsumption` |110| `reservationTerm` | `1 Year` or `3 Years` (reservation only) |111| `savingsPlan` | Array with `term` and `unitPrice` (preview API only) |112| `isPrimaryMeterRegion` | Filter to `true` to avoid duplicate regional meters |113114## Pagination115116API returns max 1,000 records per request. Follow `NextPageLink` in the response to get more:117118```json119{ "NextPageLink": "https://prices.azure.com:443/api/retail/prices?$filter=...&$skip=1000" }120```121122## Tips for Recommendations1231241. **Filter Linux vs Windows**: `productName` contains the OS — e.g., `'Virtual Machines Dv5 Series'` (Linux) vs `'Virtual Machines Dv5 Series Windows'`1252. **Use `isPrimaryMeterRegion eq true`** to deduplicate1263. **Compare Consumption + Reservation + Savings Plan** for full cost picture1274. **Monthly estimate**: `retailPrice × 730` (hours/month)1285. **Spot pricing**: Filter `meterName` containing `'Spot'` for discounted interruptible VMs129