Checking actual GCP prices

How to look up the real price of a GCP resource — direct from Google’s billing catalog, not from third-party blog posts, calculator widgets, or guesses.

The source of truth: the Cloud Billing Catalog API

Every SKU you can be charged for is in https://cloudbilling.googleapis.com/v1/services/{service-id}/skus. The catalog is read-only, free to query, region-aware, and the same data that drives the official pricing pages on cloud.google.com. No registration required beyond a normal authenticated GCP identity.

The API response includes, for each SKU:

  • A human description (e.g. "E2 Custom Instance Core running in Dammam")
  • The list of regions it applies to
  • A pricingExpression with tieredRates, each tier having a unitPrice (units + nanos) and a usageUnit (h, mo, GiBy.mo, count, etc.)

The price is units + nanos / 1e9 USD per usageUnit.

The reusable script: scripts/gcp-prices.py

scripts/gcp-prices.py queries the catalog for a curated set of services and prints a markdown table. Authenticates as the active gcloud user (you).

# Default: every service we care about, in me-central2
python3 scripts/gcp-prices.py

# A specific service:
python3 scripts/gcp-prices.py --service Storage

# Compare a region (us-central1 is usually the cheapest baseline):
python3 scripts/gcp-prices.py --region us-central1

# Free-text filter on top of the curated set:
python3 scripts/gcp-prices.py --grep "L4"

# Or: dump every SKU in the region (ignore curated filters):
python3 scripts/gcp-prices.py --service Memorystore --all-skus

To find the service ID for something not yet in the script:

curl -sS -H "Authorization: Bearer $(gcloud auth print-access-token)" 
  "https://cloudbilling.googleapis.com/v1/services?pageSize=2000" 
  | python3 -c 'import json,sys
for s in json.load(sys.stdin)["services"]:
    if "filebeat" in s["displayName"].lower():  # adjust the substring
        print(s["serviceId"], s["displayName"])'

Then add it to SERVICE_IDS in the script.

Real me-central2 prices (verified 2026-05-13)

Hard numbers for the things we actually use or are about to use. Use this table over any external blog post / calculator.

Compute Engine

ResourcePrice
E2 Custom Instance Core, on-demand$0.036643/h (~$26.75/mo per core)
E2 Custom Instance RAM, on-demand$0.004912/GiB·h (~$3.59/mo per GiB)
G2 Custom Instance Core (for L4 GPU node)$0.041980/h (~$30.65/mo per core)
G2 Custom Instance RAM$0.004918/GiB·h (~$3.59/mo per GiB)
N2 Custom Instance Core$0.053106/h (~$38.77/mo per core)
Spot E2 Core$0.015360/h (~58% discount)
Spot G2 Core$0.018060/h (~57% discount)

Persistent Disks

TypePrice
pd-balanced, capacity$0.16/GiB·mo
pd-balanced, regional (HA, dual-zone)$0.32/GiB·mo
PD Snapshot storage$0.08/GiB·mo

GPUs

GPUOn-demandSpot
NVIDIA L4 (the only one available in me-central2)$0.896064/h (~$654/mo always-warm)$0.448/h (~$327/mo)
1-year committed L4$0.564521/h (~$412/mo, 37% off on-demand)
3-year committed L4$0.403229/h (~$294/mo, 55% off)

T4 and other GPU types appear in the catalog but are not actually available in me-central2 zones — the plan doc’s §0 of 01-architecture-summary confirms only L4 in zones -a and -c.

External IPs

WhatPrice
Static IP attached to a Standard VM$0/h (free at this scale)
External IP on a Spot VM$0.0025/h ($1.83/mo)

(Stale blog posts mention $0.005/h. The current catalog says $0 for standard VMs.)

Cloud Storage (Dammam)

ClassPrice
Standard$0.030/GiB·mo
Nearline$0.018/GiB·mo
Coldline$0.006/GiB·mo
Archive$0.0027/GiB·mo

Cloud Memorystore (Redis)

Tiered by node size — M1 (largest, cheapest per GB) to M5 (smallest, most expensive per GB):

TierStandardBasic
M5 (smallest)$0.0256/GiB·h (~$18.69/mo per GiB)$0.0256/GiB·h
M4$0.0304/GiB·h$0.0304/GiB·h
M3$0.0368/GiB·h$0.0368/GiB·h
M2$0.0432/GiB·h$0.0432/GiB·h
M1$0.0480/GiB·h (~$35/mo per GiB)(Standard only)

So the plan’s “M1 Standard 4 GB” → ~$140/mo.

Cloud SQL

ResourcePrice
Postgres custom CORE, regional (HA)(looked up per-instance; see --service CloudSQL for full list)

KMS (global pricing, no regional premium)

Key classPrice
Active software keys$0.06/mo per active version
Active HSM symmetric$1.00/mo
Active HSM asymmetric (RSA / ECDSA / etc.)$1.00-$2.50/mo
Software crypto operations$0.000003/operation (~$3 per million)

Pub/Sub

  • Message delivery (basic): free tier, then ~$50/TiB after exceeding limits
  • Trivial cost at our pilot scale

Artifact Registry

  • Storage: $0.10/GiB·mo (above 0.5 GB free tier)
  • Egress within region: free

How to use this in practice

When sizing infrastructure or sanity-checking a cost estimate:

  1. Run python3 scripts/gcp-prices.py --service <X> to get the current numbers
  2. Multiply by quantity (cores, GB, hours, etc.)
  3. Sum across resources
  4. Add the cost-guardrails buffer (~10-20%) for incidentals (egress, ops, surprises)

Don’t trust calculators, blog posts, or memory. The catalog is the truth.

How often to refresh

The catalog changes infrequently — maybe a price change every quarter or so. We refresh this doc when:

  • We’re sizing a new milestone’s infrastructure
  • We see a billing-alert threshold cross
  • It’s been more than 6 months since the last verification

Always include the fetch date in any cost estimate that references these numbers.

WiqAIa+ Docs · Rizoma