---
title: "v0.2.0 Pricing API Provider Analysis"
created: "2026-05-13"
scope: "Alibaba Cloud, Huawei Cloud, Scaleway, Contabo, Hetzner Cloud, IONOS Cloud, OVHcloud, GCP"
status: "research-complete"
---

# v0.2.0 Pricing API Provider Analysis

## 1. Executive Summary

This document classifies the 8 target providers by pricing API availability, identifies
integration complexity, and establishes a recommended implementation order for Phase 2
skill extension and Phase 4 testing.

### Classification

| Category | Providers |
|----------|-----------|
| **Official, structured, unauthenticated API** | Hetzner Cloud |
| **Official API — authentication required** | GCP (Cloud Billing Catalog API), Scaleway, OVHcloud, IONOS Cloud (partial), Contabo (pricing embedded in instance API) |
| **Official structured data — no REST API, requires parsing** | Alibaba Cloud (BSS OpenAPI: auth-gated price queries), Huawei Cloud (CBC API: auth-gated price queries) |
| **Scrape-only / static page** | Contabo (public pricing), IONOS (public prices page as canonical fallback) |

### Key Finding

No provider among the 8 exposes a fully public, unauthenticated, machine-readable
JSON pricing catalog comparable to AWS Price List API. The closest is **Hetzner Cloud**,
whose `/pricing` endpoint returns structured JSON with no authentication needed. All
other providers either gate pricing behind auth or publish it as an HTML page only.

---

## 2. Per-Provider Detailed Analysis

### 2.1 Hetzner Cloud

| Attribute | Detail |
|-----------|--------|
| **Official API** | Yes — `/pricing` endpoint in the Hetzner Cloud REST API |
| **API endpoint** | `GET https://api.hetzner.cloud/v1/pricing` |
| **Authentication** | None required for the `/pricing` endpoint specifically. A valid API token is required for all other Hetzner Cloud API calls, but the pricing response is fully public. In practice, requests without a token do return pricing data, though Hetzner's docs show the token header for completeness. |
| **Response format** | JSON |
| **Resource types covered** | Server types (CX shared, CCX dedicated, CAX ARM), Volumes, Load Balancers, Floating IPs, Primary IPs, Snapshots, Traffic included/extra |
| **Currency support** | EUR (native); USD shown in Cloud Console but not in the API response body directly — the `/pricing` endpoint returns EUR-denominated values only |
| **Rate limits** | Standard Hetzner API rate limit: 3,600 requests/hour per token; pricing endpoint is idempotent/read-only so limits are unlikely to be a concern |
| **Auth requirement** | Technically none for read-only pricing; project token recommended for full API parity |
| **Documentation** | https://docs.hetzner.cloud/#prices |
| **Fallback page** | https://www.hetzner.com/cloud#pricing |
| **Stability** | High — endpoint has been stable since API v1 launch; Hetzner uses semantic versioning for breaking changes |
| **Notes** | The `/pricing` response covers the full Cloud product catalog. Dedicated server (Robot) pricing is NOT included and requires the Robot API or web page. Storage Box pricing is also not in the Cloud API. |

---

### 2.2 Scaleway

| Attribute | Detail |
|-----------|--------|
| **Official API** | Partial — Scaleway has a REST API for managing resources. A machine-readable pricing endpoint (`/billing/v2beta1`) was in beta as of mid-2025 and not publicly documented as stable. |
| **API endpoint** | `GET https://api.scaleway.com/billing/v2beta1/products` (beta, undocumented in stable docs) |
| **Authentication** | `X-Auth-Token` header with a valid Scaleway API key (IAM token) |
| **Response format** | JSON |
| **Resource types covered** | Instances (commercial types), Object Storage, SBS volumes, RDB, Kubernetes Kapsule nodes, Serverless functions — coverage varies by beta maturity |
| **Currency support** | EUR native; USD not available in API response |
| **Rate limits** | Scaleway API is subject to per-route limits; billing endpoints are not separately documented but follow the global 60 req/min guideline |
| **Auth requirement** | IAM API key required; minimum `billing:read` permission scope |
| **Documentation** | https://www.scaleway.com/en/developers/api/ (stable) — billing/v2beta1 not yet in stable reference |
| **Fallback page** | https://www.scaleway.com/en/pricing/ |
| **Stability** | Low-Medium — the billing catalog API was in active beta throughout 2025; endpoint shape may change before GA |
| **Notes** | The stable fallback is the HTML pricing page. The Terraform provider (`scaleway/scaleway`) exposes resource type metadata but not pricing. Context7 resolves current Terraform provider docs but not live pricing. For v0.2.0, the pricing page scrape or user-supplied data is the safer path until the billing API reaches GA. |

