keepa.models.backend.Product#

pydantic model keepa.models.backend.Product#

Backend Product model generated from the Keepa Java schema.

Fields:
field aPlus: list[APlus | None] | None = None#

Provides A+ Content of this product.

The aplus parameter is mandatory for access. To request live data for this field, the offers parameter must also be included. Returns null if unavailable.

field activeIngredients: str | None = None#

Active ingredients present in the product.

Example: “Lavender essential oil, Soy wax”

field asin: str | None = None#

The ASIN of the product

field audienceRating: str | None = None#

Audience rating. The rating suggests the age for which the media is appropriate.

Example: PG-13 (Parents Strongly Cautioned)

field author: str | None = None#

The item’s author. null if not available.

@deprecated use the field contributors instead

field availabilityAmazon: int | None = None#

Availability of the Amazon offer Product.AvailabilityType.

field availabilityAmazonDelay: list[int | None] | None = None#

Amazon offer shipping delay. Integer array with 2 entries, indicating min and max shipping delay in hours.

field batteriesIncluded: bool | None = None#

Indicates whether batteries are included with the product upon purchase.

Example: true or false

field batteriesRequired: bool | None = None#

Indicates whether batteries are required for the product to function.

Example: true or false

field binding: str | None = None#

The item’s binding. null if not available. If the item is not a book it is usually the product category instead.

field brand: str | None = None#

An item’s brand. null if not available.

field brandStoreName: str | None = None#

The store name of the item’s brand. null if not available.

Example: Hot Wheels

field brandStoreUrl: str | None = None#

