> Portal Navigation:
> 
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt

# GetItemSeoTags

# Package: seo

# Namespace: ItemSeoTagsService

# Method link: https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/get-item-seo-tags.md

## Permission Scopes:
View SEO Settings: SCOPE.PROMOTE.VIEW-SEO

## Introduction

Retrieves the SEO tags of a single item.

Returns the tags set for the item itself in `tags`, and the tags it's expected to
render with in `resolvedTags`, each marked with where it came from. An item with no
tags of its own returns empty `tags` and `hasOverride: false`, because it inherits its
tags.

Limitation: for an item type that keeps a separate published revision (currently
`STATIC_PAGE`), `tags`, `focusKeywords`, and `resolvedTags` always reflect the saved
revision, never the published one. Calling [Set Item SEO
Tags](https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/set-item-seo-tags.md)
with `publish: true` updates the published revision without updating the saved one, so a
page's live tags can differ from what this method (or List Item SEO Tags) returns for it,
with no way to read the published revision back through this API.

To retrieve the items of a type together with their IDs, call [List Item SEO
Tags](https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/list-item-seo-tags.md).

---

## REST API

### Schema

```
 Method: getItemSeoTags
 Description: Retrieves the SEO tags of a single item.  Returns the tags set for the item itself in `tags`, and the tags it's expected to render with in `resolvedTags`, each marked with where it came from. An item with no tags of its own returns empty `tags` and `hasOverride: false`, because it inherits its tags.  Limitation: for an item type that keeps a separate published revision (currently `STATIC_PAGE`), `tags`, `focusKeywords`, and `resolvedTags` always reflect the saved revision, never the published one. Calling [Set Item SEO Tags](https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/set-item-seo-tags.md) with `publish: true` updates the published revision without updating the saved one, so a page's live tags can differ from what this method (or List Item SEO Tags) returns for it, with no way to read the published revision back through this API.  To retrieve the items of a type together with their GUIDs, call [List Item SEO Tags](https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/list-item-seo-tags.md).
 URL: https://www.wixapis.com/promote/seo/v1/item-seo-tags/{itemType}/{itemId}
 Method: GET
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  itemType, itemId
 Method parameters: 
   param name: itemId | type:   none | required: true 
   param name: itemType | type:   none | required: true 
 Return type: GetItemSeoTagsResponse
  - name: itemSeoTags | type: ItemSeoTags | description: Retrieved item SEO tags.  
     - name: id | type: string | description: Item SEO tags GUID, in the format `{itemType}:{itemId}`.  | read-only: true | validation: maxLength 400
     - name: itemType | type: string | description: Type of item the tags belong to. For example, `STATIC_PAGE`, `BLOG_POST`, or `STORES_PRODUCT`.  For an item on a page built from a Wix Data collection, the item type takes the form `WIX_DATA_PAGE_ITEM-{pageId}`.  | read-only: true | validation: maxLength 100
     - name: itemId | type: string | description: GUID of the item the tags belong to. For a static page, this is the page GUID.  | read-only: true | validation: maxLength 200
     - name: tags | type: array<Tag> | description: Tags set for this item alone, which take precedence over the tags it would otherwise inherit.  Empty when the item has no tags of its own.  | validation: maxItems 100
        - name: type | type: string | description: SEO tag type.   Supported values: `title`, `meta`, `script`, `link`.  
        - name: props | type: object | description: A `{"key": "value"}` pair object where each SEO tag property (`"name"`, `"content"`, `"rel"`, `"href"`) contains a value. For example: `{"name": "description", "content": "the description itself"}`.  
        - name: meta | type: object | description: SEO tag metadata. For example, `{"height": 300, "width": 240}`.  
        - name: children | type: string | description: SEO tag inner content. For example, `<title> inner content </title>`.  
        - name: custom | type: boolean | description: Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages) — i.e. an entry from the site's Advanced/Custom Tags list.  This flag is scoped to that feature only. It is NOT an indicator of whether a standard tag (`title`, `description`, Open Graph, etc.) reflects a manually configured value versus a computed default/pattern — standard tags always resolve with `custom: false`, even when their content comes from a page's manually saved SEO title/description override. Don't use this field to verify whether a live page reflects a manual per-page SEO edit.  Limitation: when `ResolveStaticPageSeoTags` is called without `seoData`, the per-page SEO data is read only from the Vibe/Wix-managed-headless override store. That store holds nothing for classic Wix Editor or Wix Studio pages, so even genuine Advanced/Custom Tags saved on those pages are missing from the response entirely — there, `false` means this API could not tell, not that no custom tag exists. Pass `seoData` explicitly to resolve against a known set of tags.  
        - name: disabled | type: boolean | description: Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.  
     - name: focusKeywords | type: array<Keyword> | description: Keywords the item's content is intended to rank for. Used by Wix's SEO tools to assess the item's content; they aren't rendered on the page.  Mark the item's main keyword with `isMain` rather than relying on its position in the list.  | validation: maxItems 5
        - name: term | type: string | description: Keyword value.  
        - name: isMain | type: boolean | description: Whether the keyword is the main focus keyword.  
        - name: origin | type: string | description: The source that added the keyword terms to the SEO settings.  | validation: maxLength 1000
     - name: hasOverride | type: boolean | description: Whether the item has tags of its own, as opposed to inheriting them.  `false` doesn't mean the item shows Wix's built-in tags: it may inherit from the pattern for its item type, from the site's tags, or from the page that hosts it. See `resolvedTags` for the tags the item is expected to render with.  | read-only: true 
     - name: resolvedTags | type: array<ResolvedTag> | description: The tags the item is expected to render with, each marked with where it came from.  Derived by combining every source Wix manages, so it reflects inherited tags as well as the item's own. Tags that site code, apps, or page components add while the page renders aren't included, so this isn't a literal copy of the page's rendered head.  If a tag's source can't be determined, the tag is still exact but its `source` is `TAG_SOURCE_UNSPECIFIED`.  | read-only: true | validation: maxItems 500
        - name: tag | type: Tag | description: Resolved SEO tag.  
        - name: source | type: TagSource | description: Where the tag came from.  
             - enum:
             -     TAG_SOURCE_UNSPECIFIED: Unknown source.
             -     TAG_SOURCE_SITE: The site's own site-wide tags.
             -     TAG_SOURCE_DEFAULT_PATTERN: The pattern Wix provides for the page type.
             -     TAG_SOURCE_USER_PATTERN: The pattern the Wix user customized for the page type.
             -     TAG_SOURCE_HOST_PAGE: The tags of the page the item is displayed on.
             -     TAG_SOURCE_ITEM: The item's own tags, which the Wix user set for that item alone.
     - name: hostPageId | type: string | description: GUID of the page that displays the item, for items shown on a shared page, such as a blog post or a store product.  Informational: the hosting page can't be addressed through this API.  | read-only: true | validation: maxLength 200
     - name: publishStatus | type: PublishStatus | description: Whether the item's SEO tags are live on the published site.  | read-only: true 
         - enum:
         -     PUBLISH_STATUS_UNSPECIFIED: Unknown publish status. Returned when the item type doesn't report one.
         -     PUBLISH_STATUS_PUBLISHED: The item's SEO tags are live on the published site. Item types that keep no separate draft, such as store products, events, and portfolio collections, always report this status.
         -     PUBLISH_STATUS_NOT_PUBLISHED: The item has never been published, so its SEO tags exist only as a draft and aren't on the live site. For example, a blog post that's still a draft.
     - name: language | type: string | description: Language the tags apply to, as an IETF BCP 47 language tag. For example, `en-US` for U.S. English.  Tags can currently be written only for the site's primary language, so leave this unset on a write. Sending a language fails with `LANGUAGE_NOT_SUPPORTED`.  | read-only: true | validation: maxLength 100
     - name: origin | type: Origin | description: What made the most recent change to the item's tags, for example a user or the site migration flow. Derived from the caller, not from the request.  `ORIGIN_UNSPECIFIED` when the caller isn't one Wix identifies as a specific origin. Origin isn't stored with the tags either, so Get Item SEO Tags and List Item SEO Tags always return `ORIGIN_UNSPECIFIED`.  | read-only: true 
         - enum:
         -     ORIGIN_UNSPECIFIED: Unknown origin. Returned by read methods, because origin isn't stored alongside the data it describes.
         -     ORIGIN_USER: A user, working in the dashboard or editor, or calling the API on their own behalf.
         -     ORIGIN_MIGRATION: The flow that imports an existing site into Wix.
         -     ORIGIN_AI: An AI agent or an automated suggestion flow.

 Possible Errors:
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: UNSUPPORTED_ITEM_TYPE | Description: Wix doesn't support the specified `itemType`. The error message lists the item types that are supported.
   HTTP Code: 404 | Status Code: NOT_FOUND | Application Code: ITEM_NOT_FOUND | Description: Couldn't find the item.


```