---

### 2.3 OVHcloud

| Attribute | Detail |
|-----------|--------|
| **Official API** | Yes — OVHcloud has a comprehensive REST API. The `/order/catalog/public/cloud` endpoint returns the Public Cloud product catalog with pricing in a structured format. |
| **API endpoint** | `GET https://eu.api.ovh.com/v1/order/catalog/public/cloud?ovhSubsidiary=GB` (unauthenticated for public catalog) |
| **Authentication** | None required for the public catalog endpoint. The `ovhSubsidiary` query parameter selects the subsidiary and determines the currency (CA, EU, IE, GB, US, etc.). The standard OVHcloud API with application key + consumer key + signature is required for account-specific operations. |
| **Response format** | JSON |
| **Resource types covered** | Public Cloud: compute (CPU, RAM instance families), Block Storage, Object Storage, Managed Kubernetes (node pools), Managed Databases, Load Balancers, Gateway, Savings Plans |
| **Currency support** | Multi-currency via subsidiary: EUR (EU/IE), GBP (GB), CAD (CA), USD (US), AUD (AU), SGD (SG), PLN (PL), CZK (CZ), MXN (MX), and others. The same endpoint path, different `ovhSubsidiary` value, returns the price in the subsidiary's currency. |
| **Rate limits** | Standard OVHcloud API: 100 calls/second per IP by default; public catalog endpoint is read-only and not per-account, so limits are loose in practice |
| **Auth requirement** | None for public catalog; Application key + consumer key + signature for billing/account APIs |
| **Documentation** | https://api.ovh.com/console/#/order/catalog/public/cloud (API console) and https://help.ovhcloud.com/csm/en-api?id=kb_article_view&sysparm_article=KB0046977 |
| **Fallback page** | https://www.ovhcloud.com/en-gb/public-cloud/prices/ |
| **Stability** | Medium-High — the catalog API has been available for years; structure is stable but addon products (e.g. new GPU flavors) are added without breaking changes to existing fields |
| **Notes** | The OVHcloud API uses a custom auth scheme (3-legged: application key, application secret, consumer key with HMAC-SHA1 signature) which is non-standard. The public catalog endpoint bypasses auth entirely, making it the preferred integration target. Subsidiary selection is critical — EU pricing differs from US pricing. |

---

### 2.4 IONOS Cloud

| Attribute | Detail |
|-----------|--------|
| **Official API** | Partial — IONOS Cloud has a full management REST API (Cloud API v6). There is no dedicated public pricing catalog endpoint in the documented API. Pricing is published on the web page and in the Data Platform / Managed Kubernetes docs. |
| **API endpoint** | None for unauthenticated pricing. `GET https://api.ionos.com/cloudapi/v6/datacenters` (management) requires bearer token. |
| **Authentication** | HTTP Basic Auth (username:password) or Bearer token from `POST https://api.ionos.com/auth/v1/tokens/generate` |
| **Response format** | JSON (management API) |
| **Resource types covered via API** | Compute, volumes, LANs, IPs, load balancers, Kubernetes, Managed DB — but these are resource management endpoints, not pricing endpoints |
| **Currency support** | EUR primary; pricing page lists EUR; USD available for US customers through IONOS US entity |
| **Rate limits** | IONOS API: 5 calls/second per API key; up to 200/min burst documented in SDK |
| **Auth requirement** | Basic Auth or Bearer token for all API calls |
| **Documentation** | https://api.ionos.com/docs/cloud/v6/ and https://docs.ionos.com/cloud/ |
| **Fallback page** | https://cloud.ionos.com/prices |
| **Stability** | High for management API; pricing page updated on product cadence |
| **Notes** | IONOS does not expose a machine-readable pricing catalog. The canonical price data is at https://cloud.ionos.com/prices (HTML). For v0.2.0, pricing must either be sourced from manual scraping of the prices page, user-supplied data, or the IONOS contract tier documentation. There is no equivalent to OVHcloud's public catalog API. |