The brand store URL path. null if not available. To get the full URL, prepend the Amazon domain of the respective locale (e.g. https//www.amazon.com).

Example: /stores/LEGO/page/017EF856-965D-4B56-A171-EA61CAFF45DD

field brandStoreUrlName: str | None = None#

The brand store Name from the URL path. null if not available.

Example: LEGO (from the URL: /stores/LEGO/page/017EF856-965D-4B56-A171-EA61CAFF45DD)

field bundleItems: list[str | None] | None = None#

A list of virtual bundle ASINs. Only available for virtual product bundles.

field businessDiscount: int | None = None#

The highest business discount percentage, if available.

Example: 14

field buyBoxEligibleOfferCounts: list[int | None] | None = None#

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

field buyBoxSellerIdHistory: list[str | None] | None = None#

Optional field. Only set if the offers 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. If it was hold by an unknown seller (a brand new one) the sellerId is “-2”.

Example: [“2860926”,”ATVPDKIKX0DER”, …]

Use KeepaTime.keepaMinuteToUnixInMillis(String) (long) to get an uncompressed timestamp (Unix epoch time).

field buyBoxUsedHistory: list[str | None] | None = None#

Optional field. Only set if the offers or buybox parameter was used in the Product Request. A history of the used buy box winners, containing the sellerIds 159, 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. Example: [“2860926”, “ATVPDKIKX0DER”, “4”, “1”, …]

Use KeepaTime.keepaMinuteToUnixInMillis(String) (long) to get an uncompressed timestamp (Unix epoch time).

field categories: list[int | None] | None = None#

Array of category node ids

field categoryTree: list[CategoryTreeEntry | None] | None = None#

Represents the category tree as an ordered array of CategoryTreeEntry objects.

field color: str | None = None#

The item’s color. null if not available.

field competitivePriceThreshold: int | None = None#

Competitive Price Threshold (CPT) for the Buy Box, if the buy box is suppressed.

field contributors: list[list[str | None] | None] | None = None#

The contributors of the item. A contributor can be an author, actor, director, etc. Each contributor entry has a name and a role type.

Example:

[ [ “Vin Diesel”, “actor” ] ]

field coupon: list[int | None] | None = None#

Contains coupon details if any are available for the product. null if not available. Integer array with always two entries: The first entry is the discount of a one time coupon, the second 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.

Example:

[ 200, -15 ] - Both coupon types available: $2 one time discount or 15% for subscribe and save.

[ -7, 0 ] - Only one time coupon type is available offering a 7% discount.

field couponHistory: list[int | None] | None = None#

Contains historical values for the coupon field, if available. null if not available. We started tracking coupon history on June 15th 2024. Format: [ keepaTime, one-time coupon, subscribe and save coupon, keepaTime, … ]

Example:

[2711319, 200, -15, …]

field csv: list[list[int | None] | None] | None = None#

Integer[][] - two dimensional price history array.

First dimension: Product.CsvType

Second dimension:

Each array has the format timestamp, price, […]. To get an uncompressed timestamp use KeepaTime.keepaMinuteToUnixInMillis(int).

Example: “csv[0]”: [411180,4900, … ]

timestamp: 411180 => 1318510800000

price: 4900 => $ 49.00 (if domainId is 5, Japan, then price: 4900 => ¥ 4900)

A price of ‘-1’ means that there was no offer at the given timestamp (e.g. out of stock).

field deals: list[DealDetails | None] | None = None#

Provides metadata for active deals associated with the product’s buy box. undefined if unavailable.

field description: str | None = None#

A description of the product. null if not available. Most description contain HTML markup.

We limit the product description to a maximum of 2000 characters (if the description is

longer it will be cut off). This limitation may change in the future without prior notice.

field domainId: int | None = None#

The domainId of the products Amazon locale

AmazonLocale

field eanList: list[str | None] | None = None#

A list of EAN assigned to this product. The first index is the primary EAN. null if not available.

field ebayListingIds: list[int | None] | None = None#

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.

Example: [ 273344490183, 0 ]

field edition: str | None = None#

The item’s edition. null if not available.

field fbaFees: FBAFeesObject | None = None#

FBA fees for this product. If FBA fee information has not yet been collected for this product the field will be null.

field features: list[str | None] | None = None#

A list of the product features / bullet points. null if not available.

An entry can contain HTML markup in rare cases. We 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.

field format: str | None = None#

The item’s format. null if not available.

field formats: list[Format | None] | None = None#

For books only: An array listing other available formats or bindings of a book, excluding the current format.

field frequentlyBoughtTogether: list[str | None] | None = None#

One or two “Frequently Bought Together” ASINs. null if not available. Field is updated when the offers parameter was used.

field gtinList: list[str | None] | None = None#

A list of GTIN assigned to this product. The first index is the primary GTIN. null if not available.

field hasReviews: bool | None = None#

Whether or not the product has reviews.

field hazardousMaterials: list[HazardousMaterial | None] | None = None#

The hazardous material type of this product, if applicable.

field historicalVariations: list[str | None] | None = None#

A list of historical or out of stock variations. Requires the historical-variations parameter.

field images: list[Image | None] | None = None#

Provides metadata for images associated with the product.

This field is an array of Image objects, each of which may contain metadata for up to two resolutions (large and medium) of the same image, if available. These images are typically used in the product image carousel on platforms such as Amazon. This field is null if no image data is available.

Each Image object includes:

l (String): Filename of the large image. lH (Short): Height of the large image, in pixels. lW (Short): Width of the large image, in pixels. m (String): Filename of the medium image. mH (Short): Height of the medium image, in pixels. mW (Short): Width of the medium image, in pixels.

Example: “images”: [{ “l”: “81bRlmLRyPL.jpg”, “lH”: 1500, “lW”: 1500, “m”: “g1dlEmb2mq3.jpg”, “mH”: 500, “mW”: 500 ] }

Full Amazon image path format: https://m.media-amazon.com/images/I/

field imagesCSV: str | None = None#

Comma separated list of image names of the product. Full Amazon image path:

https://m.media-amazon.com/images/I/image name @deprecated use the field images instead

field includedComponents: str | None = None#

Components included with the product, detailing what is provided upon purchase.

Example: “Candle, Wick, Box”

field ingredients: str | None = None#

The ingredient list of the product. null if not available. Example: Purified Carbonated Water, Natural Flavors

field isAdultProduct: bool | None = None#

Indicates if the item is considered to be for adults only.

field isEligibleForSuperSaverShipping: bool | None = None#

Whether or not the product is eligible for super saver shipping by Amazon (not FBA).

field isEligibleForTradeIn: bool | None = None#

Whether or not the product is eligible for trade-in.

field isHaul: bool | None = None#

True if this product is an Amazon Haul product. null otherwise. Example: true

field isHeatSensitive: bool | None = None#

Indicates if the item is heat sensitive (e.g. meltable).

field isMerchOnDemand: bool | None = None#

True if this product is an Amazon Merch on Demand product

field isRedirectASIN: bool | None = None#

Only valid 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 any more and is redirected on Amazon to the color red).

