# Farfetch Scraper (`autofacts/farfetch`) Actor

Scrape Farfetch luxury fashion: current and sale prices, designer, sizes, colours, stock status, images and every variant. Works on category, brand and product URLs, in the locale and currency of the URL you pass. Optional size-and-fit detail and recommended products. Pay per product saved.

- **URL**: https://apify.com/autofacts/farfetch.md
- **Developed by:** [Proooxy](https://apify.com/autofacts) (community)
- **Categories:** Developer tools, E-commerce, MCP servers
- **Features:** Limited permissions
- **Stats:** 319 total users, 15 monthly users, 99.4% runs succeeded, 10 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 1,000 products

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Farfetch Scraper

[![Farfetch products, every market: prices, stock per size, designers, sale, every category and every currency, across 230+ storefronts.](https://api.apify.com/v2/key-value-stores/VjLYtn9fOWPlTRC1s/records/readme-hero-v1.png)](https://console.apify.com/actors/mKTnbkisJ8BAiIbsP/input)

**Farfetch Scraper** crawls the Farfetch luxury fashion catalog: every category of a storefront, and
products with their prices, sizes, stock, images and details, in every market and currency Farfetch
serves.

For release history, see the [CHANGELOG](CHANGELOG.md).

### 🎯 Features

1. 🗂️ Every category of a storefront (`https://www.farfetch.com/`, `https://www.farfetch.com/jp/`) or department (`/shopping/women/`, `/shopping/men/`, `/shopping/kids/`): one record per category with its path, product count and listing filters — and optionally every product in them.
2. 🔗 Listing URLs — category, designer, sale and set pages, with their filters — and product URLs, from any storefront.
3. 🌍 Each storefront in its own country and currency, in any language it has: a `/uk/` URL gives GBP prices, a `/jp/` URL JPY prices, and `?lang=ja-JP` Japanese titles.
4. 📦 Products with every size's own price and stock, designer, categories, highlights, composition, care instructions, country of manufacture and images.
5. 📏 Optional size and fit (the product's fit advice and each size's measurements) and up to 12 recommended products per product.

> 💡 The price values are multiplied by 100 to avoid floating point calculations.

### 🔁 Upgrading from 1.x

Your input works unchanged, and every product field keeps its name and value type. What to check in
your pipeline:

1. **`options` starts with the product's colour.** A variant's size id is now `options[1]`, not
   `options[0]`. Look the Size option up by its `type` instead of its position.
2. **Listings come in a different order.** The products and counts are the same, but a run capped by
   `maxItems` gets a different selection of them. A listing sorted by price (`sort=4` in
   its URL) keeps the same order from run to run. Match products on `source.id`.
3. **More listings work, and more filters apply.** Listing URLs 1.x could not open (search pages,
   `/shopping/women/knitwear-1/`, …) now return products, and the `attributes:` filter narrows a
   listing instead of being ignored. More products saved means more charges: check
   `maxItems` or set a **Max total charge** on the run.
4. **English on every storefront** for `details.madeIn.origin` ("Made in Italy") and
   `details.composition[].name` ("Outer"). Image URLs no longer end in `?ov=true`, and the
   `canonicalUrl` of a short `/item-<id>.aspx` link is the product's full page URL.
5. **Two new fields**, `source.language` and `variants[].sku`. Allow them if you validate records
   against a strict schema.
6. `/zh-HK/`, `/zh-MO/` and `/zh-TW/` are priced in HKD and TWD, as `/hk/`, `/mo/` and `/tw/` are;
   `maxItems: 0` means no limit.

The full list, with examples, is in the [CHANGELOG](CHANGELOG.md).

### 📋 Input Parameters

The input of this scraper should be JSON formatted. Fields are:

| Field                | Type    | Default | Description |
| :------------------- | :------ | :------ | :---------- |
| startUrls            | Array   |         | Farfetch URLs to start from. A storefront (`https://www.farfetch.com/`, `https://www.farfetch.com/jp/`) or department (`/shopping/women/`, `/shopping/men/`, `/shopping/kids/`) URL means every category of that storefront or department. Listing (category, designer, sale, set) and product URLs are supported from any storefront. A listing is always scraped from its first page. |
| withCategoryProducts | Boolean | false   | For storefront and department URLs, also scrape every product of every category, each product once. Off: category records only, one request per category. |
| withSizeFit          | Boolean | false   | Fetch the product's fit advice and each size's measurements, which slows the scraper down. |
| withRecommends       | Boolean | false   | Fetch recommended products, up to 12 per product. |
| maxItems             | Integer | 100     | The most records, products and categories, the run saves, 0 for no limit. Each record is one billed result, so this also caps what the records cost. A whole storefront is over 1,200 categories. `maxRequestsPerCrawl`, the name before 2.1, still works when `maxItems` is not set. |
| maxConcurrency       | Integer | 5       | Actor running max concurrency (1–100), which helps you to not get blocked. |
| proxy                | Object  |         | Select proxies to be used by your crawler. Without a proxy setting the Actor uses Apify Proxy; with a proxy country, URLs without a storefront prefix are priced in that country's currency. |

🧪 Example:

```json
{
  "startUrls": [
    { "url": "https://www.farfetch.com/shopping/women/mules-1/items.aspx?page=1&view=90&sort=3&scale=274&attributes:11006=19500036&colour=13" },
    { "url": "https://www.farfetch.com/jp/shopping/women/jacquemus-100mm-les-doubles-mules-item-28543291.aspx" }
  ],
  "withSizeFit": true,
  "maxConcurrency": 5
}
```

🗂️ Every category of the UK men's department (300 category records):

```json
{
  "startUrls": [{ "url": "https://www.farfetch.com/uk/shopping/men/" }],
  "maxItems": 0
}
```

Add `"withCategoryProducts": true` to also scrape their products — over 400,000 in the men's department,
so set `maxItems` or a **Max total charge** on the run.

### 🔗 Supported URL types

| Page | Example |
| :--- | :------ |
| 🏬 Storefront (all categories) | `https://www.farfetch.com/`, `https://www.farfetch.com/jp/` |
| 🧭 Department (its categories) | `https://www.farfetch.com/shopping/women/`, `https://www.farfetch.com/uk/shopping/men/` |
| 📁 Category | `https://www.farfetch.com/shopping/women/mules-1/items.aspx`, `https://www.farfetch.com/shopping/women/items.aspx?category=198938` |
| 🏷️ Designer | `https://www.farfetch.com/shopping/women/agolde/items.aspx`, `https://www.farfetch.com/shopping/women/agolde/clothing-1/items.aspx` |
| 💸 Sale | `https://www.farfetch.com/shopping/women/sale/all/items.aspx`, `https://www.farfetch.com/shopping/women/sale/mules-1/items.aspx` |
| ✨ Set | `https://www.farfetch.com/sets/new-in-this-week-eu-women.aspx` |
| 🛍️ Product | `https://www.farfetch.com/shopping/women/jacquemus-100mm-les-doubles-mules-item-28543291.aspx`, with or without `?storeid=`, or the short `https://www.farfetch.com/item-15804667.aspx` |

Listing URLs keep their filters: designer, category, colour, price, discount, size scale, sort order,
attributes (`attributes:11006=19500036`), exclusive, promotion and tags. The shipping-from,
delivery-speed, sustainability-label and size filters are not applied; the run log lists any it skips.

The storefront in the URL decides the country and currency. Records are in US English, except on the
storefronts Farfetch writes only in their own language: British English on `/uk/`, and the local
language on `/de/`, `/at/`, `/li/`, `/dk/`, `/es/`, `/ic/`, `/it/`, `/nl/` and `/se/`. `?lang=` switches
the language as it does on the website:

| URL                                                                          | Storefront                 |
| :--------------------------------------------------------------------------- | :------------------------- |
| https://www.farfetch.com/shopping/women/clothing-1/items.aspx                | United States, USD, en-US  |
| https://www.farfetch.com/uk/shopping/women/clothing-1/items.aspx             | United Kingdom, GBP, en-GB |
| https://www.farfetch.com/de/shopping/women/clothing-1/items.aspx             | Germany, EUR, de-DE        |
| https://www.farfetch.com/jp/shopping/women/clothing-1/items.aspx             | Japan, JPY, en-US          |
| https://www.farfetch.com/jp/shopping/women/clothing-1/items.aspx?lang=ja-JP  | Japan, JPY, ja-JP          |

A URL without a storefront prefix is priced in the proxy's country when the run sets one
(`apifyProxyCountry`), on the same www.farfetch.com pages in US English.

### 📤 Data storage

Products and categories are stored in the default dataset. A product record has `source`; a category
record has `handle` and `productsCount` instead (the Apify Console shows them in separate views).

#### 🛍️ Product

A product start URL with every option enabled. Each size is a variant, the sizes in stock first. A size
on offer is priced at the offer Farfetch shows for it, and its `stockCount` adds up every merchant's stock
of it; the product's `price` is its cheapest size in stock. A size nobody has on offer is out of stock at
that price, and a product nobody has on offer has all its sizes out of stock at 0, without
`currentFormatted`. `options` starts with the product's colour — Farfetch sells each colour as a
product of its own, so the colour option has one value, the designer's colour — followed by its sizes,
and each variant's `options` lists the colour id, then the size id. With `withSizeFit`, a variant's
`extraInfo` carries `fit`, the product's fit advice (such as `[{ "type": "1# Fitting phrase",
"description": "This piece fits small – take half a size up", "__typename": "FittingInformation" }]`),
and `measurements` in centimetres and inches; each is null when Farfetch has none. Each recommended
product's `raw` is shaped like the website's catalog item. Arrays are shortened below.

```json
{
  "source": {
    "id": "28543291",
    "crawlUrl": "https://www.farfetch.com/shopping/women/jacquemus-100mm-les-doubles-mules-item-28543291.aspx?storeid=9155",
    "canonicalUrl": "https://www.farfetch.com/shopping/women/jacquemus-100mm-les-doubles-mules-item-28543291.aspx",
    "retailer": "farfetch",
    "language": "en-US",
    "currency": "USD"
  },
  "brand": "Jacquemus",
  "title": "Les Doubles sandals",
  "description": "Les Doubles sandals",
  "details": {
    "short_desc": "Les Doubles sandals",
    "full_desc": null,
    "highlights": [
      "camel brown",
      "square open toe",
      "high sculpted heel"
    ],
    "composition": [
      {
        "name": "Outer",
        "materials": [
          {
            "name": "Calf Suede",
            "value": "100%"
          }
        ]
      },
      {
        "name": "Sole",
        "materials": [
          {
            "name": "Calf Leather",
            "value": "100%"
          }
        ]
      },
      {
        "name": "Lining",
        "materials": [
          {
            "name": "Calf Leather",
            "value": "100%"
          }
        ]
      }
    ],
    "farfetchID": "28543291",
    "brandStyleID": "243FO1604355",
    "care": {
      "Washing instructions": [
        "Read Manufacturer Guidelines"
      ]
    },
    "madeIn": {
      "origin": "Made in Italy",
      "disclaimers": null
    }
  },
  "categories": [
    "Women",
    "Shoes",
    "Sandals",
    "Heeled Sandals"
  ],
  "options": [
    {
      "type": "Colour",
      "values": [
        {
          "id": "119175911",
          "name": "830|CAMEL"
        }
      ]
    },
    {
      "type": "Size",
      "values": [
        {
          "id": "9",
          "name": "36"
        },
        {
          "id": "11",
          "name": "37"
        },
        {
          "id": "13",
          "name": "38"
        }
      ]
    }
  ],
  "variants": [
    {
      "id": "e5701adf-85fd-4a68-ae2c-8136afe01e3b",
      "options": [
        "119175911",
        "9"
      ],
      "price": {
        "current": 67700,
        "currentFormatted": "$677",
        "original": 127100,
        "stockCount": 3,
        "stockStatus": "InStock"
      },
      "medias": [
        {
          "type": "Image",
          "url": "https://cdn-images.farfetch-contents.com/28/54/32/91/28543291_57846182_1000.jpg",
          "alt": "Jacquemus Les Doubles sandals",
          "index": 1
        }
      ],
      "extraInfo": {
        "fit": null,
        "measurements": [
          {
            "type": "WEIGHT",
            "name": "HEEL",
            "imperial": {
              "raw": 3.93,
              "formatted": "3.93 in",
              "__typename": "GenericValue"
            },
            "metric": {
              "raw": 10,
              "formatted": "10 cm",
              "__typename": "GenericValue"
            },
            "__typename": "Measurement"
          }
        ]
      },
      "label": null,
      "sku": "1\\4\\4\\409549\\852356\\0"
    },
    {
      "id": "b22bead0-e92a-4225-9b8f-f7ec6b03e7cc",
      "options": [
        "119175911",
        "11"
      ],
      "price": {
        "current": 115000,
        "currentFormatted": "$1,150",
        "original": 171300,
        "stockCount": 1,
        "stockStatus": "InStock"
      },
      "medias": [
        {
          "type": "Image",
          "url": "https://cdn-images.farfetch-contents.com/28/54/32/91/28543291_57846182_1000.jpg",
          "alt": "Jacquemus Les Doubles sandals",
          "index": 1
        }
      ],
      "extraInfo": {
        "fit": null,
        "measurements": [
          {
            "type": "WEIGHT",
            "name": "HEEL",
            "imperial": {
              "raw": 3.93,
              "formatted": "3.93 in",
              "__typename": "GenericValue"
            },
            "metric": {
              "raw": 10,
              "formatted": "10 cm",
              "__typename": "GenericValue"
            },
            "__typename": "Measurement"
          }
        ]
      },
      "label": null,
      "sku": "243FO1604355_830_37_251038058600288"
    }
  ],
  "medias": [
    {
      "type": "Image",
      "url": "https://cdn-images.farfetch-contents.com/28/54/32/91/28543291_57846182_1000.jpg",
      "alt": "Jacquemus Les Doubles sandals",
      "index": 1
    },
    {
      "type": "Image",
      "url": "https://cdn-images.farfetch-contents.com/28/54/32/91/28543291_57846188_1000.jpg",
      "alt": "Jacquemus Les Doubles sandals",
      "index": 2
    }
  ],
  "extraInfo": {
    "label": null,
    "color": "830|CAMEL",
    "mainColor": "Brown",
    "condition": "NEW"
  },
  "price": {
    "current": 67700,
    "currentFormatted": "$677",
    "original": 127100,
    "stockCount": 3,
    "stockStatus": "InStock"
  },
  "recommendedProducts": [
    {
      "id": "36558720",
      "url": "https://www.farfetch.com/shopping/women/fendi-iconic-colibri-sandals-item-36558720.aspx",
      "raw": {
        "id": "36558720",
        "resourceIdentifier": {
          "path": "/shopping/women/fendi-iconic-colibri-sandals-item-36558720.aspx",
          "__typename": "ResourceIdentifier"
        },
        "brand": {
          "id": "84259709",
          "name": "FENDI",
          "__typename": "Brand"
        },
        "shortDescription": "Iconic Colibrì sandals",
        "label": "New Season",
        "merchantId": "16188",
        "promotion": null,
        "stockQuantity": 12,
        "rankingAlgorithm": null,
        "price": {
          "__typename": "ProductCatalogItemFullPrice",
          "value": {
            "raw": 1038,
            "formatted": "$1,038",
            "__typename": "GenericValue"
          },
          "currency": {
            "isoCode": "USD",
            "symbol": "$",
            "__typename": "Currency"
          },
          "installments": null
        },
        "__typename": "ProductCatalogItem",
        "productPrice": {
          "full": {
            "value": {
              "raw": 1038,
              "formatted": "$1,038",
              "__typename": "GenericValue"
            },
            "__typename": "ProductFullPrice"
          },
          "discounts": [],
          "final": {
            "value": {
              "raw": 1038,
              "formatted": "$1,038",
              "__typename": "GenericValue"
            },
            "type": "FULL",
            "__typename": "ProductFinalPrice"
          },
          "currency": {
            "isoCode": "USD",
            "symbol": "$",
            "__typename": "Currency"
          },
          "installments": null,
          "promoOffer": null,
          "__typename": "ProductCatalogItemPrice"
        },
        "variationProperties": [
          {
            "__typename": "ProductCatalogItemScaledSizeVariationProperty",
            "order": 1,
            "totalItems": 6,
            "values": [
              {
                "id": "36",
                "order": 1,
                "description": "36",
                "__typename": "ProductCatalogItemScaledSizeVariationPropertyValue"
              },
              {
                "id": "36.5",
                "order": 2,
                "description": "36.5",
                "__typename": "ProductCatalogItemScaledSizeVariationPropertyValue"
              }
            ]
          }
        ],
        "visualizationExperience": {
          "isForMembers": false,
          "__typename": "VisualizationExperience"
        },
        "tags": [
          {
            "id": "2303",
            "__typename": "ProductTag"
          }
        ],
        "externalTriggers": null,
        "deliveryMethods": [],
        "attributes": [],
        "returnDetail": null,
        "images": [
          {
            "order": 1,
            "size480": {
              "url": "https://cdn-images.farfetch-contents.com/36/55/87/20/36558720_68756004_480.jpg",
              "alt": "FENDI Iconic Colibrì sandals",
              "__typename": "Image"
            },
            "__typename": "ProductCatalogItemImage"
          }
        ],
        "categories": [
          {
            "id": "141258",
            "name": "Women",
            "__typename": "ProductCatalogItemCategory"
          },
          {
            "id": "136301",
            "name": "Shoes",
            "__typename": "ProductCatalogItemCategory"
          },
          {
            "id": "198954",
            "name": "Sandals",
            "__typename": "ProductCatalogItemCategory"
          }
        ]
      }
    }
  ]
}
```

#### 🗂️ Category

From a storefront or department start URL. `handle` is built from the English category names, so it is
the same in every storefront. `productsCount` and `facets` take in the whole category, sale included; the
category's page on the website, like a listing start URL, shows only the full-price products. `facets` are
the category's listing filters; category, designer and colour values carry their product counts. Arrays
are shortened below.

```json
{
  "id": "198967",
  "title": "Mules",
  "handle": "men/shoes/mules",
  "description": "",
  "productsCount": 549,
  "retailer": "farfetch",
  "url": "https://www.farfetch.com/uk/shopping/men/items.aspx?category=198967",
  "country": "GB",
  "language": "en-GB",
  "currency": "GBP",
  "department": "Men",
  "paths": [
    [
      "Men",
      "Shoes",
      "Mules"
    ]
  ],
  "parentId": "135968",
  "facets": [
    {
      "id": "categories",
      "name": "Categories",
      "type": "Categories",
      "values": [
        {
          "id": "135968",
          "name": "Shoes",
          "count": 549
        },
        {
          "id": "198967",
          "name": "Mules",
          "count": 549
        }
      ]
    },
    {
      "id": "brands",
      "name": "Brands",
      "type": "Brands",
      "values": [
        {
          "id": "100335705",
          "name": "DRIES VAN NOTEN",
          "count": 2
        },
        {
          "id": "100965",
          "name": "PS Paul Smith",
          "count": 2
        }
      ]
    },
    {
      "id": "colors",
      "name": "Colors",
      "type": "Colors",
      "values": [
        {
          "id": "1",
          "name": "Black",
          "count": 148
        },
        {
          "id": "10",
          "name": "Yellow",
          "count": 11
        }
      ]
    },
    {
      "id": "price",
      "name": "Price",
      "type": "Price",
      "values": [
        {
          "id": "34-2500",
          "name": "34-2500"
        }
      ]
    },
    {
      "id": "priceType",
      "name": "PriceType",
      "type": "PriceType",
      "values": [
        {
          "id": "0",
          "name": "FullPrice"
        },
        {
          "id": "1",
          "name": "Sale"
        }
      ]
    },
    {
      "id": "attributes:11006",
      "name": "Heel Height",
      "type": "Attributes",
      "values": [
        {
          "id": "19500034",
          "name": "Flat"
        },
        {
          "id": "19500035",
          "name": "Mid Heel"
        }
      ]
    }
  ]
}
```

***

### 💳 Pricing

This Actor uses **pay per event**: you pay for the data saved to the dataset, not for compute time or
run duration. The event prices are on the Actor's pricing tab.

| Event | Charged |
| :---- | :------ |
| 🛍️ `product` | Once per product saved, at the same price as before. |
| 🗂️ `category` | Once per category record from a storefront or department URL. Until this event takes effect, a category record is charged as a result, at the product price. |

Apify's free plan includes $5 of platform credit every month. You are never charged for failed requests,
products that could not be found, or the same record twice in one run. Set **Max total charge** on the
run to cap spend — the Actor stops cleanly at the limit and keeps everything already saved.

***

### 🤖 Use with AI agents

This Actor is callable as a tool by any MCP-capable agent — Claude, Cursor, VS Code — or by your
own code, with no wrapper and nothing extra to deploy.

**Connect over MCP**

```
https://mcp.apify.com?tools=autofacts/farfetch
```

In a client that reads an `mcpServers` configuration block:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=autofacts/farfetch",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
```

The agent reads this Actor's parameters and their descriptions straight from the input
schema, and the hosted server infers the result field types from the dataset schema — so a
model knows what to send and what comes back before it ever calls anything.

**Or call the API directly**

```bash
curl -X POST "https://api.apify.com/v2/acts/autofacts~farfetch/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"startUrls": [{"url": "https://www.farfetch.com/shopping/women/mules-1/items.aspx?page=1&view=90&sort=3&scale=274&attributes:11006=19500036&colour=13"}], "maxConcurrency": 5}'
```

The response body is the dataset records described above.

### 🧰 Other Actors by autofacts

Apify only auto-recommends Actors in the same category, so here are the ones that actually pair with this scraper:

| Actor | What it's for |
| :--- | :--- |
| [Sephora Product Scraper](https://apify.com/autofacts/sephora) | Beauty across 29 countries |
| [Ulta Beauty Scraper](https://apify.com/autofacts/ulta-scraper) | US beauty retail |
| [Macy's Scraper](https://apify.com/autofacts/macy-s-scraper) | Department-store catalog and pricing |
| [Boohoo Scraper](https://apify.com/autofacts/boohoo-scraper) | Fast fashion across 7 regions |
| [Lululemon Scraper](https://apify.com/autofacts/lululemon-scraper) | Activewear catalog and pricing |

All of them: [apify.com/autofacts](https://apify.com/autofacts)

# Changelog

This Actor's version history is a separate document: https://apify.com/autofacts/farfetch/changelog.md

# Actor input Schema

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

Start URLs of Farfetch to start the actor. A storefront (https://www.farfetch.com/, https://www.farfetch.com/jp/) or department (/shopping/women/, /shopping/men/, /shopping/kids/) URL scrapes every category of that storefront or department. Listing (/shopping/women/mules-1/items.aspx, with its filters), sale, designer, set (/sets/...aspx) and product URLs are all supported, from any storefront. A listing is always scraped from its first page.

## `withCategoryProducts` (type: `boolean`):

For storefront and department start URLs: besides one record per category (title, path, product count, filters), also scrape every product in those categories, each product once. Off: categories only, one request per category.

## `withSizeFit` (type: `boolean`):

Whether to fetch variation size and fit info which will slow down the scraper.

## `withRecommends` (type: `boolean`):

Whether to fetch recommended products, up to 12 per product.

## `maxItems` (type: `integer`):

The most records, products and categories, the run saves (100 when left empty). Each record is one billed result, so this also caps what the run's records cost. The run stops as soon as it has that many. 0 means no limit: a whole storefront is over 1,200 categories, so bound spend with the run's Max total charge instead.

## `maxRequestsPerCrawl` (type: `integer`):

Deprecated name of maxItems, kept so tasks saved before version 2.1 keep working. Ignored when maxItems is set.

## `maxConcurrency` (type: `integer`):

Actor running max concurrency, which helps you to not getting blocked.

## `proxy` (type: `object`):

Select proxies to be used by your crawler. Without a proxy setting the actor uses Apify Proxy. With a proxy country, URLs without a storefront prefix (https://www.farfetch.com/shopping/...) are priced in that country's currency.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.farfetch.com/shopping/women/mules-1/items.aspx?page=1&view=90&sort=3&scale=274&attributes:11006=19500036&colour=13"
    }
  ],
  "withCategoryProducts": false,
  "withSizeFit": false,
  "withRecommends": false,
  "maxConcurrency": 5,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

One row per product: designer, title, description and details (highlights, composition, care instructions, country of manufacture, the designer's style id), categories, images, colour, label and condition, its price and stock status, and every size as a variant with its own price and stock, the sizes in stock first; when asked for, the fit advice and each size's measurements, and up to 12 recommended products. One row per category, from a storefront or department URL: title, path from the department root, department, product count, page URL, and its listing filters, whose category, designer and colour values carry product counts. Each row carries its currency and language. Product rows have `source`; category rows have `handle` and `productsCount`. Prices are integers, the amount times 100.

# 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 = {
    "startUrls": [
        {
            "url": "https://www.farfetch.com/shopping/women/mules-1/items.aspx?page=1&view=90&sort=3&scale=274&attributes:11006=19500036&colour=13"
        }
    ],
    "maxConcurrency": 5,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("autofacts/farfetch").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 = {
    "startUrls": [{ "url": "https://www.farfetch.com/shopping/women/mules-1/items.aspx?page=1&view=90&sort=3&scale=274&attributes:11006=19500036&colour=13" }],
    "maxConcurrency": 5,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("autofacts/farfetch").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.farfetch.com/shopping/women/mules-1/items.aspx?page=1&view=90&sort=3&scale=274&attributes:11006=19500036&colour=13"
    }
  ],
  "maxConcurrency": 5,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyCountry": "US"
  }
}' |
apify call autofacts/farfetch --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,autofacts/farfetch"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/mKTnbkisJ8BAiIbsP/builds/HDjVgnQgnrDvBjZqf/openapi.json
