Cloud Compute Price Comparison — AWS + Azure VM Pricing avatar

Cloud Compute Price Comparison — AWS + Azure VM Pricing

Pricing

from $20.00 / 1,000 price-change-alerts

Go to Apify Store
Cloud Compute Price Comparison — AWS + Azure VM Pricing

Cloud Compute Price Comparison — AWS + Azure VM Pricing

Compare AWS EC2 and Azure VM on-demand cloud pricing (cost comparison, FinOps pricing lookup) in one normalized schema — skips learning AWS's Price List API and Azure's Retail Prices API separately, each with own fields and instance-naming. Optional price-change alerts. From $0.004/result (PPE).

Pricing

from $20.00 / 1,000 price-change-alerts

Rating

0.0

(0)

Developer

Dennis

Dennis

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Compare AWS EC2 and Azure VM on-demand cloud pricing (cost comparison, FinOps pricing lookup) in one normalized schema — no manual per-provider pricing-page lookups, no separate integrations for AWS's Price List API and Azure's Retail Prices API, each with its own fields and instance-naming convention. Optional price-change alerts flag when a price moves between scheduled runs. From $0.004/result (PPE).

Apify Store Pay Per Event LICENSE


Why This Actor?

AWS and Azure both publish free, authentication-free pricing APIs — but each has its own field names, its own instance-naming convention, and its own filtering quirks. Building your own integration against both means learning two different schemas. Existing Apify actors in this space focus specifically on GPU-cloud pricing (Runpod/Vast.ai); a broad, provider-normalized comparison of standard AWS + Azure on-demand VM pricing is not covered by any existing actor at time of writing.


When should an AI agent use this?

Use this actor when a user asks an AI agent questions like:

  • "What does a 4 vCPU/8 GB Linux VM cost on AWS vs. Azure in Western Europe right now?"
  • "List AWS eu-west-1 on-demand Linux instance prices under $0.20/hour."
  • "Compare Azure westeurope Windows VM pricing to AWS eu-west-1."
  • "Alert me if AWS or Azure changes their on-demand VM pricing since last week."
  • "Get me AWS + Azure compute pricing as structured data for a FinOps cost model."

