# Femaledaily Product Search Scraper (`stealth_mode/femaledaily-product-search-scraper`) Actor

Scrape product listings, ratings, reviews, and marketplace data from Female Daily's beauty database. Collect 200+ products per search with 20 detailed fields — perfect for beauty brands, researchers, and e-commerce aggregators.

- **URL**: https://apify.com/stealth\_mode/femaledaily-product-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Female Daily Product Search Scraper: Extract Beauty Product Data & Reviews

---

### What Is Female Daily?

Female Daily (femaledaily.com) is Southeast Asia's largest beauty and cosmetics review platform, hosting thousands of products with user ratings, detailed reviews, and marketplace links. It's a trusted source for beauty product discovery and validation. Manually collecting product data and review metrics is tedious — the **Female Daily Product Search Scraper** automates extraction of structured product information from search and category pages.

---

### Overview

The **Female Daily Product Search Scraper** extracts comprehensive product listings from Female Daily's review database, transforming search results into clean, structured records. It is designed for:

- **Beauty brands** monitoring product reviews and competitive pricing
- **E-commerce platforms** aggregating beauty product catalogs
- **Market researchers** analyzing cosmetics trends and consumer sentiment
- **Data analysts** building beauty product datasets for machine learning
- **Marketplace operators** syncing product info across multiple channels

Key strengths include high-volume extraction (up to 200 items per URL), flexible filtering by brand and popularity, and automatic marketplace integration tracking.

---

### Input Format

The scraper accepts a JSON configuration object:

```json
{
  "urls": [
    "https://reviews.femaledaily.com/products/cleanser/toner?brand=&order=popular&page=1"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

| Parameter | Type | Description |
|---|---|---|
| `urls` | Array | Female Daily product search/category page URLs. Include query parameters for filtering (brand, category, order). Supports multiple pages. |
| `max_items_per_url` | Integer | Maximum products to extract per URL (default: 20, max: 200). Higher values = more data but longer runtime. |
| `ignore_url_failures` | Boolean | If `true`, skips failed URLs and continues; if `false`, stops on first error. Recommended: `true` for bulk runs. |

**URL examples:**

- Search by category: `https://reviews.femaledaily.com/products/cleanser/toner`
- Filtered by brand: `https://reviews.femaledaily.com/products/cleanser/toner?brand=Cetaphil`
- Sorted by popularity: `https://reviews.femaledaily.com/products/cleanser/toner?order=popular&page=1`
- Multiple pages: Add `&page=2`, `&page=3`, etc. to scrape paginated results

> **Tip:** Build a list of URLs covering different categories (skincare, makeup, haircare) and popularity rankings for comprehensive dataset coverage.

***

### Output Format

**Example output record:**

```json
{
  "id": 5408,
  "uuid": "586bba3e-8ce6-4ad5-b700-7bd617c1aacd",
  "name": "",
  "slug": "gokujyun-ultimate-moisturizing-lotion-2",
  "description": "Hada Labo Gokujyun Ultimate Moisturizing Lotion adalah lotion pelembab yang mengandung 3 jenis Hyaluronic Acid untuk membantu meningkatkan kelembaban pada kulit dan mempertahankan keseimbangan serta kelembaban kulit. Lotion ini dapat mengunci kelembaban di dalam kulit sehingga kulit terhidrasi dengan baik. Kulit akan terasa lebih halus, lembut dan tetap elastis. Mengandung alkohol sebagai astringent yang mengurangi produksi minyak berlebih dan membuat kulit senantiasa terasa lebih segar.How To Use:Tuangkan lotion secukupnya pada telapak tangan, usapkan ke seluruh wajah dalam keadaan bersih secara merata. Tepuk-tepuk kulit wajah dengan lembut, lalu biarkan hingga meresap.Suitable For:Kulit berminyakIngredients:-",
  "currency": "Rp",
  "price": 29000,
  "brand": {
    "id": null,
    "uuid": "63690606-761f-4808-b813-1f2da6d84e01",
    "name": "Hada Labo",
    "slug": "hada-labo",
    "type": "product",
    "logo": null
  },
  "categories": [
    {
      "id": null,
      "uuid": "",
      "name": "Toner",
      "slug": "toner",
      "has_shade": false,
      "status": true,
      "type": "product",
      "parent": {
        "id": null,
        "uuid": null,
        "name": "Cleanser",
        "slug": "cleanser",
        "has_shade": false,
        "status": true,
        "type": "product",
        "parent": {
          "id": null,
          "uuid": null,
          "name": "SkinCare",
          "slug": "skincare",
          "has_shade": false,
          "status": true,
          "type": "product"
        }
      }
    }
  ],
  "assets": [
    {
      "name": "",
      "alt": "Hada Labo Gokujyun Ultimate Moisturizing Lotion",
      "format": "image",
      "position": 1,
      "url": "https://image.femaledaily.com/dyn/210/images/prod-pics/product_1646882806_bd885c87_e_800x800.png"
    }
  ],
  "rating": {
    "rating_overall": 4.4,
    "rating_overall_detail": {
      "1": 104,
      "2": 218,
      "3": 385,
      "4": 1235,
      "5": 4143
    },
    "packaging_overall": 0
  },
  "product": {
    "name": "Gokujyun Ultimate Moisturizing Lotion"
  },
  "total_review": 6085,
  "available_marketplaces": false,
  "marketplaces": [],
  "already_review": false,
  "your_review_id": null,
  "recommended_percentage": 96,
  "created_at": "2015-09-21T19:40:37.000Z",
  "updated_at": "2023-11-23T18:39:22.482Z",
  "from_url": "https://reviews.femaledaily.com/products/cleanser/toner?brand=&order=popular&page=1"
}
```

