Fragrantica Scraper
Pricing
from $0.90 / 1,000 item scrapeds
Fragrantica Scraper
Scrape Fragrantica perfume data: notes, main accords, ratings, perfumers, gender, launch year, and reviews. Search by keyword or designer/note/perfumer URL. Export JSON, CSV, Excel.
Pricing
from $0.90 / 1,000 item scrapeds
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Fragrantica Scraper
Fragrantica Scraper extracts structured perfume data from Fragrantica — notes, main accords, ratings, gender, launch year, perfumers, and user reviews — by keyword search or by pasting a Fragrantica URL.
| Search by perfume name, brand, or note, or paste a designer, note, or perfumer page to bulk-scrape every fragrance listed on it — with optional review collection and 13 language editions. |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
Use Apify Actor parsebird/fragrantica-scraper to scrape Fragrantica perfume data. Example with ApifyClient: client.actor("parsebird/fragrantica-scraper").call(run_input={"searchQueries":["Chanel No 5"],"startUrls":["https://www.fragrantica.com/perfume/Chanel/Chanel-No-5-Parfum-28711.html"],"maxResults":25,"includeReviews":false,"maxReviewsPerPerfume":20,"language":"en"}). Inputs: searchQueries string[] optional (perfume name, brand, or note); startUrls string[] optional (perfume, designer, note, or perfumer URL — auto-detected, designer/note/perfumer expand into their listed perfumes); maxResults integer default 100 (0 = unlimited); includeReviews boolean default false; maxReviewsPerPerfume integer default 20 (0 = all available, up to ~200); language select default "en" (en, fr, de, es, it, pt, nl, pl, ru, ja, ko, ar, tr). Output fields (recordType "perfume"): perfumeId, name, url, brand, brandUrl, gender, year, imageUrl, ratingValue, ratingCount, reviewsCount, mainAccords, notesTop, notesMiddle, notesBase, perfumers, language. recordType "designer": name, url, parentCompany, country, perfumeCount. recordType "review": perfumeId, perfumeUrl, author, date, text. API docs: https://docs.apify.com/api/client/python/ and https://docs.apify.com/api/client/js/. Token: https://console.apify.com/account/integrations.
What is Fragrantica Scraper?
Fragrantica Scraper is a Fragrantica scraper and Fragrantica API alternative for collecting structured perfume data without manually copying it off fragrance pages. Search by keyword, or paste a Fragrantica perfume, designer, note, or perfumer URL, then download clean, analysis-ready fragrance data.
Use it when you need repeatable Fragrantica data extraction with scheduling, API access, integrations, and dataset exports in JSON, CSV, Excel, HTML, XML, or RSS through Apify.
What can Fragrantica Scraper do?
- 🔍 Search Fragrantica by perfume name, brand, or note — each query resolved independently.
- 🔗 Scrape a single perfume page, or paste a designer, note, or perfumer URL to expand into every fragrance listed on it. Page type is auto-detected.
- 🧪 Extract main accords with strength scores, and top/middle/base note pyramids.
- ⭐ Collect community rating, rating count, and optional full-text user reviews per perfume.
- 🌍 Read results in 13 Fragrantica language editions (English, French, German, Spanish, Italian, Portuguese, Dutch, Polish, Russian, Japanese, Korean, Arabic, Turkish).
- ⏱️ Run on demand or on a recurring schedule with Apify schedules.
- 🔌 Access results through the Apify API, webhooks, and Apify integrations.
What data can you extract from Fragrantica?
| Field | Description |
|---|---|
name | Perfume name |
brand | Designer / brand name |
gender | for women, for men, or unisex |
year | Launch year, when Fragrantica lists one |
mainAccords | Scent accords as {name, strength}, strength 0–100 |
notesTop / notesMiddle / notesBase | Note pyramid (opening, heart, dry-down) |
perfumers | Perfumer ("nose") credits |
ratingValue / ratingCount | Community rating (0–5) and number of votes behind it |
reviewsCount | Number of reviews returned by this actor for the perfume |
imageUrl | Bottle image URL |
How to scrape Fragrantica
- Open Fragrantica Scraper on Apify.
- Add one or more
searchQueries(a perfume name, brand, or note), or paste Fragrantica URLs intostartUrls. - Keep
maxResultslow (10–50) for a first test run, then scale up. Set it to0for unlimited. - Turn on
includeReviewsif you also want user reviews, and cap them withmaxReviewsPerPerfume. - Pick a
languageedition if you want results in a locale other than English. - Run the actor and open the dataset.
- Export results as JSON, CSV, Excel, or connect the dataset to your workflow through the Apify API.
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | string[] | No | — | Keywords to search — a perfume name, brand, or note. Each query runs independently |
startUrls | string[] | No | [] | Fragrantica perfume, designer, note, or perfumer URLs. Type is auto-detected; designer/note/perfumer pages expand into their listed perfumes |
maxResults | integer | No | 100 | Maximum perfumes to return across all queries and URLs. 0 = unlimited |
includeReviews | boolean | No | false | Also collect user reviews for each perfume, returned as separate review records |
maxReviewsPerPerfume | integer | No | 20 | Maximum reviews per perfume when reviews are on. 0 = all available (up to ~200) |
language | select | No | en | Fragrantica edition: English, French, German, Spanish, Italian, Portuguese, Dutch, Polish, Russian, Japanese, Korean, Arabic, or Turkish |
proxyConfiguration | object | No | Apify Proxy enabled | Proxy settings for more reliable requests |
At least one of searchQueries or startUrls must be provided.
Output example
{"recordType": "perfume","perfumeId": "9828","name": "Aventus","url": "https://www.fragrantica.com/perfume/Creed/Aventus-9828.html","brand": "Creed","brandUrl": "https://www.fragrantica.com/designers/Creed.html","gender": "for men","year": 2010,"imageUrl": "https://fimgs.net/mdimg/perfume-thumbs/375x500.9828.jpg","ratingValue": 4.32,"ratingCount": 27918,"reviewsCount": 210,"mainAccords": [{ "name": "fruity", "strength": 100 },{ "name": "sweet", "strength": 55 },{ "name": "woody", "strength": 54 }],"notesTop": ["Bergamot", "Black Currant", "Apple", "Lemon", "Pink Pepper"],"notesMiddle": ["Pineapple", "Patchouli", "Moroccan Jasmine"],"notesBase": ["Birch", "Musk", "oak moss", "Cedarwood", "Ambroxan"],"perfumers": ["Erwin Creed", "Jean-Christophe Hérault"],"popularityScore": null,"language": "en"}
Every row carries a recordType field (perfume, designer, or review) so you can filter cleanly downstream. Download results in JSON, CSV, Excel, HTML, XML, or RSS from the Apify dataset.
Python API example
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("parsebird/fragrantica-scraper").call(run_input={"searchQueries": ["Chanel No 5"],"maxResults": 25,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
JavaScript API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('parsebird/fragrantica-scraper').call({startUrls: ['https://www.fragrantica.com/designers/Tom-Ford.html'],maxResults: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
See Apify's official Python client and JavaScript client documentation for more options.
Use cases
- Build or enrich a fragrance database with notes, accords, and ratings.
- Monitor a perfume house's full catalog by scraping its designer page.
- Research notes and accords for perfumery, retail merchandising, or content sites.
- Analyze user review sentiment and ratings for specific perfumes or brands.
- Feed Fragrantica data into spreadsheets, BI tools, databases, or automation workflows.
How it works
- The actor resolves
searchQueriesinto candidate perfume pages and normalizesstartUrls. - For designer, note, or perfumer URLs, it fetches the page and expands it into every perfume listed on it.
- It deduplicates the resulting perfume URLs and applies
maxResults. - It fetches each perfume page in the selected
languageedition and parses notes, accords, ratings, and metadata. - When
includeReviewsis on, it also parses reviews already rendered on the perfume page, up tomaxReviewsPerPerfume. - It pushes each record to the default Apify dataset and charges one PPE event per item on the Apify platform.
How much does it cost to scrape Fragrantica?
What is the price per Fragrantica record?
| Event | Free | Bronze, Silver, Gold |
|---|---|---|
item-scraped | $0.0012 per record ($1.20 / 1,000) | $0.0009 per record ($0.90 / 1,000) |
Each item-scraped event means one perfume, designer, or review record was extracted and pushed to the dataset. A run returning 1,000 records costs $1.20 on the Free plan, or $0.90 on Bronze, Silver, and Gold. Apify's free trial credits cover test runs at this rate.
Is it legal to scrape Fragrantica?
Is scraping Fragrantica legal?
Scraping publicly available web data is generally allowed in many jurisdictions, but you should review Fragrantica's terms, avoid collecting private or sensitive information, and make sure your use case complies with applicable laws. For more background, read Apify's guide: Is web scraping legal?.
Other Fragrantica scrapers / Related Actors
More ParseBird actors:
- YouTube Search Scraper — Extract structured YouTube search results.
- Product Hunt Scraper — Scrape product launches and maker data.
- Pinterest Search Scraper — Extract structured Pinterest search result data.
- Unsplash Image Scraper — Collect image search data from Unsplash.
FAQ
Can I use this as a Fragrantica scraper API?
Yes. Start runs and fetch datasets through the Apify API, Python client, JavaScript client, webhooks, or integrations.
Can I scrape an entire perfume house at once?
Yes. Paste a designer URL (e.g. https://www.fragrantica.com/designers/Tom-Ford.html) into startUrls — it expands into every perfume Fragrantica lists for that house.
How does searchQueries find perfumes?
Fragrantica's own search box is a JavaScript-only widget with no public results endpoint, so this actor resolves each keyword to matching Fragrantica perfume pages and scrapes those directly. For a guaranteed exact match, paste the perfume's URL into startUrls instead.
Why is reviewsCount sometimes lower than the total reviews shown on Fragrantica?
reviewsCount reflects the reviews returned by this actor (Fragrantica renders up to roughly its 200 most recent reviews per perfume, per language edition), not necessarily the perfume's all-time review total.
Why is popularityScore always null?
Fragrantica doesn't expose a numeric popularity ranking on individual perfume pages, so this actor never fabricates one. The field is kept in the output for schema compatibility.
Does this actor require a Fragrantica account or API key?
No. It's designed for public Fragrantica pages and doesn't use any private API credentials.
Where can I report issues or request fields?
Open the Issues tab on the actor page and include your input example, run ID, and the fields you expected.