Use the Chrome Web Store Publish API

TheChrome Web Store Publish API lets you create, update, and publishitems in the Chrome Web Store. This guide will tell you how to:

  • Get a refresh token and access token to use in the tool of your choice.
  • Make test HTTP requests using theOAuth 2.0 Playground.

Prerequisites

Before using the API, note the following:

Initial setup

Before you can begin making REST calls against the Chrome Web Store, you will need to enable theChrome Web Store API in a Google Cloud project, configure an OAuth consent screen, and retrieve your API access keys. Thefollowing sections walk through this process.

Enable the Chrome Web Store API

  1. Go to theGoogle Cloud Console.
  2. Create a new project or select an existing one.
    Create a new project in the Google Console
    Create a new project in the Google Console
  3. In thesearch bar type "Chrome Web Store API".
  4. Enable theChrome Web Store API.

Configure the OAuth consent screen

  1. Go toOAuth consent screen.
  2. SelectExternal thenCreate.
    Create an Oauth consent screen
    Create an OAuth consent screen.
  3. Fill out the requiredApp information fields (listed below) then clickSave and Continue.
    • App name.
    • User support email.
    • Developer contact information.
  4. ClickSave and Continue to skip the Scopes screen.
  5. Add your email address toTest users, then clickSave and Continue.This lets you immediately use the project without needing to go through anapproval process.

Create an OAuth Client

  1. Go toCredentials.
  2. ClickCreate Credentials thenOAuth client ID.
    Create credentials
    Create credentials.
  3. ForApplication type, chooseWeb application.
  4. Enter a name.
  5. Addhttps://developers.google.com/oauthplayground to the list of Authorized redirect URIs.
  6. Click "Create".

You will be given a client ID and a client secret. Keep these safe.

Obtain access and refresh tokens

  1. Openhttps://developers.google.com/oauthplayground.

    OAuth Playground
    OAuth Playground.

  2. Click the settings icon in the top right, and choose "Use your own OAuth credentials".

  3. Enter your client ID and client secret.

  4. Addhttps://www.googleapis.com/auth/chromewebstore to the "Input your own scopes" field.

  5. Click "Authorize APIs".

  6. Follow the steps to sign in with your Google Account.

  7. Click "Exchange authorization code for tokens" to generate a new access token.

Try a request

To try a request, click copying the following to the Request URI field:

https://www.googleapis.com/chromewebstore/v1.1/items/EXTENSION_ID?projection=DRAFT

Then, click "Send the request".

Note: Make sure you are requesting the token using the Google developer Account which owns the Chrome WebStore items you want to manage. This account can be different from the account you created theGoogle Cloud Console project with. For example, you can create an application for otherdevelopers to manage their apps, in which case you only need to register a Google Cloud Consoleproject.

Example HTTP requests

Once you have a refresh token, you can obtain new access tokens and make APIcalls outside of the playground using the tool of your choice. Below we showa number of examples usingcurl.

Refresh your access token

Periodically, your access token will expire and you will need to obtain a newone. To refresh youraccess token, make a request with your refresh token. For example, usingcurl, you can get an accesstoken by executing the following command (replacing the values of $CLIENT_ID, $CLIENT_SECRET, and$REFRESH_TOKEN with the values from above):

curl"https://oauth2.googleapis.com/token"-d"client_secret=$CLIENT_SECRET&grant_type=refresh_token&refresh_token=$REFRESH_TOKEN&client_id=$CLIENT_ID"

This will return a result such as:

{"access_token":"ya29...","expires_in":3600,"refresh_token":"1/rwn...","scope":"https://www.googleapis.com/auth/chromewebstore","token_type":"Bearer",}

Upload a package to create a new store item

Caution: Your new item will need to be reviewed. SeeReview Process to learn more.

You can useItems:Insert to create a new item.

curl-H"Authorization: Bearer$TOKEN"-H"x-goog-api-version: 2"-XPOST-T$FILE_NAME-vhttps://www.googleapis.com/upload/chromewebstore/v1.1/items

Upload a package to update an existing store item

Caution: Your new version will need to be reviewed. SeeReview Process to learn more.

You can useItems:Update to upload a new package foran existing version. If you have not increased theversion field inyour extension's manifest file, this will fail.

curl-H"Authorization: Bearer$TOKEN"-H"x-goog-api-version: 2"-XPUT-T$FILE_NAME-vhttps://www.googleapis.com/upload/chromewebstore/v1.1/items/EXTENSION_ID

Publish an item to the public

You can useItems:Publish to publish an item toall users. The item will be submitted for review and published when the itempasses.

curl-H"Authorization: Bearer$TOKEN"-H"x-goog-api-version: 2"-H"Content-Length: 0"-XPOST-vhttps://www.googleapis.com/chromewebstore/v1.1/items/EXTENSION_ID/publish

Publish an item to trusted testers

You can also useItems:Publish to publish an itemto a target group, such as trusted testers. The item will be submitted forreview and published when the item passes.

curl-H"Authorization: Bearer$TOKEN"-H"x-goog-api-version: 2"-H"Content-Length: 0"-XPOST-vhttps://www.googleapis.com/chromewebstore/v1.1/items/EXTENSION_ID/publish?publishTarget=trustedTesters

Check the upload status of an item

You can useItem:Get to check the upload status of an item if the most recent upload attempt returnedIN_PROGRESS.

curl-H"Authorization: Bearer$TOKEN"-H"x-goog-api-version: 2"-H"Content-Length: 0"-H"Expect:"-XGET-vhttps://www.googleapis.com/chromewebstore/v1.1/items/EXTENSION_ID?projection=DRAFT
Note: Onlyprojection=DRAFT is supported.

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-07-15 UTC.