Each scraped product returns 20 fields with comprehensive product and review metadata:

#### Product Identification

| Field | Meaning |
|---|---|
| `ID` | Unique numeric identifier in Female Daily's system |
| `UUID` | Universally unique identifier for the product record |
| `Name` | Full product name as displayed on Female Daily |
| `Slug` | URL-friendly version of the product name |
| `Description` | Product description, benefits, or marketing copy |

#### Pricing & Retail Information

| Field | Meaning |
|---|---|
| `Price` | Product price (may be average or base price) |
| `Currency` | Currency code (e.g., IDR, USD, SGD) — varies by region |
| `Available Marketplaces` | Total number of marketplaces selling the product |
| `Marketplaces` | List of marketplace names (e.g., Tokopedia, Shopee, Sephora) and direct links |

#### Product Classification

| Field | Meaning |
|---|---|
| `Brand` | Manufacturer or brand name (e.g., Cetaphil, L'Oreal, SK-II) |
| `Categories` | Product categories (e.g., \[Skincare, Cleanser, Toner]) — may include multiple nested categories |

#### Review & Rating Metrics

| Field | Meaning |
|---|---|
| `Rating` | Average user rating out of 5.0 stars |
| `Total Review` | Total number of reviews the product has received |
| `Recommended Percentage` | Percentage of reviewers who recommend the product (e.g., 92%) |
| `Already Review` | Whether the current user has reviewed this product (boolean) |
| `Your Review ID` | User's review ID if they have reviewed the product; null otherwise |

#### Media & Assets

| Field | Meaning |
|---|---|
| `Assets` | URLs to product images, thumbnails, and media files |

#### Administrative & Timestamp Data

| Field | Meaning |
|---|---|
| `Product` | Extended product metadata and category relationships |
| `Created At` | Timestamp when the product was added to Female Daily |
| `Updated At` | Timestamp of the last data update |

***

### How to Use

1. **Identify target URLs** — Navigate to Female Daily's product categories (Skincare, Makeup, Haircare, etc.). Copy category or search URLs with desired filters.
2. **Configure parameters:**
   - Paste URLs into the `urls` array
   - Set `max_items_per_url` based on your data needs (e.g., 200 for full category exports)
   - Enable `ignore_url_failures: true` for uninterrupted bulk scraping
3. **Run the scraper** — Start the actor and monitor real-time progress in logs.
4. **Download results** — Export as JSON, CSV, or Excel. Results include all 20 fields per product.
5. **Post-process if needed** — Filter by rating, parse marketplace URLs, or calculate review sentiment from text.

**Best practices:**

- Spread requests across multiple runs to avoid rate limiting
- Use category-specific URLs rather than homepage searches for consistent results
- Set `max_items_per_url: 50–100` for faster runs if you don't need complete category data
- Parse `Marketplaces` field to redirect users to purchase links

**Common issues:**

- If `Available Marketplaces` is 0 but `Marketplaces` is not empty, the product is listed but out of stock everywhere
- `Recommended Percentage` may be null if fewer than 5 reviews exist
- `Currency` varies by region — handle accordingly in your database

***

### Use Cases & Business Value

- **Brand intelligence:** Track competitor product ratings, review counts, and marketplace presence
- **Price monitoring:** Collect historical pricing across multiple channels (Tokopedia, Shopee, Sephora)
- **Product discovery:** Build a curated beauty product database for recommendation engines
- **Sentiment analysis:** Extract review text and rating distribution for NLP/ML projects
- **E-commerce syndication:** Sync Female Daily product data into your own marketplace or catalog
- **Market research:** Analyze trending products, brand sentiment, and consumer preferences in Southeast Asia

The scraper delivers rich, marketplace-integrated data that would take hours to compile manually, enabling data-driven decision-making in the beauty industry.

***

### Conclusion

The **Female Daily Product Search Scraper** is the fastest way to extract comprehensive beauty product data, reviews, and marketplace links from Southeast Asia's largest cosmetics review platform. With 20 structured output fields and flexible URL filtering, it powers competitive intelligence, product aggregation, and market research at scale.

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

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

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://reviews.femaledaily.com/products/cleanser/toner?brand=&order=popular&page=1"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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://reviews.femaledaily.com/products/cleanser/toner?brand=&order=popular&page=1"
    ],
    "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/femaledaily-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://reviews.femaledaily.com/products/cleanser/toner?brand=&order=popular&page=1"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/femaledaily-product-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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://reviews.femaledaily.com/products/cleanser/toner?brand=&order=popular&page=1"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/femaledaily-product-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/femaledaily-product-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Femaledaily Product Search Scraper",
        "description": "Scrape product listings, ratings, reviews, and marketplace data from Female Daily's beauty database. Collect 200+ products per search with 20 detailed fields — perfect for beauty brands, researchers, and e-commerce aggregators.",
        "version": "0.0",
        "x-build-id": "GPI1hfDgTiH0Gj9Wo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~femaledaily-product-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-femaledaily-product-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/stealth_mode~femaledaily-product-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-femaledaily-product-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/stealth_mode~femaledaily-product-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-femaledaily-product-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the product search list urls to scrape",
                        "type": "array",
                        "description": "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.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