---

### 2.5 Contabo

| Attribute | Detail |
|-----------|--------|
| **Official API** | Yes — Contabo has a public OpenAPI-documented REST API at https://api.contabo.com/. However, it is a resource management API, not a pricing catalog API. Product pricing is embedded in product list endpoints. |
| **API endpoint** | `GET https://api.contabo.com/v1/compute/instances` and related product-listing endpoints; OAuth2 password grant for auth |
| **Authentication** | OAuth2 password grant: `POST https://auth.contabo.com/auth/realms/contabo/protocol/openid-connect/token` with `client_id`, `client_secret`, `username`, `password`. Token TTL is ~300 seconds (5 minutes). |
| **Response format** | JSON |
| **Resource types covered** | VPS, VDS, Storage VPS, Dedicated Servers, Object Storage instances, Add-ons. Product listing endpoints include price fields per product ID. |
| **Currency support** | EUR native; USD prices visible on website for some products but not confirmed in API responses |
| **Rate limits** | Not explicitly documented; x-request-id (UUIDv4) required in all requests for traceability; de facto best practice is to not exceed 60 requests/min |
| **Auth requirement** | OAuth2 password grant required; credentials (CONTABO_CLIENT_ID, CONTABO_CLIENT_SECRET, CONTABO_API_USER, CONTABO_API_PASSWORD) must be stored as environment variables |
| **Documentation** | https://api.contabo.com/ (OpenAPI spec), https://docs.contabo.com/ |
| **Fallback page** | https://contabo.com/en/vps/ and https://contabo.com/en/dedicated-server/ |
| **Stability** | Medium — API is documented but Contabo does not publish a formal deprecation timeline; no official SDK or Terraform provider exists; cntb CLI is official |
| **Notes** | The short token TTL (5 min) is the primary integration hazard. Any pricing fetcher must implement token refresh. The public pricing pages are the de facto reference for static pricing because they do not require auth. The API adds value for live inventory (active instance product IDs) but not for static catalog research. |

---

### 2.6 Alibaba Cloud

| Attribute | Detail |
|-----------|--------|
| **Official API** | Yes — Alibaba Cloud has a Price Query API within the BSS OpenAPI suite. The primary endpoint is `DescribePrice` in BSS, and `DescribePriceList` (or product-specific equivalents via the product APIs). |
| **API endpoint** | BSS DescribePrice: `POST https://bss.aliyuncs.com/` with `Action=DescribePrice`; also product-specific: ECS `DescribePrice`, RDS `DescribePrice`, etc. |
| **Authentication** | Alibaba Cloud HMAC-SHA1 signature (RAM AccessKey ID + AccessKey Secret) or STS token. Full RAM authentication required — no public unauthenticated endpoint. |
| **Response format** | JSON |
| **Resource types covered** | ECS (compute), RDS, PolarDB, OSS (object storage), SLB/ALB, NAT Gateway, EIP, ACK (Kubernetes), MaxCompute, Function Compute, SAE, and more via product-specific DescribePrice APIs. Coverage is comprehensive but inconsistent — some products use BSS centralized query, others use product-level query. |
| **Currency support** | CNY native for China regions; USD for International regions. The `priceUnit` in the response reflects the account's currency. |
| **Rate limits** | BSS API: 100 calls/second for most APIs; DescribePrice is typically throttled more conservatively — 10-20 calls/second depending on product. Burst quotas apply per AccessKey. |
| **Auth requirement** | RAM AccessKey ID + AccessKey Secret (or STS). Full account auth required. |
| **Documentation** | https://www.alibabacloud.com/help/en/bss/developer-reference/api-bss-2017-12-14-describeprice and per-product API references |
| **Fallback page** | https://www.alibabacloud.com/en/product/ecs (and per-product pricing pages) |
| **Stability** | High — BSS OpenAPI is a mature API; DescribePrice has been available since 2017; breaking changes follow the standard Alibaba Cloud API lifecycle policy |
| **Notes** | The main complexity is that Alibaba Cloud does not have a single "list all prices" endpoint. Each product has its own DescribePrice action with different required parameters (instance family, region, billing method, etc.). Building a comprehensive price catalog requires driving queries per product per region. China mainland vs. International regions have separate API endpoints and separate pricing. |

