Skip to content

September 24, 2026 · 11 min read

Fragrantica Perfume Scraper: 1,083 of 1,125 Runs Succeeded (2026)

By Crawlerbros Engineering Team

A thousand results costs $2.00 on Apify's free plan, providing a direct way to collect structured olfactory metadata including brand, year, perfumer, and fragrance pyramid notes. The scraper extracts perfume data, offering two input modes: direct perfume URLs or designer pages which are auto-expanded. This Actor is built for market researchers, catalog managers, and developers who need clean scent profiles and aggregated ratings without managing proxies. It is not for anyone who needs the full text of individual user reviews, which the records do not include.

Try it before you read further. Apify's free plan includes $5.00 of usage every month with no credit card, enough for up to 2,500 results at $0.002 each before platform usage. Open Fragrantica Perfume Scraper on Apify and run the prefilled example.

How reliable is Fragrantica Perfume Scraper in production?

Across the last 30 days of public runs on the Apify platform, Fragrantica Perfume Scraper recorded 1,125 runs with the following outcomes.

Outcome Runs Share
Succeeded 1,083 96.3%
Failed 39 3.5%
Aborted by the user 3 0.3%
Timed out 0 0.0%
Total 1,125 100.0%

Recent telemetry shows about 4 in a hundred runs to fail or time out. For scheduled runs, build in automatic retries and alert mechanisms to handle occasional failed executions. Because 3 runs were aborted by users out of 1,125 total runs, ensure your automation workflows allow enough time for sessions to complete.

What does it cost to run Fragrantica Perfume Scraper?

Each result costs $0.002 on Apify's free plan, which is $2.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

Apify plan Per result Per 1,000 results
FREE $0.002 $2.00
BRONZE $0.00167 $1.67
SILVER $0.00133 $1.33
GOLD $0.001 $1.00
PLATINUM $0.001 $1.00
DIAMOND $0.001 $1.00

Worked example: collecting 10,000 results costs $20.00 in result charges before run-start fees and platform usage. With 3.5% of runs failing or timing out in the last 30 days, budget for re-running a portion of those batches rather than assuming every run completes.

The maxItems control has the largest effect on your bill because it directly governs how many items are written to the dataset. To test whether this Actor suits your project for a negligible cost, run the example input which caps output at 3 results.

How do you run Fragrantica Perfume Scraper from the API?

None of its 3 controls is strictly required, so the defaults below produce a valid run on their own. Every value in the payload below comes from the published schema's own prefills, which means you can paste it, swap the token, and get a real result.

Call the synchronous endpoint to start a run and receive dataset items in one request:

curl -X POST "https://api.apify.com/v2/acts/crawlerbros~fragrantica-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"perfumeUrls":["https://www.fragrantica.com/perfume/Chanel/Coco-Mademoiselle-611.html"],"maxItems":3}'

The same run from Python, using the official client:

from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")

run_input = {
  "perfumeUrls": [
    "https://www.fragrantica.com/perfume/Chanel/Coco-Mademoiselle-611.html"
  ],
  "maxItems": 3
}

run = client.actor("crawlerbros~fragrantica-scraper").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

And from Node.js:

import { ApifyClient } from 'apify-client'

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })

const input = {
  "perfumeUrls": [
    "https://www.fragrantica.com/perfume/Chanel/Coco-Mademoiselle-611.html"
  ],
  "maxItems": 3
}

const run = await client.actor('crawlerbros~fragrantica-scraper').call(input)
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)

That endpoint blocks until the run completes. Fine while you are testing a handful of records, risky once a run takes minutes: a dropped connection loses the response even though the run itself finished. Switch to an asynchronous start with polling or a webhook before you schedule anything.

Which Fragrantica Perfume Scraper inputs matter, and which can you skip?

The perfumeUrls and designerUrls controls define your search scope, letting you target specific products or entire brand catalogs. Most practitioners should leave default settings untouched and adjust only the maxItems control to manage run volume.

What does Fragrantica Perfume Scraper return?

The returned records are ideal for powering recommendation engines or enriching retail catalogs with detailed note pyramids and ratings. They conspicuously do not contain raw community reviews, delivering aggregated rating values and counts instead.

Identity

  • id: Integer - Fragrantica perfume ID
  • url: String - Perfume page URL
  • brand: String - Brand / designer
  • fullName: String - Full title (Name + Brand + gender)
  • gender: String - for women, for men, or for women and men
  • year: Integer - Launch year

Composition

  • perfumers: Array - Perfumer / nose names
  • topNotes: Array - Top notes
  • middleNotes: Array - Middle / heart notes
  • baseNotes: Array - Base notes
  • allNotes: Array - All notes combined
  • mainAccords: Array - Main accord names (e.g., floral, woody, citrus)

Ratings & Media

  • ratingValue: Number - Average user rating (1-5 scale)
  • ratingCount: Integer - Total number of ratings
  • imageUrl: String - Cover image URL

Metadata

  • scrapedAt: String - ISO 8601 scrape timestamp

These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

How do you build the workflow end to end?

