Parfumo Fragrance Scraper — Notes, Accords, Ratings & Perfumers
Pricing
from $1.00 / 1,000 results
Parfumo Fragrance Scraper — Notes, Accords, Ratings & Perfumers
Turn Parfumo perfume URLs into clean JSON: brand, release year, concentration, gender, community rating, per-dimension ratings, perfumers, main accords and the full top/heart/base note pyramid.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Liu Hao
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
Turn Parfumo perfume URLs into clean, structured JSON: brand, release year, concentration, gender, the community rating (overall + per-dimension: scent, longevity, sillage, bottle, value), the perfumer(s), the main accords, and the full top / heart / base note pyramid.
Built for fragrance e-commerce enrichment, dupe / clone research, reseller catalogs, rating monitoring, and scent-data analysis. Give it your perfume URLs, get back a spreadsheet-ready dataset.
Why this actor exists: the biggest perfume database, Fragrantica, already has half a dozen scrapers on Apify — but it now sits behind Cloudflare and blocks plain requests. Parfumo — the other large, community-driven fragrance encyclopedia — had no actor at all, and it still serves clean pages. This actor fills that gap with the site that actually stays scrapable.
What it does
- Input: a list of Parfumo perfume references — full URLs (
https://www.parfumo.com/Perfumes/Dior/sauvage), site paths (Perfumes/Dior/sauvage) orBrand/slugpairs (Dior/sauvage). - Output: one clean record per perfume — identity, community rating breakdown, perfumers, accords and the note pyramid.
- Reliable by design: reads only public Parfumo perfume pages (allowed by Parfumo's
robots.txt), one lightweight request per perfume. No login, no protected search/API endpoints, no CAPTCHA farms — so it keeps working.
Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
perfumeUrls | array of strings | – | Parfumo perfume URLs, site paths, or Brand/slug pairs. This is the main input. |
maxItems | integer | 0 | Cap on perfumes to scrape. 0 = no limit. |
includeNotes | boolean | true | Include the fragrance notes and, when the page groups them, the top/heart/base pyramid. |
includeAccords | boolean | true | Include the main accords (Fresh, Spicy, Woody, …) in ranked order. |
includeCommunityRatings | boolean | true | Include per-dimension ratings (scent, longevity, sillage, bottle, value) with average + vote count. |
includeImage | boolean | false | Include the perfume's main image URL. |
maxConcurrency | integer | 3 | Parallel requests. Keep low to stay polite to Parfumo. |
proxyConfiguration | object | Apify Proxy | Proxy settings. Default datacenter proxy is usually enough. |
Example input
{"perfumeUrls": ["https://www.parfumo.com/Perfumes/Dior/sauvage","https://www.parfumo.com/Perfumes/Creed/aventus","Chanel/No_5"],"includeNotes": true,"includeCommunityRatings": true}
Output
One dataset record per perfume. Real output for Dior Sauvage (Eau de Toilette), captured live:
{"url": "https://www.parfumo.com/Perfumes/Dior/sauvage","name": "Sauvage","brand": "Dior","releaseYear": 2015,"concentration": "Eau de Toilette","gender": "men","rating": {"value": 7.5,"best": 10,"ratingCount": 6514,"reviewCount": 365},"perfumers": ["François Demachy"],"ranking": { "rank": 30, "category": "Men's Perfume" },"accords": ["Fresh", "Spicy", "Synthetic", "Citrus", "Woody"],"notes": ["Ambrox", "Sichuan pepper", "Calabrian bergamot", "Pink pepper","Provençal lavender", "Elemi resin", "Geranium", "Patchouli", "Vetiver"],"communityRatings": {"scent": { "average": 7.30, "votes": 6514 },"longevity": { "average": 7.79, "votes": 6129 },"sillage": { "average": 7.73, "votes": 6106 },"bottle": { "average": 7.72, "votes": 6164 },"value": { "average": 7.40, "votes": 4561 }},"description": "A perfume by Dior for men, released in 2015. The scent is fresh-spicy. It is being marketed by LVMH.","scrapedAt": "2026-07-22T00:00:00.000Z"}
When a page groups its notes into a pyramid (most designer fragrances do), you also get:
"notesPyramid": {"top": ["Bergamot", "Apple", "Blackcurrant", "Lemon", "Pink pepper"],"heart": ["Pineapple", "Indonesian patchouli", "Jasmine"],"base": ["Birch", "Cedarwood", "Musk", "Oakmoss", "Ambergris"]}
(example from Creed Aventus)
Output field reference
| Field | Description |
|---|---|
name | Perfume name, e.g. Sauvage, N°5. |
brand | Brand / fragrance house. |
releaseYear | Year of release. |
concentration | Concentration, e.g. Eau de Toilette, Eau de Parfum, Parfum. null if the page has no concentration label. |
gender | Target audience: women, men or unisex. |
rating | Overall community rating: { value, best, ratingCount, reviewCount } on a 0–10 scale. |
perfumers[] | Credited perfumer(s) / nose(s). |
ranking | Site ranking when shown: { rank, category }, e.g. rank 4 in Men's Perfume. |
accords[] | Main accords in ranked order, e.g. Fresh, Spicy, Woody. |
notes[] | All fragrance notes (flat, de-duplicated, in listed order). |
notesPyramid | Present only when the page groups notes: { top[], heart[], base[] }. |
communityRatings | Per-dimension ratings, each { average (0–10), votes }: scent, longevity, sillage, bottle, value. |
description | Short factual summary line from the page. |
imageUrl | Main image URL (only when includeImage is on). |
url | Canonical Parfumo perfume URL. |
scrapedAt | ISO timestamp of capture. |
URLs that do not resolve to a perfume are returned as { "url": "…", "error": "not_found" } so your run never silently drops a line item.
Typical use cases
- E-commerce enrichment: hydrate a perfume shop's catalog with accords, notes, gender, perfumer and a community rating for each product.
- Dupe / clone research: compare note pyramids and accords across fragrances to find and document "smells like" matches.
- Rating & popularity monitoring: schedule the actor on a watchlist and track how a fragrance's rating, vote count or site ranking moves over time.
- Scent-data analysis: build a dataset of notes/accords across hundreds of releases for trend or recommendation work.
How to get perfume URLs
You almost always already have them:
- Browse or search parfumo.com and copy the perfume page URLs.
- Every Parfumo perfume page URL is
https://www.parfumo.com/Perfumes/{Brand}/{slug}— you can also just pass the{Brand}/{slug}pair.
Paste those into perfumeUrls and run.
Limitations (read before buying)
- Discovery is by perfume URL, not keyword search. This is deliberate: it keeps the actor on stable public perfume pages and avoids Parfumo's protected search endpoints (disallowed by
robots.txt), so it stays reliable and does not get blocked. Collect the URLs first (from the site, your catalog, or a sitemap) and feed them here. - Ratings and rankings are point-in-time. Community scores and vote counts change; re-run to refresh.
concentrationcan benullwhen a perfume page does not carry a concentration label (some niche/older entries).- Notes are only split into a pyramid when the page provides that grouping. Otherwise you get the flat
noteslist only. - Text is English (the international
.comstorefront). Note and accord names follow Parfumo's own English labels.
FAQ
Do I need a Parfumo account or API key? No. The actor reads public perfume pages only.
Is this allowed? The actor requests only public /Perfumes/ pages, which Parfumo's robots.txt permits, at low volume. It collects factual fragrance data (notes, accords, aggregate ratings) — no personal data, no logged-in content, and no individual user reviews.
What if a URL doesn't exist? You get a record with "error": "not_found" for that URL; the rest of the run continues.
Can I scrape individual user reviews? No. This actor returns only aggregate, factual fragrance data — not personal user content.
Why Parfumo and not Fragrantica? Fragrantica is heavily rate-limited / Cloudflare-protected and already has many (often broken) scrapers. Parfumo is a comparably large, community-driven fragrance encyclopedia that still serves clean pages — a more reliable source for the same class of data.