# Fendi Product Scraper (`axlymxp/fendi-product-scraper`) Actor

Scrape official Fendi.com products by keyword, category, product ID, or full catalog. Returns MSRP price, currency, stock, description, material, color, images, and category as structured JSON. Multi-locale (US/EU/UK/JP).

- **URL**: https://apify.com/axlymxp/fendi-product-scraper.md
- **Developed by:** [axly](https://apify.com/axlymxp) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 dataset items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

## Fendi Product Scraper

Extract the **official Fendi.com catalog** as clean, structured JSON — the first
Apify actor that scrapes the **first-party maison storefront** directly, not a
reseller or marketplace. Get authoritative retail prices (MSRP), official product
names and descriptions, materials, colors, stock status, hi-res official images,
and category data — by keyword search, category, product ID, or the entire product
catalog, across the **US, UK, France, Italy, and Japan** storefronts (with the
correct local currency).

Unlike multi-brand marketplace or pre-owned resale scrapers, this pulls **official,
current, first-party data** straight from Fendi — ideal when you need the real
retail price and the brand's own product copy and imagery.

***

### Who uses this

| Buyer | Job to be done |
| ----- | -------------- |
| **Resellers / daigou / grey-market** | Price inventory against official MSRP and compare pricing across US/UK/EU/JP regions. |
| **Price-comparison & aggregator apps** | Feed a clean, stable JSON catalog of official Fendi products into your platform. |
| **Brand & market analysts** | Track assortment, price positioning, new arrivals, materials, and seasonal mix. |
| **Fashion researchers & data teams** | Build datasets of luxury pricing, categories, and product attributes. |

***

### Output fields

Each dataset row is one product:

| Field | Type | Description |
| ----- | ---- | ----------- |
| `product_id` | string | Product SKU / Algolia objectID (e.g. `8BN372B1E6F0TX1`). |
| `name` | string | Official product name. |
| `price` | number | Official retail price (MSRP) in the locale's currency. |
| `currency` | string | ISO currency code (USD, GBP, EUR, JPY). |
| `in_stock` | boolean | Whether the product is in stock. |
| `short_description` | string | Short marketing description. |
| `description` | string | Full long description (may contain HTML). |
| `material` | string | Primary material (e.g. `100% calfskin`). |
| `color` | string | Color. |
| `gender` | string | Target gender (Woman / Man / …). |
| `family` | string | Product family / line (Peekaboo, Baguette, …). |
| `category` | string | Primary category ID (e.g. `us_woman_bags`). |
| `category_name` | string | Primary category display name (e.g. `Bags`). |
| `categories` | array | All category IDs the product belongs to. |
| `season` | string | Product season code. |
| `launch_date` | string | Product launch date (`YYYY-MM-DD`). |
| `views_month` | integer | Monthly view / popularity metric. |
| `images` | array | Official product image URLs. |
| `url` | string | Canonical product page URL. |
| `locale` | string | Storefront locale scraped. |
| `input_type` | string | `search` | `category` | `product` | `sitemap`. |
| `source` | string | The input value that produced the row. |
| `scraped_at` | string | ISO-8601 scrape timestamp. |

Empty fields are omitted from a row.

***

### Use cases

- **Regional price benchmarking** — run the same products across `us-en`, `gb-en`,
  `fr-fr`, `it-it`, and `jp-ja` to compare MSRP and spot regional price gaps.
- **Reseller pricing intelligence** — pull the official price and stock for a set
  of SKUs to price your own listings against retail.
- **New-arrival monitoring** — full-catalog mode with `Only products updated since`
  gives you a daily diff of newly added or updated products.
- **Assortment analysis** — scrape a category (e.g. `us_woman_bags_peekaboo`) to map
  the line-up, materials, colors, and price ladder.
- **Catalog feed** — keep an always-fresh JSON mirror of the Fendi catalog for a
  price-comparison or search product.

***

### Input parameters

| Field | Type | Default | Description |
| ----- | ---- | ------- | ----------- |
| `searchQueries` | array | `[]` | Keyword searches (Algolia). Each hit is a full product record. |
| `categoryIds` | array | `[]` | Fendi category IDs, e.g. `us_woman_bags_peekaboo`. |
| `productIds` | array | `[]` | Product SKUs or full product URLs. |
| `scrapeFullCatalog` | boolean | `false` | Iterate the entire product sitemap for the locale. |
| `locale` | string | `us-en` | `us-en`, `gb-en`, `fr-fr`, `it-it`, or `jp-ja`. |
| `sort` | string | `relevance` | `relevance`, `price_asc`, `price_desc`, `new_arrivals`, `most_popular`. |
| `filters` | string | — | Advanced raw Algolia filter (search only). |
| `scrapeDetail` | boolean | `false` | Enrich sparse category/catalog rows with the full record. |
| `includeOutOfStock` | boolean | `true` | Skip out-of-stock products when off. |
| `sinceDate` | string | — | Full-catalog only: keep products updated on/after `YYYY-MM-DD`. |
| `maxItems` | integer | `500` | Global cap across all inputs. |
| `maxItemsPerInput` | integer | `0` | Per query/category cap (0 = unlimited). |
| `proxyConfiguration` | object | Apify Proxy | Optional — direct requests work; proxy helps at high volume. |

Provide at least one of `searchQueries`, `categoryIds`, `productIds`, or
`scrapeFullCatalog`.

#### Example input

```json
{
    "searchQueries": ["peekaboo", "baguette"],
    "locale": "us-en",
    "sort": "relevance",
    "maxItems": 100
}
```

Category example with enrichment:

```json
{
    "categoryIds": ["us_woman_bags_peekaboo"],
    "scrapeDetail": true,
    "locale": "us-en",
    "maxItems": 50
}
```

#### Example output

```json
{
    "product_id": "8BR850B14XF1XFH",
    "name": "Baguette® 26424",
    "price": 11000,
    "currency": "USD",
    "in_stock": true,
    "short_description": "Raffia and bead Re Edition bag",
    "material": "Sequins and crystals",
    "color": "Multicolor",
    "gender": "Woman",
    "family": "Baguette",
    "category": "us_woman_bags",
    "category_name": "Bags",
    "images": ["https://s7e5a.scene7.com/is/image/fendi/8BR850B14XF1XFH_01"],
    "url": "https://www.fendi.com/us-en/8BR850B14XF1XFH.html",
    "locale": "us-en",
    "input_type": "search",
    "source": "baguette",
    "scraped_at": "2026-09-06T00:00:00Z"
}
```

***

### Scheduling & integrations

- **Schedule** daily/weekly runs from the Apify Console to keep a fresh catalog or
  monitor new arrivals (pair with `sinceDate`).
- **Webhooks** — trigger your own endpoint on run completion.
- **Export** to JSON, CSV, Excel, or push straight to Google Sheets, Make, Zapier,
  Airbyte, or S3 via Apify integrations.
- **API** — start runs and pull the dataset through the Apify API/SDK.

***

### Use with AI assistants (MCP)

This actor works well as a tool for AI agents. Point your MCP-compatible client
(Claude, or any Apify MCP integration) at the actor and it can fetch live Fendi
product data — prices, stock, and attributes — on demand as structured JSON.

***

### FAQ

**Is there a limit on results?** No hard limit — use `maxItems` to bound a run.
Full-catalog mode covers the entire product sitemap for the locale (thousands of
products).

**How fresh is the data?** It is scraped live on each run directly from Fendi's
public catalog, so it reflects the site at run time.

**Do I need a proxy?** No. Fendi's catalog endpoints respond to direct requests.
A proxy is offered as an option for high-volume runs or IP rotation.

**Which regions are supported?** United States (USD), United Kingdom (GBP), France
(EUR), Italy (EUR), and Japan (JPY). Prices are returned in the region's currency.

**Does it return contact info or personal data?** No — only public product catalog
data (prices, descriptions, images, categories). No personal data is collected.

**Is this affiliated with Fendi?** No. This is an independent tool that reads
publicly available catalog data; it is not affiliated with or endorsed by Fendi.

**Why are some category rows missing description/stock?** Category listings return
sparse tiles. Enable `scrapeDetail` to enrich each with its full record.

# Actor input Schema

## `searchQueries` (type: `array`):

Keyword searches run against Fendi's Algolia catalog. Each result is a full product record (price, stock, description, material, color, images). Leave empty to use categories, product IDs, or the full catalog instead.

## `categoryIds` (type: `array`):

Fendi (Salesforce Commerce Cloud) category IDs, e.g. us\_woman\_bags\_peekaboo or us\_man\_shoes. IDs are locale-prefixed (us\_… for us-en, eu1\_… for shared EU sites). Discover them from search results (the 'categories' field) or the site's Listing sitemap.

## `productIds` (type: `array`):

Product SKUs (e.g. 8BN372B1E6F0TX1) or full product URLs (https://www.fendi.com/us-en/8BN372B1E6F0TX1.html) for direct full detail. SKUs come from a previous run's product\_id field or from the product URL.

## `scrapeFullCatalog` (type: `boolean`):

Iterate the entire product sitemap for the chosen locale and fetch every product's full record. Large (thousands of products) — combine with 'Max items' and 'Only products updated since' to bound it.

## `locale` (type: `string`):

Storefront to scrape. Prices are returned in that region's currency. Verified: US (USD), UK (GBP), France (EUR), Italy (EUR), Japan (JPY).

## `sort` (type: `string`):

Ordering for keyword searches. Note: Fendi's price sort replicas are approximate, not strictly numeric.

## `filters` (type: `string`):

Raw Algolia filter expression applied to searches, e.g. productColorFilter:"Black" AND productCategoryDescription:"Bags". Leave empty for no extra filtering.

## `scrapeDetail` (type: `boolean`):

Category listings return sparse tiles. When on, each tile is enriched with its full Algolia record (description, material, color, stock, all images). Adds one request per product. Search rows are already full and are never re-fetched.

## `includeOutOfStock` (type: `boolean`):

When off, products explicitly marked out of stock are skipped.

## `sinceDate` (type: `string`):

Full-catalog mode only: keep products whose sitemap last-modified date is on or after this date (YYYY-MM-DD). Great for incremental / daily runs.

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

Global cap across all inputs. The run stops once this many products are pushed.

## `maxItemsPerInput` (type: `integer`):

Cap per individual search query or category (0 = unlimited within Max items).

## `proxyConfiguration` (type: `object`):

Optional. Fendi's Algolia catalog and sitemaps respond to direct requests, so a proxy is not required. Enable it (Apify Proxy) if you run at high volume or want to rotate IPs.

## Actor input object example

```json
{
  "searchQueries": [
    "baguette",
    "peekaboo",
    "sunglasses"
  ],
  "categoryIds": [
    "us_woman_bags_peekaboo",
    "us_woman_bags_baguette"
  ],
  "productIds": [
    "8BN372B1E6F0TX1",
    "https://www.fendi.com/us-en/8BR850B14XF1XFH.html"
  ],
  "scrapeFullCatalog": false,
  "locale": "us-en",
  "sort": "relevance",
  "scrapeDetail": false,
  "includeOutOfStock": true,
  "sinceDate": "2026-09-01",
  "maxItems": 500,
  "maxItemsPerInput": 0,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `products` (type: `string`):

All scraped Fendi product rows (one product per item) in the default dataset.

# 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 = {
    "searchQueries": [
        "peekaboo"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("axlymxp/fendi-product-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 = {
    "searchQueries": ["peekaboo"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("axlymxp/fendi-product-scraper").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 '{
  "searchQueries": [
    "peekaboo"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call axlymxp/fendi-product-scraper --silent --output-dataset

```

## MCP server setup

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

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/DhI9a56s8ea4juLCM/builds/RWleNMsUAVmuUtbIx/openapi.json
