> 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

# GetSiteKeywordResearch

# Package: seo

# Namespace: SiteKeywordResearchServiceV1

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

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

## Introduction

Retrieves a site keyword research run, including its status.

A content plan flow reaches `KEYWORD_RESEARCH` when research starts,
not when it finishes. Retrieve the flow with
[Get Content Plan Flow](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-content-plan-flow-v1/get-content-plan-flow.md),
then specify its actual `keywordResearchId` and
check that the returned research ID and `contentPlanFlowId` match.
For research still `IN_PROGRESS`, use paced reads within a finite
monitoring window. A brief not found error can occur before the
research record exists; re-read the flow if it persists.

After matching research `SUCCESS`, re-read the same flow. Call
[Create Content Plan](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-blog-post-candidate-v1/create-content-plan.md)
once only if the flow still reports `KEYWORD_RESEARCH`
with that research ID and no release has already been attempted.
If the flow has advanced to `CONTENT_PLAN` or `SUCCESS`, skip Create.
Calling Create while research is `IN_PROGRESS` fails with
`FLOW_NOT_READY_FOR_CONTENT_PLAN`.

Stop for `FAIL`, `CANCELED`, `REVERTED`, mismatched IDs or an expired
monitoring window. Preserve the IDs and report the observed result.
Elapsed time alone proves neither failure nor permission to start a
replacement flow.

Omit `keywordResearchId` to retrieve the site's most recent successful
research. A run that's still in progress is never returned this way, and
a site with no successful research returns a not found error.

---

## REST API

### Schema

```
 Method: getSiteKeywordResearch
 Description: Retrieves a site keyword research run, including its status.  A content plan flow reaches `KEYWORD_RESEARCH` when research starts, not when it finishes. Retrieve the flow with [Get Content Plan Flow](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-content-plan-flow-v1/get-content-plan-flow.md), then specify its actual `keywordResearchId` and check that the returned research GUID and `contentPlanFlowId` match. For research still `IN_PROGRESS`, use paced reads within a finite monitoring window. A brief not found error can occur before the research record exists; re-read the flow if it persists.  After matching research `SUCCESS`, re-read the same flow. Call [Create Content Plan](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-blog-post-candidate-v1/create-content-plan.md) once only if the flow still reports `KEYWORD_RESEARCH` with that research GUID and no release has already been attempted. If the flow has advanced to `CONTENT_PLAN` or `SUCCESS`, skip Create. Calling Create while research is `IN_PROGRESS` fails with `FLOW_NOT_READY_FOR_CONTENT_PLAN`.  Stop for `FAIL`, `CANCELED`, `REVERTED`, mismatched GUIDs or an expired monitoring window. Preserve the GUIDs and report the observed result. Elapsed time alone proves neither failure nor permission to start a replacement flow.  Omit `keywordResearchId` to retrieve the site's most recent successful research. A run that's still in progress is never returned this way, and a site with no successful research returns a not found error.
 URL: https://www.wixapis.com/seo-content-plan-service/v1/site-keyword-research
 Method: GET
 Method parameters:
   query param name: keywordResearchId | type: keywordResearchId | description: GUID of the keyword research run to retrieve. Use the `keywordResearchId` of a content plan flow.  Omit to retrieve the site's most recent successful research.  | validation: format GUID
 Return type: GetSiteKeywordResearchResponse
  - name: siteKeywordResearch | type: SiteKeywordResearch | description: The site keyword research run.  
     - name: id | type: string | description: Keyword research GUID. Matches the `keywordResearchId` of the content plan flow that started it.  | read-only: true | validation: format GUID
     - name: createdAt | type: string | description: Date and time the keyword research started.  | validation: maxLength 1000
     - name: updatedAt | type: string | description: Date and time the keyword research was last updated.  | validation: maxLength 1000
     - name: status | type: Status | description: Status of the keyword research.  
         - enum:
         -     IN_PROGRESS: Keyword research is running. Continue paced reads of [Get Site Keyword Research](https://dev.wix.com/docs/api-reference/business-management/seo/site-keyword-research-v1/get-site-keyword-research.md) within a finite monitoring window.
         -     SUCCESS: Keyword research is complete. Re-read the associated flow before generating briefs. Call [Create Content Plan](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-blog-post-candidate-v1/create-content-plan.md) once only if the flow still reports `KEYWORD_RESEARCH` with this research ID and no release has already been attempted.
         -     FAIL: Keyword research failed. Stop monitoring and preserve the research and flow IDs. Don't automatically trigger a replacement flow.
         -     REVERTED: The research was reverted to an earlier run.
         -     CANCELED: Keyword research was canceled, together with its content plan flow.
     - name: contentPlanFlowId | type: string | description: GUID of the content plan flow that started the keyword research.  | read-only: true | validation: format GUID


```

### Examples

