{
  "openapi": "3.0.1",
  "info": {
    "title": "Vestiaire Collective Scraper - Products, Prices & Sellers",
    "description": "Scrape Vestiaire Collective, the luxury resale marketplace: listings with prices in 7 markets, full product details with seller statistics, sold-item comparables, sale campaigns and the journal news feed. Search, URL and journal modes with sorting, filters and scheduled change tracking.",
    "version": "0.1",
    "x-build-id": "RkryEyWffqMpXqTbv"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~vestiaire-collective-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-vestiaire-collective-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/abotapi~vestiaire-collective-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-vestiaire-collective-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/abotapi~vestiaire-collective-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-vestiaire-collective-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",
              "urls",
              "journal"
            ],
            "type": "string",
            "description": "How to discover what to scrape. Search reads keyword listings. Paste URLs walks any mix of category, brand, sale, new-arrival, seller and product links. Journal collects the editorial news feed.",
            "default": "search"
          },
          "searchTerms": {
            "title": "Keywords",
            "type": "array",
            "description": "Only used when Mode = Keyword search. One entry per keyword (for example chanel bag, hermes birkin). Each entry becomes its own listing walk in the selected market.",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Vestiaire Collective links (any mix)",
            "type": "array",
            "description": "Only used when Mode = Paste URLs. Paste any mix of search links (/search/?q=term), category and brand pages (/women-bags/handbags/chanel/), brand pages (/chanel/), sale campaigns (/c/flash-price-drops-10474/), new arrivals (/new-items/), seller profiles (/profile/123), product pages (...-123456.shtml) and journal pages (/journal/...). The default walks one example of every shape.",
            "default": [
              "https://www.vestiairecollective.com/search/?q=chanel%20bag",
              "https://www.vestiairecollective.com/women-bags/handbags/",
              "https://www.vestiairecollective.com/women-bags/handbags/chanel/",
              "https://www.vestiairecollective.com/chanel/",
              "https://www.vestiairecollective.com/women-bags/handbags/chanel/grand-shopping/",
              "https://www.vestiairecollective.com/c/flash-price-drops-10474/",
              "https://www.vestiairecollective.com/new-items/",
              "https://www.vestiairecollective.com/profile/32743220",
              "https://www.vestiairecollective.com/journal/",
              "https://www.vestiairecollective.com/search/?q=chanel%20bag&page=2&sortBy=price-asc",
              "https://www.vestiairecollective.com/women-bags/handbags/chanel/black-leather-grand-shopping-chanel-handbag-72479772.shtml"
            ],
            "items": {
              "type": "string"
            }
          },
          "journalCategories": {
            "title": "Journal categories (optional)",
            "type": "array",
            "description": "Only used when Mode = Journal. Leave empty for the whole news feed, or narrow it to categories such as fashion-stories, inside-vestiaire, labels-we-love, sustainability, promotions, fashion-reports or authentication-101.",
            "items": {
              "type": "string"
            }
          },
          "market": {
            "title": "Market",
            "enum": [
              "AU",
              "US",
              "GB",
              "FR",
              "DE",
              "IT",
              "ES"
            ],
            "type": "string",
            "description": "Which storefront to read: Australia (default), United States, United Kingdom, France, Germany, Italy or Spain. Links carry their own market; keywords and editorial reads use this selection. Prices follow the market's currency.",
            "default": "AU"
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "relevance",
              "price-asc",
              "price-desc",
              "recency"
            ],
            "type": "string",
            "description": "Order of listings: the marketplace's own relevance order (default), price low to high, price high to low, or most recent first.",
            "default": "relevance"
          },
          "soldOnly": {
            "title": "Sold listings only",
            "type": "boolean",
            "description": "On = walk only sold listings (useful for resale price comparables). Off = the marketplace's default feed, which mixes available items with recently sold ones.",
            "default": false
          },
          "conditions": {
            "title": "Condition",
            "type": "array",
            "description": "Only used for keyword, category and brand walks. Leave empty for every condition, or pick one or more.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "Never worn, with tag",
                "Never worn",
                "Very good condition",
                "Good condition",
                "Fair condition"
              ]
            }
          },
          "universes": {
            "title": "Department",
            "type": "array",
            "description": "Only used for keyword, category and brand walks. Leave empty for every department, or pick one or more.",
            "items": {
              "type": "string",
              "enum": [
                "women",
                "men",
                "kids"
              ],
              "enumTitles": [
                "Women",
                "Men",
                "Kids"
              ]
            }
          },
          "priceRanges": {
            "title": "Price ranges",
            "type": "array",
            "description": "Only used for keyword, category and brand walks. Leave empty for every price, or pick one or more buckets in the market's currency.",
            "items": {
              "type": "string",
              "enum": [
                "0-100",
                "100-500",
                "500+"
              ],
              "enumTitles": [
                "0 to 100",
                "100 to 500",
                "500 and up"
              ]
            }
          },
          "editorPicks": {
            "title": "Curator picks",
            "type": "array",
            "description": "Only used for keyword, category and brand walks. Leave empty for everything, or pick one or more of the marketplace's own edit labels.",
            "items": {
              "type": "string",
              "enum": [
                "We love",
                "Vintage",
                "Exceptional Pieces"
              ],
              "enumTitles": [
                "We love",
                "Vintage",
                "Exceptional Pieces"
              ]
            }
          },
          "fetchDetails": {
            "title": "Fetch product details",
            "type": "boolean",
            "description": "Read each product’s full record, including all photos, sizes, condition, material, measurements, fees and seller statistics. Enabled by default. Turn this off for listing cards only (usually one preview photo and no detail attributes). Pasted product pages always read details. Journal article bodies are always included when available.",
            "default": true
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "The single cap on the run: stop after collecting this many records across all searches, links and journal pages. Set 0 for no cap.",
            "default": 20
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Leave the default for the cheapest run: the feeds serve over the ordinary shared connection. If runs fail with connection errors, switch to residential.",
            "default": {
              "useApifyProxy": true
            }
          },
          "resumeFromRunId": {
            "title": "Continue a previous run",
            "type": "string",
            "description": "Paste a previous run ID or dataset ID to continue that interrupted run without returning or charging for records already collected there. For recurring monitoring of the same scope, use Recurring updates below instead."
          },
          "incrementalMode": {
            "title": "Recurring updates (only return what changed)",
            "type": "boolean",
            "description": "Turn this on for daily or recurring monitoring. The first run returns all matching records as NEW. Later runs return only NEW and UPDATED records.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, recurring updates only)",
            "type": "string",
            "description": "Optional. Name this monitoring campaign to keep its memory stable. Leave empty to key the memory on this run setup automatically."
          },
          "emitUnchanged": {
            "title": "Also return unchanged records (recurring updates only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return records that have not changed since the last run, marked UNCHANGED. This returns and bills extra rows you already have.",
            "default": false
          },
          "emitExpired": {
            "title": "Also return records that are gone (recurring updates only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return records that were present before but are no longer found, marked EXPIRED. Only produced when a run covered its whole setup.",
            "default": false
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Output field names that should NOT mark a record as UPDATED. The likes counter is always ignored because it ticks continuously, and scrapedAt is stamped fresh on every fetch.",
            "items": {
              "type": "string"
            }
          },
          "mcpConnectors": {
            "title": "MCP connectors",
            "type": "array",
            "description": "Optionally send records into the apps you already use through MCP connectors. Empty means no export.",
            "items": {
              "type": "string"
            }
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL or id of the Notion page under which record pages are created. Required to enable the Notion connector."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on records written to each connector per run. Does not affect the dataset.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}