{
  "openapi": "3.0.1",
  "info": {
    "title": "Wine Searcher Scraper — Wine Data from List",
    "description": "Extract wine scores, prices, winery info and popularity from Wine-Searcher.com. Input wine names, URLs or LWIN codes — get structured data.",
    "version": "0.1",
    "x-build-id": "h5cqy1d4rPuiWKgAv"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mrbridge~wine-searcher-scraper-from-list/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mrbridge-wine-searcher-scraper-from-list",
        "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/mrbridge~wine-searcher-scraper-from-list/runs": {
      "post": {
        "operationId": "runs-sync-mrbridge-wine-searcher-scraper-from-list",
        "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/mrbridge~wine-searcher-scraper-from-list/run-sync": {
      "post": {
        "operationId": "run-sync-mrbridge-wine-searcher-scraper-from-list",
        "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",
        "required": [
          "inputType"
        ],
        "properties": {
          "inputType": {
            "title": "Input Type",
            "enum": [
              "wineNames",
              "urls",
              "lwins"
            ],
            "type": "string",
            "description": "Select how you want to identify the wines to scrape. 'Wine Names' searches Wine-Searcher by name (best for quick lookups). 'Wine-Searcher URLs' uses direct links (most reliable, no ambiguity). 'LWIN Codes' uses industry-standard identifiers from Liv-ex (ideal for large databases and integrations).",
            "default": "wineNames"
          },
          "wineNames": {
            "title": "Wine Names",
            "minItems": 1,
            "maxItems": 1000,
            "type": "array",
            "description": "List of wine names to search on Wine-Searcher. Include the full producer name and vintage year for the most accurate match — e.g. 'Domaine Leflaive Puligny-Montrachet Les Pucelles 2020'. Generic names like 'Burgundy 2020' may return ambiguous results. One wine per line.",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Wine-Searcher URLs",
            "minItems": 1,
            "maxItems": 1000,
            "type": "array",
            "description": "Direct links to wine pages on Wine-Searcher.com. This is the most reliable input mode because it eliminates search ambiguity. Any URL matching wine-searcher.com/find/... works. One URL per line.",
            "items": {
              "type": "string"
            }
          },
          "lwins": {
            "title": "LWIN Codes",
            "minItems": 1,
            "maxItems": 1000,
            "type": "array",
            "description": "LWIN (Liquid Wine Identifier Number) codes — the wine industry's universal identifiers managed by Liv-ex. Enter LWIN11 codes (10-11 digits including vintage, e.g. '11316442021') for a specific vintage, or LWIN7 codes (7 digits, e.g. '1131644') for a wine across all vintages. Find LWIN codes on Liv-ex, Wine-Searcher, or in your wine management software. One code per line.",
            "items": {
              "type": "string"
            }
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Number of wines to scrape simultaneously. The default of 3 provides a good balance between speed and reliability. Reduce to 1-2 for large batches (500+ wines) to avoid rate limits. Increase up to 10 for small batches when speed is a priority.",
            "default": 3
          },
          "proxyCountry": {
            "title": "Proxy Country",
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code (e.g. 'FR', 'US', 'GB') controlling which merchant offers and prices are displayed. Set this to your target market — for example, 'US' shows USD prices from American merchants. Default is 'FR' (France, EUR prices).",
            "default": "FR"
          },
          "useCache": {
            "title": "Use Cache",
            "type": "boolean",
            "description": "Enable the 30-day result cache. When enabled, previously scraped wines are returned instantly at no extra cost (no PPE charge for cached results). Disable only if you need the freshest possible data on every run.",
            "default": true
          },
          "cacheTtlDays": {
            "title": "Cache TTL (days)",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "How many days cached results remain valid before being re-scraped. Only applies when 'Use Cache' is enabled. Lower values give fresher data but increase costs; higher values reduce costs but data may be outdated.",
            "default": 30
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}