# Yesstyle Product Search Scraper (`stealth_mode/yesstyle-product-search-scraper`) Actor

Scrape YesStyle product listings across all categories with pricing, discounts, badges, and 15+ data fields. Perfect for price monitoring, competitive analysis, and building Asian beauty & fashion datasets from one of Asia's largest e-commerce platforms.

- **URL**: https://apify.com/stealth\_mode/yesstyle-product-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.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/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

## YesStyle Product Search Scraper: Extract Fashion & Beauty Catalog Data

***

### What Is YesStyle?

YesStyle is a leading Asian e-commerce platform specializing in beauty, cosmetics, skincare, and fashion products. With an extensive catalog spanning Korean beauty, Japanese skincare, and trendy fashion items, it serves millions of customers across multiple regions. The platform regularly updates inventory, pricing, and promotional badges (Bestseller, YS Awards, etc.). Manually tracking product data across categories and regions is impractical — the **YesStyle Product Search Scraper** automates this, delivering comprehensive product intelligence at scale.

***

### Overview

The **YesStyle Product Search Scraper** extracts product listings from YesStyle search pages, converting category browsing results into structured, actionable data. It is ideal for:

- **E-commerce researchers** benchmarking Asian beauty and fashion trends
- **Price monitoring services** tracking YesStyle product discounts over time
- **Competitive analysts** studying product positioning and award badges
- **Dropshippers & resellers** identifying bestsellers and trending items
- **Data scientists** building datasets for market analysis and demand forecasting

Key features include flexible URL filtering, graceful error handling, and capture of 15+ product attributes including pricing, regional variants, and award badges.

***

### Input Format

The Actor supports **two scraping modes** — use only **one at a time**:

1. **Scrape by URLs** — scrape products directly from a list of YesStyle product search/list page URLs.

```json
{
  "urls": [
    "https://www.yesstyle.com/nl/beauty-make-up/list.html/bcc.15479_bpt.46?pn=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
```

2. **Scrape by search filters** — scrape products using a keyword and additional filters (sort order, featured collection, color, price range, etc.) instead of providing URLs.

```json
{
  "keyword": "a",
  "sort_by": "158",
  "featured": "",
  "color": "",
  "price_range": "10~10000",
  "page": 1,
  "max_items_per_url": 200
}

```

There is also a **General settings** group that applies to both modes.

#### 1. Scrape by URLs

Use this mode when you already have specific product search/list page URLs. When this mode is used, all options in the "Scrape by search filters" section will be disabled.

| Field | Type | Default | Description |
|---|---|---|---|
| `urls` | `array` | *(required)* | Product search list page URLs from YesStyle. Paste direct links to filtered category or search results pages — one by one, or use the Bulk edit section to add a prepared list. The scraper extracts product cards from each page. |
| `ignore_url_failures` | `boolean` | `true` | If `true`, the scraper continues running when a URL fails (network errors, page not found, etc.) instead of stopping the entire run. If `false`, any failure stops the whole run. |

#### 2. Scrape by search filters

Use this mode when you want to search using a keyword and additional filter attributes instead of scraping by URLs. If you use this mode, leave the `urls` field above empty.

| Field | Type | Default | Description |
|---|---|---|---|
| `keyword` | `string` | — | The keyword to search for. |
| `sort_by` | `string` (see values below) | — | Sort order for results. |
| `featured` | `string` (see values below) | — | Filter by a featured collection or category (trending, new arrivals, sales, regional beauty, etc.). |
| `color` | `string` (see values below) | — | Filter products by color. |
| `price_range` | `string` | — | Price range filter, in the format `min~max` (e.g. `100~200`). |
| `page` | `integer` | — | The page number to start scraping from. |

**`sort_by` values:**

| Value | Meaning |
|---|---|
| *(empty)* | Default |
| `158` | Bestsellers |
| `141` | New Arrivals |
| `142` | Price: Low to High |
| `165` | Price: High to Low |
| `143` | Best Value / Availability\* |

> \* Note: the current option list has 6 titles mapped to 5 non-empty values (`158, 141, 142, 165, 143`) — "Best Value" and "Availability" appear to share or be missing a code. Double-check this mapping against the live Actor input schema before relying on it.

