Fragrantica Perfume Scraper — Notes, Accords, Votes & Reviews avatar

Fragrantica Perfume Scraper — Notes, Accords, Votes & Reviews

Pricing

from $0.77 / 1,000 perfume profiles

Go to Apify Store
Fragrantica Perfume Scraper — Notes, Accords, Votes & Reviews

Fragrantica Perfume Scraper — Notes, Accords, Votes & Reviews

Extract Fragrantica perfume profiles: note pyramid, accords, perfumers, ratings, and full community votes for longevity, sillage, seasons, gender and price value. Similar perfumes, pros and cons, optional reviews. Search, filters or URLs. 23 languages.

Pricing

from $0.77 / 1,000 perfume profiles

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

7 days ago

Last modified

Categories

Share

Fragrantica Perfume Scraper

Fragrantica Perfume Scraper

Extract perfume profiles from Fragrantica.com: the full note pyramid, main accords with strength, perfumers, ratings, and the complete community votes for longevity, sillage, seasons, gender and price value. Search by keyword, filter by brand, note, perfumer, gender, year or rating, or paste any Fragrantica URL. Reviews are optional. No API key required.


Why this scraper?

🗳️ The full community votes

Every vote breakdown Fragrantica shows on a perfume page: longevity (very weak to eternal), sillage (intimate to enormous), price value, winter/spring/summer/autumn, day/night, gender (female to male) and how many members have, had or want the perfume. Each comes with its vote counts, total and average.

🌸 Complete scent profile

Top, middle and base notes with note IDs, links and relative weight, flat note lists for perfumes without a pyramid, main accords with strength and colour, fragrance family, perfumers, launch year, awards and description.

🔎 Search and filters that match the site

Keyword search, brands, notes (all must be present), perfumers, gender, launch year range, minimum rating, minimum number of votes and niche brands only. Large brands are collected in full, past Fragrantica's own 1,000-result search limit.

The "This perfume reminds me of" list with yes and no votes for each match, and Fragrantica's summarised pros and cons with agree and disagree counts.

📊 Exact popularity data

Exact review counts per language (not the rounded number on the page), the rating distribution from 1 to 5 stars, popularity scores, the date of the latest review and a 29-day visitor trend.

💬 Reviews with reviewer votes

Optional review records: text, date, author name, whether it is a recent or a popular positive or negative review, and the votes that reviewer cast for the perfume.

🌍 23 language editions

English, German, Spanish, French, Italian, Dutch, Polish, Portuguese, Romanian, Czech, Hungarian, Swedish, Turkish, Greek, Russian, Ukrainian, Serbian, Mongolian, Hebrew, Arabic, Japanese, Chinese and Korean. Notes, accords, descriptions and reviews come in the chosen language.


Input parameters

ParameterTypeDefaultDescription
searchQueriesarray[]Keywords to search: a perfume name, brand or collection. Each query runs separately.
startUrlsarray[]Fragrantica perfume, designer, note, perfumer or search URLs. Designer, note and perfumer pages return every perfume listed under them.
brandsarray[]Only perfumes from these brands. Names are matched to Fragrantica's spelling.
notesarray[]Only perfumes that contain all of these notes (English names).
perfumersarray[]Only perfumes by one of these perfumers.
genderstring"any"any, female, male or unisex.
yearFrominteger0Only perfumes launched in or after this year. 0 means no limit.
yearTointeger0Only perfumes launched in or before this year. 0 means no limit.
minRatingstring"any"Minimum average rating: any, 3, 3.5, 4 or 4.5.
minVotesinteger0Minimum number of rating votes.
nicheOnlybooleanfalseOnly perfumes from niche brands.
scrapeDetailsbooleantrueOn: full perfume profiles. Off: faster, cheaper listing records with search data only.
includeCommunityVotesbooleantrueAdds the vote breakdowns, similar perfumes and pros and cons. Turn off for faster runs without these fields.
includeReviewsbooleanfalseAlso save reviews as separate records.
maxReviewsPerPerfumeinteger20Maximum reviews per perfume. 0 means all reviews on the page (up to about 210).
languagestring"en"Fragrantica language edition.
maxResultsinteger20Maximum number of perfumes across all inputs. Reviews do not count. 0 means no limit.
proxyConfigurationobjectApify ProxyProxy settings. The default works; change only if you have a reason to.

