Welcome What's new in Chrome extensions API reference Samples
Welcome What's new in Chrome extensions API reference Samples

API reference

Most extensions need access to one or more Chrome Extensions APIs to function. This API reference describes the APIs available for 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 not always, manifest fields for the manifest.json file. For example, the chrome.action namespace requires an "action" object in the manifest. Many APIs also require permissions in the manifest.

Methods in extension APIs are asynchronous unless stated otherwise. Asynchronous methods return immediately, without waiting for the operation that calls them to finish. Use promises to get the results of these methods. For more information, see 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.

Stable APIs

Release information is not available for APIs before Chrome 42, which was released in early 2015.

NameDescription
accessibilityFeatures

Use the chrome.accessibilityFeatures API to manage Chrome's accessibility features. This API relies on the ChromeSetting prototype of the type API for getting and setting individual accessibility features. In order to get feature states the extension must request accessibilityFeatures.read permission. For modifying feature state, the extension needs accessibilityFeatures.modify permission. Note that accessibilityFeatures.modify does not imply accessibilityFeatures.read permission.

action
Chrome 88+ MV3+

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

alarms

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

audio
Chrome 59+ ChromeOS only

The chrome.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 the chrome.bookmarks API to create, organize, and otherwise manipulate bookmarks. Also see Override Pages, which you can use to create a custom Bookmark Manager page.

browserAction
≤MV2

Use browser actions to put icons in the main Google Chrome toolbar, to the right of the address bar. In addition to its icon, a browser action can have a tooltip, a badge, and a popup.

browsingData

Use the chrome.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 the chrome.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 the chrome.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 the chrome.cookies API to query and modify cookies, and to be notified when they change.

debugger

The chrome.debugger API serves as an alternate transport for Chrome's remote debugging protocol. Use chrome.debugger to attach to one or more tabs to instrument network interaction, debug JavaScript, mutate the DOM and CSS, etc. Use the Debuggee tabId to target tabs with sendCommand and route events by tabId from onEvent callbacks.

declarativeContent

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

declarativeNetRequest
Chrome 84+

The chrome.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

Desktop Capture API that can be used to capture content of screen, individual windows or tabs.

devtools.inspectedWindow

Use the chrome.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 the chrome.devtools.network API to retrieve the information about network requests displayed by the Developer Tools in the Network panel.

devtools.panels

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

devtools.recorder
Chrome 105+

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

documentScan
Chrome 44+ ChromeOS only

Use the chrome.documentScan API to discover and retrieve images from attached paper document scanners.

dom
Chrome 88+

Use the chrome.dom API to access special DOM APIs for Extensions

downloads

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

enterprise.deviceAttributes
Chrome 46+ ChromeOS only Requires policy

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

enterprise.hardwarePlatform
Chrome 71+ Requires policy

Use the chrome.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.networkingAttributes
Chrome 85+ ChromeOS only Requires policy

Use the chrome.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 the chrome.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 {@link platformKeys chrome.platformKeys}.

events

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

extension

The chrome.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 in Message Passing.

extensionTypes

The chrome.extensionTypes API contains type declarations for Chrome extensions.

fileBrowserHandler
ChromeOS only Foreground only

Use the chrome.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 the chrome.fileSystemProvider API to create file systems, that can be accessible from the file manager on Chrome OS.

fontSettings

Use the chrome.fontSettings API to manage Chrome's font settings.

gcm

Use chrome.gcm to enable apps and extensions to send and receive messages through Firebase Cloud Messaging (FCM).

history

Use the chrome.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, see Override Pages.

i18n

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

identity

Use the chrome.identity API to get OAuth2 access tokens.

idle

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

input.ime

Use the chrome.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+

Use chrome.instanceID to access the Instance ID service.

loginState
Chrome 78+ ChromeOS only

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

management

The chrome.management API provides ways to manage the list of extensions/apps that are installed and running. It is particularly useful for extensions that override the built-in New Tab page.

notifications

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

offscreen
Chrome 109+ MV3+

Use the offscreen 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.

pageAction
≤MV2

Use the chrome.pageAction API to put icons in the main Google Chrome toolbar, to the right of the address bar. Page actions represent actions that can be taken on the current page, but that aren't applicable to all pages. Page actions appear grayed out when inactive.

pageCapture

Use the chrome.pageCapture API to save a tab as MHTML.

permissions

Use the chrome.permissions API to request declared 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 the chrome.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 (see {@link vpnProvider chrome.vpnProvider}).

power

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

printerProvider
Chrome 44+

The chrome.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 the chrome.printing API to send print jobs to printers installed on Chromebook.

printingMetrics
Chrome 79+ ChromeOS only Requires policy

Use the chrome.printingMetrics API to fetch data about printing usage.

privacy

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

proxy

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

readingList
Pending MV3+

Use the chrome.readingList API to read from and modify the items in the Reading List.

runtime

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

scripting
Chrome 88+ MV3+

Use the chrome.scripting API to execute script in different contexts.

search
Chrome 87+

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

sessions

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

sidePanel
Chrome 114+ MV3+

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

storage

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

system.cpu

Use the system.cpu API to query CPU metadata.

system.display

Use the system.display API to query display metadata.

system.memory

The chrome.system.memory API.

system.storage

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

tabCapture

Use the chrome.tabCapture API to interact with tab media streams.

tabGroups
Chrome 89+ MV3+

Use the chrome.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 the chrome.tabs API.

tabs

Use the chrome.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 the chrome.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 the chrome.tts API to play synthesized text-to-speech (TTS). See also the related {@link ttsEngine} API, which allows an extension to implement a speech engine.

ttsEngine

Use the chrome.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 the {@link tts} 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

The chrome.types API contains type declarations for Chrome.

userScripts
Pending MV3+

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