### Check whether a flow's keyword research has finished
Polls the keyword research a content plan flow started. Here the research is still running, so status is IN_PROGRESS and the content plan can't be created yet.

```curl
curl -X GET \
'https://www.wixapis.com/seo-content-plan-service/v1/site-keyword-research?keywordResearchId=f47ac10b-58cc-4372-a567-0e02b2c3d479' \
-H 'Authorization: <AUTH>'
```

---

## JavaScript SDK

### Schema

```
 Method: wixClientAdmin.seo.siteKeywordResearch.getSiteKeywordResearch(options)
 Description: Retrieves a site keyword research run, including its status.  A content plan flow reaches `KEYWORD_RESEARCH` when research starts, not when it finishes. Retrieve the flow with [Get Content Plan Flow](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-content-plan-flow-v1/get-content-plan-flow.md), then specify its actual `keywordResearchId` and check that the returned research GUID and `contentPlanFlowId` match. For research still `IN_PROGRESS`, use paced reads within a finite monitoring window. A brief not found error can occur before the research record exists; re-read the flow if it persists.  After matching research `SUCCESS`, re-read the same flow. Call [Create Content Plan](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-blog-post-candidate-v1/create-content-plan.md) once only if the flow still reports `KEYWORD_RESEARCH` with that research GUID and no release has already been attempted. If the flow has advanced to `CONTENT_PLAN` or `SUCCESS`, skip Create. Calling Create while research is `IN_PROGRESS` fails with `FLOW_NOT_READY_FOR_CONTENT_PLAN`.  Stop for `FAIL`, `CANCELED`, `REVERTED`, mismatched GUIDs or an expired monitoring window. Preserve the GUIDs and report the observed result. Elapsed time alone proves neither failure nor permission to start a replacement flow.  Omit `keywordResearchId` to retrieve the site's most recent successful research. A run that's still in progress is never returned this way, and a site with no successful research returns a not found error.
 Method parameters:
   param name: options | type: GetSiteKeywordResearchOptions  none  
        - name: keywordResearchId | type: string | description: GUID of the keyword research run to retrieve. Use the `keywordResearchId` of a content plan flow.  Omit to retrieve the site's most recent successful research.  | validation: format GUID
 Return type: PROMISE<GetSiteKeywordResearchResponse>
  - name: siteKeywordResearch | type: SiteKeywordResearch | description: The site keyword research run.  
     - name: _id | type: string | description: Keyword research GUID. Matches the `keywordResearchId` of the content plan flow that started it.  | read-only: true | validation: format GUID
     - name: createdAt | type: string | description: Date and time the keyword research started.  | validation: maxLength 1000
     - name: updatedAt | type: string | description: Date and time the keyword research was last updated.  | validation: maxLength 1000
     - name: status | type: Status | description: Status of the keyword research.  
         - enum:
         -     IN_PROGRESS: Keyword research is running. Continue paced reads of [Get Site Keyword Research](https://dev.wix.com/docs/api-reference/business-management/seo/site-keyword-research-v1/get-site-keyword-research.md) within a finite monitoring window.
         -     SUCCESS: Keyword research is complete. Re-read the associated flow before generating briefs. Call [Create Content Plan](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-blog-post-candidate-v1/create-content-plan.md) once only if the flow still reports `KEYWORD_RESEARCH` with this research ID and no release has already been attempted.
         -     FAIL: Keyword research failed. Stop monitoring and preserve the research and flow IDs. Don't automatically trigger a replacement flow.
         -     REVERTED: The research was reverted to an earlier run.
         -     CANCELED: Keyword research was canceled, together with its content plan flow.
     - name: contentPlanFlowId | type: string | description: GUID of the content plan flow that started the keyword research.  | read-only: true | validation: format GUID


```

### Examples

### Retrieve a keyword research run by ID
Illustrates an exact-ID lookup. Replace the example UUID with the actual keywordResearchId from your content plan flow. This lookup alone doesn't verify the flow association or authorize brief generation.

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

async function retrieveKeywordResearch() {
  const response = await siteKeywordResearch.getSiteKeywordResearch({
    keywordResearchId: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  });
  return response;
}

/* Promise resolves to:
 * {
 *   "siteKeywordResearch": {
 *     "_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
 *     "createdAt": "2026-08-26T10:16:02.000Z",
 *     "updatedAt": "2026-08-26T10:16:02.000Z",
 *     "status": "IN_PROGRESS",
 *     "contentPlanFlowId": "d290f1ee-6c54-4b01-90e6-d701748f0851"
 *   }
 * }
 */

```

### getSiteKeywordResearch (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 { siteKeywordResearch } from '@wix/seo';
// Import the auth strategy for the relevant access type
// Import the relevant host module if needed

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


async function getSiteKeywordResearch(options) {
  const response = await myWixClient.siteKeywordResearch.getSiteKeywordResearch(options);
};
```

---