API reference

Most extensions need access to one or more Chrome Extensions APIs to function. This API reference describes the APIs availablefor use in extensions and presents example use cases.

Common Extensions API features

An Extensions API consists of a namespace containing methods and properties for doing extensions work, and usually, but notalways, manifest fields for themanifest.json file. For example, thechrome.action namespace requires an"action" objectin the manifest. Many APIs also requirepermissions in the manifest.

Methods in extension APIs areasynchronous unless stated otherwise. Asynchronous methods return immediately, without waitingfor the operation that calls them to finish. Usepromises to get the results of these asynchronous methods.

Manifest V3 is supported generally in Chrome 88 or later. For extension features added in later Chrome versions, see the API reference documentation for support information. If your extension requires a specific API, you can specify a minimum chrome version in the manifest file.

Chrome Extension APIs

accessibilityFeatures

Use thechrome.accessibilityFeatures API to manage Chrome's accessibility features. This API relies on theChromeSetting prototype of the type API for getting and setting individual accessibility features. In order to get feature states the extension must requestaccessibilityFeatures.read permission. For modifying feature state, the extension needsaccessibilityFeatures.modify permission. Note thataccessibilityFeatures.modify does not implyaccessibilityFeatures.read permission.

action
Chrome 88+MV3+

Use thechrome.action API to control the extension's icon in the Google Chrome toolbar.

alarms

Use thechrome.alarms API to schedule code to run periodically or at a specified time in the future.

audio
Chrome 59+ ChromeOS only

Thechrome.audio API is provided to allow users to get information about and control the audio devices attached to the system. This API is currently only available in kiosk mode for ChromeOS.

bookmarks

Use thechrome.bookmarks API to create, organize, and otherwise manipulate bookmarks. Also seeOverride Pages, which you can use to create a custom Bookmark Manager page.

browsingData

Use thechrome.browsingData API to remove browsing data from a user's local profile.

certificateProvider
Chrome 46+ ChromeOS only

Use this API to expose certificates to the platform which can use these certificates for TLS authentications.

commands

Use the commands API to add keyboard shortcuts that trigger actions in your extension, for example, an action to open the browser action or send a command to the extension.

contentSettings

Use thechrome.contentSettings API to change settings that control whether websites can use features such as cookies, JavaScript, and plugins. More generally speaking, content settings allow you to customize Chrome's behavior on a per-site basis instead of globally.

contextMenus

Use thechrome.contextMenus API to add items to Google Chrome's context menu. You can choose what types of objects your context menu additions apply to, such as images, hyperlinks, and pages.

cookies

Use thechrome.cookies API to query and modify cookies, and to be notified when they change.

debugger

Thechrome.debugger API serves as an alternate transport for Chrome'sremote debugging protocol. Usechrome.debugger to attach to one or more tabs to instrument network interaction, debug JavaScript, mutate the DOM and CSS, and more. Use theDebuggee propertytabId to target tabs withsendCommand and route events bytabId fromonEvent callbacks.

declarativeContent

Use thechrome.declarativeContent API to take actions depending on the content of a page, without requiring permission to read the page's content.

declarativeNetRequest
Chrome 84+

Thechrome.declarativeNetRequest API is used to block or modify network requests by specifying declarative rules. This lets extensions modify network requests without intercepting them and viewing their content, thus providing more privacy.

desktopCapture

The Desktop Capture API captures the content of the screen, individual windows, or individual tabs.

devtools.inspectedWindow

Use thechrome.devtools.inspectedWindow API to interact with the inspected window: obtain the tab ID for the inspected page, evaluate the code in the context of the inspected window, reload the page, or obtain the list of resources within the page.

devtools.network

Use thechrome.devtools.network API to retrieve the information about network requests displayed by the Developer Tools in the Network panel.

devtools.panels

Use thechrome.devtools.panels API to integrate your extension into Developer Tools window UI: create your own panels, access existing panels, and add sidebars.

devtools.performance
Chrome 129+

Use thechrome.devtools.performance API to listen to recording status updates in the Performance panel in DevTools.

devtools.recorder
Chrome 105+

Use thechrome.devtools.recorder API to customize the Recorder panel in DevTools.