field isSNS: bool | None = None#

Only valid if the offers parameter was used in the Product Request. Boolean indicating if the product’s Buy Box is available for subscribe and save.

field itemForm: str | None = None#

The form or physical state of the item.

Example: “Liquid”, “Solid”, “Gel”

field itemHeight: int | None = None#

The item’s height in millimeter. 0 or -1 if not available.

field itemLength: int | None = None#

The item’s length in millimeter. 0 or -1 if not available.

field itemTypeKeyword: str | None = None#

Keywords describing the type or category of the item.

Example: “body-lotions”

field itemWeight: int | None = None#

The item’s weight in gram. 0 or -1 if not available.

field itemWidth: int | None = None#

The item’s width in millimeter. 0 or -1 if not available.

field languages: list[list[str | None] | None] | None = None#

An item can have one or more languages. Each language entry has a name and a type. Some also have an audio format. null if not available.

Examples:

[ [ “English”, “Published” ], [ “English”, “Original Language” ] ]

With audio format:

[ [ “Englisch”, “Originalsprache”, “DTS-HD 2.0” ], [ “Deutsch”, null, “DTS-HD 2.0” ] ]

field lastBusinessDiscountUpdate: int | None = None#

KeepaTime timestamp of the last business discount percentage update.

field lastEbayUpdate: int | None = None#

States the last time we have updated the eBay prices for this product, in Keepa Time minutes.

If no matching products were found the integer is negative.

Use KeepaTime.keepaMinuteToUnixInMillis(int) (long) to get an uncompressed timestamp (Unix epoch time).

field lastPriceChange: int | None = None#

States the last time we have registered a price change (any price kind), in Keepa Time minutes.

Use KeepaTime.keepaMinuteToUnixInMillis(int) to get an uncompressed timestamp (Unix epoch time).

field lastRatingUpdate: int | None = None#

States the last time we have updated the product rating and review count, in Keepa Time minutes.

Use KeepaTime.keepaMinuteToUnixInMillis(int) (long) to get an uncompressed timestamp (Unix epoch time).

field lastSoldUpdate: int | None = None#

States the last time we have updated the monthlySold field, in Keepa Time minutes. null if the monthlySold has no value. Use KeepaTime.keepaMinuteToUnixInMillis(int) (long) to get an uncompressed timestamp (Unix epoch time).

field lastStockUpdate: int | None = None#

The most recent update of the stock data for this product’s offers, in Keepa Time minutes.

Has the value 0 unless the stock parameter was used and stock data was collected at least once. Use KeepaTime.keepaMinuteToUnixInMillis(int) (long) to get an uncompressed timestamp (Unix epoch time).

field lastUpdate: int | None = None#

States the last time we have updated the information for this product, in Keepa Time minutes.

Use KeepaTime.keepaMinuteToUnixInMillis(int) (long) to get an uncompressed timestamp (Unix epoch time).

field listedSince: int | None = None#

States the time the item was first listed on Amazon, in Keepa Time minutes.

It is updated in conjunction with the offers request, but always accessible.

This timestamp is only available for some products. If not available the field has the value 0. Use KeepaTime.keepaMinuteToUnixInMillis(int) (long) to get an uncompressed timestamp (Unix epoch time).

field liveOffersOrder: list[int | None] | None = None#

Optional field. Only set 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 Objects114 retrieved for this call.

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.

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 6th offer on Amazon. The lower priced one is included in the offers field at index 5.

