@cosme Japan Beauty Ranking — Top 50 Ratings & Prices
Pricing
from $20.00 / 1,000 category ranking summaries
@cosme Japan Beauty Ranking — Top 50 Ratings & Prices
Pick a category on @cosme, Japan's biggest beauty review site, and get its whole top-50 ranking as one summary. Returns typical rating and range (0–7 scale), typical list price and range, review counts, number of brands, how many products moved up / down / are new. $0.02 per category. Unofficial.
Pricing
from $20.00 / 1,000 category ranking summaries
Rating
0.0
(0)
Developer
h ichi
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
What it does: Pick a ranking category on @cosme, Japan's biggest beauty review site, and get its whole top 50 — ratings, review counts and prices — as one summary.
You enter: a ranking category such as item/1069 (liquid cleansers), or paste the ranking URL.
You get: all 50 ranked products: typical rating and range (0–7 scale); typical list price and range (cheapest size); review-count median and max; brand count; how many moved up / down / are new; ranking date and period. Optional: one row per product. Never review text.
Price: $0.02 per category — every category in your list is charged — plus $0.002 per product if you also want the list (off by default). No results = no charge.
Example: enter item/1069 → 50 products · typical rating 5.1 (range 3.7–6.9) · typical list price ¥1,760 (range ¥352–7,260, from the 42 products that list one) · 42 brands · 8 moved up, 19 down, 2 new.
Unofficial — not affiliated with @cosme. Reads public pages only.
⚠️ What this Actor deliberately does not collect
@cosme is a review site, so this needs saying plainly:
Review text, reviewer names, reviewer profiles and review photos are never collected — by design, permanently.
| Not collected | Why |
|---|---|
| Review bodies (the text people write) | It is user-authored personal content. Statistics do not need it |
| Reviewer names, ages, skin types, profile pages | Personal data about individuals who are not the subject of this product |
| Review photos | Same — user-uploaded personal content |
Review permalinks and the product's /review/ tab URL | Emitting the link is emitting the pointer. No record ever contains a .../review/ URL — url is always the product page |
What is collected is the review count — a number — and the aggregate rating value. That is the entire review-side footprint of this Actor.
This is not a promise in prose, it is enforced in code. src/main.py carries a DELIBERATE EXCLUSION block and an executable guard, review_text_leaks(record), which scans every value of an emitted record for the review markers (review-body, review-text, reviewer-desc, /reviewer/, /review/, /reviews/) and returns the ones it finds. The test suite asserts it returns [] for every emitted record shape. If a future change ever tag-strips a whole product block or copies the review-tab link, the markers come along with it and the build fails. Every field is read out of the single HTML element that carries its class token — a review body has no path into a record even by accident.
Pricing — $0.02 per category
| What you pay for | Price | When |
|---|---|---|
| Category summary | $0.02 | Per category that returned products, and every category in your list is charged |
| Individual product | $0.002 | Only if you turn on Include individual products (off by default) |
A default run (1 category, whole top 50, summary only) costs $0.02. With individual products on it is $0.02 + 50 × $0.002 = $0.12. You pay per category; there is no monthly fee. A category that returns nothing is never charged.
Input
| Field | Example | Notes |
|---|---|---|
categories | ["item/1069"] | <axis>/<id>, axis ∈ item / effect / skin / age / pickup — copy both halves from the URL, the ids are numbered per axis. A full ranking URL is accepted and normalized. Ids for the common rankings are listed below. A category that cannot be read is skipped with its reason, and the rest of the list still runs. Each category costs $0.02 |
pagesPerCategory | 5 | 10 products per page; the ranking is only 50 deep, so 5 is the whole thing and the maximum. Lower it for a fast top-10 read |
includeIndividualItems | false | Turn on to also get each ranked product as its own row (+$0.002 each) |
convertToUsd | true | Adds USD prices at the current exchange rate |
Finding a category id
Open any @cosme ranking in a browser and copy the URL: https://www.cosme.net/categories/item/1069/ranking/ → item/1069. The item axis is the product-type ranking (cleansers, serums, lipsticks…); effect, skin, age and pickup are @cosme's other ranking axes and all work the same way.
Copy the axis and the id together. The id numbers are separate per axis, so effect/1069 is not "the same ranking by effect" — it is a real, different ranking (fragrances, measured 2026-08-18) that comes back as a normal, charged row. If a summary's categoryName is not what you expected, the axis is the thing to check.
The site is Japanese-only, so here are the ids for the rankings most people want — read off @cosme's own category links on 2026-08-18:
| Ranking | Category | Ranking | Category |
|---|---|---|---|
| Face wash (洗顔料) | item/900 | Foundation (ファンデーション) | item/916 |
| Makeup remover (クレンジング) | item/901 | Makeup base / primer (化粧下地) | item/917 |
| Toner (化粧水) | item/902 | Face powder (フェイスパウダー) | item/918 |
| Milky lotion (乳液) | item/1004 | Cushion foundation (クッションファンデ) | item/1200 |
| Serum (美容液) | item/1006 | BB cream (BBクリーム) | item/1201 |
| Face cream (フェイスクリーム) | item/1005 | CC cream (CCクリーム) | item/1202 |
| Sheet masks (シートマスク・パック) | item/1007 | Lipstick (口紅) | item/1015 |
| Eye & lip care (目元・口元ケア) | item/905 | Liquid lipstick (リキッドルージュ) | item/1221 |
| Oil cleanser (オイルクレンジング) | item/1002 | Mascara (マスカラ) | item/911 |
| Cleansing balm (クレンジングバーム) | item/1192 | Eyeliner (アイライナー) | item/910 |
| Liquid cleanser (リキッドクレンジング) | item/1069 | Eyeshadow (アイシャドウ) | item/912 |
| Sunscreen & UV care (日焼け対策) | item/801 | Blush (チーク) | item/914 |
| Shampoo & conditioner (シャンプー) | item/920 | Perfume (香水・フレグランス) | item/804 |
| Hand cream (ハンドクリーム) | item/1035 | Nail polish (マニキュア) | item/1023 |
Whole sections, if you want the widest ranking: skincare item/800, makeup item/802, base makeup item/803, haircare item/805, body & oral care item/806, beauty devices item/808, supplements item/809.
On the effect axis: brightening (美白) effect/1005, pores (毛穴) effect/1003, acne (ニキビ) effect/1004, moisture (うるおい) effect/1002, anti-ageing effect/1008, exfoliation (角質ケア) effect/1062, organic (自然派・オーガニック) effect/1087.
Checked on 2026-08-18: item/900, item/916, item/804 and effect/1005 each returned a full page of ranked products.
Only the main ranking is read. If you paste a ranking-rise (急上昇), ranking-age (年代), ranking-skin (肌質) or ranking-search (お好み) URL the run fails with a clear message instead of quietly billing you for the plain ranking, which is a different result set with a different aggregation window.
Output example (type: "category_summary")
Measured on 2026-08-01 (real @cosme pages) — category item/1069 (リキッドクレンジング / liquid cleansers)
{"type": "category_summary","category": "item/1069","categoryName": "リキッドクレンジング","rankingUpdatedOn": "2026-07-31","aggregationPeriod": { "from": "2026-04-30", "to": "2026-07-29", "raw": "2026/4/30〜2026/7/29" },"productsRanked": 50,"totalListingsFound": 50,"pagesFetched": 5,"ratingScale": 7,"rating": { "min": 3.7, "q1": 4.9, "median": 5.1, "q3": 5.4, "max": 6.9, "count": 50 },"priceJpy": { "min": 352, "q1": 1463, "median": 1760, "q3": 3242, "max": 7260, "count": 42 },"reviewCount": { "median": 186, "max": 8727, "count": 50 },"brandTop": [["ビオデルマ", 4], ["Chacott COSMETICS(チャコット・コスメティクス)", 2], ["ビフェスタ", 2]],"brandCount": 42,"topBrandShare": 0.08,"rankMovement": { "up": 8, "stay": 21, "down": 19, "new": 2, "unknown": 0 },"bestCosmeCount": 2,"variantsPerProductMedian": 1,"checkedAt": "2026-08-01T05:41:12.884Z","sourceUrl": "https://www.cosme.net/categories/item/1069/ranking/","priceUsd": { "min": 2.3, "q1": 9.55, "median": 11.49, "q3": 21.17, "max": 47.41 },"exchangeRateJpyUsd": 0.00653}
q1 and q3 are the two ends of the middle 50%: half of the 50 ranked products are rated between 4.9 and 5.4, and half of the 42 with a price sit between ¥1,463 and ¥3,242.
And one optional product row (type: "product") measured on 2026-08-01 in the same read — note that url is the product page and every size/price pair is kept:
{"type": "product","category": "item/1069","categoryName": "リキッドクレンジング","rank": 1,"rankMovement": "stay","rankMovementJa": "順位変わらず","productId": "2892367","name": "サンシビオ エイチツーオー D","brand": "ビオデルマ","brandId": "4680","ratingScale": 7,"rating": 5.4,"reviewCount": 8727,"minPriceJpy": 1463,"priceVariants": [{ "size": "100ml", "priceJpy": 1463 },{ "size": "250ml", "priceJpy": 3069 },{ "size": "500ml", "priceJpy": 3810 },{ "size": "850ml", "priceJpy": 5060 }],"priceVariantCount": 6,"priceLabelJa": "税込価格","releaseDate": "2002-07-05","releaseDateRaw": "2002/7/5","bestCosme": true,"url": "https://www.cosme.net/products/2892367/"}
Notes on the data
- The rating scale is 0–7, not 0–5. @cosme rates on seven points, so a 5.4 is a strong product, not an impossible one. Every record carries
ratingScale: 7so you cannot compare it against a five-star rating from another site by accident. (To rescale to 5 points:rating / 7 * 5.) - The aggregation window is part of the answer. @cosme recomputes each ranking on a rolling ~3-month window and publishes both dates in the page header; both are on every record as
rankingUpdatedOnandaggregationPeriod. Two rankings are only comparable when their windows are — a snapshot without them is not interpretable, which is why they are never omitted. - The ranking is 50 deep, and all 50 are read — this is not a sample.
productsRankedis normally exactly 50 (10 per page × 5 pages), so the middle 50% range and the median describe the whole ranked set rather than an estimate of it. There is no page 6. - One product, many prices. A Japanese cosmetic is usually sold in several sizes on one line (「税込価格:100ml・1,463円 / 250ml・3,069円 / 500ml・3,810円」). All pairs are parsed;
minPriceJpy— the cheapest listed size — is the representative price used inpriceJpy, because a product that also sells an 850 ml bottle is not "more expensive" than one that only sells 100 ml.priceVariantCounttells you how many sizes there were. - Not every product has a price. Open-price products (「オープン価格」) and refill-only lines carry a size with no yen amount; they keep
priceJpy: nulland are excluded frompriceJpy, which is whypriceJpy.count(42 above) can be lower thanproductsRanked(50). Nothing is invented to fill the gap. - Prices are the tax-included list prices @cosme publishes (
priceLabelJarecords the site's own label), not shop prices and not sold prices. - Rank movement is @cosme's own icon:
up(including its 「10位以上順位アップ」 variant),stay,down,new(ランキング初登場). An unrecognized icon is reported asunknownrather than folded intostay. bestCosmeflags products carrying the ベストコスメ award badge on the ranking page.- Brand names are read from the brand link only. Brands with a paid tie-up carry a second link whose text is a notice; it is excluded, so one brand stays one entry in
brandTop. - Encoding: @cosme serves Shift_JIS, which is decoded explicitly. Japanese brand, product and category names come through intact.
What this Actor does not do
- No review text, ever. See the section above — this is the product's hard constraint, not a limitation
- No product-by-product list by default. The summary is the product; individual products are opt-in and separately priced
- No login-only data and no
/api/paths. Everything comes from public ranking pages; the paths @cosme disallows in robots.txt are never requested - Nothing is stored between runs. Every run reads the pages live
- No browser. Plain HTTP, 256 MB, a run stays well inside 120 s
Reliability
Requests are throttled to 1.5 s and a soft 95 s wall-clock budget keeps a multi-category run inside its timeout. Page 1 of every category always runs, so every category produces a summary; if the budget stops the follow-up pages, the affected summary says so with truncatedForTimeLimit: true and a smaller pagesFetched — a top-10 read is never passed off as the full top 50. If every category fails the run fails loudly rather than returning an empty success.
If something goes wrong
- Wrong number or a failed run? Open a ticket on the Issues tab. I read every one and reply within 2 business days (Japan time).
- You never get a fake "empty" result. If the site can't be read, the run fails and says so.
- No results = no charge. You only pay for results you actually get.
- Checked every week. An automatic test runs this tool weekly; if the site changes, I fix it.
- Public pages only. No login, no personal data, and it goes easy on the site.
More tools by the same author
- BookOff Japan Used Manga, Books, CDs — Price & Stock
- Digimart Japan Used Guitar & Instrument Prices
- Fujiya Camera Japan Used Camera Prices by Condition
- HobbyLink Japan Gunpla & Figure Prices + Stock Status
- Iosys Japan Used iPhone & Phone Prices by Condition
- Mandarake Japan Collectibles — Prices In Stock & Sold Out
- Tackleberry Japan Used Fishing Tackle Prices & Counts
- Yuyu-tei Japan TCG Card Prices — Sell & Buy-back Price
- Mercari Japan Sold Prices — What Items Really Sell For
- Yahoo! Auctions Japan Sold Prices — Median, Range, Bids
Other language editions of this tool: 中文 · 한국어
All tools (Japan marketplaces, real estate, jobs, racing, prediction markets): https://apify.com/jpmarketdata
Disclaimer
Unofficial, independent tool — not affiliated with, endorsed by, or sponsored by @cosme. Product names and logos belong to their owners and only say where the data comes from. Data is read from public pages, for market research; check before you act on it.