# Burberry Product Scraper (`solidcode/burberry-scraper`) Actor

\[💰 $9.00 / 1K] Extract Burberry products — names, prices, colours, availability, images, categories across 36 country stores in 9 languages. Search by keyword or paste URLs. Filter by colour/department. Optionally collect descriptions, materials, care and per-size stock.

- **URL**: https://apify.com/solidcode/burberry-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $9.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Burberry Product Scraper

Pull Burberry's full product catalogue at scale — names, prices, markdown prices, colours, availability, images, categories and product IDs, in the local currency of any of 36 country stores. Turn on full descriptions and every row also carries the full description text, material composition, published care and measurement copy, and the stock level of each individual size. Built for luxury-retail competitive analysts, resale and consignment pricing teams, and brand-monitoring agencies who need a clean, structured Burberry dataset without clicking through a category grid one page at a time.

### Why This Scraper?

- **Tick as many of the 36 country stores as you like and get them all in one run** — the United Kingdom store returns GBP, Japan returns JPY, and Czechia, Hungary and Romania return CZK, HUF and RON. Every row records the store it came from, so a US/UK/Japan run is a ready-made price comparison, and your result limit is shared across all of them so the cost stays exactly where you set it.
- **9 catalogue languages, and the language changes the results** — English, French, German, Spanish, Italian, Japanese, Korean, Simplified Chinese and Traditional Chinese. Burberry matches your keyword against the catalogue in that language, so "bag" on the US store returns 285 products while the Italian "borsa" returns its own 280 — two genuinely different views of the same catalogue, one run each.
- **Per-size stock levels, not just "in stock"** — every size gets its own row entry with SKU, size label, an in-stock flag and the remaining stock quantity. That is sell-out timing you cannot read off a product grid.
- **Component-level material breakdown on every enriched product** — outer, lining, trim and sleeve lining each named with their own percentage, plus the description text, and Burberry's published care and measurement copy wherever the product carries it (apparel almost always does; leather goods often ship without separate care wording). None of this appears on Burberry's results pages; each product is opened individually to get it.
- **13 colour filters and 5 department filters that stack** — Beige through Yellow, crossed with Women, Men, Children, Girls and Boys. A 285-product "bag" search narrows to 72 men's bags, or to only the black ones, in a single run.
- **4 sort orders that genuinely reorder the catalogue** — Recommended, Price: Low to High, Price: High to Low, and New In. Pair New In with a small result cap to pull only this week's arrivals.
- **An unavailable filter tells you so** — ask for yellow bags where Burberry stocks none and you get zero rows plus a plain-English explanation naming the term, store and language. You never get handed the unfiltered catalogue and mistake it for a filtered one.
- **Exact result caps — ask for 33, get exactly 33** — the run stops on the number you set, not on the next page boundary, so you are never billed for rows you did not ask for.
- **Markdown intelligence built into every row** — current price, previous price, a computed discount percentage, a sale flag, plus every alternative colourway of the product with its own image and link.

### Use Cases

**Competitive Pricing & Market Analysis**

- Compare the same handbag's price across the UK, US, Japan and UAE stores in one run — tick all four stores and every row tells you which market it came from
- Track markdown depth and discount percentage across a season
- Build price-per-category benchmarks for luxury outerwear, bags and scarves
- Detect which markets receive a product first using New In ordering

**Resale & Consignment Valuation**

- Anchor resale listings to the current retail price in the buyer's own currency
- Identify products already discounted at retail before pricing secondhand stock
- Match consignment intake against official product IDs, SKUs and colour names
- Flag sold-out sizes that command a premium on the secondary market

**Assortment & Merchandising Research**

- Map how a category's assortment differs between country stores
- Count colourway depth per style using the alternative-colourway data
- Track which departments carry which silhouettes across Women, Men and Children
- Monitor new-arrival cadence week over week

**Catalogue & Content Enrichment**