dns
Dev channel

Use thechrome.dns API for dns resolution.

documentScan
Chrome 44+ ChromeOS only

Use thechrome.documentScan API to discover and retrieve images from attached document scanners.

dom
Chrome 88+

Use thechrome.dom API to access special DOM APIs for Extensions

downloads

Use thechrome.downloads API to programmatically initiate, monitor, manipulate, and search for downloads.

enterprise.deviceAttributes
Chrome 46+ ChromeOS only Requires policy

Use thechrome.enterprise.deviceAttributes API to read device attributes. Note: This API is only available to extensions force-installed by enterprise policy.

enterprise.hardwarePlatform

Use thechrome.enterprise.hardwarePlatform API to get the manufacturer and model of the hardware platform where the browser runs. Note: This API is only available to extensions installed by enterprise policy.

enterprise.login
Pending ChromeOS only Requires policy

Use thechrome.enterprise.login API to exit Managed Guest sessions. Note: This API is only available to extensions installed by enterprise policy in ChromeOS Managed Guest sessions.

enterprise.networkingAttributes
Chrome 85+ ChromeOS only Requires policy

Use thechrome.enterprise.networkingAttributes API to read information about your current network. Note: This API is only available to extensions force-installed by enterprise policy.

enterprise.platformKeys
ChromeOS only Requires policy

Use thechrome.enterprise.platformKeys API to generate keys and install certificates for these keys. The certificates will be managed by the platform and can be used for TLS authentication, network access or by other extension through chrome.platformKeys.

events

Thechrome.events namespace contains common types used by APIs dispatching events to notify you when something interesting happens.

extension

Thechrome.extension API has utilities that can be used by any extension page. It includes support for exchanging messages between an extension and its content scripts or between extensions, as described in detail inMessage Passing.

extensionTypes

Thechrome.extensionTypes API contains type declarations for Chrome extensions.

fileBrowserHandler
ChromeOS only Foreground only

Use thechrome.fileBrowserHandler API to extend the Chrome OS file browser. For example, you can use this API to enable users to upload files to your website.

fileSystemProvider
ChromeOS only

Use thechrome.fileSystemProvider API to create file systems, that can be accessible from the file manager on Chrome OS.

fontSettings

Use thechrome.fontSettings API to manage Chrome's font settings.

gcm

Usechrome.gcm to enable apps and extensions to send and receive messages throughFirebase Cloud Messaging (FCM).

history

Use thechrome.history API to interact with the browser's record of visited pages. You can add, remove, and query for URLs in the browser's history. To override the history page with your own version, seeOverride Pages.

i18n

Use thechrome.i18n infrastructure to implement internationalization across your whole app or extension.

identity

Use thechrome.identity API to get OAuth2 access tokens.

idle

Use thechrome.idle API to detect when the machine's idle state changes.

input.ime
ChromeOS only

Use thechrome.input.ime API to implement a custom IME for Chrome OS. This allows your extension to handle keystrokes, set the composition, and manage the candidate window.

instanceID
Chrome 44+

Usechrome.instanceID to access the Instance ID service.

loginState
Chrome 78+ ChromeOS only

Use thechrome.loginState API to read and monitor the login state.

management

Thechrome.management API provides ways to manage installed apps and extensions.

notifications

Use thechrome.notifications API to create rich notifications using templates and show these notifications to users in the system tray.

offscreen
Chrome 109+MV3+

Use theoffscreen API to create and manage offscreen documents.

omnibox

The omnibox API allows you to register a keyword with Google Chrome's address bar, which is also known as the omnibox.

pageCapture

Use thechrome.pageCapture API to save a tab as MHTML.

permissions

Use thechrome.permissions API to requestdeclared optional permissions at run time rather than install time, so users understand why the permissions are needed and grant only those that are necessary.

platformKeys
Chrome 45+ ChromeOS only

Use thechrome.platformKeys API to access client certificates managed by the platform. If the user or policy grants the permission, an extension can use such a certficate in its custom authentication protocol. E.g. this allows usage of platform managed certificates in third party VPNs (seechrome.vpnProvider).

power

Use thechrome.power API to override the system's power management features.