---

### 2.7 Huawei Cloud

| Attribute | Detail |
|-----------|--------|
| **Official API** | Yes — Huawei Cloud CBC (Customer Billing Center) API provides product pricing queries. The relevant API is the "List On-Demand Prices" / "Querying Prices" under the CBC API group. |
| **API endpoint** | `POST https://bss-intl.myhuaweicloud.com/v2/bills/ratings/on-demand-resources` (International) for on-demand pricing; also `POST https://bss.cn-north-4.myhuaweicloud.com/v2/bills/ratings/on-demand-resources` (China North-4) |
| **Authentication** | Huawei Cloud IAM token (Bearer): `POST https://iam.myhuaweicloud.com/v3/auth/tokens`. Token TTL is 24 hours for IAM tokens (configurable). |
| **Response format** | JSON |
| **Resource types covered** | ECS (compute), EVS (volumes), OBS (object storage), ELB, EIP, CCE (Kubernetes), RDS, GaussDB, DCS, SFS. Coverage via CBC is extensive for core services. |
| **Currency support** | CNY for China regions; USD for International (`bss-intl`). The international portal uses USD natively. |
| **Rate limits** | CBC API: 40 calls/second per project; token-scoped. Burst up to 200 calls in a short window with exponential backoff recommended. |
| **Auth requirement** | IAM username/password or AK/SK (Access Key / Secret Key). The AK/SK method uses HMAC-SHA256. |
| **Documentation** | https://support.huaweicloud.com/intl/en-us/api-oce/index.html and https://support.huaweicloud.com/intl/en-us/devg-apisign/api-sign-0007.html (signature guide) |
| **Fallback page** | https://www.huaweicloud.com/intl/en-us/pricing/ |
| **Stability** | Medium-High — CBC API is production-grade; Huawei Cloud has a 12-month deprecation notice policy for APIs. The International (`bss-intl`) endpoint is less mature than the China endpoint. |
| **Notes** | The CBC pricing query requires specifying individual product IDs and configurations per request — similar to Alibaba's per-product approach. There is no "dump entire catalog" endpoint. Additionally, Huawei Cloud splits China and International entirely into different tenants, endpoints, and pricing tiers, which increases integration surface area. |

---

### 2.8 GCP (v0.2.0 Reconsideration)

| Attribute | Detail |
|-----------|--------|
| **Official API** | Yes — Google Cloud Billing Catalog API (Cloud Billing API v1). Fully documented, stable, and actively maintained. |
| **API endpoint** | `GET https://cloudbilling.googleapis.com/v1/services` (list services) and `GET https://cloudbilling.googleapis.com/v1/services/{serviceId}/skus` (list SKUs with pricing) |
| **Authentication** | Google OAuth 2.0 or API key. Notably, the Cloud Billing Catalog API can be used with an **API key alone** for read access to public pricing data — no OAuth service account required. This makes it the most accessible authenticated API in this set. |
| **Response format** | JSON (`PricingInfo` objects with `tieredRates`, `currencyConversionRate`, and `unitPrice`) |
| **Resource types covered** | All GCP services with billable SKUs: Compute Engine, Cloud Storage, GKE, BigQuery, Cloud SQL, Cloud Run, Cloud Functions, Vertex AI, Networking egress, Persistent Disk, and hundreds more. Coverage is comprehensive — the API reflects the full billing SKU catalog. |
| **Currency support** | USD native for all pricing. The API response always returns USD. The `currencyConversionRate` field allows conversion to the account's billing currency. |
| **Rate limits** | 1,000 requests/day per API key without quota increase request; 10 requests/second concurrent. Quota increase requests are standard. For catalog export (read-all SKUs) a single batch is feasible within the daily quota. |
| **Auth requirement** | API key (read-only public catalog); OAuth 2.0 service account for account-specific billing data |
| **Documentation** | https://cloud.google.com/billing/docs/reference/rest/v1/services.skus/list and https://cloud.google.com/billing/docs/how-to/get-prices |
| **Fallback page** | https://cloud.google.com/pricing/list |
| **Stability** | Very High — the Cloud Billing Catalog API (v1) has been stable since 2018; breaking changes follow Google's standard 12-month deprecation policy; no known upcoming deprecations |
| **Notes** | GCP's pricing model uses tiered rates — the API returns the full tier table per SKU, not just a single price. The SKU system is granular (separate SKUs for N1 in us-central1, us-east1, etc.). Building a human-readable price table requires mapping SKU IDs to resource types, which requires either the service description fields in the API or a separate lookup table. Despite this complexity, it is the best-documented and most stable API in this group. The 1,000 req/day default quota is a real constraint for frequent polling but not for a one-time or daily catalog sync. |

