Azure Retail Price Cost Impact Report avatar

Azure Retail Price Cost Impact Report

Pricing

from $6.00 / 1,000 azure price rows

Go to Apify Store
Azure Retail Price Cost Impact Report

Azure Retail Price Cost Impact Report

Monitor official Azure Retail Prices for selected SKUs and regions. Receive source-linked price change alerts, estimated monthly cost impact reports, and exports without Azure authentication.

Pricing

from $6.00 / 1,000 azure price rows

Rating

0.0

(0)

Developer

naoki anzai

naoki anzai

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

FinOps and cloud architecture teams enter Azure service, region, SKU or meter, and a monthly usage quantity. The Actor reads the unauthenticated Azure Retail Prices API and compares the current snapshot with an isolated saved baseline. It returns source-linked price-change alerts, estimated monthly cost impact reports, and optional exports; baseline and unchanged checks emit zero rows and zero charges.

Store Quickstart

Run the first scheduled check with baseline_only. It saves the selected public price meter without delivering rows or charging PPE.

{
"scopes": [
{
"id": "eastus-b2s-linux",
"label": "East US B2s Linux",
"serviceName": "Virtual Machines",
"armRegionName": "eastus",
"armSkuName": "Standard_B2s",
"meterName": "B2s",
"productName": "Virtual Machines BS Series",
"priceType": "Consumption",
"usageQuantity": 730,
"usageUnit": "1 Hour",
"allowMultipleMatches": false
}
],
"monitorKey": "azure-finops-b2s-watch",
"initialRunMode": "baseline_only",
"generateReport": true,
"emitRawRows": false,
"emitExport": false,
"emitUnchanged": false,
"maxChargeUsd": 25,
"dryRun": false
}

After the baseline, run the same input on a schedule. When a selected meter price changes, the Actor delivers the previous price, current price, previous estimated monthly cost, current estimated monthly cost, delta, and official source URL. An unchanged run always delivers zero dataset rows and zero PPE charges, even if emitUnchanged is true.

Run the next report

Use emit_current for an explicit first report. It charges for the current matching price change rows and report because no prior baseline exists; previous cost is null until a prior successful snapshot exists.

{
"scopes": [
{
"id": "japaneast-blob-hot",
"label": "Japan East Blob Hot storage",
"serviceName": "Storage",
"armRegionName": "japaneast",
"meterName": "Hot LRS Data Stored",
"productName": "Blob Storage",
"priceType": "Consumption",
"usageQuantity": 1024,
"usageUnit": "1 GB/Month"
}
],
"monitorKey": "storage-hot-watch",
"initialRunMode": "emit_current",
"generateReport": true,
"emitRawRows": false,
"emitExport": true,
"maxChargeUsd": 25,
"dryRun": false
}

Input examples

Exact meter ID watch

{
"scopes": [
{
"id": "meter-id-watch",
"serviceName": "Virtual Machines",
"armRegionName": "eastus",
"meterId": "00000000-0000-0000-0000-000000000000",
"priceType": "Consumption",
"usageQuantity": 730,
"usageUnit": "1 Hour"
}
],
"monitorKey": "exact-meter-watch",
"initialRunMode": "baseline_only",
"generateReport": true,
"maxChargeUsd": 25,
"dryRun": false
}

Reservation term watch

{
"scopes": [
{
"id": "vm-one-year-reservation",
"serviceName": "Virtual Machines",
"armRegionName": "eastus",
"armSkuName": "Standard_B2s",
"meterName": "B2s",
"productName": "Virtual Machines BS Series",
"priceType": "Reservation",
"reservationTerm": "1 Year",
"usageQuantity": 730,
"usageUnit": "1 Hour"
}
],
"monitorKey": "reservation-watch",
"initialRunMode": "baseline_only",
"generateReport": true,
"maxPagesPerScope": 2,
"maxItemsPerScope": 10,
"maxChargeUsd": 25,
"dryRun": false
}

The API filter is exact and case-sensitive for the preview version. If a scope matches multiple distinct meters, the Actor stops by default rather than applying one usage quantity to an ambiguous set. Add a stronger selector such as meterId, productName, skuId, or set allowMultipleMatches: true only when applying the same quantity to multiple meters is intentional.

Output and pricing

See docs/sample-output.json for representative alert, report, and export rows. Current and previous values are linked to the official API URL, and monthly values are estimates based on the supplied usage quantity.

EventPriceDelivered when
azure-price-row$0.006Optional normalized current public price row
azure-price-change-alert$0.20A new, changed, or removed selected price meter is detected
azure-cost-impact-report$10.00Selected changes are summarized into a monthly cost-impact report
azure-price-export$6.00Selected changes are packaged into a source-linked JSON export

There is no start charge. The Actor estimates all configured event charges before the first push and stops if they exceed maxChargeUsd. State is committed only after successful delivery. Unknown billing events, failed state writes, missing chargedCount, and charge-limit responses fail closed.

Data source and safeguards

  • Source: Azure Retail Prices REST API, endpoint https://prices.azure.com/api/retail/prices.
  • No Azure subscription, login, API key, or tenant permission is required for this public endpoint.
  • USD is requested explicitly. Non-USD or malformed price rows are rejected.
  • The API request is bounded by maxPagesPerScope; matching items are bounded by maxItemsPerScope.
  • Only HTTPS requests to prices.azure.com under /api/retail/prices are accepted.
  • Public retail prices do not include your agreement, discount, credit, tax, free tier, or account-level usage context.
  • This Actor is not affiliated with or endorsed by Microsoft or Azure and does not provide procurement, financial, legal, or architecture advice.

See also

Development

npm test
npm start