@cosme Japan Beauty Ranking — Top 50 Ratings & Prices avatar

@cosme Japan Beauty Ranking — Top 50 Ratings & Prices

Pricing

from $20.00 / 1,000 category ranking summaries

Go to Apify Store
@cosme Japan Beauty Ranking — Top 50 Ratings & Prices

@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

h ichi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

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 collectedWhy
Review bodies (the text people write)It is user-authored personal content. Statistics do not need it
Reviewer names, ages, skin types, profile pagesPersonal data about individuals who are not the subject of this product
Review photosSame — user-uploaded personal content
Review permalinks and the product's /review/ tab URLEmitting the link is emitting the pointer. No record ever contains a .../review/ URLurl 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 forPriceWhen
Category summary$0.02Per category that returned products, and every category in your list is charged
Individual product$0.002Only 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

FieldExampleNotes
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
pagesPerCategory510 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
includeIndividualItemsfalseTurn on to also get each ranked product as its own row (+$0.002 each)
convertToUsdtrueAdds 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:

RankingCategoryRankingCategory
Face wash (洗顔料)item/900Foundation (ファンデーション)item/916
Makeup remover (クレンジング)item/901Makeup base / primer (化粧下地)item/917
Toner (化粧水)item/902Face powder (フェイスパウダー)item/918
Milky lotion (乳液)item/1004Cushion foundation (クッションファンデ)item/1200
Serum (美容液)item/1006BB cream (BBクリーム)item/1201
Face cream (フェイスクリーム)item/1005CC cream (CCクリーム)item/1202
Sheet masks (シートマスク・パック)item/1007Lipstick (口紅)item/1015
Eye & lip care (目元・口元ケア)item/905Liquid lipstick (リキッドルージュ)item/1221
Oil cleanser (オイルクレンジング)item/1002Mascara (マスカラ)item/911
Cleansing balm (クレンジングバーム)item/1192Eyeliner (アイライナー)item/910
Liquid cleanser (リキッドクレンジング)item/1069Eyeshadow (アイシャドウ)item/912
Sunscreen & UV care (日焼け対策)item/801Blush (チーク)item/914
Shampoo & conditioner (シャンプー)item/920Perfume (香水・フレグランス)item/804
Hand cream (ハンドクリーム)item/1035Nail 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: 7 so 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 rankingUpdatedOn and aggregationPeriod. 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. productsRanked is 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 in priceJpy, because a product that also sells an 850 ml bottle is not "more expensive" than one that only sells 100 ml. priceVariantCount tells 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: null and are excluded from priceJpy, which is why priceJpy.count (42 above) can be lower than productsRanked (50). Nothing is invented to fill the gap.
  • Prices are the tax-included list prices @cosme publishes (priceLabelJa records 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 as unknown rather than folded into stay.
  • bestCosme flags 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

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.