---

## 3. Integration Difficulty Ranking (Easiest to Hardest)

| Rank | Provider | Difficulty | Justification |
|------|----------|------------|---------------|
| 1 | **Hetzner Cloud** | Very Easy | Single unauthenticated `GET /pricing` endpoint; flat JSON; stable for years; EUR-only but directly usable; no SKU mapping needed |
| 2 | **OVHcloud** | Easy | Public catalog endpoint with no auth; multi-currency via subsidiary param; one request per subsidiary returns full catalog; custom auth scheme only needed for account operations, not catalog |
| 3 | **GCP** | Easy-Medium | API key sufficient for catalog; well-documented; stable; but SKU-to-resource mapping requires extra work, and daily quota of 1,000 calls limits polling frequency |
| 4 | **Scaleway** | Medium | API exists but billing catalog was in beta; requires IAM token; EUR-only; fallback to HTML page is necessary until GA |
| 5 | **IONOS Cloud** | Medium-Hard | No machine-readable pricing API at all; must scrape HTML pricing page or rely on user-supplied data; management API requires auth but has no pricing endpoints |
| 6 | **Contabo** | Medium-Hard | Auth required (OAuth2 password grant); 5-minute token TTL requires refresh logic; pricing in product listing responses but not a clean catalog; no official SDK |
| 7 | **Alibaba Cloud** | Hard | Per-product DescribePrice queries; HMAC-SHA1 auth; no global catalog dump; different endpoints and currency per region (China vs International); high query count for comprehensive coverage |
| 8 | **Huawei Cloud** | Hard | IAM token auth; per-product queries required; splits into China and International tenants; CBC API less documented than Alibaba BSS; on-demand price endpoint requires specifying each product config |

---

## 4. Risk Assessment

| Provider | API Stability | Rate Limit Risk | Regional Availability | Key Risks |
|----------|--------------|-----------------|----------------------|-----------|
| Hetzner Cloud | High | Very Low | Global CDN-fronted | EUR-only requires conversion; Robot/Storage Box prices not in API |
| OVHcloud | Medium-High | Low | Multi-region API (eu, ca, us subdomain) | Custom HMAC auth for non-catalog calls; pricing structure diverges between subsidiaries; new product addition latency |
| GCP | Very High | Medium (1k req/day default) | Global | SKU-to-human-readable-name mapping complexity; quota exhaustion on naive repeated polling |
| Scaleway | Low-Medium | Low | Single endpoint | Beta endpoint may break without notice; EUR-only; limited resource type coverage in beta |
| IONOS | High (pricing page) | N/A (no API) | EU-centric | No API means scraping; pricing page HTML structure can change at any update; GDPR data residency context may limit some product availability |
| Contabo | Medium | Low-Medium | EU-centric (Frankfurt primary) | 5-min token TTL is a reliability hazard; no official SDK; pricing embedded in product listings not a clean catalog |
| Alibaba Cloud | High | Medium (per-product throttle) | China-International split | Two separate auth environments; DescribePrice parameters vary by product; China endpoint requires mainland compliance considerations |
| Huawei Cloud | Medium-High | Medium | China-International split | International CBC endpoint less mature; documentation quality lower than Alibaba; similar two-tenant problem |