printerProvider
Chrome 44+

Thechrome.printerProvider API exposes events used by print manager to query printers controlled by extensions, to query their capabilities and to submit print jobs to these printers.

printing
Chrome 81+ ChromeOS only

Use thechrome.printing API to send print jobs to printers installed on Chromebook.

printingMetrics
Chrome 79+ ChromeOS only Requires policy

Use thechrome.printingMetrics API to fetch data about printing usage.

privacy

Use thechrome.privacy API to control usage of the features in Chrome that can affect a user's privacy. This API relies on theChromeSetting prototype of the type API for getting and setting Chrome's configuration.

processes
Dev channel

Use thechrome.processes API to interact with the browser's processes.

proxy

Use thechrome.proxy API to manage Chrome's proxy settings. This API relies on theChromeSetting prototype of the type API for getting and setting the proxy configuration.

readingList
Chrome 120+MV3+

Use thechrome.readingList API to read from and modify the items in theReading List.

runtime

Use thechrome.runtime API to retrieve the service worker, return details about the manifest, and listen for and respond to events in the extension lifecycle. You can also use this API to convert the relative path of URLs to fully-qualified URLs.

scripting
Chrome 88+MV3+

Use thechrome.scripting API to execute script in different contexts.

search
Chrome 87+

Use thechrome.search API to search via the default provider.

sessions

Use thechrome.sessions API to query and restore tabs and windows from a browsing session.

sidePanel
Chrome 114+MV3+

Use thechrome.sidePanel API to host content in the browser's side panel alongside the main content of a webpage.

storage

Use thechrome.storage API to store, retrieve, and track changes to user data.

system.cpu

Use thesystem.cpu API to query CPU metadata.

system.display

Use thesystem.display API to query display metadata.

system.memory

Thechrome.system.memory API.

system.storage

Use thechrome.system.storage API to query storage device information and be notified when a removable storage device is attached and detached.

systemLog
Chrome 125+ ChromeOS only Requires policy

Use thechrome.systemLog API to record Chrome system logs from extensions.

tabCapture

Use thechrome.tabCapture API to interact with tab media streams.

tabGroups
Chrome 89+MV3+

Use thechrome.tabGroups API to interact with the browser's tab grouping system. You can use this API to modify and rearrange tab groups in the browser. To group and ungroup tabs, or to query what tabs are in groups, use thechrome.tabs API.

tabs

Use thechrome.tabs API to interact with the browser's tab system. You can use this API to create, modify, and rearrange tabs in the browser.

topSites

Use thechrome.topSites API to access the top sites (i.e. most visited sites) that are displayed on the new tab page. These do not include shortcuts customized by the user.

tts

Use thechrome.tts API to play synthesized text-to-speech (TTS). See also the relatedttsEngine API, which allows an extension to implement a speech engine.

ttsEngine

Use thechrome.ttsEngine API to implement a text-to-speech(TTS) engine using an extension. If your extension registers using this API, it will receive events containing an utterance to be spoken and other parameters when any extension or Chrome App uses thetts API to generate speech. Your extension can then use any available web technology to synthesize and output the speech, and send events back to the calling function to report the status.

types

Thechrome.types API contains type declarations for Chrome.

userScripts
Chrome 120+MV3+

Use theuserScripts API to execute user scripts in the User Scripts context.

vpnProvider
Chrome 43+ ChromeOS only

Use thechrome.vpnProvider API to implement a VPN client.

wallpaper
Chrome 43+ ChromeOS only

Use thechrome.wallpaper API to change the ChromeOS wallpaper.

webAuthenticationProxy
Chrome 115+MV3+

Thechrome.webAuthenticationProxy API lets remote desktop software running on a remote host intercept Web Authentication API (WebAuthn) requests in order to handle them on a local client.

webNavigation

Use thechrome.webNavigation API to receive notifications about the status of navigation requests in-flight.

webRequest

Use thechrome.webRequest API to observe and analyze traffic and to intercept, block, or modify requests in-flight.

windows

Use thechrome.windows API to interact with browser windows. You can use this API to create, modify, and rearrange windows in the browser.

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-03 UTC.