- Populate a product database with names, images, categories and breadcrumbs
- Enrich existing records with composition, care and measurement text
- Build localized product feeds — the same catalogue in any of 9 languages, one language per run, identical field structure every time
- Feed high-resolution product imagery into lookbooks and comparison tools

**Availability & Stock Monitoring**

- Watch per-size stock quantities to see which sizes are selling through
- Alert on pre-order, coming-soon and limited-availability products
- Track how long a product stays live in a given market
- Compare stock depth for the same style between two stores

### Getting Started

#### Simple Keyword Search

```json
{
    "searchTerms": ["trench coat"],
    "maxResults": 50
}
```

#### Filtered by Colour, Department and Store

```json
{
    "searchTerms": ["bag"],
    "colors": ["black", "brown"],
    "gender": "women",
    "country": ["uk"],
    "maxResults": 200
}
```

#### One Product, Four Markets

```json
{
    "searchTerms": ["mini check bucket bag"],
    "country": ["us", "uk", "jp", "ae"],
    "maxResults": 200
}
```

#### Newest Arrivals from a Category Page

```json
{
    "startUrls": ["https://us.burberry.com/l/womens-bags/"],
    "sortBy": "newest",
    "maxResults": 100
}
```

#### Full Detail, Localized Catalogue

```json
{
    "searchTerms": ["borsa"],
    "startUrls": [
        "https://it.burberry.com/l/donna-borse/",
        "https://it.burberry.com/check-cotton-bucket-hat-p81224811"
    ],
    "country": ["it"],
    "language": "it",
    "sortBy": "price_desc",
    "colors": ["beige"],
    "gender": "women",
    "includeDescriptions": true,
    "maxResults": 500
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchTerms` | string\[] | `["bag"]` | Words to search for on Burberry, one per line — for example "trench coat", "check scarf" or "crossbody bag". Each keyword runs its own search. |
| `startUrls` | string\[] | `[]` | Paste Burberry page addresses — a category page, a search results page, or a single product page. The page type is detected automatically. |

Leave both empty and the run falls back to the default `bag` search. Addresses that are not Burberry pages are skipped with a friendly warning instead of failing the run.

#### Sorting

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `sortBy` | select | `Recommended` | Order products are collected in: Recommended, Price: Low to High, Price: High to Low, or New In. Applied before the result limit. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `colors` | select\[] | `[]` | Only collect these colours: Beige, Black, Blue, Brown, Green, Grey, Multicoloured, Orange, Pink, Purple, Red, White, Yellow. Pick several and each is collected separately, then merged and deduplicated. |
| `gender` | select | *(none)* | Only collect one department: Women, Men, Children, Girls or Boys. Works best with keyword searches. |

#### Localization

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `country` | select\[] | `["United States (USD)"]` | Which of the 36 Burberry stores to read from. Sets the prices, the currency and which products are actually available in that market. Pick several and every store is collected in the same run — each row records the store it came from, and the product limit is shared across all of them. Turkey, Brazil and Rest of the World are browse-only — names, colours, images and availability only, because Burberry publishes no prices there. |
| `language` | select | `English` | Language for product names and descriptions: English, French, German, Spanish, Italian, Japanese, Korean, Chinese (Simplified) or Chinese (Traditional). One language per run. Also decides which language catalogue your keywords are matched against. |

#### Product Details & Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeDescriptions` | boolean | `false` | Also open each product's own page to collect its full description, material composition, care instructions, measurements and per-size stock. Charged separately per enriched product. |
| `maxResults` | integer | `100` | Stop after exactly this many products in total, across every store, keyword, colour and URL. One run collects at most 100,000 products whatever number you enter; set to `0` to collect everything found up to that same limit. Start at 20 for a quick test. |

### Output

Here is a representative result with full descriptions enabled:

```json
{
    "productId": "81224811",
    "sku": "8122481100",
    "name": "Check Cotton Bucket Hat",
    "nameEn": "Check Cotton Bucket Hat",
    "url": "https://us.burberry.com/check-cotton-bucket-hat-p81224811",
    "color": "Archive Beige",
    "gender": "Women",
    "category": "Hats & Gloves",
    "breadcrumbs": ["Women", "Accessories", "Hats & Gloves"],
    "label": "New In",
    "price": 390.0,
    "priceFormatted": "$390.00",
    "oldPrice": 550.0,
    "oldPriceFormatted": "$550.00",
    "currency": "USD",
    "onSale": true,
    "discountPercent": 29.1,
    "inStock": true,
    "soldOut": false,
    "preOrder": false,
    "comingSoon": false,
    "limitedAvailability": false,
    "image": "https://assets.burberry.com/is/image/Burberryltd/example-primary.jpg",
    "images": [
        "https://assets.burberry.com/is/image/Burberryltd/example-primary.jpg",
        "https://assets.burberry.com/is/image/Burberryltd/example-alt.jpg"
    ],
    "colorCount": 3,
    "colorAlternatives": [
        {
            "label": "Black",
            "name": "Black",
            "url": "https://us.burberry.com/check-cotton-bucket-hat-p81224812",
            "image": "https://assets.burberry.com/is/image/Burberryltd/example-black.jpg",
            "id": "81224812"
        }
    ],
    "description": "Bucket hat cut from cotton woven with the Burberry Check...",
    "materialComposition": "Outer: 100% cotton\nLining: 100% cotton",
    "careInstructions": "Specialist clean",
    "measurements": "Brim width: 5.5cm/2.1in",
    "features": "Made in Italy",
    "sizes": [
        { "sku": "8122481100M", "label": "M", "isInStock": true, "stockQuantity": 4, "isPreOrderStock": false },
        { "sku": "8122481100L", "label": "L", "isInStock": false, "stockQuantity": 0, "isPreOrderStock": false }
    ],
    "store": "us",
    "language": "en",
    "sourceUrl": "https://us.burberry.com/l/womens-accessories/hats-gloves/",
    "scrapedAt": "2026-07-25T10:12:00+00:00"
}
```

#### Core Product Fields

| Field | Type | Description |
|-------|------|-------------|
| `productId` | string | Burberry's own product identifier |
| `sku` | string | SKU of the product's first size variant — identical to the product ID for one-size items; every size's own SKU is in `sizes` (filled when full descriptions are on) |
| `name` | string | Product name in the chosen language |
| `nameEn` | string | Product name in English, whatever language you chose |
| `url` | string | Direct link to the product on the chosen store |
| `label` | string | Merchandising badge such as "New In" |
| `color` | string | Colour name as Burberry publishes it |
| `gender` | string | Department the product sits in. See the note below |
| `category` | string | Deepest category name. See the note below |
| `breadcrumbs` | string\[] | Full category path from department to category. See the note below |

**A note on `gender`, `category` and `breadcrumbs`:** these three come from Burberry's category tree, and Burberry only publishes that tree on category pages and on individual product pages. They are filled in when you collect from a pasted category address, and on any row enriched with full descriptions. On a plain keyword search without full descriptions they come back empty, because Burberry's search results carry no category trail at all. They are also always in English, whichever language you pick, so rows stay groupable across languages.

#### Pricing & Markdown

| Field | Type | Description |
|-------|------|-------------|
| `price` | number | Current price in the store's currency, `null` on browse-only stores |
| `priceFormatted` | string | Price exactly as displayed, including symbol |
| `oldPrice` | number | Pre-markdown price, `null` when not discounted |
| `oldPriceFormatted` | string | Pre-markdown price as displayed |
| `currency` | string | Currency code such as `USD`, `GBP`, `CZK`, `HUF` |
| `onSale` | boolean | Whether the product is currently marked down |
| `discountPercent` | number | Discount off the previous price, to one decimal |

#### Availability

| Field | Type | Description |
|-------|------|-------------|
| `inStock` | boolean | Available to buy now |
| `soldOut` | boolean | Sold out in the chosen store |
| `preOrder` | boolean | Offered as a pre-order |
| `comingSoon` | boolean | Announced but not yet purchasable |
| `limitedAvailability` | boolean | Flagged as limited availability |