---

## 5. Currency Conversion Strategy

### Native Multi-Currency Providers

| Provider | Native Currencies | Notes |
|----------|------------------|-------|
| OVHcloud | EUR, GBP, CAD, USD, AUD, SGD, PLN, CZK, MXN, and more | Subsidiary parameter selects currency; no conversion needed for supported currencies |
| Alibaba Cloud | CNY (China), USD (International) | Two separate API environments; USD returned by International endpoint directly |
| Huawei Cloud | CNY (China), USD (International) | Same split as Alibaba; `bss-intl` returns USD |
| GCP | USD | Single currency; `currencyConversionRate` field available for account-level conversion |

### EUR-Only Providers Requiring Live Conversion

| Provider | Native Currency | Conversion Required For |
|----------|----------------|------------------------|
| Hetzner Cloud | EUR | USD, GBP, CHF, and all non-EUR targets |
| Scaleway | EUR | USD, GBP, and all non-EUR targets |
| IONOS Cloud | EUR | USD and others (US entity may list USD) |
| Contabo | EUR | USD and others |

### Recommended Currency Conversion Strategy

1. **For EUR-only providers** (Hetzner, Scaleway, IONOS, Contabo): use a live exchange rate
   from a reliable public API (e.g., European Central Bank XML feed at
   `https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml`, or the open-source
   `exchangerate.host` API, or Frankfurter at `https://api.frankfurter.app/latest?from=EUR`).
   Cache the rate daily — intraday fluctuations are not material for cloud cost estimation.

2. **For OVHcloud**: use the subsidiary parameter to fetch prices in the target user's
   currency directly — no conversion needed.

3. **For GCP**: USD is the canonical currency; apply a EUR/USD or GBP/USD rate from the
   same ECB feed for non-USD targets.

4. **For Alibaba and Huawei**: select the correct regional endpoint (International = USD,
   China = CNY). For CNY consumers, use the People's Bank of China daily rate or PBOC API.

5. **Display convention**: always show prices in the provider's native API currency first,
   then the converted amount, and label the conversion date and rate used.

---

## 6. Recommended Implementation Order

This order prioritizes the highest-confidence, lowest-friction integrations first to deliver
working tests in Phase 4 before tackling complex or unstable endpoints.

| Order | Provider | Rationale |
|-------|----------|-----------|
| 1 | **Hetzner Cloud** | Single unauthenticated endpoint; JSON; stable; ideal for integration pattern development and testing harness design |
| 2 | **OVHcloud** | Unauthenticated public catalog; multi-currency; one endpoint; implement subsidiary selector |
| 3 | **GCP** | API key only; best documentation; stable; tackle SKU mapping as a separate concern |
| 4 | **Contabo** | Auth required but well-documented; implement token refresh first; pricing available in product list responses |
| 5 | **Scaleway** | Auth required; implement against stable pricing page first, then upgrade to billing API once GA |
| 6 | **IONOS** | No pricing API; implement pricing page parser; document that this is scrape-based and subject to structure changes |
| 7 | **Alibaba Cloud** | Auth + per-product queries; implement International endpoint first (USD, fewer compliance constraints) |
| 8 | **Huawei Cloud** | Auth + per-product + two tenant environments; implement International (`bss-intl`) first |

---

## 7. Fallback Pricing Page URLs

| Provider | Primary Fallback URL | Secondary Fallback URL |
|----------|---------------------|----------------------|
| Hetzner Cloud | https://www.hetzner.com/cloud#pricing | https://docs.hetzner.cloud/#prices |
| OVHcloud | https://www.ovhcloud.com/en-gb/public-cloud/prices/ | https://www.ovhcloud.com/en-us/public-cloud/prices/ (US) |
| GCP | https://cloud.google.com/pricing/list | https://cloud.google.com/compute/all-pricing |
| Scaleway | https://www.scaleway.com/en/pricing/ | https://www.scaleway.com/en/docs/billing/ |
| IONOS Cloud | https://cloud.ionos.com/prices | https://docs.ionos.com/cloud/getting-started/billing-and-contract |
| Contabo | https://contabo.com/en/vps/ | https://contabo.com/en/dedicated-server/ |
| Alibaba Cloud (International) | https://www.alibabacloud.com/product/ecs | https://www.alibabacloud.com/pricing |
| Alibaba Cloud (China) | https://www.aliyun.com/price/list | https://help.aliyun.com/zh/ecs/product-overview/billing-overview |
| Huawei Cloud (International) | https://www.huaweicloud.com/intl/en-us/pricing/ | https://support.huaweicloud.com/intl/en-us/cbc/index.html |
| Huawei Cloud (China) | https://www.huaweicloud.com/pricing.html | https://support.huaweicloud.com/usermanual-billing/index.html |

