[ docs ]Commerce
Farfetch
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 cost credits; anything already held is free.
POST https://api.zomler.com/api/v1/platforms/farfetchproducts
from 1 credit · fresh for 1 dayFull product detail for up to ten Farfetch product URLs or item ids — price, full price, discount, per-size availability, seller boutique.
Request fields
| Field | Type | Default | Values / limits |
|---|---|---|---|
subjectsrequired | list of string | — | 1-10 items |
Example
curl -X POST https://api.zomler.com/api/v1/platforms/farfetch \
-H "X-API-Key: zk_live_…" \
-H "Content-Type: application/json" \
-d '{
"request": {
"op": "products",
"subjects": [
"example"
]
},
"estimateOnly": false
}'const res = await fetch("https://api.zomler.com/api/v1/platforms/farfetch", {
method: "POST",
headers: {
"X-API-Key": process.env.ZOMLER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"request": {
"op": "products",
"subjects": [
"example"
]
},
"estimateOnly": false
}),
});
const envelope = await res.json();
console.log(envelope.data, envelope.cost.creditsCharged);import os, httpx
res = httpx.post(
"https://api.zomler.com/api/v1/platforms/farfetch",
headers={"X-API-Key": os.environ["ZOMLER_API_KEY"]},
json={
"request": {
"op": "products",
"subjects": [
"example"
]
},
"estimateOnly": False
},
timeout=120,
)
envelope = res.json()
print(envelope["data"], envelope["cost"]["creditsCharged"])search
from 20 credits for 20Keyword search across Farfetch — every hit a full product card.
Request fields
| Field | Type | Default | Values / limits |
|---|---|---|---|
queryrequired | string | — | ≤300 chars |
limit | integer | 20 | 1-100 |
Example
curl -X POST https://api.zomler.com/api/v1/platforms/farfetch \
-H "X-API-Key: zk_live_…" \
-H "Content-Type: application/json" \
-d '{
"request": {
"op": "search",
"query": "example"
},
"estimateOnly": false
}'const res = await fetch("https://api.zomler.com/api/v1/platforms/farfetch", {
method: "POST",
headers: {
"X-API-Key": process.env.ZOMLER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"request": {
"op": "search",
"query": "example"
},
"estimateOnly": false
}),
});
const envelope = await res.json();
console.log(envelope.data, envelope.cost.creditsCharged);import os, httpx
res = httpx.post(
"https://api.zomler.com/api/v1/platforms/farfetch",
headers={"X-API-Key": os.environ["ZOMLER_API_KEY"]},
json={
"request": {
"op": "search",
"query": "example"
},
"estimateOnly": False
},
timeout=120,
)
envelope = res.json()
print(envelope["data"], envelope["cost"]["creditsCharged"])listing
from 20 credits for 20Any designer, category or sale listing page URL — its products in page order, each a full card.
Request fields
| Field | Type | Default | Values / limits |
|---|---|---|---|
subjectrequired | string | — | ≤400 chars |
limit | integer | 20 | 1-100 |
Example
curl -X POST https://api.zomler.com/api/v1/platforms/farfetch \
-H "X-API-Key: zk_live_…" \
-H "Content-Type: application/json" \
-d '{
"request": {
"op": "listing",
"subject": "example"
},
"estimateOnly": false
}'const res = await fetch("https://api.zomler.com/api/v1/platforms/farfetch", {
method: "POST",
headers: {
"X-API-Key": process.env.ZOMLER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"request": {
"op": "listing",
"subject": "example"
},
"estimateOnly": false
}),
});
const envelope = await res.json();
console.log(envelope.data, envelope.cost.creditsCharged);import os, httpx
res = httpx.post(
"https://api.zomler.com/api/v1/platforms/farfetch",
headers={"X-API-Key": os.environ["ZOMLER_API_KEY"]},
json={
"request": {
"op": "listing",
"subject": "example"
},
"estimateOnly": False
},
timeout=120,
)
envelope = res.json()
print(envelope["data"], envelope["cost"]["creditsCharged"])history
free · reads what is heldStored price/stock series of products already held — free.
Request fields
| Field | Type | Default | Values / limits |
|---|---|---|---|
subjectsrequired | list of string | — | 1-10 items |
metric | enum | price | pricefull_pricediscount_percentstock_quantity |
days | integer | 90 | 1-730 |
Example
curl -X POST https://api.zomler.com/api/v1/platforms/farfetch \
-H "X-API-Key: zk_live_…" \
-H "Content-Type: application/json" \
-d '{
"request": {
"op": "history",
"subjects": [
"example"
]
},
"estimateOnly": false
}'const res = await fetch("https://api.zomler.com/api/v1/platforms/farfetch", {
method: "POST",
headers: {
"X-API-Key": process.env.ZOMLER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"request": {
"op": "history",
"subjects": [
"example"
]
},
"estimateOnly": false
}),
});
const envelope = await res.json();
console.log(envelope.data, envelope.cost.creditsCharged);import os, httpx
res = httpx.post(
"https://api.zomler.com/api/v1/platforms/farfetch",
headers={"X-API-Key": os.environ["ZOMLER_API_KEY"]},
json={
"request": {
"op": "history",
"subjects": [
"example"
]
},
"estimateOnly": False
},
timeout=120,
)
envelope = res.json()
print(envelope["data"], envelope["cost"]["creditsCharged"])