---
title: "Get a Fast Keywords result"
method: GET
path: "/v1/fast-keywords/{fastKeywordsId}"
tags: ["v1"]
---

# Get a Fast Keywords result

`GET /v1/fast-keywords/{fastKeywordsId}`

## Request

- Base URL: `https://api.datadive.tools`
- URL: `https://api.datadive.tools/v1/fast-keywords/{fastKeywordsId}`
- Auth: API key in header `x-api-key`

Poll this after running Fast Keywords until `status` is `success` or `failed`. On success it returns the product, its variations, the keyword roots and the top 10 Competitors; read the keywords themselves with GET /v1/fast-keywords/{fastKeywordsId}/keywords. On failure, `failureReason` and `failureMessage` say why. A successful run that found very few keywords sets `insufficientKeywordData`.

## Path parameters

- `fastKeywordsId` number, required

## Response `200`

- object
  - `message` string
  - `data` object
    - `fastKeywordsId` number, required
    - `status` 'in-progress' | 'failed' | 'success', required
    - `asin` string, required
    - `parentAsin` string, nullable, required
    - `marketplace` string, required
    - `product` FastKeywordsProductDto, required
      - `title` string, nullable, required
      - `imageUrl` string, nullable, required
      - `brand` string, nullable, required
      - `price` number, nullable, required
    - `variations` FastKeywordsVariationDto[], required
      - `asin` string, required
      - `title` string, nullable, required
      - `imageUrl` string, nullable, required
    - `roots` FastKeywordsRootDto[], required: Ordered by aggregate search volume, highest first
      - `root` string, required
      - `aggregateSearchVolume` number, required: Search volume of every keyword under this root
      - `medianOrganicRank` number, nullable, required: null when none rank organically
      - `keywords` string[], required
    - `competitors` FastKeywordsCompetitorDto[], required: Top 10 Competitors by keyword overlap
      - `asin` string, required
      - `title` string, nullable, required
      - `imageUrl` string, nullable, required
      - `variationCount` number, required
    - `keywordCount` number, required: Read them with GET /v1/fast-keywords/{fastKeywordsId}/keywords
    - `lastRefreshedAt` string, date-time, nullable, required
    - `failureReason` 'no-keyword-data' | 'asin-not-found' | 'external-data-unavailable' | 'unknown': Set when `status` is `failed`
    - `failureMessage` string: Why the run failed, or why a successful run has little to show. Safe to show to a user.
    - `insufficientKeywordData` boolean: true when a successful run found too few keywords to be useful

## Other responses

- `400`: Invalid fastKeywordsId
- `401`: Api key is invalid
- `403`: Unauthorized to access the resource
- `404`: Nobody in your organization requested this Fast Keywords result
- `429`: Rate limit exceeded, either the per-client-IP limit or the per-API-key limit for this endpoint.
- `500`: Internal error

## Changes

- **2026-10-23** `11214511180d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/datadive/apis/data-dive-developer-apis/changes/v1/fast-keywords/:fastKeywordsId/get.md)

---

[API](https://skmtc.dev/datadive/apis/data-dive-developer-apis.md) - [All operations](https://skmtc.dev/datadive/apis/data-dive-developer-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/datadive/apis/data-dive-developer-apis/revisions/94c025cac171?raw)
