---
title: "Extract products from a brand's website"
method: POST
path: "/brand/ai/products"
tags: ["AI Data Extraction"]
---

# Extract products from a brand's website

`POST /brand/ai/products`

Beta feature: Extract product information from a brand's website. We will analyze the website and return a list of products with details such as name, description, image, pricing, features, and more.

## Request body

- union
  - object
    - `domain` string, required — The domain name to analyze.
    - `maxProducts` integer — Maximum number of products to extract.
    - `timeoutMS` integer — Optional timeout in milliseconds for the request. Maximum allowed value is 300000ms (5 minutes).
  - object
    - `directUrl` string, uri, required — A specific URL to use directly as the starting point for extraction without domain resolution.
    - `maxProducts` integer — Maximum number of products to extract.
    - `timeoutMS` integer — Optional timeout in milliseconds for the request. Maximum allowed value is 300000ms (5 minutes).

## Response `200`

Successful response

- object
  - `products` object[] — Array of products extracted from the website
    - `name` string, required — Name of the product
    - `description` string, required — Description of the product
    - `price` number, nullable — Price of the product
    - `currency` string, nullable — Currency code for the price (e.g., USD, EUR)
    - `billing_frequency` 'monthly' | 'yearly' | 'one_time' | 'usage_based', nullable — Billing frequency for the product
    - `pricing_model` 'per_seat' | 'flat' | 'tiered' | 'freemium' | 'custom', nullable — Pricing model for the product
    - `url` string, nullable — URL to the product page
    - `category` string, nullable — Category of the product
    - `features` string[], required — List of product features
    - `target_audience` string[], required — Target audience for the product (array of strings)
    - `tags` string[], required — Tags associated with the product
    - `image_url` string, nullable — URL to the product image
    - `images` string[], required — URLs to product images on the page (up to 7)

## Other responses

- `400` — Bad Request - validation error
- `401` — Unauthorized
- `408` — Request Timeout
- `500` — Internal server error

## Changes

- **2026-02-22** `98ef96cef5b0` — 1 info
  - added the required property `products/items/images` to the response with the `200` status
- **2026-02-12** `ec0e897d65be` — 2 breaking
  - the `oneOf[subschema #1: By Domain]/timeoutMS` request property's min was increased to `1000.00`
  - the `oneOf[subschema #2: By Direct URL]/timeoutMS` request property's min was increased to `1000.00`
- **2026-02-07** `10f7ae53f4fe` — 1 breaking, 4 warning, 1 info
  - the request's body type/format changed from `object`/`` to ``/``
  - removed the request property `directUrl`
  - removed the request property `domain`
  - removed the request property `maxProducts`
  - …2 more
- **2026-02-07** `73562e26b663` — 2 info
  - added the new optional request property `directUrl`
  - the request property `domain` became optional
- **2026-01-05** `863ddc13e032` — 2 info
  - api tag `AI Data Extraction` added
  - api tag `AI Products` removed

[Full history](https://skmtc.dev/context/apis/brand-api/changes/brand/ai/products/post.md)

---

[API](https://skmtc.dev/context/apis/brand-api.md) · [All operations](https://skmtc.dev/context/apis/brand-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/context/brand-api/revisions/05a30711e18b/schema)