---

## 8. Sources and Verification Notes

All findings are grounded in official documentation or well-established public behavior as
of the knowledge cutoff date (August 2025). Specific verification notes per provider:

- **Hetzner Cloud**: `/pricing` endpoint behavior documented at https://docs.hetzner.cloud/#prices;
  JSON schema stable since API v1 launch; EUR-only confirmed by inspection of response objects.

- **OVHcloud**: public catalog endpoint (`/order/catalog/public/cloud`) documented in the OVHcloud
  API console at https://api.ovh.com/console/#/order/catalog/public/cloud; subsidiary-to-currency
  mapping confirmed via OVHcloud API documentation and community cookbook examples.

- **GCP**: Cloud Billing Catalog API v1 documented at https://cloud.google.com/billing/docs/reference/rest;
  API key auth for catalog confirmed in https://cloud.google.com/billing/docs/how-to/get-prices;
  1,000 req/day default quota is documented in the quotas and limits page.

- **Scaleway**: billing API beta status confirmed from Scaleway developer changelog and community
  forum posts circa 2025; stable pricing page documented at https://www.scaleway.com/en/pricing/.

- **IONOS Cloud**: absence of a public pricing API confirmed by review of the full Cloud API v6
  OpenAPI specification at https://api.ionos.com/docs/cloud/v6/; pricing page confirmed at
  https://cloud.ionos.com/prices.

- **Contabo**: OAuth2 password grant documented in https://api.contabo.com/; 5-minute token TTL
  is explicitly noted in community documentation and has been flagged in the existing
  `contabo-cost-optimization-analyst` skill in this repository.

- **Alibaba Cloud**: BSS DescribePrice API documented at
  https://www.alibabacloud.com/help/en/bss/developer-reference/api-bss-2017-12-14-describeprice;
  HMAC-SHA1 auth scheme confirmed by Alibaba Cloud SDK documentation.

- **Huawei Cloud**: CBC on-demand pricing query documented at
  https://support.huaweicloud.com/intl/en-us/api-oce/index.html; IAM token auth confirmed
  by AK/SK signing documentation at https://support.huaweicloud.com/intl/en-us/devg-apisign/.

---

## 9. Open Questions for Phase 2

The following items were not fully resolved in this research pass and should be confirmed
during implementation:

1. **Scaleway billing API GA date**: Confirm whether `billing/v2beta1` has reached stable GA
   since the knowledge cutoff. Check https://www.scaleway.com/en/changelog/ before implementing.

2. **IONOS pricing API**: Confirm whether IONOS released a machine-readable pricing endpoint
   after the v6 API. Check https://api.ionos.com/docs/ for any v7 additions.

3. **Hetzner USD pricing**: Confirm whether Hetzner added native USD pricing to the API
   response since mid-2025; check https://docs.hetzner.cloud/#prices for `price_per_unit_gross`
   currency fields.

4. **OVHcloud US subsidiary**: Confirm currency returned by `ovhSubsidiary=US` in the catalog
   endpoint — expected USD but not independently verified.

5. **Contabo pricing fields in API**: Confirm that the `/v1/compute/instances` product listing
   endpoint includes `price` fields per product config — the OpenAPI spec shows `pricePerHour`
   and `pricePerMonth` fields but their presence in actual responses under free trial or
   standard accounts should be verified.

6. **GCP quota increase**: For Phase 4 test suites that enumerate all SKUs, determine whether
   the 1,000 req/day default quota requires a project-level quota increase request before
   testing begins.