field manufacturer: str | None = None#

Name of the manufacturer

field material: str | None = None#

@deprecated use the field materials instead

field materials: list[str | None] | None = None#

Material of the product, specifying the primary substances used in its construction.

Example: [ “Steel”, “Wood” ]

field model: str | None = None#

The item’s model. null if not available.

field monthlySold: int | None = None#

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. null if it has no value. Most ASINs do not have this value set. The value is variation specific. Example: 1000 - the ASIN was bought at least 1000 times in the past month.

field monthlySoldHistory: list[int | None] | None = None#

Contains historical values of the monthlySold field. null if it has no value.

field newPriceIsMAP: bool | None = None#

Whether or not the current new price is MAP restricted. Can be used to differentiate out of stock vs. MAP restricted prices (as in both cases the current price is -1).

field numberOfItems: int | None = None#

The number of items of this product. -1 if not available.

field numberOfPages: int | None = None#

The number of pages of this product. -1 if not available.

field offers: list[Offer | None] | None = None#

Optional field. Only set if the offers parameter was used in the Product Request.

field offersSuccessful: bool | None = None#

Only valid if the offers parameter was used in the Product Request. Boolean indicating if the system was able to retrieve fresh offer information.

field packageHeight: int | None = None#

The package’s height in millimeter. 0 or -1 if not available.

field packageLength: int | None = None#

The package’s length in millimeter. 0 or -1 if not available.

field packageQuantity: int | None = None#

Quantity of items in a package. 0 or -1 if not available.

field packageWeight: int | None = None#

The package’s weight in gram. 0 or -1 if not available.

field packageWidth: int | None = None#

The package’s width in millimeter. 0 or -1 if not available.

field parentAsin: str | None = None#

The ASIN of the parent product (if the product has variations, otherwise null)

field parentAsinHistory: list[str | None] | None = None#

The history of the parentAsin field. This array follows the format: [Keepa time in minutes, previous parent ASIN, …].

The included timestamp indicates when the previously associated parent ASIN ceased to be valid.

For the current parent ASIN, use the parentAsin field.

To convert a Keepa minute timestamp into an uncompressed, Unix epoch time timestamp, use the KeepaTime.keepaMinuteToUnixInMillis(int) method.

null if the parentAsin field never changed.

field partNumber: str | None = None#

The item’s partNumber. null if not available.

field pattern: str | None = None#

The pattern or design featured on the product.

Example: “Striped”, “Floral”

field productBenefit: str | None = None#

Benefits of using the product, highlighting its advantages.

Example: “Promotes relaxation and stress relief.”

field productGroup: str | None = None#

The item’s productGroup. null if not available.

field productType: int | None = None#

Keepa product type Product.ProductType. Must always be evaluated first.

field promotions: list[PromotionObject | None] | None = None#

Contains current promotions for this product. Only Amazon US promotions by Amazon (not 3rd party) are collected. In rare cases data can be incomplete.

field publicationDate: int | None = None#

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.

Examples:

1978 = the year 1978

200301 = January 2003

20150409 = April 9th, 2015

field recommendedUsesForProduct: str | None = None#

Recommended uses for the product to guide customers.

Example: “Aromatherapy, Home Decoration”

field referralFeePercent: int | None = None#

@deprecated use the field referralFeePercentage instead

field referralFeePercentage: float | None = None#

The 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. Example: 12

field releaseDate: int | None = None#

The item’s release date in one of the following three formats:

YYYY or YYYYMM or YYYYMMDD (Y= year, M = month, D = day)

-1 if not available.

Examples:

1978 = the year 1978

200301 = January 2003

20150409 = April 9th, 2015

field returnRate: int | None = None#

Indicates the return rate of this product.

  • null if the return rate is unavailable or average.

  • 1 for a low return rate.

  • 2 for a high return rate.

field reviews: ReviewObject | None = None#

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. The ratingCount history has not been updated since April 9th 2025 as that data point was removed by Amazon.

field rootCategory: int | None = None#

Category node id of the products’ root category. 0 if no root category known

field safetyWarning: str | None = None#

