{
  "openapi": "3.0.1",
  "info": {
    "title": "Fragrantica Perfume Scraper — Notes, Accords, Votes & Reviews",
    "description": "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.",
    "version": "0.0",
    "x-build-id": "s61D91oM0eyskdmkx"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/unfenced-group~fragrantica-perfume-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-unfenced-group-fragrantica-perfume-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/unfenced-group~fragrantica-perfume-scraper/runs": {
      "post": {
        "operationId": "runs-sync-unfenced-group-fragrantica-perfume-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/unfenced-group~fragrantica-perfume-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-unfenced-group-fragrantica-perfume-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "Keywords to search on Fragrantica: a perfume name, brand or collection. Each query runs separately. Example: [\"Sauvage\", \"Baccarat Rouge\"].",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Fragrantica URLs",
            "type": "array",
            "description": "Fragrantica pages to scrape. A perfume page returns that perfume. A designer, note or perfumer page returns every perfume listed under it. A search URL with ?query= runs that search. Any language edition works. Example: https://www.fragrantica.com/designers/Chanel.html",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Only perfumes from these brands (designers). Names are matched to Fragrantica's spelling. Example: [\"Chanel\", \"Maison Francis Kurkdjian\"]. Works with or without a search query.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "notes": {
            "title": "Notes",
            "type": "array",
            "description": "Only perfumes that contain all of these notes, in English. Example: [\"Oud\", \"Rose\"].",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "perfumers": {
            "title": "Perfumers",
            "type": "array",
            "description": "Only perfumes created by one of these perfumers (noses). Example: [\"Francis Kurkdjian\"].",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "gender": {
            "title": "Gender",
            "enum": [
              "any",
              "female",
              "male",
              "unisex"
            ],
            "type": "string",
            "description": "Only perfumes Fragrantica lists for this gender. Example: \"unisex\".",
            "default": "any"
          },
          "yearFrom": {
            "title": "Launched from (year)",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Only perfumes launched in or after this year. 0 means no limit. Example: 2020.",
            "default": 0
          },
          "yearTo": {
            "title": "Launched until (year)",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Only perfumes launched in or before this year. 0 means no limit. Example: 2025.",
            "default": 0
          },
          "minRating": {
            "title": "Minimum rating",
            "enum": [
              "any",
              "3",
              "3.5",
              "4",
              "4.5"
            ],
            "type": "string",
            "description": "Only perfumes with at least this average community rating (out of 5). Example: \"4\".",
            "default": "any"
          },
          "minVotes": {
            "title": "Minimum rating votes",
            "minimum": 0,
            "type": "integer",
            "description": "Only perfumes rated by at least this many members. Useful to skip obscure entries. Example: 500.",
            "default": 0
          },
          "nicheOnly": {
            "title": "Niche brands only",
            "type": "boolean",
            "description": "Only perfumes from brands Fragrantica classifies as niche. Example: true.",
            "default": false
          },
          "scrapeDetails": {
            "title": "Open each perfume page (full profile)",
            "type": "boolean",
            "description": "On: every perfume is opened for the full profile (notes, accords, perfumers, votes, similar perfumes, pros and cons). Off: fast, cheaper listing records from Fragrantica's search index only (name, brand, year, gender, rating, review counts, popularity). Example: true.",
            "default": true
          },
          "includeCommunityVotes": {
            "title": "Include community votes",
            "type": "boolean",
            "description": "Adds the full vote breakdowns for longevity, sillage, price value, seasons, day/night, gender and ownership, plus similar perfumes and pros/cons. Turn off for faster runs without these fields. Only applies when full profiles are on. Example: true.",
            "default": true
          },
          "includeReviews": {
            "title": "Include reviews",
            "type": "boolean",
            "description": "Also save member reviews from each perfume page as separate records (recordType \"review\"), with each reviewer's own votes. Up to about 210 reviews per perfume: the most recent ones plus the most popular positive and negative. Example: false.",
            "default": false
          },
          "maxReviewsPerPerfume": {
            "title": "Max reviews per perfume",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum reviews saved per perfume when reviews are on. 0 means all reviews on the page. Example: 20.",
            "default": 20
          },
          "language": {
            "title": "Language edition",
            "enum": [
              "en",
              "de",
              "es",
              "fr",
              "it",
              "nl",
              "pl",
              "pt",
              "ro",
              "cs",
              "hu",
              "sv",
              "tr",
              "el",
              "ru",
              "uk",
              "sr",
              "mn",
              "he",
              "ar",
              "ja",
              "zh",
              "ko"
            ],
            "type": "string",
            "description": "Fragrantica edition to read. Note names, accords, descriptions and reviews come in that language. Example: \"en\".",
            "default": "en"
          },
          "maxResults": {
            "title": "Max perfumes",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of perfumes to return across all queries, filters and URLs. Reviews do not count toward this limit. 0 means no limit. Example: 100.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. The default Apify Proxy works for Fragrantica; change only if you have a reason to. Example: {\"useApifyProxy\": true}.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}