> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.airtop.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.airtop.ai/_mcp/server.

# Using Chrome Extensions

## What are Chrome extensions?

Chrome extensions add additional functionality to the browser. They can automate tasks, introduce new features, or modify browser behavior.

## How to use a Chrome extension

### Obtaining an extension ID

> **Note**
>
> Airtop only supports extensions that are published in the Google Web Store. Custom extensions are currently not supported.

To use a Chrome extension in a session, you need to provide the ID of the extension you want to use. You can find the extension ID by navigating to its page in the Chrome Web Store. The ID is the last part of the URL.
For example, the extension url for the "Grammarly" is

```
https://chromewebstore.google.com/detail/grammarly-ai-writing-and/kbfnbcaeplbcioakkpcpgfkobkghlhen 
```

and ID is `kbfnbcaeplbcioakkpcpgfkobkghlhen`.

### Using extensions in a session

Once you have the ID(s) of the extensions you want to use, you can pass them to the `sessions.create` method.

**`NodeJS`**

```typescript NodeJS
const session = await client.sessions.create({
  configuration: {
    extensionIds: ["<extension-id-1>", "<extension-id-2>"]
  }
});
```

**`Python`**

```python Python
session = client.sessions.create(configuration=SessionConfig(extension_ids=["<extension-id-1>", "<extension-id-2>"]))
```

Airtop will automatically install the extensions and make them available in the session.

### Configuring an extension

You can access extension information and configuration pages by [creating a live-view](/guides/how-to/creating-a-live-view) and navigating to configuration page of the extension.
When the extension is installed, a new button will appear in the navigation bar, allowing you to access extension options and popup pages.

> **Note**
>
> Not all extensions have options.

![Extensions Configuration Embed](/_fern-img/ac375be31769534032762efecbd3410de90ac26b0dafa33619ba131c89bff8e0.webp)

### Saving extension configuration on session termination

Extension configurations are saved as part of the profile. In order to save the profile, you must call `session.saveProfileOnTermination` with the name of the profile.

**`NodeJS`**

```typescript NodeJS
await client.sessions.saveProfileOnTermination(session.data.id, "MY_CONFIGURATION_NAME");
await client.sessions.terminate(session.data.id);
```

**`Python`**

```python Python
session = client.sessions.create()
client.sessions.save_profile_on_termination(
    session_id=session.data.id,
    profile_name="MY_PROFILE_NAME",
)
client.sessions.terminate(session.data.id)
```

> **Note**
>
> Extension profiles are only saved when the sesssion is terminated. You must call `sessions.terminate` to ensure the profile is saved.

You can read more about profiles [here](/guides/how-to/saving-a-profile).

### Restoring an existing extension configuration

You can restore an existing extension configuration by specifying profile name and extension IDs in the `sessions.create` method.

**`NodeJS`**

```typescript NodeJS
const session = await client.sessions.create({configuration: {
  profileName: "MY_PROFILE_NAME",
  extensionIds: ["<extension-id-1>", "<extension-id-2>"]
}});
```

**`Python`**

```python Python
session = client.sessions.create(configuration=SessionConfig(profile_name="MY_PROFILE_NAME", extension_ids=["<extension-id-1>", "<extension-id-2>"]))
```