Safety warnings associated with the product to inform users of potential hazards.

Example: “Keep away from open flames.”

field salesRankReference: int | None = None#

The category node id of the main sales rank. -1 if not available.

field salesRankReferenceHistory: list[int | None] | None = None#

The category node id history of the main sales rank (format: timestamp, categoryId, […]). null if not available.

field salesRanks: dict[int, list[int | None] | None] | None = None#

Contains subcategory rank histories. Each key represents the categoryId of the rank with the history in the corresponding value.

field scent: str | None = None#

The scent of the product. Describes the fragrance associated with the product.

Example: “Lavender”

field shortDescription: str | None = None#

A brief description of the product.

Example: “A soothing lavender-scented candle.”

field size: str | None = None#

The item’s size. null if not available.

field specialFeatures: list[str | None] | None = None#

The special features of the product.

Example: [ “Fast Charging”, “Lightweight” ]

field specialIngredients: str | None = None#

Special ingredients used in the product that may have unique properties.

Example: “Beeswax blend, Natural dyes”

field specificUsesForProduct: list[str | None] | None = None#

Specific uses for the product, providing detailed applications.

Example: {“Relaxation”, “Decoration”}

field stats: Stats | None = None#

Optional field. Only set if the stats parameter was used in the Product Request. Contains statistic values.

field style: str | None = None#

The style of the product, which may influence its aesthetic appeal.

Example: “Modern”, “Vintage”

field suggestedLowerPrice: int | None = None#

Suggested Lower Price for the Buy Box, if the buy box is suppressed.

field targetAudienceKeyword: str | None = None#

Keywords describing the target audience for the product.

Example: “Adults, Gift for Her”

field title: str | None = None#

Title of the product. Caution: may contain HTML markup in rare cases.

field trackingSince: int | None = None#

States the time we have started tracking this product, in Keepa Time minutes.

Use KeepaTime.keepaMinuteToUnixInMillis(int) (long) to get an uncompressed timestamp (Unix epoch time).

field type: str | None = None#

The item’s type. null if not available.

field unitCount: UnitCountObject | None = None#

Unit Count information

field upcList: list[str | None] | None = None#

A list of UPC assigned to this product. The first index is the primary UPC. null if not available.

field urlSlug: str | None = None#

The product listing URL slug. Example: Ring-Video-Doorbell-Satin-Nickel-2020-Release

field variableClosingFee: int | None = None#

The variable closing fee. Fees are integers of the respective Amazon locale’s smallest currency unit (e.g. euro cents or yen). null if not available. Example: 81

field variationCSV: str | None = None#

Comma separated list of variation ASINs of the product (if the product is a parent ASIN, otherwise null) @deprecated use the field variations instead

field variations: list[VariationObject | None] | None = None#

Contains the dimension attributes for up to 50 variations of this product. Only available on parent ASINs.

field videos: list[Video | None] | None = None#

Provides metadata for videos associated with the product.

The videos parameter is mandatory for access. Each object in the array represents the metadata for a single video. Metadata can be retrieved for all image carousel videos and up to 10 community videos from the product listing’s Videos section. To request live data for this field, the offers parameter must also be included. Returns null if unavailable.

Example:

“videos”: [{ “title”: “Compressed Air Duster”, “image”: “31XBcVI7oTL.jpg”, “duration”: 36, “creator”: “Seller”, “name”: “Innovation”, “url”: “https://m.media-amazon.com/images/S/vse-vms-transcoding-artifact-us-east-1-prd/d8d8f97e-aa42-42d2-aa4c-6ab1b006edb5/default.jobtemplate.hls.m3u8” }]

field websiteDisplayGroup: str | None = None#

A categorization of products that behave similarly, influencing how sales rank is calculated and displayed, especially for product variations.

Example: {“appareldisplayonwebsite”, “kitchendisplayonwebsite”}

field websiteDisplayGroupName: str | None = None#

A categorization name of products that behave similarly, influencing how sales rank is calculated and displayed, especially for product variations.

Example: {“apparel”, “kitchen”}