With no search, filter or URL, the actor searches "Sauvage" as an example.


Output schema

The dataset holds three record types, marked by recordType. Fields the source does not publish for a perfume are returned as null or an empty list rather than omitted.

Perfume profile (recordType: "perfume")

FieldTypeDescription
recordTypestringAlways perfume.
perfumeIdintegerFragrantica perfume ID.
urlstringPerfume page URL in the chosen language edition.
languagestringLanguage edition code, e.g. en.
namestringPerfume name.
brandstringBrand (designer) name.
brandUrlstringBrand page URL.
fullTitlestringPage title as shown, e.g. "Coco Mademoiselle Chanel for women".
genderstringfemale, male or unisex.
genderLabelstringGender label as shown on the page, in the chosen language.
yearintegerLaunch year (null if unknown).
collectionstringCollection the perfume belongs to (null if none).
fragranceFamilystringFragrance family, e.g. "Oriental Floral" (English, German, Italian and Spanish editions; null if not classified).
ratingValuenumberAverage rating out of 5 (null when nobody has rated it).
ratingCountintegerNumber of rating votes.
ratingDistributionobjectVotes per star, keys 1 to 5 (null without community votes).
reviewsCountintegerExact number of reviews across all language editions.
reviewsByLanguageobjectExact review count per language code.
popularityScoreintegerFragrantica popularity score.
recentPopularityScoreintegerPopularity score over the recent period.
lastReviewAtstringISO date and time of the most recent review (null if none).
mainAccordsarrayMain accords: name, strength (0–100, relative to the strongest), color.
notesToparrayTop notes: name, noteId, url, imageUrl, weight (0–1, relative prominence).
notesMiddlearrayMiddle (heart) notes, same shape as notesTop.
notesBasearrayBase notes, same shape as notesTop.
notesUnsortedarrayNotes of perfumes without a pyramid, same shape.
hasPyramidbooleanWhether the notes are split into top, middle and base.
allNotesarrayAll note names in one list.
perfumersarrayPerfumers: name, url (empty if not credited).
voteDataAvailablebooleanWhether the community vote fields below were collected.
longevityobjectvotes (veryWeak, weak, moderate, longLasting, eternal), average (1–5), total.
sillageobjectvotes (intimate, moderate, strong, enormous), average (1–4), total.
priceValueobjectvotes (wayOverpriced, overpriced, ok, goodValue, greatValue), average (1–5), total.
genderVotesobjectvotes (female, moreFemale, unisex, moreMale, male), total.
seasonVotesobjectVotes for winter, spring, summer, autumn, day, night.
ownershipobjectMembers who have, had or want the perfume.
similarPerfumesarray"Reminds me of" matches: perfumeId, name, brand, gender, url, imageUrl, votesYes, votesNo.
prosarraySummarised pros: text, shortText, votesYes, votesNo (English edition only).
consarraySummarised cons, same shape as pros (English edition only).
awardsarrayAwards the perfume won (empty if none).
shopOffersarrayShop offers listed on the page: shop, itemCount, priceMin, priceMax, currency, approximate (empty if none).
descriptionHtmlstringFragrantica's description as HTML.
descriptionTextstringDescription as plain text.
descriptionMarkdownstringDescription as Markdown.
imageUrlstringBottle image, 375 × 500.
imageUrlLargestringLarge bottle image.
alternativeNamesarrayNames in other scripts: language, name.
languageUrlsobjectURLs of the same perfume in the other language editions, by language code.
visitorTrendarrayDaily page visitors over the last 29 days.
reviewsScrapedintegerNumber of review records saved for this perfume in this run.
sourceModestringHow the perfume was found: search, filter, designer, note, perfumer or url.
searchQuerystringSearch query that found it (null for other modes).
positionintegerPosition in the search or listing results.
sourcestringAlways fragrantica.com.
scrapedAtstringISO timestamp of extraction.
contentHashstringHash of the key values, for change detection between runs.

