{
  "openapi": "3.0.1",
  "info": {
    "title": "Distiller Scraper — Spirits Ratings & Reviews",
    "description": "Scrape Distiller (distiller.com) for spirits data. Search for whisky, bourbon, gin, rum, vodka, tequila, and more. Get Distiller scores, community ratings, ABV, tasting notes, flavor profiles, price history, and detailed metadata.",
    "version": "1.0",
    "x-build-id": "zceB3AcfbfRQHSy3K"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~distiller-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-distiller-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/crawlerbros~distiller-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-distiller-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/crawlerbros~distiller-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-distiller-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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "byType",
              "bySlug"
            ],
            "type": "string",
            "description": "What to scrape. search=find spirits by name, byType=browse by spirit type, bySlug=fetch specific spirits by slug.",
            "default": "search"
          },
          "searchQuery": {
            "title": "Search Query",
            "type": "string",
            "description": "Spirit name or keyword to search (required when mode=search). E.g. 'Fernet-Branca', 'Lagavulin', 'bourbon'."
          },
          "spiritType": {
            "title": "Spirit Type",
            "enum": [
              "whisky",
              "whiskey",
              "bourbon",
              "scotch",
              "gin",
              "rum",
              "vodka",
              "tequila",
              "mezcal",
              "cognac",
              "brandy",
              "liqueur",
              "absinthe",
              "sake",
              "shochu"
            ],
            "type": "string",
            "description": "Type of spirit to browse (required when mode=byType)."
          },
          "slugs": {
            "title": "Spirit Slugs",
            "type": "array",
            "description": "List of Distiller spirit slugs (e.g. [\"fernet-branca\", \"lagavulin-16\"]). Required when mode=bySlug.",
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort By (mode=search)",
            "enum": [
              "relevance",
              "distiller_score",
              "total_num_of_ratings",
              "community_rating",
              "name"
            ],
            "type": "string",
            "description": "Sort order for search results (only applies when mode=search). Distiller's default is Relevance.",
            "default": "relevance"
          },
          "fetchDetails": {
            "title": "Fetch Full Details",
            "type": "boolean",
            "description": "Fetch full spirit details (distiller score, tasting notes, flavor profile, price history) for each result. Recommended: true. Disable for faster but lighter output.",
            "default": true
          },
          "spiritFamily": {
            "title": "Spirit Family Filter",
            "enum": [
              "",
              "whisky",
              "bourbon",
              "gin",
              "rum",
              "vodka",
              "tequila",
              "mezcal",
              "cognac",
              "brandy",
              "liqueur",
              "absinthe",
              "sake"
            ],
            "type": "string",
            "description": "Filter by spirit family. Leave empty to include all families.",
            "default": ""
          },
          "minDistillerScore": {
            "title": "Min Distiller Score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Minimum Distiller expert score (0–100). Only return spirits scoring at or above this."
          },
          "minCommunityRating": {
            "title": "Min Community Rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Minimum community rating (0–5 stars). Only return spirits rated at or above this."
          },
          "country": {
            "title": "Country Filter",
            "type": "string",
            "description": "Filter by country of origin (e.g. Scotland, USA, Japan). Case-insensitive substring match."
          },
          "minAbv": {
            "title": "Min ABV (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Minimum alcohol by volume percentage."
          },
          "maxAbv": {
            "title": "Max ABV (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Maximum alcohol by volume percentage."
          },
          "containsKeyword": {
            "title": "Contains Keyword",
            "type": "string",
            "description": "Case-insensitive substring match against name, description, tasting notes, and keywords."
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of spirits to return (1–1000).",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}