# Farfetch API for agents

> API for Agents · https://apiforagents.dev/platforms/farfetch · HTML twin: https://apiforagents.dev/platforms/farfetch

Products, search and listings from Farfetch, priced per storefront.

Endpoint: `POST https://apiforagents.dev/v1/farfetch`. One op per call. Quote first with `"estimateOnly": true`.

## Prices (USD per record, pay as you go)

| Record | Per record |
|---|---|
| products | $0.0009 |

## Operations

### products

Full product detail for up to ten Farfetch product URLs or item ids. Price, full price, discount, per-size availability, seller boutique.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| productName | string |
| brand | string |
| productUrl | string |
| description | string |
| color | string |
| category | string |
| categoryPath | string |
| gender | string |
| season | string |
| price | number |
| fullPrice | number |
| discountPercent | number |
| currency | string |
| seller | string |
| sizes | list of string |
| variants | any |
| measurements | any |
| returns | any |
| stockQuantity | integer |
| availability | list of string |
| label | string |
| condition | string |
| images | list of string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/farfetch \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"products","subjects":["https://www.farfetch.com/shopping/women/<product>-item-<id>.aspx"]}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Wool-blend tailored blazer",
    "brand": "Maison Aurel",
    "category": "Blazers",
    "color": "Camel",
    "gender": "women",
    "season": "FW26",
    "price": 690,
    "fullPrice": 980,
    "discountPercent": 30,
    "currency": "USD",
    "productId": "769094221",
    "productUrl": "https://www.farfetch.com/wool-blend-tailored-blazer-1000",
    "images": [
      "https://img.farfetch.com/wool-blend-tailored-blazer.jpg"
    ],
    "details": {}
  },
  {
    "productName": "Leather low-top sneakers",
    "brand": "Corvo",
    "category": "Sneakers",
    "color": "White",
    "gender": "men",
    "season": "SS26",
    "price": 420,
    "fullPrice": 420,
    "discountPercent": 0,
    "currency": "USD",
    "productId": "2828953235",
    "productUrl": "https://www.farfetch.com/leather-low-top-sneakers-1001",
    "images": [
      "https://img.farfetch.com/leather-low-top-sneakers.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=farfetch&op=products (sign in first).

### search

Keyword search across Farfetch. Every hit a full product card.

| Field | Required | Type | Meaning |
|---|---|---|---|
| query | yes | string (≤300 chars) |  |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| productName | string |
| brand | string |
| productUrl | string |
| description | string |
| color | string |
| category | string |
| categoryPath | string |
| gender | string |
| season | string |
| price | number |
| fullPrice | number |
| discountPercent | number |
| currency | string |
| seller | string |
| sizes | list of string |
| variants | any |
| measurements | any |
| returns | any |
| stockQuantity | integer |
| availability | list of string |
| label | string |
| condition | string |
| images | list of string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/farfetch \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"search","query":"Gucci loafers","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Shearling-lined trench coat",
    "brand": "Maison Aurel",
    "category": "Coats",
    "color": "Black",
    "gender": "women",
    "season": "FW26",
    "price": 1890,
    "fullPrice": 1890,
    "discountPercent": 0,
    "currency": "USD",
    "productId": "69479774",
    "productUrl": "https://www.farfetch.com/shearling-lined-trench-coat-1000",
    "images": [
      "https://img.farfetch.com/shearling-lined-trench-coat.jpg"
    ],
    "details": {}
  },
  {
    "productName": "Double-breasted wool coat",
    "brand": "Corvo",
    "category": "Coats",
    "color": "Charcoal",
    "gender": "men",
    "season": "FW26",
    "price": 1150,
    "fullPrice": 1450,
    "discountPercent": 21,
    "currency": "USD",
    "productId": "3720102784",
    "productUrl": "https://www.farfetch.com/double-breasted-wool-coat-1001",
    "images": [
      "https://img.farfetch.com/double-breasted-wool-coat.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=farfetch&op=search (sign in first).

### listing

Any designer, category or sale listing page URL. Its products in page order, each a full card.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subject | yes | string (≤400 chars) | The listing page URL. |
| limit | no | integer (1-100) |  |

Response fields (each row of data; every field present, null when the source had nothing):

| Field | Type |
|---|---|
| productId | string |
| productName | string |
| brand | string |
| productUrl | string |
| description | string |
| color | string |
| category | string |
| categoryPath | string |
| gender | string |
| season | string |
| price | number |
| fullPrice | number |
| discountPercent | number |
| currency | string |
| seller | string |
| sizes | list of string |
| variants | any |
| measurements | any |
| returns | any |
| stockQuantity | integer |
| availability | list of string |
| label | string |
| condition | string |
| images | list of string |
| details | object |

`details` is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is `{}` when there is nothing more.

Example request:

```bash
curl -X POST https://apiforagents.dev/v1/farfetch \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listing","subject":"https://www.farfetch.com/shopping/women/gucci/items.aspx","limit":20}'
```

Example response rows (made-up names, real field names; a live row carries every field above):

```json
[
  {
    "productName": "Cashmere crew-neck jumper",
    "brand": "Velia",
    "category": "Knitwear",
    "color": "Oatmeal",
    "gender": "women",
    "season": "FW26",
    "price": 540,
    "fullPrice": 540,
    "discountPercent": 0,
    "currency": "USD",
    "productId": "2784670277",
    "productUrl": "https://www.farfetch.com/cashmere-crew-neck-jumper-1000",
    "images": [
      "https://img.farfetch.com/cashmere-crew-neck-jumper.jpg"
    ],
    "details": {}
  },
  {
    "productName": "Ribbed cardigan",
    "brand": "Velia",
    "category": "Knitwear",
    "color": "Black",
    "gender": "women",
    "season": "FW26",
    "price": 460,
    "fullPrice": 620,
    "discountPercent": 26,
    "currency": "USD",
    "productId": "531485373",
    "productUrl": "https://www.farfetch.com/ribbed-cardigan-1001",
    "images": [
      "https://img.farfetch.com/ribbed-cardigan.jpg"
    ],
    "details": {}
  }
]
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=farfetch&op=listing (sign in first).

### history (free)

Stored price/stock series of products already held. Free.

| Field | Required | Type | Meaning |
|---|---|---|---|
| subjects | yes | list of string (1-10 items) |  |
| metric | no | enum |  Values: price, full_price, discount_percent, stock_quantity. |
| days | no | integer (1-730) |  |

Request shape:

```json
{
  "op": "history",
  "subjects": [
    "example"
  ]
}
```

Try it in the playground: https://apiforagents.dev/dashboard/run?platform=farfetch&op=history (sign in first).

## Notes for the agent

Measured Farfetch data, one operation per call. Products are named by product URL or the numeric item id in it. Prices are per storefront locale. Read `currency`, never assume USD. Every fetch adds a price and stock point to the product's history. ops: products (full cards for up to ten products. Price, full price, discount, per-size availability with SKU and price, seller boutique, category path, season, returns, images), search (keyword search, full cards), listing (any designer/category/sale page URL, its products in page order), history (stored price/stock series for products already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.