### Examples

### Retrieve one item's SEO tags
This page has no tags of its own, so `tags` is empty and `hasOverride` is false. `resolvedTags` shows the tags it inherits, each marked with its source.

```curl
curl -X GET \
'https://www.wixapis.com/seo-metatags-server/v1/item-seo-tags/STATIC_PAGE/c1dmp' \
-H 'Authorization: <AUTH>' \
-H 'Content-Type: application/json'
```

---

## JavaScript SDK

### Schema

```
 Method: wixClientAdmin.seo.itemSeoTags.getItemSeoTags(identifiers)
 Description: Retrieves the SEO tags of a single item.  Returns the tags set for the item itself in `tags`, and the tags it's expected to render with in `resolvedTags`, each marked with where it came from. An item with no tags of its own returns empty `tags` and `hasOverride: false`, because it inherits its tags.  Limitation: for an item type that keeps a separate published revision (currently `STATIC_PAGE`), `tags`, `focusKeywords`, and `resolvedTags` always reflect the saved revision, never the published one. Calling [Set Item SEO Tags](https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/set-item-seo-tags.md) with `publish: true` updates the published revision without updating the saved one, so a page's live tags can differ from what this method (or List Item SEO Tags) returns for it, with no way to read the published revision back through this API.  To retrieve the items of a type together with their GUIDs, call [List Item SEO Tags](https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/list-item-seo-tags.md).
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  identifiers.itemType, identifiers.itemId, identifiers
 Method parameters: 
   param name: identifiers | type: GetItemSeoTagsIdentifiers  none | required: true 
        - name: itemType | type: string | description: Type of item to retrieve tags for. For example, `STATIC_PAGE` or `STORES_PRODUCT`. | required: true | validation: maxLength 100
        - name: itemId | type: string | description: GUID of the item to retrieve tags for. | required: true | validation: maxLength 200
 Return type: PROMISE<ItemSeoTags>
  - name: _id | type: string | description: Item SEO tags GUID, in the format `{itemType}:{itemId}`.  | read-only: true | validation: maxLength 400
  - name: itemType | type: string | description: Type of item the tags belong to. For example, `STATIC_PAGE`, `BLOG_POST`, or `STORES_PRODUCT`.  For an item on a page built from a Wix Data collection, the item type takes the form `WIX_DATA_PAGE_ITEM-{pageId}`.  | read-only: true | validation: maxLength 100
  - name: itemId | type: string | description: GUID of the item the tags belong to. For a static page, this is the page GUID.  | read-only: true | validation: maxLength 200
  - name: tags | type: array<Tag> | description: Tags set for this item alone, which take precedence over the tags it would otherwise inherit.  Empty when the item has no tags of its own.  | validation: maxItems 100
     - name: type | type: string | description: SEO tag type.   Supported values: `title`, `meta`, `script`, `link`.  
     - name: props | type: object | description: A `{"key": "value"}` pair object where each SEO tag property (`"name"`, `"content"`, `"rel"`, `"href"`) contains a value. For example: `{"name": "description", "content": "the description itself"}`.  
     - name: meta | type: object | description: SEO tag metadata. For example, `{"height": 300, "width": 240}`.  
     - name: children | type: string | description: SEO tag inner content. For example, `<title> inner content </title>`.  
     - name: custom | type: boolean | description: Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages) — i.e. an entry from the site's Advanced/Custom Tags list.  This flag is scoped to that feature only. It is NOT an indicator of whether a standard tag (`title`, `description`, Open Graph, etc.) reflects a manually configured value versus a computed default/pattern — standard tags always resolve with `custom: false`, even when their content comes from a page's manually saved SEO title/description override. Don't use this field to verify whether a live page reflects a manual per-page SEO edit.  Limitation: when `ResolveStaticPageSeoTags` is called without `seoData`, the per-page SEO data is read only from the Vibe/Wix-managed-headless override store. That store holds nothing for classic Wix Editor or Wix Studio pages, so even genuine Advanced/Custom Tags saved on those pages are missing from the response entirely — there, `false` means this API could not tell, not that no custom tag exists. Pass `seoData` explicitly to resolve against a known set of tags.  
     - name: disabled | type: boolean | description: Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.  
  - name: focusKeywords | type: array<Keyword> | description: Keywords the item's content is intended to rank for. Used by Wix's SEO tools to assess the item's content; they aren't rendered on the page.  Mark the item's main keyword with `isMain` rather than relying on its position in the list.  | validation: maxItems 5
     - name: term | type: string | description: Keyword value.  
     - name: isMain | type: boolean | description: Whether the keyword is the main focus keyword.  
     - name: origin | type: string | description: The source that added the keyword terms to the SEO settings.  | validation: maxLength 1000
  - name: hasOverride | type: boolean | description: Whether the item has tags of its own, as opposed to inheriting them.  `false` doesn't mean the item shows Wix's built-in tags: it may inherit from the pattern for its item type, from the site's tags, or from the page that hosts it. See `resolvedTags` for the tags the item is expected to render with.  | read-only: true 
  - name: resolvedTags | type: array<ResolvedTag> | description: The tags the item is expected to render with, each marked with where it came from.  Derived by combining every source Wix manages, so it reflects inherited tags as well as the item's own. Tags that site code, apps, or page components add while the page renders aren't included, so this isn't a literal copy of the page's rendered head.  If a tag's source can't be determined, the tag is still exact but its `source` is `TAG_SOURCE_UNSPECIFIED`.  | read-only: true | validation: maxItems 500
     - name: tag | type: Tag | description: Resolved SEO tag.  
     - name: source | type: TagSource | description: Where the tag came from.  
         - enum:
         -     TAG_SOURCE_UNSPECIFIED: Unknown source.
         -     TAG_SOURCE_SITE: The site's own site-wide tags.
         -     TAG_SOURCE_DEFAULT_PATTERN: The pattern Wix provides for the page type.
         -     TAG_SOURCE_USER_PATTERN: The pattern the Wix user customized for the page type.
         -     TAG_SOURCE_HOST_PAGE: The tags of the page the item is displayed on.
         -     TAG_SOURCE_ITEM: The item's own tags, which the Wix user set for that item alone.
  - name: hostPageId | type: string | description: GUID of the page that displays the item, for items shown on a shared page, such as a blog post or a store product.  Informational: the hosting page can't be addressed through this API.  | read-only: true | validation: maxLength 200
  - name: publishStatus | type: PublishStatus | description: Whether the item's SEO tags are live on the published site.  | read-only: true 
     - enum:
     -     PUBLISH_STATUS_UNSPECIFIED: Unknown publish status. Returned when the item type doesn't report one.
     -     PUBLISH_STATUS_PUBLISHED: The item's SEO tags are live on the published site. Item types that keep no separate draft, such as store products, events, and portfolio collections, always report this status.
     -     PUBLISH_STATUS_NOT_PUBLISHED: The item has never been published, so its SEO tags exist only as a draft and aren't on the live site. For example, a blog post that's still a draft.
  - name: language | type: string | description: Language the tags apply to, as an IETF BCP 47 language tag. For example, `en-US` for U.S. English.  Tags can currently be written only for the site's primary language, so leave this unset on a write. Sending a language fails with `LANGUAGE_NOT_SUPPORTED`.  | read-only: true | validation: maxLength 100
  - name: origin | type: Origin | description: What made the most recent change to the item's tags, for example a user or the site migration flow. Derived from the caller, not from the request.  `ORIGIN_UNSPECIFIED` when the caller isn't one Wix identifies as a specific origin. Origin isn't stored with the tags either, so Get Item SEO Tags and List Item SEO Tags always return `ORIGIN_UNSPECIFIED`.  | read-only: true 
     - enum:
     -     ORIGIN_UNSPECIFIED: Unknown origin. Returned by read methods, because origin isn't stored alongside the data it describes.
     -     ORIGIN_USER: A user, working in the dashboard or editor, or calling the API on their own behalf.
     -     ORIGIN_MIGRATION: The flow that imports an existing site into Wix.
     -     ORIGIN_AI: An AI agent or an automated suggestion flow.

 Possible Errors:
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: UNSUPPORTED_ITEM_TYPE | Description: Wix doesn't support the specified `itemType`. The error message lists the item types that are supported.
   HTTP Code: 404 | Status Code: NOT_FOUND | Application Code: ITEM_NOT_FOUND | Description: Couldn't find the item.


```