#### Images & Colourways

| Field | Type | Description |
|-------|------|-------------|
| `image` | string | Primary product image |
| `images` | string\[] | Every image published for the product |
| `colorCount` | number | How many colourways this style comes in |
| `colorAlternatives` | object\[] | Each other colourway with its label, name, link, image and ID |

#### Full Description Fields

Populated when `includeDescriptions` is on.

| Field | Type | Description |
|-------|------|-------------|
| `description` | string | Full product description text |
| `materialComposition` | string | Composition, one line per component |
| `careInstructions` | string | Care and cleaning instructions, when Burberry publishes them for that product |
| `measurements` | string | Published measurements, when the product carries them |
| `features` | string | Feature and provenance notes, when the product carries them |
| `sizes` | object\[] | Every size with SKU, label, in-stock flag, stock quantity and pre-order flag |

#### Run Context

| Field | Type | Description |
|-------|------|-------------|
| `store` | string | Store code the row was read from, such as `us` or `uk` |
| `language` | string | Language code the row was read in |
| `sourceUrl` | string | The keyword search or address this row came from |
| `scrapedAt` | string | UTC timestamp of collection |

### Tips for Best Results

- **Search in the language you selected.** The language setting changes which catalogue your keyword is matched against, not just the wording of the results. On the US store, "bag" in English returns 285 products, "bag" in Italian returns none, and the Italian "borsa" returns 280. Pasted category and product addresses are unaffected — they return the same products with translated names.
- **Stack colour and department to get a workable set.** A bare "bag" search on the US store is 285 products; adding Men brings it to 72, and adding a colour narrows it further. Far cheaper than pulling everything and filtering afterwards.
- **Pick the store before you pick anything else.** It decides prices, currency *and* which products exist — the same category holds a different selection in different markets. Choose International if your country is not listed.
- **Tick several stores for a price comparison, and raise the limit to match.** The limit is a total across every store, so four stores at a limit of 100 gives you roughly 25 products per market, not 100 each. Set it to four times what you want per store.
- **Want categories on a keyword search? Turn full descriptions on, or paste a category address instead.** Burberry's search results carry no category trail, so `category`, `breadcrumbs` and `gender` fill in only from a category page or from a product's own page.
- **Skip Turkey, Brazil and Rest of the World if you need prices.** Burberry publishes no prices on those three stores, so price, previous price and currency come back empty. Everything else still populates.
- **Leave full descriptions off for price and availability work.** Names, prices, markdowns, colours, images and stock flags all come from the results pages at the standard rate. Only turn descriptions on when you actually need composition, care, measurements or per-size stock.
- **Pair New In with a small limit for arrivals tracking.** Sort by New In and set the limit to 50 to capture just the latest drop rather than paging through the whole category.
- **Mix keywords and addresses in one run.** Keywords, category pages, search pages and individual product pages can all go into the same run, and products found more than once are deduplicated automatically.

### Pricing

**From $9.00 per 1,000 results** — flat pay-per-result pricing for a luxury catalogue with per-size stock and full product copy. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $1.08 | $1.02 | $0.96 | $0.90 |
| 1,000 | $10.80 | $10.20 | $9.60 | $9.00 |
| 10,000 | $108.00 | $102.00 | $96.00 | $90.00 |
| 100,000 | $1,080.00 | $1,020.00 | $960.00 | $900.00 |

A "result" is one product row in the output dataset, and the result limit you set is honoured exactly — set it to 33 and you are billed for 33.

**No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.**

Full descriptions are optional and billed separately at $4.00 per 1,000 enriched products ($0.004 each) — leave the toggle off and you never pay it. It applies only to products that actually come back with description data, so a product whose detail page cannot be read costs you nothing extra.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Custom API integrations
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor collects publicly available product information for legitimate market research, competitive pricing analysis, resale valuation and catalogue enrichment. It collects no personal data and no customer information. Users are responsible for complying with applicable laws and Burberry's Terms of Service, and for respecting trademark and copyright in product imagery and descriptions. Do not use extracted data for counterfeiting, misrepresentation, or any illegal purpose.

