# Products + matches (/en/datasets/products-matches)

```
GET https://api.deepscout.ai/v1/exports/all_products_with_products
Authorization: Bearer YOUR_API_KEY
```

**Who gets it:** managed customers only. Self-service projects do not have it. You get the same data when you join the [Matches](/en/datasets/matches.md) and [Products](/en/datasets/products.md) datasets on `website_id` and `product_id`.

Derived dataset based on the base datasets [`all_products_with_details`](/en/datasets/products.md) and [`matches`](/en/datasets/matches.md). It contains only a subset of fields — the complete data is in the base datasets.

The dataset contains products of all tracked websites. Each row is one product with a nested object of the matched product for each website, or `null` if no match exists.

Matched product columns are generated dynamically based on the websites in your project. Each column is named after the `website_id`.

<Callout title="One row is not one group" type="warn">
A group of N matched products has N rows in the dataset, one row for each product. Thus do not count the groups by the number of rows.
</Callout>

## Row fields [#row-fields]

| Field | Type | Description |
| --- | --- | --- |
| `website_id` | string | Website the product belongs to |
| `product_id` | string | Unique product identifier |
| `{website_id}` | object \| null | Nested object with the matched product from a given website, or `null` if no match exists |

## Nested object fields [#nested-object-fields]

| Field | Type | Description |
| --- | --- | --- |
| `website_id` | string | Website identifier |
| `product_id` | string | Unique product identifier |
| `product_url` | string | URL of the product detail page |
| `name` | string | Name of the product |
| `price` | number | Current product price |
| `availability_extracted` | `IN_STOCK` \| `ORDERED` \| `OUT_OF_STOCK` \| `UNKNOWN` | Normalized availability status |
| `image_url` | string | URL of the main product image |
| `discontinued` | number | When we marked the product as discontinued, because we did not see it in several scrapes in a row (timestamp in ms) |
| `sku` | string | SKU of the product (EAN, GTIN, ISBN, product code, etc.) |
| `ean` | string | EAN (or GTIN) of the product |
| `own_product_id` | string | ID of the product in the database of the website. Do not use it to join products of different websites. |

## Example [#example]

```json
{
  "website_id": "eshop-a.cz",
  "product_id": "abc-123",
  "eshop-a.cz": {
    "website_id": "eshop-a.cz",
    "product_id": "abc-123",
    "product_url": "https://eshop-a.cz/produkt",
    "name": "Product name",
    "price": 399,
    "availability_extracted": "IN_STOCK",
    "image_url": "https://eshop-a.cz/img/produkt.jpg"
  },
  "eshop-b.cz": {
    "website_id": "eshop-b.cz",
    "product_id": "def-456",
    "product_url": "https://eshop-b.cz/produkt",
    "name": "Product name",
    "price": 449,
    "availability_extracted": "IN_STOCK",
    "image_url": "https://eshop-b.cz/img/produkt.jpg"
  },
  "eshop-c.cz": null
}
```
