> This page is for Designer API.

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

# Search element settings (Beta)

> Retrieve the configurable settings for an element, such as alt text, image source, heading tag, link target, and Collection List settings.

## `element.searchSettings()`

Retrieve the configurable settings for an element, such as alt text, image source, heading tag, link target, and Collection List settings.

For standard element settings, the response includes current values, binding information, resolved values, and display labels.
Collection List settings include current values and display labels.

This method is available on all element types that have at least one setting.
Results can be filtered by value type or by setting key.

> **Beta**
>
> These methods are in public beta and may change with future releases.

> **Note**
>
> This method does not support component instances.
> To retrieve the properties of a component instance, use [`element.searchProps()`](/designer/reference/component-element/searchProps).

## Syntax

```typescript
element.searchSettings(options?: SearchSettingsOptions): Promise<Record<string, SearchSettingsResult>>
```

Related interfaces:

```typescript
interface SearchSettingsOptions {
  /** Filter to settings that produce a specific value type (e.g., "string", "image", "collectionListSetting") */
  valueType?: SearchSettingValueType;
  /** Filter to a specific setting by key (e.g., "domId", "assetId") */
  key?: string;
}

interface ElementSetting {
  valueType: BindableValueType;
  canBind: boolean;
  value: SettingValue;
  resolvedValue: ResolvedValue | null;
  display: SettingDisplay;
}

interface CollectionListElementSetting {
  valueType: "collectionListSetting";
  canBind: false;
  value: CollectionListSettingValue;
  display: SettingDisplay;
}

type SearchSettingsResult = ElementSetting | CollectionListElementSetting;
type SearchSettingValueType = SearchSettingsResult["valueType"];

type SettingValue =
  | { sourceType: 'static'; value: unknown }
  | { sourceType: 'prop'; propId: string; propName: string; propType: string }
  | { sourceType: 'cms'; collectionId: string; collectionName: string; fieldId: string; fieldName: string }
  | { sourceType: 'locale'; fieldKey: string; fieldName: string }
  | { sourceType: 'localeItem'; fieldKey: string; fieldName: string }
  | { sourceType: 'page'; fieldKey: string; fieldName: string }
  | { sourceType: 'conditional' }
  | { sourceType: 'legacy' };

interface SettingDisplay {
  label: string;
  group: string | null;
  trueLabel?: string;
  falseLabel?: string;
}

type CollectionListSettingValue =
  | CollectionListSource
  | CollectionListFilter[]
  | CollectionListSort[]
  | CollectionListPagination
  | CollectionListQueryMode
  | CollectionListFilterMatch
  | string[]
  | number
  | null;
```

## Parameters

**`options`** *(optional)*

An object with the following optional properties:

| Property    | Type                     | Description                                                                                                                                        |
| :---------- | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |
| `valueType` | `SearchSettingValueType` | Filter results to settings that produce a specific value type, such as `"string"`, `"image"`, `"link"`, `"boolean"`, or `"collectionListSetting"`. |
| `key`       | `string`                 | Filter results to a specific setting by key, such as `"domId"`, `"altText"`, or `"assetId"`.                                                       |

Both filters can be used together.
When no options are provided, all settings for the element are returned.

## Returns

**Promise\<Record\<string, *SearchSettingsResult*>>**

A Promise that resolves to an object mapping setting keys to setting result objects.
Returns an empty object when the element has no settings or no settings match the filter criteria.

Standard `ElementSetting` objects have the following fields:

| Field           | Type                    | Description                                                                                                                      |
| :-------------- | :---------------------- | :------------------------------------------------------------------------------------------------------------------------------- |
| `valueType`     | `BindableValueType`     | The data type this setting holds, such as `"string"`, `"image"`, `"link"`, or `"boolean"`.                                       |
| `canBind`       | `boolean`               | Whether this setting can be bound to a data source such as a prop, CMS field, or page field.                                     |
| `value`         | `SettingValue`          | The current value. Always a `{ sourceType, ... }` shape, as in the table below.                                                  |
| `resolvedValue` | `ResolvedValue \| null` | The final resolved value or `null` if the value is unset or unresolvable.                                                        |
| `display`       | `SettingDisplay`        | Display metadata for rendering in UI. Includes `label`, `group`, and optional `trueLabel` and `falseLabel` for boolean settings. |

Collection List settings use a structured `CollectionListElementSetting` object:

