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 Azure retail pricing. No API key / no login. Open Input → leave defaults → Start (1 Azure price row ≈ USD 0.006/row): https://console.apify.com/actors/MRVBMshVpFi4JWeh2/input From USD 6/1k.

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

3 days ago

Last modified

Share

Open Input (leave defaults → Start)

Paid first-run JSON ≈ Try Input: 1 Azure price row ≈ USD 0.006/row. From USD 6/1k. Paste a SKU/region scope and Start. Keep the first run bounded; this does not change the Actor's Store pricing. Open Console Input (deep link above) and run this JSON.

{
"scopes": [
{
"id": "eastus-b2s-linux",
"label": "B2s Linux example",
"serviceName": "Virtual Machines",
"armRegionName": "eastus",
"armSkuName": "Standard_B2s",
"meterName": "B2s",
"productName": "Virtual Machines BS Series",
"priceType": "Consumption",
"usageQuantity": 730,
"usageUnit": "1 Hour",
"allowMultipleMatches": false
}
],
"maxPagesPerScope": 1,
"maxItemsPerScope": 1,
"maxChargeUsd": 0.1,
"dryRun": false,
"__name": "azure-retail-price-cost-impact-report"
}

Store Quickstart

Run the bounded paid first-run JSON above first; keep report/export options off unless needed.

{
"scopes": [
{
"id": "eastus-b2s-linux",
"label": "B2s Linux example",
"serviceName": "Virtual Machines",
"armRegionName": "eastus",
"armSkuName": "Standard_B2s",
"meterName": "B2s",
"productName": "Virtual Machines BS Series",
"priceType": "Consumption",
"usageQuantity": 730,
"usageUnit": "1 Hour",
"allowMultipleMatches": false
}
],
"maxPagesPerScope": 1,
"maxItemsPerScope": 1,
"maxChargeUsd": 0.1,
"dryRun": false,
"__name": "azure-retail-price-cost-impact-report"
}

Use with Apify MCP

Exact actor: taroyamada/azure-retail-price-cost-impact-report

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.

Sample input JSON:

{
"scopes": [
{
"id": "eastus-b2s-linux",
"label": "B2s Linux example",
"serviceName": "Virtual Machines",
"armRegionName": "eastus",
"armSkuName": "Standard_B2s",
"meterName": "B2s",
"productName": "Virtual Machines BS Series",
"priceType": "Consumption",
"usageQuantity": 730,
"usageUnit": "1 Hour",
"allowMultipleMatches": false
}
],
"maxPagesPerScope": 2,
"maxItemsPerScope": 3,
"maxChargeUsd": 3
}

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