When you are prompted to confirm the Google Cloud project you intend to use
for the Cloud Billing Catalog API, we recommend you use a project that is set up
to contain all of your FinOps and billing administration needs for a
Cloud Billing account, including where the Cloud Billing API is
enabled.
[SERVICE_NAME] is the resource name for the service.
[SERVICE_ID] is the identifier for the service.
[DISPLAY_NAME] is the human readable display name for the service.
Results are paginated, and are limited to 5000 SKUs per page. The response
includes a nextPageToken that you can use to get the next 5000 results.
To fetch the next batch, set pageToken=[NEXT_PAGE_TOKEN].
To reduce the number of SKUs per page, set
pageSize=[CUSTOM_PAGE_SIZE].
When all items have been listed, no token is returned.
Getting the list of SKUs for a service
The following code snippet lists the SKUs in the catalog for the
specified service:
Request:
GET https://cloudbilling.googleapis.com/v1/services/SERVICE_ID/skus?key=<var>API_KEY</var>
Where:
SERVICE_ID is the identifier of the parent service.
[SKU_NAME] is the resource name for the SKU in the form
services/{SERVICE_ID}/skus/{SKU_ID}.
[SKU_ID] is the unique identifier for the SKU.
[SKU_DESCRIPTION] is a human readable description of the SKU.
[SVC_DISPLAY_NAME] is the display name of the service to which the SKU
belongs.
[FAMILY] is the type of product the SKU refers to. For example, "Compute",
"Storage", "Network", etc.
[GROUP] is a group classification for related SKUs. For example, "RAM,
"GPU", "Prediction", etc.
[USAGE] represents how the SKU is consumed. For example, "OnDemand,
"Preemptible, "Commit1Mo", "Commit1Yr", etc.
[REGION] is the list of
service regions
in which the SKU is offered. For example, "asia-east1".
[TIME] is a timestamp representing the time from which this pricing was
effective in the form 2014-10-02T15:01:23.045123456Z.
[SUMMARY] is a human readable summary of the pricing information,
[USAGE_UNIT] is the shorthand for the unit of usage in which the pricing
is specified. For example, usageUnit of "GiBy" means that usage is
specified in "Gibibytes".
[USAGE_UNIT_DESCRIPTION] is the unit of usage in human readable form,
for example, "Gibibyte".
[BASE_UNIT] is the SKU's base unit, and is the unit used in usage
exports. For example, baseUnit of "By" means the usage is specified in
"Bytes".
[BASE_UNIT_DESCRIPTION] is the base unit in human readable form. For
example, "byte".
[BASE_CONVERSION_FACTOR] is the conversion factor for converting price
per usage_unit to price per base_unit, and converting start_usage amount
to start_usage_amount in base_unit. For example, start_usage_amount *
base_unit_conversion_factor = start_usage_amount in base_unit.
[DISPLAY_QUANTITY] is the recommended quantity of units for displaying
pricing info. When displaying pricing info, it is recommended to display:
(unitPrice * displayQuantity) per displayQuantity usageUnit. This field
does not affect the pricing formula and is for display purposes only.
For example, if the unitPrice is "0.0001 USD", the usageUnit is "GB"
and the displayQuantity is "1000", then the recommended way to
display the pricing info is "0.10 USD per 1000 GB".
[START_AMOUNT] Usage is priced at the rate only after this amount is
consumed. For example, a startUsageAmount of 10 indicates that the usage
will be priced at the price defined below after the first 10
usage_units.
[CURRENCY_CODE] is the three-letter currency code defined as in ISO 4217.
[UNITS] is the whole units of the amount. For example if currencyCode is
"USD", then 1 unit is one US dollar.
[NANOS] is the number of nano (10^-9) units of the amount. The value must
be between -999,999,999 and +999,999,999 inclusive. If units is positive,
nanos must be positive or zero. If units is zero, nanos can be positive,
zero, or negative. If units is negative, nanos must be negative or zero.
The cost of the SKU is units + nanos. For example, a cost of $1.75 is
represented as units=1 and nanos=750,000,000.
[AGGREGATION_LEVEL] is the level at which usage is aggregated to compute
cost. Valid values are ACCOUNT, PROJECT, and AGGREGATION_LEVEL_UNSPECIFIED.
[AGGREGATION_INTERVAL] is the interval at which usage is aggregated to
compute cost. Valid values are DAILY, MONTHLY, and
AGGREGATION_INTERVAL_UNSPECIFIED.
[AGGREGATION_COUNT] is the number of intervals to aggregate over. For
example, if aggregationLevel is "DAILY" and aggregationCount is 14,
aggregation will be over 14 days.
[CONVERSION_RATE] is the conversion rate for currency conversion, from USD
to the currency specified in the request. If the currency is not specified
this defaults to 1.0.
[SERVICE_PROVIDER] identifies the service provider. This is 'Google' for
first party services in Google Cloud Platform.
[TAXONOMY_TYPE] is the type of geographic taxonomy for a SKU: GLOBAL,
REGIONAL, or MULTI_REGIONAL.
[REGION] is The list of regions associated with a SKU. This field
is empty for Global SKUs since they are associated with all Google Cloudregions.
Results are paginated, and are limited to 5000 SKUs per page. The response
includes a nextPageToken that you can use to get the next 5000 results.
To fetch the next batch, set pageToken=[NEXT_PAGE_TOKEN].
To reduce the number of SKUs per page, set
pageSize=[CUSTOM_PAGE_SIZE].
When all items have been listed, no token is returned.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-29 UTC."],[[["\u003cp\u003eThe Cloud Billing Catalog API allows users to retrieve a list of all public services and their associated metadata.\u003c/p\u003e\n"],["\u003cp\u003eUsers can obtain a comprehensive list of public Stock Keeping Units (SKUs) within a service, including their descriptions, pricing, availability regions, and categorization data.\u003c/p\u003e\n"],["\u003cp\u003eCustom contract pricing can be accessed via the separate Pricing API, while public pricing is available through the Cloud Billing Catalog API.\u003c/p\u003e\n"],["\u003cp\u003eUsing the Cloud Billing Catalog API requires enabling the Cloud Billing API and obtaining an API key.\u003c/p\u003e\n"],["\u003cp\u003eAPI responses are paginated, returning up to 5000 SKUs per page, with a \u003ccode\u003enextPageToken\u003c/code\u003e provided for retrieving subsequent pages of results.\u003c/p\u003e\n"]]],[],null,["# Get publicly available Google Cloud pricing information\n\n\u003cbr /\u003e\n\nThis page shows you how to use the Cloud Billing Catalog API to:\n\n- Get a list of all public services including relevant metadata about each service.\n- Get a list of all public SKUs within a service including:\n - Human readable description of the SKU.\n - Public pricing of the SKU.\n - Regions where the SKU is available for purchase.\n - Categorization data about the SKU.\n\nIf you have **custom contract pricing** , you can use the\n[Pricing API](/billing/docs/how-to/get-pricing-information-api)\nto get prices that are applicable to your Cloud Billing account.\n\nBefore you begin\n----------------\n\nBefore you can use the Cloud Billing Catalog API, you'll need to enable the\nCloud Billing API and get an API key.\n\n\nEnable the Cloud Billing API.\n\n\n[Enable the API](https://console.cloud.google.com/flows/enableapi?apiid=cloudbilling.googleapis.com)\n\nWhen you are prompted to confirm the Google Cloud project you intend to use\nfor the Cloud Billing Catalog API, we recommend you use a project that is set up\nto contain all of your FinOps and billing administration needs for a\nCloud Billing account, including where the Cloud Billing API is\nenabled.\n\n[Learn more about the benefits to using a FinOps-focused project](/billing/docs/how-to/create-billing-account#set-up-billing-project)\nfor your billing administration use cases.\n\n#### Get an API key\n\nCalling the Cloud Billing Catalog API requires an API Key. You can find\ndetails about API Keys in\n[Using API Keys](/docs/authentication/api-keys).\n\nListing public services from the catalog\n----------------------------------------\n\nIn this step you will get a list of all public services including relevant\nmetadata about each service.\n\nThe following code snippet lists all public services in the catalog.\n\nRequest:\n\n`GET https://cloudbilling.googleapis.com/v1/services?key=\u003cvar\u003eAPI_KEY\u003c/var\u003e`\n\nResponse: \n\n {\n \"services\": [\n {\n \"name\": \"[SERVICE_NAME]\",\n \"serviceId\": \"[SERVICE_ID]\",\n \"displayName\": \"[DISPLAY_NAME]\",\n },\n [...]\n ],\n \"nextPageToken\": \"[NEXT_PAGE_TOKEN]\"\n }\n\nWhere:\n\n- `[SERVICE_NAME]` is the resource name for the service.\n- `[SERVICE_ID]` is the identifier for the service.\n- `[DISPLAY_NAME]` is the human readable display name for the service.\n\nResults are paginated, and are limited to **5000** SKUs per page. The response\nincludes a `nextPageToken` that you can use to get the next 5000 results.\nTo fetch the next batch, set `pageToken=[`\u003cvar translate=\"no\"\u003eNEXT_PAGE_TOKEN\u003c/var\u003e`]`.\nTo reduce the number of SKUs per page, set\n`pageSize=[`\u003cvar translate=\"no\"\u003eCUSTOM_PAGE_SIZE\u003c/var\u003e`]`.\nWhen all items have been listed, no token is returned.\n\nGetting the list of SKUs for a service\n--------------------------------------\n\nThe following code snippet lists the SKUs in the catalog for the\nspecified service:\n\nRequest:\n\n`GET https://cloudbilling.googleapis.com/v1/services/SERVICE_ID/skus?key=\u003cvar\u003eAPI_KEY\u003c/var\u003e`\n\nWhere:\n\n- `SERVICE_ID` is the identifier of the parent service.\n\nResponse: \n\n {\n \"skus\": [\n {\n \"name\": \"[SKU_NAME]\",\n \"skuId\": \"[SKU_ID]\",\n \"description\": \"[SKU_DESCRIPTION]\",\n \"category\": {\n \"serviceDisplayName\": \"[SVC_DISPLAY_NAME]\",\n \"resourceFamily\": \"[FAMILY]\",\n \"resourceGroup\": \"[GROUP]\",\n \"usageType\": \"[USAGE]\",\n },\n \"serviceRegions\": [\n \"[REGION]\"\n ],\n \"pricingInfo\": [\n {\n \"effectiveTime\": \"[TIME]\",\n \"summary\": \"[SUMMARY]\",\n \"pricingExpression\": {\n \"usageUnit\": \"[USAGE_UNIT]\",\n \"usageUnitDescription\": \"[USAGE_UNIT_DESCRIPTION]\",\n \"baseUnit\": \"[BASE_UNIT]\",\n \"baseUnitDescription\": \"[BASE_UNIT_DESCRIPTION]\",\n \"baseUnitConversionFactor\": [BASE_CONVERSION_FACTOR],\n \"displayQuantity\": [DISPLAY_QUANTITY],\n \"tieredRates\": [\n {\n \"startUsageAmount\": [START_AMOUNT],\n \"unitPrice\": {\n \"currencyCode\": \"[CURRENCY_CODE]\",\n \"units\": [UNITS],\n \"nanos\": [NANOS],\n },\n }\n ],\n },\n \"aggregationInfo\": {\n \"aggregationLevel\": enum(\"[AGGREGATION_LEVEL]\"),\n \"aggregationInterval\": enum(\"[AGGREGATION_INTERVAL]\"),\n \"aggregationCount\": [AGGREGATION_COUNT],\n },\n \"currencyConversionRate\": [CONVERSION_RATE],\n }\n ],\n \"serviceProviderName\": \"[SERVICE_PROVIDER]\",\n \"geoTaxonomy\": {\n \"type\": \"[TAXONOMY_TYPE]\",\n \"regions\": [\n \"[REGION]\"\n ]\n }\n }\n ],\n \"nextPageToken\": \"[NEXT_PAGE_TOKEN]\"\n }\n\nWhere:\n\n- `[SKU_NAME]` is the resource name for the SKU in the form `services/{SERVICE_ID}/skus/{SKU_ID}`.\n- `[SKU_ID]` is the unique identifier for the SKU.\n- `[SKU_DESCRIPTION]` is a human readable description of the SKU.\n- `[SVC_DISPLAY_NAME]` is the display name of the service to which the SKU belongs.\n- `[FAMILY]` is the type of product the SKU refers to. For example, \"Compute\", \"Storage\", \"Network\", etc.\n- `[GROUP]` is a group classification for related SKUs. For example, \"RAM, \"GPU\", \"Prediction\", etc.\n- `[USAGE]` represents how the SKU is consumed. For example, \"OnDemand, \"Preemptible, \"Commit1Mo\", \"Commit1Yr\", etc.\n- `[REGION]` is the list of [service regions](/about/locations) in which the SKU is offered. For example, \"asia-east1\".\n- `[TIME]` is a timestamp representing the time from which this pricing was effective in the form `2014-10-02T15:01:23.045123456Z`.\n- `[SUMMARY]` is a human readable summary of the pricing information,\n- `[USAGE_UNIT]` is the shorthand for the unit of usage in which the pricing is specified. For example, `usageUnit` of \"GiBy\" means that usage is specified in \"Gibibytes\".\n- `[USAGE_UNIT_DESCRIPTION]` is the unit of usage in human readable form, for example, \"Gibibyte\".\n- `[BASE_UNIT]` is the SKU's base unit, and is the unit used in usage exports. For example, `baseUnit` of \"By\" means the usage is specified in \"Bytes\".\n- `[BASE_UNIT_DESCRIPTION]` is the base unit in human readable form. For example, \"byte\".\n- `[BASE_CONVERSION_FACTOR]` is the conversion factor for converting price per usage_unit to price per base_unit, and converting start_usage amount to start_usage_amount in base_unit. For example, *start_usage_amount \\*\n base_unit_conversion_factor = start_usage_amount in base_unit.*\n- `[DISPLAY_QUANTITY]` is the recommended quantity of units for displaying pricing info. When displaying pricing info, it is recommended to display: `(unitPrice * displayQuantity) per displayQuantity usageUnit`. This field does not affect the pricing formula and is for display purposes only. For example, if the `unitPrice` is \"0.0001 USD\", the `usageUnit` is \"GB\" and the `displayQuantity` is \"1000\", then the recommended way to display the pricing info is \"0.10 USD per 1000 GB\".\n- `[START_AMOUNT]` Usage is priced at the rate only after this amount is consumed. For example, a `startUsageAmount` of 10 indicates that the usage will be priced at the price defined below after the first 10 `usage_units`.\n- `[CURRENCY_CODE]` is the three-letter currency code defined as in ISO 4217.\n- `[UNITS]` is the whole units of the amount. For example if currencyCode is \"USD\", then 1 unit is one US dollar.\n- `[NANOS]` is the number of nano (10\\^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If units is positive, nanos must be positive or zero. If units is zero, nanos can be positive, zero, or negative. If units is negative, nanos must be negative or zero.\n\nThe cost of the SKU is `units + nanos`. For example, a cost of $1.75 is\nrepresented as `units=1` and `nanos=750,000,000`.\n\n- `[AGGREGATION_LEVEL]` is the level at which usage is aggregated to compute cost. Valid values are ACCOUNT, PROJECT, and AGGREGATION_LEVEL_UNSPECIFIED.\n- `[AGGREGATION_INTERVAL]` is the interval at which usage is aggregated to compute cost. Valid values are DAILY, MONTHLY, and AGGREGATION_INTERVAL_UNSPECIFIED.\n- `[AGGREGATION_COUNT]` is the number of intervals to aggregate over. For example, if `aggregationLevel` is \"DAILY\" and `aggregationCount` is 14, aggregation will be over 14 days.\n- `[CONVERSION_RATE]` is the conversion rate for currency conversion, from USD to the currency specified in the request. If the currency is not specified this defaults to 1.0.\n- `[SERVICE_PROVIDER]` identifies the service provider. This is 'Google' for first party services in Google Cloud Platform.\n- `[TAXONOMY_TYPE]` is the type of geographic taxonomy for a SKU: `GLOBAL`, `REGIONAL`, or `MULTI_REGIONAL`.\n- `[REGION]` is The list of regions associated with a SKU. This field is empty for Global SKUs since they are associated with all Google Cloudregions.\n\nResults are paginated, and are limited to **5000** SKUs per page. The response\nincludes a `nextPageToken` that you can use to get the next 5000 results.\nTo fetch the next batch, set `pageToken=[`\u003cvar translate=\"no\"\u003eNEXT_PAGE_TOKEN\u003c/var\u003e`]`.\nTo reduce the number of SKUs per page, set\n`pageSize=[`\u003cvar translate=\"no\"\u003eCUSTOM_PAGE_SIZE\u003c/var\u003e`]`.\nWhen all items have been listed, no token is returned.\n\nRelated information\n-------------------\n\nPricing and SKU information is also available in the\n[pricing table report](/billing/docs/how-to/pricing-table)\nor the\n[Cloud Billing pricing export to BigQuery](/billing/docs/how-to/export-data-bigquery)."]]