Fragrantica Scraper — Perfume Profiles & Notes avatar

Fragrantica Scraper — Perfume Profiles & Notes

Pricing

from $6.00 / 1,000 fragrantica perfume profile scrapeds

Go to Apify Store
Fragrantica Scraper — Perfume Profiles & Notes

Fragrantica Scraper — Perfume Profiles & Notes

Extract structured Fragrantica perfume profiles with brand, perfumer, note pyramid, main accords, rating, launch year and source provenance. For use with Fragrantica's authorization.

Pricing

from $6.00 / 1,000 fragrantica perfume profile scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

0

Monthly active users

6 days ago

Last modified

Share

What is Fragrantica Scraper — Perfume Profiles & Notes?

Fragrantica Scraper extracts structured perfume profiles from Fragrantica perfume-page URLs. Each dataset row is one fragrance with its name, brand and brand page, gender, fragrance family, launch year, credited perfumers, ordered main accords, top, middle and base notes, rating and rating count, editorial description, bottle image and source URL. Fragrance brands, retailers, catalog teams, trend researchers and AI agents use it to enrich product catalogs and compare scent profiles, for use with Fragrantica's authorization.

Why teams use it

  • The full note pyramid. topNotes, middleNotes and baseNotes arrive as clean arrays, ready to compare or index.
  • Accords in order. mainAccords keeps Fragrantica's ranking, so the dominant character of a scent comes first.
  • Classification fields. gender, fragranceFamily and launchYear make filtering and grouping simple.
  • Credits and ratings. perfumers, rating and ratingCount sit beside the notes.
  • Provenance on every row. sourceUrl, productId and scrapedAt tie each record back to its page.

Best fit for this Actor

  • Designed for Fragrantica perfume pages under /perfume/...html that you are authorized to collect.
  • Best fit for catalog enrichment, assortment comparison by note or accord, trend analysis and building a fragrance knowledge base for search or RAG.
  • Works with a list of known perfume URLs; keep a sheet of the fragrances you care about and paste their page links.
  • When you want retail prices and listings for the same fragrances, continue with Sephora Product Scraper for those products.

Example workflow: enriching a fragrance catalog

A merchandising analyst at a perfume retailer starts with 40 Fragrantica URLs for the men's fragrances in her catalog. She sets maxResults to 40 and keeps useApifyProxy on. The dataset returns each fragrance's family, launch year, accords and full note pyramid. She joins the rows to her catalog by name, adds mainAccords as shopper-facing filters such as "citrus" and "woody", compares which notes are most common across bestsellers, then exports the enriched catalog to her product-information system.

Input

{
"startUrls": [
{ "url": "https://www.fragrantica.com/perfume/Aramis/Tuscany-Per-Uomo-123.html" }
],
"maxResults": 5,
"proxyCountryCode": "US",
"useApifyProxy": true
}
FieldTypeWhat it controls
startUrlsarrayFragrantica perfume-page URLs as { "url": "..." }. Each starts with /perfume/ and ends in .html.
maxResultsintegerPerfume profiles saved in the run, 1 to 100. Default 5.
proxyCountryCodestringResidential proxy country: US, GB or DE. Default US.
useApifyProxybooleanRoute requests through Apify Residential Proxy. Default true, the right setting for cloud runs.

Repeated URLs are merged before any request, so each perfume is collected once.

Output

One dataset row per perfume profile.