What this Actor does

  • Fetches on-demand VM pricing from AWS's Price List API (regional EC2 bulk price index) and Azure's Retail Prices API.
  • Normalizes both into one schema: provider, region, instanceType, vcpu, ramGb, operatingSystem, pricePerHourUsd.
  • Filters by instance type/SKU name, minimum vCPU, minimum RAM, and OS (Linux or Windows).
  • Optional price-change tracking: compares each provider+region+instance-type price with the previous run (via the actor's key-value store) and flags significant changes.
  • No scraping — both sources are official, documented, authentication-free public pricing APIs.

Input

FieldTypeDefaultDescription
providersstring[]["aws","azure"]Which providers to fetch
awsRegionsstring[]["eu-west-1"]AWS region codes. Each region downloads AWS's full regional EC2 price index (hundreds of MB) — keep this list short
azureRegionsstring[]["westeurope"]Azure ARM region names
operatingSystem"Linux" | "Windows""Linux"Applies to both providers
instanceTypeFilterstringnoneCase-insensitive substring match on instance type/SKU, e.g. "m5" or "Standard_D2s"
vcpuMinintegernoneMinimum vCPUs. Excludes all Azure results if set — see limitations below
ramGbMinintegernoneMinimum RAM in GB. Excludes all Azure results if set — see limitations below
maxResultsPerProviderinteger500Max records per provider (1–20000)
trackPriceChangesbooleanfalseCompare each record's price with the previous run
priceChangeThresholdPercentageinteger5Minimum absolute % change to count as a price-change-alert

Output

{
"provider": "aws",
"instanceType": "c8in.xlarge",
"region": "eu-west-1",
"vcpu": 4,
"ramGb": 8,
"operatingSystem": "Linux",
"pricePerHourUsd": 0.1936,
"pricingModel": "on_demand",
"sourceUrl": "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/eu-west-1/index.json",
"lastUpdated": "2026-07-15T13:21:35.000Z",
"previousPricePerHourUsd": null,
"priceChangePercentage": null,
"priceChangeAlert": false
}

Price-change alerts (trackPriceChanges, optional, separately charged)

With trackPriceChanges: true, each record is compared with the previous run (via the actor's key-value store) for the same provider+region+instanceType: previousPricePerHourUsd and priceChangePercentage. priceChangeAlert is true only when the absolute percentage change reaches priceChangeThresholdPercentage (default 5%). The first run for a given combination has nothing to compare against, so these fields stay null/false rather than a guessed value. Only alerted records are charged the extra price-change-alert event.

Field Reference

FieldTypeDescription
providerstring"aws" or "azure"
instanceTypestringAWS instance type (e.g. "c8in.xlarge") or Azure ARM SKU name (e.g. "Standard_D2s_v3")
regionstringAWS region code or Azure ARM region name
vcpunumber | nullvCPU count. Always null for Azure — see limitations
ramGbnumber | nullRAM in GB. Always null for Azure — see limitations
operatingSystemstring"Linux" or "Windows"
pricePerHourUsdnumberOn-demand hourly price in USD
pricingModelstringAlways "on_demand" in v1
sourceUrlstringLink to the source API endpoint used
lastUpdatedstringISO timestamp from the source data (AWS: file publication date; Azure: meter effective date)

Known limitations

  • Azure records never have vcpu/ramGb: Azure's Retail Prices API does not expose these fields at all (confirmed via live testing 2026-07-15) — only price, region and SKU/meter name. Setting vcpuMin/ramGbMin will therefore exclude every Azure result. Leave these filters unset when comparing both providers, or use instanceTypeFilter instead (Azure SKU names like Standard_D2s_v3 encode size in the name, but this actor does not parse that convention in v1).
  • AWS regions are expensive to query: AWS's Price List API has no server-side filtering beyond region — a single region's EC2 price file is several hundred MB, downloaded in full on every run regardless of your filters. Adding many awsRegions multiplies run time/bandwidth accordingly.
  • On-demand pricing only in v1 — no Reserved Instances, Savings Plans, or Spot pricing.
  • GCP, Hetzner, DigitalOcean and OVH are not included: all four require a user-supplied API key/account token (confirmed via live testing), unlike AWS/Azure which are fully public.

Use cases

  • FinOps / cloud cost comparison: build a cost model comparing AWS and Azure for a target VM size without manually checking both pricing calculators.
  • Indie hosting / infra planning: find the cheapest provider for a specific instance shape.
  • Price monitoring: schedule runs with trackPriceChanges: true to get notified when a provider changes its on-demand pricing.
  • AI agents / MCP tooling: structured multi-cloud pricing data as context for infrastructure-planning or cost-advisory agents.

Pricing

This Actor uses Apify's Pay-Per-Event (PPE) pricing model.

  • Actor Start: $0.00005 (Apify default)
  • price-record: $0.004 per normalized VM price record returned
  • price-change-alert: $0.02 extra, only with trackPriceChanges enabled and only when the price change vs. the previous run reaches the threshold

  • AWS Price List API: official, publicly documented AWS service built specifically for programmatic price lookups. No authentication, no scraping.
  • Azure Retail Prices API: official Microsoft REST API published for this exact purpose (successor to the older Commerce RateCard API). No authentication, no scraping.
  • No personal data is processed — all data is commercial cloud-infrastructure pricing, not individual businesses or people.

FAQ

Why is vcpu/ramGb always null for Azure records? Azure's Retail Prices API simply doesn't return this data (confirmed via live testing) — only AWS exposes it directly in its price-list attributes.

How fresh is the data? Both sources publish live pricing — every run fetches directly from AWS/Azure, no caching layer. AWS's regional price file is regenerated multiple times per day; Azure's Retail Prices API is queried live per request.

Why do AWS runs take longer than Azure runs? AWS's Price List API has no server-side filtering beyond region — this actor downloads the full regional price file and filters/matches on-demand pricing internally. Azure's API supports server-side $filter, so it only transfers matching records.

Are GCP/Hetzner/DigitalOcean/OVH planned? All four require the user to supply their own API key or account token to that provider (confirmed via live testing — none offer a fully public pricing feed like AWS/Azure). Not in v1; could be added as a bring-your-own-credentials option in a future version.


Keywords

cloud, aws, azure, ec2, virtual-machines, compute, pricing, cost-comparison, finops, price-monitor


Changelog

0.1.0

  • Initial release: AWS EC2 + Azure Virtual Machines on-demand pricing, normalized to one schema, optional price-change tracking between scheduled runs.
  • 2026-08-16: agent-readiness pass — task-oriented description with explicit synonyms (cost comparison, FinOps pricing lookup), a decision-benefit sentence and a price indication in .actor/actor.json/STOREINFO.md/README, so an LLM reading the Store listing via MCP can weigh it in tool selection. No behavior/output changes. Checked for a per-item error/errorCode pattern (as piloted on pdok-locatieserver) — not applicable here: AWS/Azure fetch errors are thrown and fail the whole run rather than being caught per record, so no errorCode field was added.