Open Fragrantica Perfume Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

  1. Enter a target designer page into the designerUrls control or specific perfume URLs into the perfumeUrls array.
  2. Set maxItems to 3 for your initial run to verify output fields without incurring heavy charges.
  3. Check the dataset for the name, brand, and gender fields to confirm the primary identity data is present.
  4. Verify that the topNotes, middleNotes, and baseNotes arrays are populated for the returned items.
  5. Inspect the ratingValue and ratingCount fields to ensure the numerical metrics arrived correctly.
  6. Increase the maxItems control to your desired volume after confirming the output meets your project requirements.

How do you apply it? Three worked playbooks

These are Fragrantica Perfume Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

Use case 1: Perfume market research

Outcome: Track new launches by brand or accord

Configure: Set designerUrls to a target brand page like the Chanel designer page and set maxItems to 500.

Working method: Execute the run against a major designer catalog and sort the resulting dataset by the year field to identify recent additions.

Deliverable: A structured dataset containing the latest perfume releases along with their main accords and perfumers.

Stop condition: The year field for returned items falls outside the target launch window.

Use case 2: E-commerce enrichment

Outcome: Pull perfume metadata for product catalogs

Configure: Populate the perfumeUrls input with direct links to the specific products currently in your catalog.

Working method: Run the Actor for your precise product list and map the returned fields directly into your inventory database.

Deliverable: A complete inventory file populated with accurate fragrance pyramids, gender classifications, and image URLs.

Stop condition: The run returns empty records or fails repeatedly for active product URLs.

Use case 3: Accord analysis

Outcome: Find perfumes with specific note combinations

Configure: Input multiple designerUrls for houses known for distinct scent profiles and set maxItems to 500.

Working method: Query the mainAccords and allNotes arrays across the dataset to isolate fragrances sharing specific aromatic components.

Deliverable: A filtered database report grouping fragrances by shared top, middle, or base notes.

Stop condition: The collected dataset reaches the maxItems limit without uncovering new note combinations.

What breaks, and how do you design around it?

  • Over the last 30 days, 3.5% of public runs failed and 0.0% timed out. Build retries and alerting around those rates rather than assuming every run completes.

When you reach the 500 item limit per run, split your target brands into separate requests across multiple runs. If a specific page encounters issues, check the URL format against documented examples to ensure proper expansion.

When should you not use Fragrantica Perfume Scraper?

Do not use this Actor if you need to download thousands of raw, full text user reviews for sentiment analysis, because the output only provides aggregated rating values and counts. If your project involves collecting data on spirits, whisky, or gin instead of fragrances, use the Distiller Scraper which is specifically built for the Distiller database. This Actor is also capped at 500 items per run, so massive site-wide crawls of hundreds of thousands of items will require multiple partitioned batches rather than a single execution.

What should you check before trusting the output?

  • Verify that the ratingValue field is a valid number and ratingCount is an integer rather than zero defaults for popular fragrances.
  • Check that the topNotes, middleNotes, and baseNotes arrays contain entries for classic perfumes where a fragrance pyramid is documented.
  • Confirm that the brand and name fields are returned as strings without empty values for standard items.
  • Monitor runs to ensure that result counts align with the maxItems control and stop the run if persistent failures occur.

None of this proves a record is correct. It gives a scheduled Fragrantica Perfume Scraper run defined points where it should stop instead of quietly passing bad data downstream.

Frequently asked questions

What is the success rate of the Fragrantica Perfume Scraper?

In the last 30 days, the Actor recorded 1,125 runs with 1,083 succeeding, 39 failing, 3 aborted by users, and 0 timing out. This results in a 96.3% success rate, with about 4 in a hundred runs failing or timing out.

How much does it cost to extract 1,000 perfume records?

A thousand results costs $2.00 on Apify's free plan. Paid Apify plans reduce this per-result cost further, and result charges only apply to items written to the dataset on top of run-start fees and platform usage.

Do I need to configure a proxy before running the scraper?

No configuration is needed because a US residential proxy is hardcoded and applied automatically. Fragrantica is fronted by DataDome which blocks Apify datacenter IPs with 403. The scraper combines RESIDENTIAL/US traffic with curl_cffi Chrome 131 TLS impersonation, with automatic session rotation on each failed attempt (up to 5 retries per URL).

How many items can a single run extract?

The maxItems control lets you extract up to 500 perfumes per run, with a default setting of 20 items. Larger brand catalogs can be scraped by partitioning designer URLs across multiple runs.

What happens if specific data fields are missing from a perfume page?

The Actor uses a flat schema with typed defaults, meaning it returns zero nulls. Missing data fields are populated with empty strings, zeros, or empty arrays depending on the data type.

Where to go next

When you are ready to run it, open Fragrantica Perfume Scraper on Apify; the free plan covers up to 2,500 results a month.

Start with the Fragrantica Perfume Scraper Actor page for the current input schema, pricing tier, and run history.

If you are comparing approaches rather than committing to one Actor, these category pages list every option we publish:

Readers running Fragrantica Perfume Scraper commonly pair it with:

Resources

  • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-24.

  • Actor last updated by its maintainers on 2026-09-06.

  • Run outcome figures cover the 30 day public window ending 2026-09-24.

  • Fragrantica Perfume Scraper on Apify

● Featured actors

Fragrantica Perfume Scraper

Extract perfume data from Fragrantica.com like name, brand, year, perfumer, fragrance pyramid (top/middle/base notes), main accords, ratings, and reviews. No proxy required.

Run on Apify ↗