FieldWhat it contains
name, brand, brandUrlPerfume name, designer and designer page
productId, sourceUrlFragrantica perfume ID and page URL
gender, fragranceFamily, launchYearClassification and launch year
perfumersCredited perfumer or perfumers
mainAccordsMain accords in Fragrantica's order
topNotes, middleNotes, baseNotesThe note pyramid
rating, ratingCountCommunity rating and number of ratings
description, imageUrlProfile description and bottle image URL
scrapedAtCollection time in ISO 8601
{
"sourceUrl": "https://www.fragrantica.com/perfume/Aramis/Tuscany-Per-Uomo-123.html",
"productId": "123",
"name": "Tuscany Per Uomo Aramis for men",
"brand": "Aramis",
"brandUrl": "https://www.fragrantica.com/designers/Aramis.html",
"gender": "men",
"fragranceFamily": "Aromatic Fougere",
"launchYear": 1984,
"perfumers": ["Francis Deleamont"],
"mainAccords": ["citrus", "aromatic", "fresh spicy", "anis", "woody", "leather", "soft spicy", "lavender", "warm spicy", "sweet"],
"topNotes": ["Lemon", "Lavender", "Bergamot", "Lime"],
"middleNotes": ["Anise", "Caraway", "Tarragon", "Orange Blossom"],
"baseNotes": ["Leather", "Oakmoss", "Basil", "Sandalwood", "Patchouli", "Cinnamon", "Tonka Bean"],
"rating": 4.33,
"ratingCount": 1361,
"description": "Tuscany Per Uomo by Aramis is a Aromatic Fougere fragrance for men. Tuscany Per Uomo was launched in 1984. The nose behind this fragrance is Francis Deleamont.",
"imageUrl": "https://fimgs.net/mdimg/perfume-thumbs/375x500.123.jpg",
"scrapedAt": "2026-10-01T01:44:33.926Z"
}

A field shows null, or an empty array for notes and accords, when that profile page does not display it. Each run also writes OUTPUT and RUN_SUMMARY to the default key-value store with the run outcome, such as COMPLETE, PARTIAL or INVALID_INPUT.

Pricing

This Actor uses Pay per event plus Apify platform usage. The events are:

  • Actor Start, once per run.
  • Fragrantica Perfume Profile Scraped, once for each validated perfume profile saved to the dataset.

Worked example: five perfume URLs that all return profiles cost one Actor Start event plus five profile events, plus the residential proxy and compute usage of the run. maxResults caps the number of profile events. Check the live Pricing tab on this page for current event prices.

API example

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~fragrantica-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls": [{"url": "https://www.fragrantica.com/perfume/Aramis/Tuscany-Per-Uomo-123.html"}], "maxResults": 1}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("khadinakbar/fragrantica-scraper").call(
run_input={
"startUrls": [{"url": "https://www.fragrantica.com/perfume/Aramis/Tuscany-Per-Uomo-123.html"}],
"maxResults": 1,
}
)
for perfume in client.dataset(run["defaultDatasetId"]).iterate_items():
print(perfume["name"], perfume["fragranceFamily"], perfume["mainAccords"][:3])

Use it with AI agents (MCP)

Connect the Actor to Claude, ChatGPT, Cursor or another MCP client through Apify MCP, then ask:

Extract the Fragrantica profiles for these three perfume URLs and compare their note pyramids. Tell me which notes they share and which one leans most woody.

The agent reads profile rows with get-dataset-items, can cite sourceUrl and scrapedAt as provenance, and checks OUTPUT.outcome for the run result. Cost scales with saved profiles, and maxResults keeps the scope bounded.

Best results

Starting situationHelpful actionExpected outcome
A list of fragrance namesOpen each on Fragrantica and copy its /perfume/...html URLValid inputs for every fragrance
A large catalogSplit into batches and set maxResults per batchPredictable runs and spend
Regional site behaviorChoose proxyCountryCode GB or DEPages served from that region
Building filtersUse mainAccords and fragranceFamily as facetsShopper-friendly scent categories
Comparing scentsCompare the three note arrays side by sideClear overlap between fragrances

Builder's note

I built this for catalog and research teams who need the note pyramid as data rather than as a picture on a page. I designed the parser around Fragrantica's visible headings and note links, and every record is validated before it is saved and charged, so a row in the dataset is always a complete profile. I kept the scope to perfume pages because I found a narrow, stable record is what downstream catalogs and agents rely on.

FAQ

Can I search Fragrantica by keyword?

The Actor works from perfume-page URLs. Find the fragrance on Fragrantica, copy its /perfume/...html link and add it to startUrls.

Does it collect community reviews?

It returns the profile's rating and rating count. Review text sits outside this Actor's profile scope.

Why is a field empty on one profile?

Some profiles leave out a perfumer credit, launch year or rating. The Actor keeps those fields null rather than guessing.

Responsible use

Run this Actor only where you have authorization from Fragrantica or another applicable legal basis to access and use the requested data, and keep storage and redistribution within your agreement, the site terms and applicable law. The Actor reads public perfume pages and uses no login. Fragrantica is a trademark of its owner, and this independent Actor is not affiliated with or endorsed by Fragrantica. For questions, open a ticket in the Issues tab.