Review (recordType: "review", with includeReviews: true)

FieldTypeDescription
recordTypestringAlways review.
reviewIdintegerFragrantica review ID.
perfumeIdintegerID of the perfume reviewed.
perfumeNamestringPerfume name.
brandstringBrand name.
perfumeUrlstringPerfume page URL.
urlstringDirect link to the review.
languagestringLanguage edition code.
reviewCategorystringrecent, popularPositive or popularNegative.
authorNamestringReviewer's display name.
datePublishedstringReview date, YYYY-MM-DD.
reviewTextstringReview text.
reviewerVotesobjectThe reviewer's own votes: rating, longevity, sillage, gender, ownership, seasons (null where the reviewer did not vote).
reviewerSignaturePerfumestringURL of the perfume the reviewer shows as their signature (null if none).
sourcestringAlways fragrantica.com.
scrapedAtstringISO timestamp of extraction.

Listing (recordType: "perfume-listing", with scrapeDetails: false)

FieldTypeDescription
recordTypestringAlways perfume-listing.
perfumeIdintegerFragrantica perfume ID.
namestringPerfume name.
brandstringBrand name.
urlstringPerfume page URL.
slugstringURL path of the perfume, e.g. Dior/Sauvage.
genderstringfemale, male or unisex.
yearintegerLaunch year (null if unknown).
collectionstringCollection (null if none).
ratingValuenumberAverage rating out of 5, four decimals.
ratingCountintegerNumber of rating votes.
reviewsCountintegerExact review count across all languages.
reviewsByLanguageobjectReview count per language code.
popularityScoreintegerPopularity score.
recentPopularityScoreintegerRecent popularity score.
compoundPopularityScoreintegerCombined popularity score.
lastReviewAtstringISO date and time of the latest review (null if none).
alternativeNamesarrayNames in other scripts: language, name.
imageUrlstringBottle image.
thumbnailUrlstringSmall bottle image.
languagestringLanguage edition code.
sourceModestringHow the perfume was found.
searchQuerystringSearch query that found it (null for other modes).
positionintegerPosition in the results.
sourcestringAlways fragrantica.com.
scrapedAtstringISO timestamp of extraction.

Example record

