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

40

Total users

27

Monthly active users

12 days ago

Last modified

Categories

Security

Limited permissions

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. Full profiles are capped at about 300 per run by Fragrantica's rate limit; listings are not.
proxyConfigurationobjectApify ProxyProxy settings. The default works: pages are fetched directly and paced to Fragrantica's rate limit. Proxy URLs you enter yourself are used as given.

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
}

Perfumes of a brand or perfumer from a Fragrantica URL (up to about 300 full profiles per run):

{
"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, with a minimum of $0.001: $0.001 at the default 512 MB.

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

Measured on 18 October 2026 at the default 512 MB.

Run sizeTime
20 full profilesunder 1 minute
100 full profilesabout 5–6 minutes
200 full profilesabout 13 minutes
about 300 full profiles (the most one run can collect)about 20–25 minutes
1,000 listingsunder 10 seconds

Fragrantica limits how many perfume pages one visitor may load: about 12–15 per minute, and roughly 300 in a row before it stops serving that visitor for more than half an hour. The scraper keeps to the per-minute limit. When the longer limit is reached, the run finishes with the profiles collected so far and says so in its status message. For larger jobs, run again later or split the job across runs, for example by brand. Listings come from the site's search index and are not limited.


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.
  • One run collects at most about 300 full profiles, because Fragrantica stops serving a visitor after roughly 300 perfume pages. You are charged only for the profiles delivered.

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: 512 MB default for every mode
  • 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