PChome 24h Product & Price Scraper (Taiwan)
Pricing
from $1.40 / 1,000 product scrapeds
PChome 24h Product & Price Scraper (Taiwan)
Search PChome 24h (Taiwan) by keyword and get one flat row per product: price and list price in TWD, discount percent, rating, review count, brand, author, category ids, image and product URL. Sort by price, sales or newest. For Taiwan e-commerce price watching and keyword price tracking.
Pricing
from $1.40 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Superslow Sloth
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
6 days ago
Last modified
Categories
Share
Search PChome 24h (Taiwan's large e-commerce site) for one or more keywords and get one flat row per product: the selling price and the list price in TWD, the discount percent, rating and review count, brand, author and publish date for books, category ids, coupon ids, image and the product URL. Run it on a schedule and diff the dataset to get a PChome keyword price watch: track what an iPhone, a Switch game or a 48-roll pack of toilet paper costs today against last week.
No account, no API key, no login, no browser. One request returns 100 products.
Input
| Field | Notes |
|---|---|
searchTerms | One or more search terms, one per line. Required. Chinese and English both work (iphone 17, 羅技 滑鼠). A product found by two terms is returned once, under the first. PChome matches loosely: iphone finds 48,528 products, mostly cases and accessories. |
maxItems | Products to read per search term (default 100, up to 10,000). 100 per page. |
sort | relevance (default), best-selling, price-asc, price-desc, newest. |
proxyConfiguration | Apify datacenter proxy by default. Do not choose the RESIDENTIAL group (see "How it fetches"). |
About the sorts
Only the sorts PChome's own search page offers are exposed, and each was checked against the live API.
price-ascandprice-descare verified on every page: the prices must run in order, and the actor fails the term (at no charge) rather than return rows in an order that was not asked for. PChome silently ignores a sort value it does not know and serves the default order, so this check is the only way to notice.best-sellingandnewestare PChome'ssaleandnewsorts. The response carries no sort field, so these cannot be checked from the data; they were confirmed by comparing the leading rows with what the PChome site shows for the same sort.- Ordering is PChome's. Under a price sort the same product can appear on two neighbouring pages (130 repeats in 4,000 rows measured); the actor returns it once.
Output
Prices are numbers in New Taiwan dollars; currency is always TWD.
| Field | Notes |
|---|---|
query, position | The search term that first found the product, and its place in PChome's result list for that term and sort (1 is the first result). |
product_id, url | PChome's product id (DYAJNV-1900KFKV5) and the https://24h.pchome.com.tw/prod/<id> link. Books are served from /books/prod/<id>; PChome redirects there. |
name, description | As PChome shows them. description is the one-line blurb; the literal \r\n text PChome leaves in it is turned into spaces. Null when empty. |
price, original_price | The selling price now, and the list price. They are equal when the product is not discounted. |
on_sale, discount_percent | on_sale is true when original_price is above price. discount_percent is worked out from the two prices (one decimal place) and is null when the product is not on sale, never 0. |
rating, review_count | Star rating out of 5 and the review count. Null when the product has no reviews: PChome sends null, and the actor does not turn that into 0. |
brand, author, publish_date | brand is the brand for goods and the publisher for books. author (author and translator, as PChome lists them) and publish_date (ISO YYYY-MM-DD) are books only. Null otherwise; PChome sends an empty string and the actor reports it as null. |
is_book, is_adult | is_book is PChome's isBook flag. is_adult is its isNC17 flag: an 18+ restricted product. |
category_ids, coupon_ids | PChome category ids and the ids of the coupon activities attached to the product. The search response gives ids only, not coupon terms or category names. Empty list when none. |
image_url | The product photo on img.pchome.com.tw. |
is_pchome, business_unit | PChome's isPChome flag and BU tag, passed through as sent (true and ec on every one of 1,400 products sampled). |
Honest nulls
A field PChome did not send is null, never 0 or "". A product with no
price in the response has a null price; it is still returned, because the
product exists.
Pricing
Pay per event:
- $0.002 per run (
actor-start), charged only after your input is validated, so a run that fails on bad input costs nothing. - $0.0014 per product row written (
product-scraped), i.e. $1.40 per 1,000 products. A row that is not written is not charged.
How it fetches
It calls the JSON API behind PChome's own search page
(ecshweb.pchome.com.tw/search/v4.3/all/results), 100 products per request,
paging with page and pageCount. Measured 2026-10-14: HTTP 200 and JSON from
Apify datacenter exits and from a plain home connection, no key or cookie
needed. PChome rate limits one address at roughly 175 requests in 30 seconds
(HTTP 429); the actor treats that as the address being blocked and rotates. A refusal (403, 429, 5xx),
a 200 that is not the search JSON, or a dropped connection is treated as the
address being blocked, and the actor rotates to a fresh one and retries.
Use the default datacenter proxy. Do not pick the RESIDENTIAL group. PChome completes the TLS handshake on residential exits and then closes the connection (curl error 56, "connection closed"), so the requests fail. The actor logs a warning if the RESIDENTIAL group is selected.
Things worth knowing, all measured:
- Depth ceiling: 10,000 products per term. PChome reports
TotalPagecapped at 100 and answers page 101 with an empty HTTP 400, whatever the match count says. At 100 per page that is 10,000 products per search term. The actor stops there and logs a warning when a term had more matches than that (iphonehas 48,528); make the term more specific (add a brand, model or size) to see the rest. - Repeated products. PChome's result pages overlap: a product can appear on
two pages of one search, and in the relevance order whole pages of products
already seen turn up mid-walk (pages 50, 69 and 73 of
iphone). The actor returns each product once, keeps walking past an isolated page of repeats, and ends a term only after three pages in a row bring nothing new. So a term's 10,000 slots hold fewer than 10,000 distinct products. Measured over all 100 pages: relevance gave 7,563 distinct products foriphone, 5,980 for耳機and 7,343 forsamsung; best selling 7,981 foriphone; price low to high 9,696; newest first 10,000. To read as much of a big term as possible, usenewestor a price sort. - Page size. PChome serves at most 100 per page; asking for more is silently answered with 20, so the actor never does.
- Past the end. A page number past the last is an HTTP 400, not an empty page. The actor never asks for one; if the result set shrinks between two requests and a later page 400s, the rows already read are kept.
- No matches. A term with no results is a normal empty answer, not an error. It is logged and the run continues with the next term.
- Loose matching. PChome matches words loosely, so a short term returns thousands of products, many of them accessories. An empty term is refused.
- Not offered. Category and price-range filters exist on the site but are not wired into this actor.