# Actor input Schema

## `searchTerms` (type: `array`):

Words to search for on Burberry, one per line — for example 'trench coat', 'check scarf' or 'crossbody bag'. Each keyword runs its own search and every matching product is collected. Leave empty if you are only using URLs below.

## `startUrls` (type: `array`):

Paste Burberry page addresses — a category page (e.g. https://us.burberry.com/l/womens-bags/), a search results page, or a single product page. The scraper works out which kind of page it is and collects every product it finds. Leave empty if you are only using keywords above.

## `sortBy` (type: `string`):

The order products are collected in. Handy together with a result limit — for example sort by New In and set a limit of 50 to grab only the latest arrivals.

## `colors` (type: `array`):

Only collect products in these colours. Leave empty to collect every colour. Pick more than one and each colour is searched separately, then the results are combined. If a colour simply isn't stocked for what you searched, that colour returns nothing rather than quietly giving you everything.

## `gender` (type: `string`):

Only collect products from one department. Works best with keyword searches — a category page is usually already limited to one department anyway.

## `country` (type: `array`):

Which Burberry stores to read from. The store decides the prices, the currency and which products are actually available in that market — the same category can hold a different selection in different countries. Pick more than one and every store is collected in the same run, so you can compare the same product across markets; each result records the store it came from and the product limit is shared across all of them. Turkey, Brazil and Rest of the World are browse-only stores: you still get names, colours, images and availability, but Burberry publishes no prices there. Choose International if your country is not listed.

## `language` (type: `string`):

Language for product names and descriptions. Important for keyword searches: Burberry matches your keyword against the catalogue in this language, so if you pick French you must search in French ('sac', not 'bag'). Category and product URLs are unaffected — they return the same products with translated names.

## `includeDescriptions` (type: `boolean`):

Turn this on to also open each product's own page and collect its full description, material composition, care instructions, measurements and the stock level of every individual size. Burberry does not put any of this on its results pages, so each product needs its own visit — the run takes longer, and every product collected this way carries an extra charge of $0.004 ($4.00 per 1,000 enriched products) on top of the normal per-result price, billed as its own separate line on this actor's pricing page. You are only charged for products whose page actually came back with description data. Leave it off if names, prices, colours, availability and images are enough.

## `maxResults` (type: `integer`):

Stop after collecting exactly this many products in total, across every store, keyword, colour and URL — you are never charged for more than this. One run collects at most 100,000 products as a safety limit, whatever number you type here; set to 0 to collect everything found up to that same limit. Tip: start at 20 for a quick test, then raise it.

## Actor input object example

```json
{
  "searchTerms": [
    "bag"
  ],
  "startUrls": [],
  "sortBy": "default",
  "colors": [],
  "country": [
    "us"
  ],
  "language": "en",
  "maxResults": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of collected products with names, prices, colours and availability.

## `details` (type: `string`):

Descriptions, materials, care instructions and per-size stock. Populated only when Collect Full Product Descriptions is turned on.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchTerms": [
        "bag"
    ],
    "startUrls": [],
    "sortBy": "default",
    "colors": [],
    "country": [
        "us"
    ],
    "language": "en",
    "includeDescriptions": false,
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/burberry-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchTerms": ["bag"],
    "startUrls": [],
    "sortBy": "default",
    "colors": [],
    "country": ["us"],
    "language": "en",
    "includeDescriptions": False,
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/burberry-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "bag"
  ],
  "startUrls": [],
  "sortBy": "default",
  "colors": [],
  "country": [
    "us"
  ],
  "language": "en",
  "includeDescriptions": false,
  "maxResults": 100
}' |
apify call solidcode/burberry-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/burberry-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/QJDGa5mUoJTxrONYz/builds/sdCdidw01zE1I0Dnx/openapi.json
