{
  "openapi": "3.0.1",
  "info": {
    "title": "Vivino Scraper – Wine Prices, Ratings & Reviews",
    "description": "Collect Vivino wines and vintages with prices, ratings, grapes, merchant offers and optional reviews. Search names, combine explore filters or supply wine URLs. Separate wine and review rows support catalog enrichment and price research.",
    "version": "0.1",
    "x-build-id": "LghDEb8rSmQJgAVaH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/s-r~vivino-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-s-r-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/s-r~vivino-scraper/runs": {
      "post": {
        "operationId": "runs-sync-s-r-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/s-r~vivino-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-s-r-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": {
          "country": {
            "title": "Country",
            "minLength": 2,
            "maxLength": 2,
            "type": "string",
            "description": "Price and merchant market. Use an ISO country code; this also selects the country for requests.",
            "default": "US"
          },
          "currency": {
            "title": "Currency",
            "minLength": 3,
            "maxLength": 3,
            "type": "string",
            "description": "ISO currency code. Defaults to the selected country currency."
          },
          "search": {
            "title": "Search",
            "minLength": 1,
            "maxLength": 200,
            "type": "string",
            "description": "Wine name search, for example tignanello."
          },
          "wine_types": {
            "title": "Wine types",
            "type": "array",
            "description": "Explore wine types.",
            "items": {
              "type": "string"
            }
          },
          "grapes": {
            "title": "Grapes",
            "type": "array",
            "description": "Grape names or numeric grape ids as strings, validated against the captured Vivino grape list.",
            "items": {
              "type": "string"
            }
          },
          "region_ids": {
            "title": "Region ids",
            "type": "array",
            "description": "Vivino region ids; names are not accepted.",
            "items": {
              "type": "string"
            }
          },
          "origin_countries": {
            "title": "Origin countries",
            "type": "array",
            "description": "Wine origin country codes. Separate from the price market country.",
            "items": {
              "type": "string"
            }
          },
          "price_min": {
            "title": "Price min",
            "minimum": 0,
            "maximum": 10000000,
            "type": "number",
            "description": "Minimum price in the selected currency."
          },
          "price_max": {
            "title": "Price max",
            "minimum": 0,
            "maximum": 10000000,
            "type": "number",
            "description": "Maximum price in the selected currency."
          },
          "min_rating": {
            "title": "Min rating",
            "minimum": 1,
            "maximum": 5,
            "type": "number",
            "description": "Minimum vintage average rating. Also enables a broad explore search.",
            "default": 1
          },
          "sort_by": {
            "title": "Sort by",
            "enum": [
              "ratings_average",
              "ratings_count",
              "price",
              "discount_percent"
            ],
            "type": "string",
            "description": "Explore sort field.",
            "default": "ratings_average"
          },
          "sort_order": {
            "title": "Sort order",
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string",
            "description": "Explore sort direction.",
            "default": "desc"
          },
          "urls": {
            "title": "Urls",
            "type": "array",
            "description": "Specific HTTPS Vivino wine URLs, vintage URLs or vintage ids as strings. Wine URLs can select ?year=2021. Takes precedence over explore filters.",
            "items": {
              "type": "string"
            }
          },
          "max_wines": {
            "title": "Max wines",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum unique vintages across all cursor calls, excluding review rows.",
            "default": 50
          },
          "include_offers": {
            "title": "Include offers",
            "type": "boolean",
            "description": "Collect merchant names and their available prices for each vintage.",
            "default": false
          },
          "include_details": {
            "title": "Include details",
            "type": "boolean",
            "description": "Collect exact vintage grapes, winemaker, review count and rating distribution.",
            "default": false
          },
          "include_reviews": {
            "title": "Include reviews",
            "type": "boolean",
            "description": "Add separate review rows after each wine. Dated vintages request reviews for that year; non-vintage wines can include other years.",
            "default": false
          },
          "max_reviews": {
            "title": "Max reviews",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum unique review rows per wine across cursor calls.",
            "default": 20
          },
          "cursor": {
            "title": "Cursor",
            "minLength": 1,
            "maxLength": 500000,
            "type": "string",
            "description": "Opaque continuation cursor. Keep all other input options unchanged."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}