{
"recordType": "perfume",
"perfumeId": 31861,
"url": "https://www.fragrantica.com/perfume/Dior/Sauvage-31861.html",
"language": "en",
"name": "Sauvage",
"brand": "Dior",
"brandUrl": "https://www.fragrantica.com/designers/Dior.html",
"fullTitle": "Sauvage Dior for men",
"gender": "male",
"genderLabel": "for men",
"year": 2015,
"collection": "Sauvage Collection",
"fragranceFamily": "Aromatic Fougere",
"ratingValue": 3.8496,
"ratingCount": 34238,
"ratingDistribution": {
"1": 1869,
"2": 4572,
"3": 3592,
"4": 11011,
"5": 13194
},
"reviewsCount": 6770,
"reviewsByLanguage": {
"en": 4154,
"ru": 664,
"es": 640,
"pt": 628,
"sr": 160,
"pl": 145,
"it": 144
},
"popularityScore": 120540,
"recentPopularityScore": 29848,
"lastReviewAt": "2026-07-20T05:34:50.000Z",
"mainAccords": [
{
"name": "fresh spicy",
"strength": 100,
"color": "#83C928"
},
{
"name": "amber",
"strength": 70.85,
"color": "#bc4d10"
},
{
"name": "citrus",
"strength": 69.42,
"color": "#F9FF52"
}
],
"notesTop": [
{
"name": "Calabrian bergamot",
"noteId": 75,
"url": "https://www.fragrantica.com/notes/Bergamot-75.html",
"imageUrl": "https://fimgs.net/mdimg/sastojci/t.75.jpg",
"weight": 1
},
{
"name": "Pepper",
"noteId": 158,
"url": "https://www.fragrantica.com/notes/Pepper-158.html",
"imageUrl": "https://fimgs.net/mdimg/sastojci/t.158.jpg",
"weight": 1
}
],
"notesMiddle": [
{
"name": "Sichuan Pepper",
"noteId": 213,
"url": "https://www.fragrantica.com/notes/Sichuan-Pepper-213.html",
"imageUrl": "https://fimgs.net/mdimg/sastojci/t.213.jpg",
"weight": 0.9567
},
{
"name": "Lavender",
"noteId": 1,
"url": "https://www.fragrantica.com/notes/Lavender-1.html",
"imageUrl": "https://fimgs.net/mdimg/sastojci/t.1.jpg",
"weight": 0.9232
}
],
"notesBase": [
{
"name": "Ambroxan",
"noteId": 563,
"url": "https://www.fragrantica.com/notes/Ambroxan-563.html",
"imageUrl": "https://fimgs.net/mdimg/sastojci/t.563.jpg",
"weight": 1
},
{
"name": "Cedar",
"noteId": 41,
"url": "https://www.fragrantica.com/notes/Cedar-41.html",
"imageUrl": "https://fimgs.net/mdimg/sastojci/t.41.jpg",
"weight": 0.8356
}
],
"notesUnsorted": [],
"hasPyramid": true,
"allNotes": [
"Calabrian bergamot",
"Pepper",
"Sichuan Pepper",
"Lavender",
"Pink Pepper",
"Vetiver",
"Patchouli",
"Geranium",
"elemi",
"Ambroxan",
"Cedar",
"Labdanum"
],
"perfumers": [
{
"name": "François Demachy",
"url": "https://www.fragrantica.com/noses/Fran%C3%A7ois_Demachy.html"
}
],
"voteDataAvailable": true,
"longevity": {
"votes": {
"veryWeak": 534,
"weak": 938,
"moderate": 6705,
"longLasting": 10519,
"eternal": 1820
},
"average": 3.5924,
"total": 20516
},
"sillage": {
"votes": {
"intimate": 1336,
"moderate": 8342,
"strong": 8958,
"enormous": 1746
},
"average": 2.5453,
"total": 20382
},
"priceValue": {
"votes": {
"wayOverpriced": 1227,
"overpriced": 4460,
"ok": 7561,
"goodValue": 1936,
"greatValue": 425
},
"average": 2.7355,
"total": 15609
},
"genderVotes": {
"votes": {
"female": 150,
"moreFemale": 39,
"unisex": 576,
"moreMale": 2700,
"male": 13468
},
"total": 16933
},
"seasonVotes": {
"winter": 10249,
"spring": 15159,
"summer": 14118,
"autumn": 14014,
"day": 15021,
"night": 13704
},
"ownership": {
"have": 55004,
"had": 19230,
"want": 13209
},
"similarPerfumes": [
{
"perfumeId": 43402,
"name": "Luna Rossa Carbon Eau de Toilette",
"brand": "Prada",
"gender": "male",
"url": "https://www.fragrantica.com/perfume/Prada/Luna-Rossa-Carbon-Eau-de-Toilette-43402.html",
"imageUrl": "https://fimgs.net/mdimg/perfume/s.43402.jpg",
"votesYes": 2195,
"votesNo": 506
}
],
"pros": [
{
"text": "Good projection",
"shortText": null,
"votesYes": 1678,
"votesNo": 107
}
],
"cons": [
{
"text": "In-your-face aroma chemicals",
"shortText": null,
"votesYes": 1199,
"votesNo": 501
}
],
"awards": [],
"shopOffers": [],
"descriptionHtml": "<p><b>Sauvage</b> by <b>Dior</b> is a Aromatic Fougere fragrance for men. <b>Sauvage</b> was launched in 2015. ...</p>",
"descriptionText": "Sauvage by Dior is a Aromatic Fougere fragrance for men. Sauvage was launched in 2015. The nose behind this fragrance is François Demachy. Top notes a ...",
"descriptionMarkdown": "**Sauvage** by **Dior** is a Aromatic Fougere fragrance for men. **Sauvage** was launched ...",
"imageUrl": "https://fimgs.net/mdimg/perfume-thumbs/375x500.31861.jpg",
"imageUrlLarge": "https://fimgs.net/mdimg/perfume/o.31861.jpg",
"alternativeNames": [
{
"language": "ar",
"name": "ديور سوفاج"
},
{
"language": "gr",
"name": "Ντιόρ Σοβάζ"
}
],
"languageUrls": {
"de": "https://www.fragrantica.de/Parfum/Dior/Sauvage-31861.html",
"es": "https://www.fragrantica.es/perfume/Dior/Sauvage-31861.html"
},
"visitorTrend": [
2252,
2303,
2362,
2448,
2453
],
"reviewsScraped": 0,
"sourceMode": "search",
"searchQuery": "Sauvage",
"position": 1,
"source": "fragrantica.com",
"scrapedAt": "2026-09-19T13:34:08.225Z",
"contentHash": "aeb07ffe1ddb2dc8"
}