### Examples

### Retrieve one item's SEO tags
This page has no tags of its own, so tags is empty and hasOverride is false. resolvedTags shows the tags it inherits.

```javascript
import { itemSeoTags } from "@wix/seo";

async function getItemSeoTags() {
  const response = await itemSeoTags.getItemSeoTags({
    itemType: "STATIC_PAGE",
    itemId: "c1dmp",
  });
  return response;
}

/* Promise resolves to:
 * {
 *   "_id": "STATIC_PAGE:c1dmp",
 *   "itemType": "STATIC_PAGE",
 *   "itemId": "c1dmp",
 *   "tags": [],
 *   "focusKeywords": [],
 *   "hasOverride": false,
 *   "resolvedTags": [
 *     {
 *       "tag": { "type": "title", "children": "Home | Ceramics studio" },
 *       "source": "TAG_SOURCE_DEFAULT_PATTERN"
 *     },
 *     {
 *       "tag": {
 *         "type": "link",
 *         "props": { "rel": "canonical", "href": "https://example.wixsite.com/ceramics" }
 *       },
 *       "source": "TAG_SOURCE_DEFAULT_PATTERN"
 *     }
 *   ],
 *   "publishStatus": "PUBLISH_STATUS_UNSPECIFIED",
 *   "origin": "ORIGIN_UNSPECIFIED"
 * }
 */

```

### getItemSeoTags (self-hosted)
Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md).

```javascript
import { createClient } from '@wix/sdk';
import { itemSeoTags } from '@wix/seo';
// Import the auth strategy for the relevant access type
// Import the relevant host module if needed

const myWixClient = createClient ({
  modules: { itemSeoTags },
  // Include the auth strategy and host as relevant
});


async function getItemSeoTags(identifiers) {
  const response = await myWixClient.itemSeoTags.getItemSeoTags(identifiers);
};
```

---