---
title: "Get Keepa product"
method: GET
path: "/api/v1/keepa/product"
tags: ["Keepa"]
---

# Get Keepa product

`GET /api/v1/keepa/product`

## Request

- Base URL: `https://app.sellerassistant.app` (the document declares no server; this is the origin it was published from)
- URL: `https://app.sellerassistant.app/api/v1/keepa/product`
- Auth: one of:
  - API key in query parameter `api_key`
  - API key in header `X-Api-Key`

Get detailed info of product from Keepa. The product object contains all of Keepa price history data and basic product information. The limit is 10 requests per minute. 

Keepa Time Minutes. Time format used for all Keepa timestamps. To convert to an uncompressed Unix epoch time: 

For milliseconds: `(keepaTime + 21564000) * 60000` 

For seconds: `(keepaTime + 21564000) * 60`

## Response `200`

Keepa product response

- KeepaProduct
  - `productType` integer: Must always be evaluated first. Determines what data for the product is available. Possible values: 0 - STANDARD: Everything accessible 1 - DOWNLOADABLE: No marketplace offers data 2 - EBOOK: No marketplace offers data 3 - INACCESSIBLE: No price, rating and offers data accessible. Sales rank and offer count data is updated less frequently. Some fields may be missing. 4 - INVALID: No current data available due to invalid or deprecated ASIN, or other issues. Might be temporary. 5 - VARIATION_PARENT: Product is a parent ASIN. variations is set.
  - `asin` string: The ASIN of the product.
  - `domainId` integer: The domainId of the product’s Amazon locale. Possible values: [ 1: com | 2: co.uk | 3: de | 4: fr | 5: co.jp | 6: ca | 8: it | 9: es | 10: in | 11: com.mx ]
  - `title` string: Title of the product. Caution: may contain unescaped HTML markup in rare cases.
  - `trackingSince` integer: States the time Keepa have started tracking this product, in `Keepa Time minutes`.
  - `listedSince` integer: States the time the item was first listed on Amazon, in `Keepa Time minutes`. This timestamp is only available for some products. If not available, the field has the value 0 or -1.
  - `lastUpdate` integer: States the last time Keepa have updated the information for this product, in `Keepa Time minutes`.
  - `lastRatingUpdate` integer: States the last time Keepa have updated the product rating and review count, in `Keepa Time minutes`.
  - `lastPriceChange` integer: States the last time Keepa have registered a price change (any price type), in `Keepa Time minutes`.
  - `lastEbayUpdate` integer: States the last time Keepa have updated the eBay prices for this product, in `Keepa Time minutes`. If no matching products were found, the integer is negative.
  - `lastStockUpdate` integer: The most recent update of the stock data for this product’s offers, in `Keepa Time minutes`. This field is undefined unless the stock parameter was used and stock data was collected at least once.
  - `imagesCSV` string: CSV list of Amazon image names of the product. null if not available. Note that the variant images (all images after the primary/first one) are not necessarily in the same order as on Amazon.
  - `rootCategory` integer: Category node ID of the product’s root category. 0 if no root category known. The ID 9223372036854775807 (max signed long value) denotes a blank category with the name “?”. Keepa use this in cases where a product is listed in no or non-existent categories.
  - `categories` integer[]: Array of Amazon category node IDs this product is listed in. Can be empty.
  - `categoryTree` object[]: Represents the category tree as an ordered array of objects, each consisting of two fields: catId - Long - the category ID, name - String - the name of the category
    - `catId` integer
    - `name` string
  - `parentAsin` string: The ASIN of the parent product (if the product has variations, otherwise null).
  - `parentAsinHistory` string[]: The history of the parentAsin field. This array has the format: [keepaTime, previous parent ASIN, …]. The timestamp indicates when the previously associated parentAsin ceased to be valid. For the current parent ASIN, use the parentAsin field. undefined if the parentAsin field never changed. Keepa started tracking parentAsin changes on March 18th 2024.
  - `variations` object[]: Contains the variations of this product. Each object in the array represents a single variation. A variation object consists of the variation ASIN and an attributes array, where each entry represents one variation theme, including a dimension and its corresponding value. To request live data for this field, the offers parameter must be used.
    - `asin` string
    - `attributes` object[]
      - `dimension` string
      - `value` string
  - `frequentlyBoughtTogether` string[]: One or two “Frequently Bought Together” ASINs. null if not available.
  - `upcList` string[]: A list of UPCs assigned to this product. The first index is the primary UPC. null if not available.
  - `eanList` string[]: A list of EANs assigned to this product. The first index is the primary EAN. null if not available.
  - `manufacturer` string: Name of the manufacturer. null if not available.
  - `brand` string: An item’s brand. null if not available.
  - `productGroup` string: The item’s productGroup. null if not available.
  - `type` string: The item’s productType. null if not available.
  - `partNumber` string: The item’s partNumber. null if not available.
  - `binding` string: The item’s binding. null if not available. If the item is not a book, it is usually the product category instead.
  - `numberOfItems` integer: The number of items of this product. -1 if not available.
  - `numberOfPages` integer: The number of pages of this product. -1 if not available.
  - `publicationDate` integer: The item’s publication date in one of the following three formats: YYYY or YYYYMM or YYYYMMDD (Y = year, M = month, D = day). -1 if not available.
  - `releaseDate` integer: The item’s release date. Same format as publicationDate. -1 if not available.
  - `contributors` array[]: The contributors of the item. A contributor can be an author, actor, director, etc. Each contributor entry has a name and a role type.
    - string[]
  - `languages` array[]: An item can have one or more languages. Each language entry has a name and most also have a type. null if not available.
    - string[]
  - `model` string: The item’s model. null if not available.
  - `color` string: The item’s color. null if not available.
  - `size` string: The item’s size. null if not available.
  - `edition` string: The item’s edition. null if not available.
  - `format` string: The item’s format. null if not available.
  - `features` string[]: A list of up to 5 product features / bullet points. null if not available. An entry can contain HTML markup in rare cases. Keepa currently limit each entry to a maximum of 1000 characters (if the feature is longer it will be cut off). This limitation may change in the future without prior notice.
  - `description` string: A description of the product. null if not available. May contain HTML markup and newlines. Keepa limit the product description to a maximum of 4000 characters (if the description is longer it will be cut off). This limitation may change in the future without prior notice. To request live data for this field the offers parameter must be used.
  - `hazardousMaterials` object[]: The hazardous material types of the product. undefined if not available. Each entry consists of two fields: aspect - String, value - String.
    - `aspect` string
    - `value` string
  - `packageHeight` integer: The package’s height in millimeters. 0 or -1 if not available.
  - `packageLength` integer: The package’s length in millimeters. 0 or -1 if not available.
  - `packageWidth` integer: The package’s width in millimeters. 0 or -1 if not available.
  - `packageWeight` integer: The package’s weight in grams. 0 or -1 if not available.
  - `packageQuantity` integer: Quantity of items in the package. 0 or -1 if not available.
  - `itemHeight` integer: The item’s height in millimeters. 0 or -1 if not available.
  - `itemLength` integer: The item’s length in millimeters. 0 or -1 if not available.
  - `itemWidth` integer: The item’s width in millimeters. 0 or -1 if not available.
  - `itemWeight` integer: The item’s weight in grams. 0 or -1 if not available.
  - `availabilityAmazon` integer: Availability of the Amazon offer. Possible values: -1: no Amazon offer exists, 0: Amazon offer is in stock and shippable, 1: Amazon offer is currently not in stock, but will be in the future (pre-order), 2: Amazon offer availability is “unknown”, 3: Amazon offer is currently not in stock, but will be in the future (back-order), 4: Amazon offer shipping is delayed - see “availabilityAmazonDelay” for more details.
  - `availabilityAmazonDelay` integer[]: If availabilityAmazon has the value 4, this field will provide the delay interval in hours. null if no data is available.
  - `buyBoxEligibleOfferCounts` integer[]: If buyBoxEligibleOfferCounts is available, it represents an array of integers, each entry indicating the total number of offers eligible for the Buy Box across specified offer conditions and fulfillment channels. This array contains eight elements, indexed as follows: 0: New FBA, 1: New FBM, 2: Used FBA, 3: Used FBM, 4: Collectible FBA, 5: Collectible FBM, 6: Refurbished FBA, 7: Refurbished FBM.
  - `competitivePriceThreshold` integer: The competitivePriceThreshold field is a price based on competitive prices from other retailers (excluding other Amazon sellers). The offer may be ineligible for the Buy Box if the seller’s price + shipping is greater than this competitive price. Undefined if it has no value.
  - `suggestedLowerPrice` integer: The suggested lower price of the item, including shipping. The suggested lower price is based on a range of factors, including historical selling prices, recent Buy Box-eligible prices, and input from customers. Undefined if it has no value.
  - `ebayListingIds` integer[]: Contains the lowest priced matching eBay listing Ids. Always contains two entries, the first one is the listing id of the lowest priced listing in new condition, the second in used condition. null or 0 if not available.
  - `isAdultProduct` boolean: Indicates if the item is considered to be for adults only.
  - `isHeatSensitive` boolean: Indicates if the item is heat sensitive (e.g. meltable).
  - `isMerchOnDemand` boolean: True if this product is an Amazon Merch on Demand product. undefined otherwise.
  - `isHaul` boolean: True if this product is an Amazon Haul product. undefined otherwise. Only basic product information is available for Amazon Haul products.
  - `ingredients` string: The ingredient list of the product. undefined if not available.
  - `launchpad` boolean: Indicates if the item is listed in the launchpad category. If so, the `salesRankReference` will not be available.
  - `audienceRating` string: Audience rating. The rating suggests the age for which the media is appropriate.
  - `urlSlug` string: The product listing URL slug.
  - `returnRate` integer: This field provides information about the customer return rate for a product. The possible values are: null: The return rate is either unavailable or considered average. 1: The product has a low return rate. 2: The product has a high return rate.
  - `newPriceIsMAP` boolean: Whether or not the lowest new price (either price type AMAZON or NEW) is restricted by MAP (Minimum Advertised Price). Use this to differentiate out of stock (price = -1) vs. MAP restriction.
  - `isEligibleForTradeIn` boolean: Whether or not the product is eligible for trade-in.
  - `isEligibleForSuperSaverShipping` boolean: Whether or not the product’s buy box is eligible for free shipping.
  - `fbaFees` object
    - `pickAndPackFee` integer: The FBA pick & pack fees of this product. The pickAndPackFee is determined by either the current price or, in the absence of a current offer, the previous one. If neither of these prices is available for reference, the fee percent is calculated based on a standard sales price of 100.00. Fees are integers of the respective Amazon locale’s smallest currency unit (e.g. euro cents or yen). null if not available.
  - `variableClosingFee` integer: The variable closing fee. Fees are integers of the respective Amazon locale’s smallest currency unit (e.g. euro cents or yen). Undefined if it has no value.
  - `referralFeePercentage` integer: The Amazon seller referral fee percent is determined by either the current price or, in the absence of a current offer, the previous one. If neither of these prices is available for reference, the fee percent is calculated based on a standard sales price of 100.00. null if not available.
  - `coupon` integer[]: Contains coupon details for the buy box offer of the product, if available. null if not available. An integer array with two entries: The first entry is the discount for a one-time coupon. The second entry is a subscribe and save coupon. Entry value is either 0 if no coupon of that type is offered, positive for an absolute discount, or negative for a percentage discount. The coupons field is always accessible, but only updated if the offers parameter was used in the Product Request.
  - `couponHistory` integer[]: Contains historical values for the coupon field, if available. null if not available. Keepa started tracking coupon history on June 15th 2024. Format: `[ keepaTime, one-time coupon, subscribe and save coupon, keepaTime, … ]`
  - `promotions` object[]: Contains an array of active promotions. Not all product promotions can be provided. A promotion object consists of: type - String - The type of promotion, amount - Integer - The discounted price, discountPercent - Integer - The discount percent.
    - `type` string: The type of promotion
    - `amount` integer: The discounted price
    - `discountPercent` integer: The discount percent
  - `unitCount` object: Object that contains unit count data, Undefined if it has no value.
    - `unitValue` number, double: The field returns the specified weight or volume to facilitate per unit pricing. For products measured by volume, weight, or linear dimensions, it provides the total net quantity shipped for a single ASIN (e.g., a 12-pack of 6 fl oz bottles of water = 72 fl oz, or a single 2-liter bottle = 2 liters). For products sold as individual units, it returns the total number of units (e.g., a pack of 12 pens = 12).
    - `unitType` string: In cases where the product being sold is measured in units that are relevant to the customer’s purchasing decision, the unitType specifies the type of measurement used. For example, a bottle of soda may be measured in fluid ounces, while a box of screws is measured by the number of screws in the box.
    - `eachUnitCount` number, double: The number of units in an ‘each’; where an ‘each’ refers to the smallest component of a product with a UPC, and a unit defines how this ‘each’ is measured.
  - `salesRankReference` integer: The category node id of the main sales rank. -1 if not available, -2 if listed in launchpad.
  - `salesRankReferenceHistory` integer[]: A long array containing the historical category node id(s) of the main sales rank. This data, if available, can be used to match historical sales ranks provided in the CSV field to their reference category. The category id has the value -1 if not available or -2 if listed in launchpad. Format: `[ keepaTime, category node id, … ]`
  - `salesRanks` object: An object containing sales rank histories. Each key represents the categoryId of the rank, with the history in the corresponding value.
  - `lastSoldUpdate` integer: States the last time Keepa have updated the monthlySold field, in `Keepa Time minutes`. Undefined if the monthlySold has no value.
  - `monthlySold` integer: How often this product was bought in the past month. This field represents the bought past month metric found on Amazon search result pages. It is not an estimate. Amazon only provides the data in bracketed ranges such as “50+” or “100+”, rather than as exact figures. Undefined if it has no value. Most ASINs do not have this value set. The value is variation specific.
  - `monthlySoldHistory` integer[]: Contains historical values of the monthlySold field. Undefined if it has no value. Format: `[ keepaTime, monthlySold, … ]`
  - `rentalDetails` string: Contains the rental details description of the rental buy box offer. null if not available. Accessible only if the offers and rental parameters were used in the Product Request.
  - `rentalSellerId` string: Contains the seller id of the rental buy box offer. null if not available. Accessible only if the offers and rental parameters were used in the Product Request.
  - `rentalPrices` object: This object contains the rental prices (as described in the rentalDetails field) initialPrice, shortExtnPrice, longExtnPrice, and fullPrice. null if not available. Accessible only if the offers and rental parameters were used in the Product Request.
  - `reviews` object: This object contains variation specific review and rating counts histories as well as a last update timestamp. null if not available. It is not possible to force an update to the reviews object data. For non-variation specific ratings and review data access the csv field. Accessible only if the rating parameter was used in the Product Request.
    - `lastUpdate` integer: The last update timestamp in `Keepa Time minutes`.
    - `ratingCount` integer[]: Variation specific rating counts history. Format: `[ keepaTime, ratingCount, … ]`
    - `reviewCount` integer[]: Variation specific review counts history. Format: `[ keepaTime, reviewCount, … ]`
  - `liveOffersOrder` integer[]: Optional field, set only if the offers parameter was used in the Product Request. Contains an ordered array of index positions in the offers array for all Marketplace Offer Objects retrieved for this call. If no offers were found, the field will be null. The sequence of integers reflects the ordering of the offers on the Amazon offer page (for all conditions). Since the offers field contains historical offers as well as current offers, one can use this array to look up all offers that are currently listed on Amazon in the correct order. Note: If there are identical offers (same seller, same condition, same shipping type, and same condition text) Keepa only track the lowest-priced one. If this happens, there will be duplicate offer indexes in the liveOffersOrder field at the position of the omitted duplicate (higher-priced) offer - all pointing to the lowest-priced offer’s index. Example: [ 3, 5, 2, 18, 15 ] - The offer with the array index 3 of the offers field is currently the first one listed on the offer listings page on Amazon, followed by the offer with the index 5, and so on. Example with duplicates: [ 3, 5, 2, 18, 5 ] - The second offer, as listed on Amazon, is a lower-priced duplicate of the 5th offer on Amazon. The lower-priced one is included in the offers field at index 5.
  - `buyBoxSellerIdHistory` string[]: Optional field, set only if the offers or buybox parameter was used in the Product Request. Contains a history of sellerIds that held the Buy Box in the format: `Keepa time minutes, sellerId, […]`. If no seller qualified for the Buy Box, the sellerId “-1” is used (suppressed Buy Box). If Keepa were unable to identify the seller or if the product was out of stock (no seller), the sellerId is “-2”.
  - `buyBoxUsedHistory` string[]: Optional field, set only if the offers or buybox parameter was used in the Product Request. A history of used buy box winners, containing the sellerIds, offer sub-condition, and FBA status in the format: `Keepa time minutes, seller id, condition, isFBA, […]`. If no seller qualified for the used buy box, the sellerId “” (empty String) is used. Condition can have the following values: “2” - Used - Like New, “3” - Used - Very Good, “4” - Used - Good, “5” - Used - Acceptable isFBA is either “1” - offer is FBA or “0” - offer is merchant fulfilled.
  - `isRedirectASIN` boolean: Valid only if the offers parameter was used in the Product Request. Boolean indicating if the ASIN will be redirected to another one on Amazon (example: the ASIN has the color black variation, which is not available and is redirected on Amazon to the color red).
  - `isSNS` boolean: Valid only if the offers parameter was used in the Product Request. Boolean indicating if the product’s Buy Box is available for subscribe and save.
  - `offersSuccessful` boolean: Valid only if the offers parameter was used in the Product Request. Boolean indicating if the system was able to retrieve fresh offer information. Retrieval of fresh offers will always fail if the product has no offers (compare COUNT_* csv entries).
  - `offers` KeepaProductOffer[]: Optional field, set only if the `offers` parameter was used. Contains Marketplace Offer Objects.
    - `offerId` integer: Unique ID of this offer (in the scope of the product). Not related to the offerIds used by Amazon, as those are user-specific and valid only for a short time. The offerId can be used to identify the same offers throughout requests.
    - `lastSeen` integer: Indicates the last time Keepa have seen (and updated) this offer, in `Keepa Time minutes`. If you are only interested in live offers, use this field to verify that the offer is current.
    - `sellerId` string: The seller ID of the merchant.
    - `isPrime` boolean: Whether or not this offer is available via Prime shipping. Keepa is unable to reliably identify SFP - Seller Fulfilled Prime.
    - `isFBA` boolean: Whether or not this offer is fulfilled by Amazon.
    - `isMAP` boolean: If the price of this offer is hidden on Amazon due to a MAP (“minimum advertised price”) restriction. Even if so, the offer object will contain the price and shipping costs.
    - `isShippable` boolean: Boolean value indicating whether or not the offer is currently shippable. If not, this could mean, for example, that it is temporarily out of stock or a pre-order.
    - `isAddonItem` boolean: Indicating whether or not the offer is an Add-on item.
    - `isPreorder` boolean: Indicating whether or not the offer is a pre-order.
    - `isWarehouseDeal` boolean: Indicating whether or not the offer is a Warehouse Deal.
    - `isScam` boolean: Boolean value indicating whether or not Keepa system identified that the offering merchant attempts to scam users.
    - `shipsFromChina` boolean: Boolean value indicating whether or not this offer’s seller default shipping location is China. This does not apply to FBA offers.
    - `isAmazon` boolean: True if the seller is Amazon (e.g. “Amazon.com”). Note: Amazon’s Warehouse Deals seller account or other accounts Amazon is maintaining under a different name are not considered to be Amazon.
    - `isPrimeExcl` boolean: This offer has a discounted Prime exclusive price.
    - `coupon` integer: Contains one-time coupon details of this offer. Undefined if none is available. Positive integer for an absolute discount or negative for a percentage discount. 500 - Coupon with a $5 discount. -15 - Coupon with a 15% discount.
    - `couponHistory` integer[]: Contains the coupon history of this offer, if available. It has the format `Keepa time minutes, coupon, […]`.
    - `condition` integer: The condition of the offered product. Integer value: 0 - Unknown, 1 - New, 2 - Used - Like New, 3 - Used - Very Good, 4 - Used - Good, 5 - Used - Acceptable, 6 - Refurbished, 7 - Collectible - Like New, 8 - Collectible - Very Good, 9 - Collectible - Good, 10 - Collectible - Acceptable, 11 - Rental. Note: Open Box conditions are coded as Used conditions.
    - `conditionComment` string: The describing text of the condition.
    - `offerCSV` integer[]: Contains the current price and shipping costs of the offer as well as, if available, the offer’s history. It has the format `Keepa time minutes, price, shipping cost, […]`. The price and shipping cost are integers of the respective Amazon locale’s smallest currency unit (e.g. euro cents or yen). If Keepa were unable to determine the price or shipping cost, they have the value -2. Free shipping has the shipping cost of 0. If an offer is not shippable or has unspecified shipping costs, the shipping cost will be -1. To get the newest price and shipping cost, access the last two entries of the array. Most recent price: `offerCSV[offerCSV.length - 2]` Most recent shipping cost: `offerCSV[offerCSV.length - 1]`
    - `stockCSV` integer[]: The stock history for this offer, provided the stock product request parameter was utilized. This data represents Keepa best attempt to determine the available stock quantity for this offer, though it may not always be accurate, such as in instances where per-customer limits apply. Stock data availability is not guaranteed. undefined if unavailable. It has the format `Keepa time minutes, stock, […]`.
    - `primeExclCSV` integer[]: Contains the Prime exclusive price history of this offer, if available. A Prime exclusive offer can only be ordered if the buyer has an active Prime subscription. It has the format `Keepa time minutes, price, […]`.
  - `stats` KeepaProductStats
    - `current` integer[]: Contains the last updated product prices/ranks using the Price Type indexing (refer to the `csv` field in the `KeepaProduct`). Prices are integers representing the smallest currency unit for the respective Amazon locale (e.g., euro cents or yen). A value of -1 indicates no offer was available in the given interval (e.g., out of stock).
    - `avg` integer[]: Contains the historical weighted mean for the interval specified in the product request’s `stats` parameter using the Price Type indexing. A value of -1 indicates no offer was available in the interval or insufficient data.
    - `avg30` integer[]: Same as avg, but for the last 30 days.
    - `avg90` integer[]: Same as avg, but for the last 90 days.
    - `avg180` integer[]: Same as avg, but for the last 180 days.
    - `avg365` integer[]: Same as avg, but for the last 365 days.
    - `atIntervalStart` integer[]: Contains prices registered at the start of the interval specified in the product request’s `stats` parameter using the Price Type indexing. A value of -1 indicates no offer was available in the interval or insufficient data.
    - `min` array[]: Contain the lowest prices ever registered for this product. The first dimension uses the Price Type indexing. The second dimension is either null (no data available for the price type) or an array of size 2 with the first value being the time of the extreme point (in `Keepa Time minutes`) and the second value being the respective extreme value.
      - integer[]
    - `max` array[]: Contain the highest prices ever registered for this product.The first dimension uses the Price Type indexing. The second dimension is either null (no data available for the price type) or an array of size 2 with the first value being the time of the extreme point (in `Keepa Time minutes`) and the second value being the respective extreme value.
      - integer[]
    - `minInInterval` array[]: Same as min, but restricted to the interval specified in the product request’s `stats` parameter.
      - integer[]
    - `maxInInterval` array[]: Same as max, but restricted to the interval specified in the product request’s `stats` parameter.
      - integer[]
    - `outOfStockPercentageInInterval` integer[]: Contains the out-of-stock percentage in the interval specified in the product request’s `stats` parameter using the Price Type indexing. A value of -1 indicates insufficient data or the Price Type is not a price. Examples: 0: Never out of stock, 100: Out of stock 100% of the time, 25: Out of stock 25% of the time.
    - `outOfStockPercentage30` integer[]: Contains the 30-day out-of-stock percentage using the Price Type indexing. A value of -1 indicates insufficient data or the Price Type is not a price.
    - `outOfStockPercentage90` integer[]: Same as outOfStockPercentage30, but for the last 90 days.
    - `outOfStockPercentage180` integer[]: Same as outOfStockPercentage30, but for the last 180 days.
    - `outOfStockPercentage365` integer[]: Same as outOfStockPercentage30, but for the last 365 days.
    - `salesRankDrops30` integer: The count of sales rank drops (from high to low value) within the last 30 days, considered to indicate sales.
    - `salesRankDrops90` integer: Same as salesRankDrops30, but for the last 90 days.
    - `salesRankDrops180` integer: Same as salesRankDrops30, but for the last 180 days.
    - `lastOffersUpdate` integer: The last time the offers information was updated (in `Keepa Time minutes`).
    - `totalOfferCount` integer: The total count of offers for this product (all conditions combined). The offer count per condition can be found in the `current` field.
    - `lightningDealInfo` integer[]: Used to identify a past, upcoming, or current lightning deal offer. The format is `[startDate, endDate]` (always an array of length 2 if not null). It is null if the product never had a lightning deal. Both timestamps are in UTC and `Keepa Time minutes`. If there is an upcoming lightning deal, only startDate is set (with endDate having a value of -1). If there is a current lightning deal, both startDate and endDate will be set, with startDate older than the current time and endDate in the future. If there is only a past deal, both startDate and endDate will be set in the past.
    - `lastBuyBoxUpdate` integer: Timestamp of the last buy box update, in KeepaTime.
    - `buyBoxSellerId` string: The seller ID of the buy box offer, if it exists. Otherwise, "-1", "-2", or null.
    - `buyBoxPrice` integer: The buy box new price, if it exists. Otherwise, -1 or -2.
    - `buyBoxShipping` integer: The buy box new shipping cost, if it exists. Otherwise, -1 or -2.
    - `buyBoxIsUnqualified` boolean: Indicates whether a seller won the buy box. If only sellers with poor offers are available, none qualifies for the buy box.
    - `buyBoxIsShippable` boolean: Indicates whether the buy box is listed as being shippable.
    - `buyBoxIsPreorder` boolean: Indicates if the buy box is a pre-order.
    - `buyBoxIsBackorder` boolean: Indicates if the buy box is back-ordered.
    - `buyBoxIsFBA` boolean: Indicates whether the buy box is fulfilled by Amazon.
    - `buyBoxIsAmazon` boolean: Indicates if Amazon is the seller in the buy box.
    - `buyBoxIsMAP` boolean: Indicates if the buy box new price is hidden on Amazon due to MAP (Minimum Advertised Price) restrictions.
    - `buyBoxMinOrderQuantity` integer: The minimum order quantity of the buy box. -1 if not available, 0 if no limit exists.
    - `buyBoxMaxOrderQuantity` integer: The maximum order quantity of the buy box. -1 if not available, 0 if no limit exists.
    - `buyBoxAvailabilityMessage` string: The availability message of the buy box. null if not available
    - `buyBoxShippingCountry` string: The default shipping country of the buy box seller. null if not available or if the seller is Amazon
    - `buyBoxIsPrimeExclusive` boolean: Indicates if the buy box is Prime exclusive. null if not available.
    - `buyBoxIsPrimeEligible` boolean: Indicates if the buy box is Prime eligible. null if not available.
    - `buyBoxIsPrimePantry` boolean: Indicates if the buy box is a Prime Pantry offer. null if not available.
    - `buyBoxStats` object: Contains buy box statistics for the specified interval. Each key represents the sellerId of the buy box seller, and each value is an object with statistics.
    - `buyBoxUsedStats` object: Contains used buy box statistics for the specified interval. The format is the same as buyBoxStats.
    - `buyBoxUsedPrice` integer: The buy box used price, if available. Otherwise, -1 or null.
    - `buyBoxUsedShipping` integer: The buy box used shipping cost, if available. Otherwise, -1 or null.
    - `buyBoxUsedSellerId` string: The seller ID of the used buy box offer, if available. Otherwise, null.
    - `buyBoxUsedIsFBA` boolean: Indicates whether the used buy box is fulfilled by Amazon.
    - `buyBoxUsedCondition` integer: The offer sub-condition of the used buy box. Value: 2 - Used - Like New, 3 - Used - Very Good, 4 - Used - Good, 5 - Used - Acceptable.
    - `retrievedOfferCount` integer: The count of retrieved offers for this request.
    - `isAddonItem` boolean: Indicates whether the product is an add-on item (ships with orders that include $25 or more of items shipped by Amazon).
    - `sellerIdsLowestFBA` string[]: Contains the seller IDs (if any) of the lowest-priced live new FBA offers. Multiple entries exist if multiple offers share the same price.
    - `sellerIdsLowestFBM` string[]: Contains the seller IDs (if any) of the lowest-priced live new FBM offers. Multiple entries exist if multiple offers share the same price.
    - `offerCountFBA` integer: The count of retrieved live new FBA offers, if available. Otherwise, -2.
    - `offerCountFBM` integer: The count of retrieved live new FBM offers, if available. Otherwise, -2.
    - `stockAmazon` integer: The stock of the Amazon offer, if available. Otherwise, undefined.
    - `stockBuyBox` integer: The stock of the buy box offer, if available. Otherwise, undefined.
  - `csv` array[]
    - integer[]

## Other responses

- `400`: Bad request - validation failed or invalid parameters
- `402`: Payment Required - subscription expired or payment method required
- `403`: Access denied - insufficient permissions, invalid API key, or the API request limit is used up (`public_api_key_limit`)
- `429`: Too many requests - rate limit exceeded
- `500`: Internal Error

---

[API](https://skmtc.dev/sellerassistant/apis/seller-assistant-public-api.md) · [All operations](https://skmtc.dev/sellerassistant/apis/seller-assistant-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sellerassistant/apis/seller-assistant-public-api/revisions/5b3ecdbcadb6?raw)