vpnProvider
Chrome 43+ ChromeOS only

Use the chrome.vpnProvider API to implement a VPN client.

wallpaper
Chrome 43+ ChromeOS only

Use the chrome.wallpaper API to change the ChromeOS wallpaper.

webAuthenticationProxy
Chrome 115+ MV3+

The chrome.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 the chrome.webNavigation API to receive notifications about the status of navigation requests in-flight.

webRequest

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

windows

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

Beta APIs

These APIs are only available in the Chrome Beta and Dev channels:

NameDescription
declarativeWebRequest
Beta channel ≤MV2

Note: this API is deprecated. Check out the {@link declarativeNetRequest} API instead. Use the chrome.declarativeWebRequest API to intercept, block, or modify requests in-flight. It is significantly faster than the {@link webRequest chrome.webRequest API} because you can register rules that are evaluated in the browser rather than the JavaScript engine, which reduces roundtrip latencies and allows higher efficiency.

Dev APIs

These APIs are only available in the Chrome Dev channel:

NameDescription
dns
Dev channel

Use the chrome.dns API for dns resolution.

processes
Dev channel

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

Platform Apps APIs

These APIs support Chrome Apps.

These APIs were deprecated in 2020. They are supported only for ChromeOS until at least Jan 2025. It remains supported for Enterprise and Education customers on ChromeOS until at least Jan 2025. Learn more about migrating your app.
NameDescription
app.runtime

Use the chrome.app.runtime API to manage the app lifecycle. The app runtime manages app installation, controls the event page, and can shut down the app at anytime.

app.window

Use the chrome.app.window API to create windows. Windows have an optional frame with title bar and size controls. They are not associated with any Chrome browser windows. See the Window State Sample for a demonstration of these options.

appviewTag
Chrome 43+

Use the appview tag to embed other Chrome Apps within your Chrome App. (see Usage).

bluetooth

Use the chrome.bluetooth API to connect to a Bluetooth device. All functions report failures via chrome.runtime.lastError.

bluetoothLowEnergy

The chrome.bluetoothLowEnergy API is used to communicate with Bluetooth Smart (Low Energy) devices using the Generic Attribute Profile (GATT).

bluetoothSocket

Use the chrome.bluetoothSocket API to send and receive data to Bluetooth devices using RFCOMM and L2CAP connections.

browser

Use the chrome.browser API to interact with the Chrome browser associated with the current application and Chrome profile.

clipboard
Dev channel ChromeOS only

The chrome.clipboard API is provided to allow users to access data of the clipboard. This is a temporary solution for chromeos platform apps until open-web alternative is available. It will be deprecated once open-web solution is available, which could be in 2017 Q4.

fileSystem
Foreground only

Use the chrome.fileSystem API to create, read, navigate, and write to the user's local file system. With this API, Chrome Apps can read and write to a user-selected location. For example, a text editor app can use the API to read and write local documents. All failures are notified via chrome.runtime.lastError.

hid

Use the chrome.hid API to interact with connected HID devices. This API provides access to HID operations from within the context of an app. Using this API, apps can function as drivers for hardware devices. Errors generated by this API are reported by setting {@link runtime.lastError} and executing the function's regular callback. The callback's regular parameters will be undefined in this case.

mdns
Chrome 43+

Use the chrome.mdns API to discover services over mDNS. This comprises a subset of the features of the NSD spec: http://www.w3.org/TR/discovery-api/

mediaGalleries

Use the chrome.mediaGalleries API to access media files (audio, images, video) from the user's local disks (with the user's consent).

networking.onc
Chrome 59+ ChromeOS only

The chrome.networking.onc API is used for configuring network connections (Cellular, Ethernet, VPN or WiFi). This API is available in auto-launched Chrome OS kiosk sessions.

serial

Use the chrome.serial API to read from and write to a device connected to a serial port.

socket

Use the chrome.socket API to send and receive data over the network using TCP and UDP connections. Note: Starting with Chrome 33, this API is deprecated in favor of the {@link sockets.udp}, {@link sockets.tcp} and {@link sockets.tcpServer} APIs.

sockets.tcp

Use the chrome.sockets.tcp API to send and receive data over the network using TCP connections. This API supersedes the TCP functionality previously found in the chrome.socket API.

sockets.tcpServer

Use the chrome.sockets.tcpServer API to create server applications using TCP connections. This API supersedes the TCP functionality previously found in the chrome.socket API.

sockets.udp

Use the chrome.sockets.udp API to send and receive data over the network using UDP connections. This API supersedes the UDP functionality previously found in the "socket" API.

syncFileSystem

Use the chrome.syncFileSystem API to save and synchronize data on Google Drive. This API is NOT for accessing arbitrary user docs stored in Google Drive. It provides app-specific syncable storage for offline and caching usage so that the same data can be available across different clients. Read Manage Data for more on using this API.

system.network

Use the chrome.system.network API.

usb

Use the chrome.usb API to interact with connected USB devices. This API provides access to USB operations from within the context of an app. Using this API, apps can function as drivers for hardware devices. Errors generated by this API are reported by setting {@link runtime.lastError} and executing the function's regular callback. The callback's regular parameters will be undefined in this case.

virtualKeyboard
Chrome 58+ ChromeOS only

The chrome.virtualKeyboard API is a kiosk only API used to configure virtual keyboard layout and behavior in kiosk sessions.

webviewTag

Use the webview tag to actively load live content from the web over the network and embed it in your Chrome App. Your app can control the appearance of the webview and interact with the web content, initiate navigations in an embedded web page, react to error events that happen within it, and more (see Usage).

This site uses cookies to deliver and enhance the quality of its services and to analyze traffic. If you agree, cookies are also used to serve advertising and to personalize the content and advertisements that you see. Learn more about our use of cookies.