| Field       | Type                         | Description                                                                |
| :---------- | :--------------------------- | :------------------------------------------------------------------------- |
| `valueType` | `"collectionListSetting"`    | Identifies the setting as a Collection List setting.                       |
| `canBind`   | `false`                      | Collection List settings don't support binding through `searchSettings()`. |
| `value`     | `CollectionListSettingValue` | The current structured Collection List setting value.                      |
| `display`   | `SettingDisplay`             | Display metadata for rendering in UI.                                      |

For Collection List settings, the record uses the Collection List setting names as keys: `source`, `queryMode`, `filters`, `filterMatch`, `sort`, `limit`, `offset`, `pagination`, and `curatedItemIds`.
For example, `results.source.value` is the connected source, or `null` when the Collection List has no source.

For standard `ElementSetting` objects, the `value` field always uses a `{ sourceType, ... }` shape.
The possible variants are:

| `sourceType`    | Description                            | Additional fields                                        |
| :-------------- | :------------------------------------- | :------------------------------------------------------- |
| `"static"`      | A directly set value                   | `value`                                                  |
| `"prop"`        | Bound to a component prop              | `propId`, `propName`, `propType`                         |
| `"cms"`         | Bound to a CMS collection field        | `collectionId`, `collectionName`, `fieldId`, `fieldName` |
| `"locale"`      | Bound to a field on the current locale | `fieldKey`, `fieldName`                                  |
| `"localeItem"`  | Bound to a field on a locale list item | `fieldKey`, `fieldName`                                  |
| `"page"`        | Bound to a field on the current page   | `fieldKey`, `fieldName`                                  |
| `"conditional"` | Unsupported conditional binding        | *(none)*                                                 |
| `"legacy"`      | Unsupported legacy binding             | *(none)*                                                 |

## Notes

* `textContent`-type setting values are returned as `{ innerText: string }` objects rather than bare strings.
* When a standard setting is bound to a CMS source, `resolvedValue` is `null`. This is a current limitation.
* Both `Form` and `FormBlock` elements return the same form settings (`name`, `method`, `action`, `redirect`, `state`). Selecting either element returns those settings for convenience.
* Collection List settings use `valueType: "collectionListSetting"`. These entries don't include `resolvedValue`. See [Collection List settings](/designer/reference/element-settings/collection-list-settings).

## Example

```typescript
// Get the selected element
const element = await webflow.getSelectedElement();

if (element) {
  // Get all settings for the element
  const allSettings = await element.searchSettings();
  console.log(allSettings);
  // Example result for an Image element:
  // {
  //   altText: {
  //     valueType: 'altText',
  //     canBind: true,
  //     value: { sourceType: 'static', value: 'A sunset photo' },
  //     resolvedValue: 'A sunset photo',
  //     display: { label: 'Alt Text', group: null }
  //   },
  //   src: {
  //     valueType: 'image',
  //     canBind: true,
  //     value: { sourceType: 'static', value: 'asset_abc123' },
  //     resolvedValue: 'https://cdn.webflow.com/foo.jpg',
  //     display: { label: 'Image', group: null }
  //   },
  //   domId: {
  //     valueType: 'id',
  //     canBind: true,
  //     value: { sourceType: 'static', value: 'hero-img' },
  //     resolvedValue: 'hero-img',
  //     display: { label: 'ID', group: null }
  //   }
  // }

  // Filter to only image-type settings
  const imageSettings = await element.searchSettings({ valueType: 'image' });

  // Get a specific setting by key
  const altTextSetting = await element.searchSettings({ key: 'altText' });
}
```

```typescript
const collectionList = await webflow.getSelectedElement();

if (collectionList?.type === "DynamoWrapper") {
  const collectionListSettings = await collectionList.searchSettings({
    valueType: "collectionListSetting",
  });

  console.log(collectionListSettings.source);
  // {
  //   valueType: "collectionListSetting",
  //   canBind: false,
  //   value: { collectionId: "collection_123" },
  //   display: { label: "Source", group: "Collection List" }
  // }

  const filterSettings = await collectionList.searchSettings({ key: "filters" });
  console.log(filterSettings.filters);
  // {
  //   valueType: "collectionListSetting",
  //   canBind: false,
  //   value: [],
  //   display: { label: "Filters", group: "Collection List" }
  // }
}
```

## Designer ability

Checks for authorization only

| Designer ability    | Locale | Branch | Workflow | Sitemode |
| :------------------ | :----- | :----- | :------- | :------- |
| **canAccessCanvas** | Any    | Any    | Any      | Any      |