{
  "openapi": "3.0.1",
  "info": {
    "title": "Vivino Scraper: Wine Prices, Ratings and Price Monitor",
    "description": "Scrape Vivino wines by wine type, grape, origin country, price range and minimum rating. Get ratings, market prices, offer counts, taste profile and food pairings per wine, and track price changes between runs. Plain HTTP, fast and low cost.",
    "version": "1.0",
    "x-build-id": "ljgVsRpeTzkWI7bM4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kamerozkan~vivino-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kamerozkan-vivino-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/kamerozkan~vivino-scraper/runs": {
      "post": {
        "operationId": "runs-sync-kamerozkan-vivino-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/kamerozkan~vivino-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-kamerozkan-vivino-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": {
          "market": {
            "title": "Market (shop prices of this country)",
            "enum": [
              "US",
              "GB",
              "DE",
              "FR",
              "IT",
              "ES",
              "NL",
              "BE",
              "AT",
              "CH",
              "DK",
              "SE",
              "NO",
              "IE",
              "CA",
              "AU",
              "JP",
              "BR",
              "HK",
              "SG"
            ],
            "type": "string",
            "description": "Vivino shows the prices of shops that sell in this country. Two-letter code, for example US, GB, DE, FR, IT, NL, DK, CH, CA, AU. Requests go through Apify Proxy in this country.",
            "default": "US"
          },
          "wineTypes": {
            "title": "Wine types",
            "type": "array",
            "description": "Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "red",
                "white",
                "sparkling",
                "rose",
                "dessert",
                "fortified"
              ],
              "enumTitles": [
                "Red",
                "White",
                "Sparkling",
                "Rose",
                "Dessert",
                "Fortified"
              ]
            }
          },
          "grapes": {
            "title": "Grapes",
            "type": "array",
            "description": "Vivino grape names, for example \"Cabernet Sauvignon\", \"Pinot Noir\", \"Chardonnay\", \"Shiraz\", \"Nebbiolo\". Leave empty for all grapes.",
            "items": {
              "type": "string"
            }
          },
          "originCountries": {
            "title": "Wine origin countries",
            "type": "array",
            "description": "Where the wine is made, as two-letter codes, for example \"fr\", \"it\", \"es\", \"us\", \"ar\", \"au\". Leave empty for all countries.",
            "items": {
              "type": "string"
            }
          },
          "priceMin": {
            "title": "Minimum price per bottle",
            "minimum": 0,
            "type": "integer",
            "description": "In the market currency. Leave empty for no minimum."
          },
          "priceMax": {
            "title": "Maximum price per bottle",
            "minimum": 0,
            "type": "integer",
            "description": "In the market currency. Leave empty for no maximum."
          },
          "minRating": {
            "title": "Minimum Vivino rating",
            "enum": [
              "1",
              "3",
              "3.5",
              "3.8",
              "4",
              "4.2",
              "4.5"
            ],
            "type": "string",
            "description": "Only wines rated at least this average (1 to 5), for example 3.5 or 4.0.",
            "default": "3.5"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "rating",
              "ratingsCount",
              "price",
              "discount"
            ],
            "type": "string",
            "description": "Order of the results. Price sorts lowest first.",
            "default": "rating"
          },
          "currency": {
            "title": "Currency (optional)",
            "type": "string",
            "description": "Three-letter currency code for prices, for example USD, EUR, GBP. Empty uses the market currency."
          },
          "trackPriceChanges": {
            "title": "Track price changes between runs",
            "type": "boolean",
            "description": "Remember each wine's price for these filters and report previousPrice, priceChange, priceChangePercent and isNew. Run on a schedule for a price history.",
            "default": true
          },
          "onlyChanges": {
            "title": "Only output wines whose price changed or that are new",
            "type": "boolean",
            "description": "After the first run, output (and charge) only new wines and wines with a different price.",
            "default": false
          },
          "maxItems": {
            "title": "Max wines",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many wines. You are charged per wine, so this also caps the cost of the run.",
            "default": 100
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language for style and food names, for example en, de, fr, es, it.",
            "default": "en"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy is used by default: residential exits in the market country, included in the price per wine. Leave as is unless you know you need something else.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}