**`featured` values:** `Any` (empty), Trending New, Weekly Hero, New Picks, My Melody X Kuromi, KPop Demon Hunters, Korean Pharmacy, New Items 24-hr Sale, New In This Week, Just Arrived, Hot Trends, Top Picks, Flash Sales, Mini-Size Exclusives, Value & Gift Sets, Twin Packs & Bundle Sets, South Korean Brands, Japanese Brands, Chinese Cosmetics, Southeast Asian Beauty, Western Beauty, C-Beauty Picks, C-Beauty Sale, In-stock Items, Clearance, Rock-Bottom Prices, Cruelty-free, Vegan, Mini & Travel Sizes, Warehouse Sale, The YesStyle Awards 2025.

**`color` values:** `Any` (empty), Red, Blue, Green, Yellow, Orange, Violet, Pink, Brown, Gray, White, Beige, Black.

#### 3. General settings

Applies to both scraping modes above.

| Field | Type | Default | Description |
|---|---|---|---|
| `max_items_per_url` | `integer` | `20` | Maximum number of products to extract per URL/search. Useful for controlling data volume (e.g., `20` for a small test, `200`+ for full category dumps). |

**Tips for best results:**

- Use filtered search URLs (e.g., by price range, brand, rating) to target specific product subsets.
- Increase `max_items_per_url` to `200`+ when scraping large category pages.
- Include pagination parameters (e.g., `?pn=2`) in your URLs, or use the `page` field in the search-filters mode, to scrape multiple pages of results.

***

### Output Format

#### Example Output Record

```json
{
  "product": {
    "url": "/nl/petersons-lab-caffeine-anti-wrinkle-lip-cream-3-types-light-10g/info.html/pid.1132328262",
    "new": false,
    "child_product_ids": [
      1132328261,
      1132328263,
      1136379083
    ],
    "has_videos": false,
    "new_arrival_sale": false,
    "new_picks": false,
    "item_status": "FLASH SALE",
    "black_friday2025": false,
    "mega_sale2025": false,
    "promotion_deal": false,
    "mega_sale": false,
    "year_end_sale": false,
    "black_friday": false,
    "eco_friendly": false,
    "final_clearance": false,
    "bogo": false,
    "ys_pre_order": false,
    "exclusive_sale": false,
    "early_bird": false,
    "trending_new": false,
    "fixed_price": false,
    "limited_deal": true,
    "daily_flash_deal": false,
    "must_try": false,
    "most_popular": false,
    "influencer_picks_for_customers": false,
    "high_discount": true,
    "show_color_icons": false,
    "cyber_monday": false,
    "black_friday2023": false,
    "black_friday2024": false,
    "name": "Caffeine Anti-Wrinkle Lip Cream - 3 Types",
    "product_id": 1132328262,
    "sell_price": "US$ 6.66",
    "brand_name": "PETERSON'S LAB",
    "discount": "34%",
    "discount_value": 0.349609375,
    "list_price": "US$ 10.24",
    "review_rating_count": 90,
    "review_average_score_percentage": 4.63,
    "images": {
      "m": "https://d1flfk77wl2xk4.cloudfront.net/Assets/44/264/M_p0214626444.jpg"
    },
    "is_show_color_icons": false
  },
  "variant": "Light - 10g",
  "bestseller_badge_rank": null,
  "not_show_discount": false,
  "is_ys_awards_2025": null,
  "ys_badge_icon_2025": null,
  "brand_region_country_code": null,
  "product_family_children_product_ids": [
    1132328261,
    1132328263,
    1136379083
  ],
  "sell_price_in_usd": null,
  "tracking_sale_price": "6.66",
  "brand_id": 330898,
  "discount": "3.58",
  "show_color_icons": false,
  "yesties_awards": false,
  "product_pack_label": null,
  "from_url": "https://www.yesstyle.com/nl/list.html?q=lips&bpt=48"
}
```

Each product record contains 15 key fields capturing pricing, metadata, badges, and regional information:

#### Product Identification

| Field | Meaning | Example |
|---|---|---|
| `Product` | Primary product name and core identifier | "COSRX Advanced Snail 96 Mucin Power Essence" |
| `Variant` | Product variant (color, size, volume, etc.) | "100ml" or "Natural Beige" |
| `Brand ID` | Internal YesStyle brand identifier | `12847` |
| `Brand Region Country Code` | Country code of the brand/region | `KR` (Korea), `JP` (Japan) |
| `Product Family Children Product IDs` | Related or bundled product IDs | `[54321, 54322, 54323]` |

