# PCHome Listings Scraper (`piotrv1001/pchome-listings-scraper`) Actor

The PChome Listings Scraper extracts listings from PChome 24h (Taiwan's largest online marketplace) by keyword, capturing names, prices, original prices, discounts, brands, images, coupons, and product links — ideal for price monitoring, market research, and competitive analysis.

- **URL**: https://apify.com/piotrv1001/pchome-listings-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 product listings

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/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

### 🛒 PChome Listings Scraper

Easily extract product listings from **PChome 24h** ([24h.pchome.com.tw](https://24h.pchome.com.tw/)), Taiwan's largest B2C online marketplace. The **PChome Listings Scraper** lets you gather structured product data by keyword — perfect for price monitoring, market research, and competitive analysis on the Taiwanese e-commerce market.

Run it on the [Apify platform](https://apify.com) to schedule recurring scrapes, access results through the API, integrate with your data stack, and export to JSON, CSV, Excel, or HTML.

### ✨ Features

- 🔎 **Keyword search extraction** – Provide one or more search keywords and collect every matching product across PChome's catalog.
- 🏷️ **Rich listing data** – Get product name, description, price, original price, sale flag, brand, image, category, coupon IDs, and a direct product link.
- 💰 **Optional product details** – Enable detail mode to enrich each product with its live sale price, lowest-ever price, list price, 24-hour fast-delivery flag, store, and shipping weight.
- 🎯 **Flexible sorting** – Order results by best selling, price (low→high or high→low), or top rated.
- ⚡ **Fast & reliable** – Lightweight and efficient, with no extra setup required.
- 💵 **Pay only for what you get** – Transparent pay-per-result pricing with no monthly subscription.

### 🛠️ How It Works

1. **Enter search keywords** – Add the keywords you want to search for (e.g. `iphone`, `nike`, `switch`).
2. **Set your options** – Choose how many products to collect, the sort order, and whether to fetch extra product details.
3. **Run the scraper** – Start the run and receive clean, structured product data ready to download or pipe into your workflow.

### 📥 Input

| Field                      | Description                                                                                                                 |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| **Search queries**         | Keywords to search for on PChome. The scraper collects all products returned for each keyword.                              |
| **Max items**              | Maximum number of products to scrape across all queries (use `0` for no limit).                                             |
| **Scrape product details** | When enabled, fetches extra details for each product (live sale price, lowest price, 24h delivery, weight). Off by default. |
| **Sort order**             | Best selling, price low→high, price high→low, or top rated.                                                                 |
| **Proxy configuration**    | Optional proxy settings.                                                                                                    |

Example input:

```json
{
    "searchQueries": ["iphone"],
    "maxItems": 50,
    "scrapeDetails": false,
    "sort": "sale/dc"
}
````

### 📊 Sample Output Data

The scraper provides structured JSON output with key product details. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

```json
[
    {
        "id": "DXAX69-A900J198Z",
        "name": "DUNK LOW RETRO 男鞋 休閒鞋",
        "description": "NIKE DUNK LOW RETRO 男鞋 休閒鞋",
        "price": 1888,
        "originalPrice": 1888,
        "onSale": false,
        "currency": "TWD",
        "categoryId": "DXAX69",
        "isPChome": true,
        "imageUrl": "https://img.pchome.com.tw/cs/items/DXAX69A900J198Z/000001_1771925515.jpg",
        "productUrl": "https://24h.pchome.com.tw/prod/DXAX69-A900J198Z",
        "salePrice": 1888,
        "listPrice": 3800,
        "lowestPrice": null,
        "store": "DXAX69",
        "fastDelivery24h": false,
        "weight": 0.5
    }
]
```

### 📋 Output Fields

| Field             | Description                                    |
| ----------------- | ---------------------------------------------- |
| `id`              | PChome product ID                              |
| `name`            | Product name                                   |
| `description`     | Short product description                      |
| `price`           | Current price (TWD)                            |
| `originalPrice`   | Original/reference price (TWD)                 |
| `onSale`          | Whether the product is discounted              |
| `currency`        | Currency code (TWD)                            |
| `brand`           | Brand name (when available)                    |
| `categoryId`      | PChome category ID                             |
| `isPChome`        | Whether the item is sold directly by PChome    |
| `couponIds`       | IDs of applicable coupons                      |
| `imageUrl`        | Product image URL                              |
| `productUrl`      | Direct link to the product page                |
| `salePrice`       | Live sale price *(details mode)*               |
| `listPrice`       | Manufacturer list price *(details mode)*       |
| `lowestPrice`     | Lowest recorded price *(details mode)*         |
| `store`           | Seller/store code *(details mode)*             |
| `fastDelivery24h` | Eligible for 24-hour delivery *(details mode)* |
| `weight`          | Shipping weight *(details mode)*               |

### 💵 Pricing

This Actor uses the **pay-per-event** pricing model — you only pay for the results you receive, with no monthly fee.

| Event                       | Description                                      | Price      |
| --------------------------- | ------------------------------------------------ | ---------- |
| **Product listing scraped** | Each product from search listings (shallow data) | **$0.001** |
| **Product detail scraped**  | Each product enriched with full details          | **$0.004** |

For example, scraping 1,000 product listings costs about **$1**, while 1,000 fully detailed products costs about **$4**. Keep **Scrape product details** off when you only need core listing data to minimize cost.

### ❓ FAQ

**Is scraping PChome legal?**
The scraper only collects publicly available product information. As with any web scraping, you are responsible for how you use the data and should comply with applicable laws and PChome's terms of service. Avoid collecting personal data.

**Can I scrape an entire keyword's catalog?**
Each keyword query returns up to a few thousand of the most relevant products. To go deeper, use more specific keywords or multiple queries.

**How do I lower my costs?**
Keep **Scrape product details** disabled and set a sensible **Max items** limit.

### 🛟 Support

Found a bug or need a new field? Open an issue on the Actor's **Issues** tab — feedback and feature requests are welcome, and custom solutions are available on request.

# Actor input Schema

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

Keywords to search for on PChome. The scraper collects all product listings returned for each keyword.

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

Maximum number of products to scrape across all search queries. Use 0 for no limit.

## `scrapeDetails` (type: `boolean`):

Fetch extra details for each product (live sale price, lowest price, 24h fast delivery flag and shipping weight). This makes an additional request per product, so runs are slower and cost more.

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

Order in which products are returned.

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

Proxy settings used for requests. PChome works without a proxy, but you can enable one if needed.

## Actor input object example

```json
{
  "searchQueries": [
    "iphone"
  ],
  "maxItems": 50,
  "scrapeDetails": false,
  "sort": "sale/dc",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "searchQueries": [
        "iphone"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/pchome-listings-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": ["iphone"] }

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/pchome-listings-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 '{
  "searchQueries": [
    "iphone"
  ]
}' |
apify call piotrv1001/pchome-listings-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "PCHome Listings Scraper",
        "description": "The PChome Listings Scraper extracts listings from PChome 24h (Taiwan's largest online marketplace) by keyword, capturing names, prices, original prices, discounts, brands, images, coupons, and product links — ideal for price monitoring, market research, and competitive analysis.",
        "version": "0.0",
        "x-build-id": "vFf2xpXTjFgeMBJ6N"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/piotrv1001~pchome-listings-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-piotrv1001-pchome-listings-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/piotrv1001~pchome-listings-scraper/runs": {
            "post": {
                "operationId": "runs-sync-piotrv1001-pchome-listings-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/piotrv1001~pchome-listings-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-piotrv1001-pchome-listings-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",
                "required": [
                    "searchQueries"
                ],
                "properties": {
                    "searchQueries": {
                        "title": "Search queries",
                        "type": "array",
                        "description": "Keywords to search for on PChome. The scraper collects all product listings returned for each keyword.",
                        "default": [
                            "iphone"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of products to scrape across all search queries. Use 0 for no limit.",
                        "default": 50
                    },
                    "scrapeDetails": {
                        "title": "Scrape product details",
                        "type": "boolean",
                        "description": "Fetch extra details for each product (live sale price, lowest price, 24h fast delivery flag and shipping weight). This makes an additional request per product, so runs are slower and cost more.",
                        "default": false
                    },
                    "sort": {
                        "title": "Sort order",
                        "enum": [
                            "sale/dc",
                            "price/ac",
                            "price/dc",
                            "rate/dc"
                        ],
                        "type": "string",
                        "description": "Order in which products are returned.",
                        "default": "sale/dc"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings used for requests. PChome works without a proxy, but you can enable one if needed.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