Examples

Search for perfumes by name, with reviews:

{
"searchQueries": ["Baccarat Rouge 540", "Aventus"],
"includeReviews": true,
"maxReviewsPerPerfume": 10,
"maxResults": 20
}

Top-rated niche perfumes with oud from recent years:

{
"notes": ["Oud"],
"nicheOnly": true,
"yearFrom": 2022,
"minRating": "4",
"minVotes": 300,
"maxResults": 100
}

Every perfume of a brand or perfumer from a Fragrantica URL:

{
"startUrls": [
{ "url": "https://www.fragrantica.com/designers/Maison-Francis-Kurkdjian.html" },
{ "url": "https://www.fragrantica.com/noses/Alberto_Morillas.html" }
],
"maxResults": 0
}

Fast catalogue feed of a brand, search data only, in German:

{
"brands": ["Lattafa"],
"scrapeDetails": false,
"language": "de",
"maxResults": 0
}

💰 Pricing

$0.79 per 1,000 perfume profiles — you only pay for records that are saved. Failed retries are never charged.

Perfume profilesCost
100~$0.08
1,000~$0.79
10,000~$7.90
100,000~$79.00
Record typePrice per 1,000
Perfume profile$0.79
Review$0.39
Listing (search data only)$0.29

Each run also carries a start fee of $0.001 per GB of memory: $0.008 at the default 8 GB, $0.001 for listing runs on 1 GB.

Flat-rate alternatives typically charge $29–$49/month regardless of usage.

Subscription tiers lower the rate further, down to $0.77 per 1,000 profiles, $0.37 per 1,000 reviews and $0.27 per 1,000 listings. Use Max perfumes and Max reviews per perfume to control your spend exactly.


Performance

Run sizeTypical time
20 full profilesunder 1 minute
100 full profilesabout 2 minutes
1,000 full profiles15–20 minutes
1,000 listingsunder 30 seconds

Known limitations

  • Pros and cons are published on the English edition only; other editions return empty lists.
  • Fragrance family is read from the English, German, Italian and Spanish descriptions; other editions return null.
  • Reviews are limited to those shown on the perfume page: about 200 of the most recent plus the most popular positive and negative ones.
  • Fragrantica's per-note votes ("main notes according to your votes") are not included.

Technical details

  • Source: fragrantica.com and its 22 other language editions
  • Coverage: over 140,000 perfumes, searchable by name, brand, note, perfumer, gender, year and rating
  • Memory: 8 GB default for full profiles with community votes; 1 GB is enough for listings or profiles without votes
  • Retry: automatic retry on network errors with exponential backoff and session rotation

Rate this actor

If this scraper does its job, a short review on the Reviews tab helps other users find it. Something not working? Open an issue on the Issues tab instead — issues get fixed.


Need a custom scraper?

Unfenced Group builds Apify actors for any website — for free.

If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.

Get in touch: www.unfencedgroup.nl