#### Pricing & Discounts

| Field | Meaning | Example |
|---|---|---|
| `Sell Price In USD` | Current selling price in USD | `18.99` |
| `Discount` | Applied discount percentage or amount | `20%` or `$5 off` |
| `Tracking Sale Price` | Historical or tracked sale price (for trend analysis) | `16.99` |
| `Not Show Discount` | Boolean flag: if `true`, discount is hidden on product page | `false` |

#### Badges & Recognition

| Field | Meaning | Example |
|---|---|---|
| `Bestseller Badge Rank` | Bestseller status and ranking tier | `1` (rank 1), `null` (not a bestseller) |
| `Is YS Awards 2025` | Boolean: product won YS Awards 2025 | `true` or `false` |
| `YS Badge Icon 2025` | Badge name/type for 2025 awards | `"Editor's Pick"` or `"Top Rated"` |
| `Yesties Awards` | Customer-voted Yesties award status | `"Fan Favorite"` or `null` |

#### Product Metadata

| Field | Meaning | Example |
|---|---|---|
| `Show Color Icons` | Boolean: display color swatches on product page | `true` or `false` |
| `Product Pack Label` | Label for bundle or multi-pack offers | `"3-Piece Set"` or `"Duo Pack"` |

***

### How to Use

1. **Navigate to YesStyle** — Go to YesStyle.com and apply filters (category, brand, price range, rating, etc.)
2. **Copy search URLs** — From the filtered results page, copy the URL from your browser's address bar. Include pagination parameters if needed
3. **Paste into input** — Add URLs to the `urls` array in the configuration
4. **Set limits** — Adjust `max_items_per_url` (typically 50–200 per page) and `ignore_url_failures` (recommended: `true`)
5. **Run the scraper** — Execute the actor; it will begin extracting products from each URL
6. **Download results** — Export as JSON, CSV, or Excel for analysis, price tracking, or integration into your system

**Common troubleshooting:**

- **No products found:** Ensure the URL points to a product listing page, not a single product detail page
- **Partial results:** Some products may be blocked by anti-bot protections; set `ignore_url_failures: true` to skip them gracefully
- **Missing fields:** Some products may not have badges or pack labels; fields will be `null` if unavailable

***

### Real-World Use Cases

- **Price monitoring:** Detect YesStyle discounts and track competitor pricing on Korean beauty products
- **Trend analysis:** Identify bestsellers and award-winning products to spot emerging brands
- **Product research:** Build a searchable database of 10,000+ products with regional variants
- **Dropshipping:** Find trending items with high Yesties ratings and low competition
- **Market intelligence:** Compare product availability and pricing across YesStyle regions (NL, EN, etc.)

The scraper saves hours of manual browsing and enables data-driven decision-making for anyone working with Asian beauty and fashion e-commerce.

***

### Conclusion

The **YesStyle Product Search Scraper** is an essential tool for anyone serious about Asian beauty and fashion e-commerce. With just a few URLs and a simple configuration, you unlock detailed product data including pricing, awards, badges, and regional variants — all in machine-readable format. Use it for competitive analysis, price monitoring, inventory building, or market research.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the product search list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `keyword` (type: `string`):

Enter the keyword to search for items

## `sort_by` (type: `string`):

Sort items by options

## `featured` (type: `string`):

Enter the featured to search for items

## `color` (type: `string`):

Enter the color to search for items

## `price_range` (type: `string`):

Enter the price range to search for items

## `page` (type: `integer`):

Specify the page number to start scraping from

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.yesstyle.com/nl/beauty-make-up/list.html/bcc.15479_bpt.46?pn=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# Actor output Schema

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

No description

# 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 = {
    "urls": [
        "https://www.yesstyle.com/nl/beauty-make-up/list.html/bcc.15479_bpt.46?pn=2"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/yesstyle-product-search-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 = {
    "urls": ["https://www.yesstyle.com/nl/beauty-make-up/list.html/bcc.15479_bpt.46?pn=2"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/yesstyle-product-search-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 '{
  "urls": [
    "https://www.yesstyle.com/nl/beauty-make-up/list.html/bcc.15479_bpt.46?pn=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/yesstyle-product-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,stealth_mode/yesstyle-product-search-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/An2ct0F5li9oecNBE/builds/SscmGpIrndMpnHjfN/openapi.json
