Fragrantica Scraper avatar

Fragrantica Scraper

Pricing

from $0.90 / 1,000 item scrapeds

Go to Apify Store
Fragrantica Scraper

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

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

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?

FieldDescription
namePerfume name
brandDesigner / brand name
genderfor women, for men, or unisex
yearLaunch year, when Fragrantica lists one
mainAccordsScent accords as {name, strength}, strength 0–100
notesTop / notesMiddle / notesBaseNote pyramid (opening, heart, dry-down)
perfumersPerfumer ("nose") credits
ratingValue / ratingCountCommunity rating (0–5) and number of votes behind it
reviewsCountNumber of reviews returned by this actor for the perfume
imageUrlBottle image URL

How to scrape Fragrantica

  1. Open Fragrantica Scraper on Apify.
  2. Add one or more searchQueries (a perfume name, brand, or note), or paste Fragrantica URLs into startUrls.
  3. Keep maxResults low (10–50) for a first test run, then scale up. Set it to 0 for unlimited.
  4. Turn on includeReviews if you also want user reviews, and cap them with maxReviewsPerPerfume.
  5. Pick a language edition if you want results in a locale other than English.
  6. Run the actor and open the dataset.
  7. Export results as JSON, CSV, Excel, or connect the dataset to your workflow through the Apify API.

Input parameters

ParameterTypeRequiredDefaultDescription
searchQueriesstring[]NoKeywords to search — a perfume name, brand, or note. Each query runs independently
startUrlsstring[]No[]Fragrantica perfume, designer, note, or perfumer URLs. Type is auto-detected; designer/note/perfumer pages expand into their listed perfumes
maxResultsintegerNo100Maximum perfumes to return across all queries and URLs. 0 = unlimited
includeReviewsbooleanNofalseAlso collect user reviews for each perfume, returned as separate review records
maxReviewsPerPerfumeintegerNo20Maximum reviews per perfume when reviews are on. 0 = all available (up to ~200)
languageselectNoenFragrantica edition: English, French, German, Spanish, Italian, Portuguese, Dutch, Polish, Russian, Japanese, Korean, Arabic, or Turkish
proxyConfigurationobjectNoApify Proxy enabledProxy 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 ApifyClient
client = 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

  1. The actor resolves searchQueries into candidate perfume pages and normalizes startUrls.
  2. For designer, note, or perfumer URLs, it fetches the page and expands it into every perfume listed on it.
  3. It deduplicates the resulting perfume URLs and applies maxResults.
  4. It fetches each perfume page in the selected language edition and parses notes, accords, ratings, and metadata.
  5. When includeReviews is on, it also parses reviews already rendered on the perfume page, up to maxReviewsPerPerfume.
  6. 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?

EventFreeBronze, 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 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?.

More ParseBird actors:

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.