Skip to main content
Glama
googlarz

Vinted MCP and CLI Server

🛍️ Vinted MCP & CLI сервер

Предоставьте вашему ИИ-ассистенту доступ к Vinted — ищите, сравнивайте цены и отслеживайте продавцов в 19 странах.

npm version CI License: MIT Node ≥18


Идея

У Vinted нет публичного API. Этот пакет устраняет этот пробел — он позволяет ИИ-ассистентам напрямую взаимодействовать с Vinted через Model Context Protocol.

Подключите его к Claude, Cursor или любому другому MCP-совместимому ассистенту и просто спросите:

"Найди мне куртку North Face дешевле €60 в Германии, в хорошем состоянии или лучше"

"Сравни цены на Air Jordan 1 во Франции, Италии и Великобритании"

"Что сейчас продает продавец #123456? Есть что-нибудь дешевле €20?"

ИИ сам определяет, какие фильтры использовать, делает запрос к Vinted и дает вам готовый ответ — без ручного поиска, фильтрации и переключения вкладок.

Также поставляется как CLI-инструмент и TypeScript-библиотека для прямого использования.


Что это такое?

MCP-сервер, CLI-инструмент и TypeScript-библиотека для площадки подержанных вещей Vinted. Официального API нет — инструмент инициализирует сессионный cookie с публичной страницы каталога и обращается к приватному JSON API, который внутренне использует веб-приложение Vinted.

  • 🤖 MCP-сервер — подключите к Claude, Cursor или любому ИИ-ассистенту с поддержкой MCP

  • 🖥️ CLI-инструмент — перенаправляйте результаты, следите за новыми объявлениями, сравнивайте цены из терминала

  • 📦 TypeScript-библиотека — импортируйте opSearch, opCompare и т.д. прямо в свой код


Установка

npm install -g @googlarz/vinted-client

Или запустите без установки:

npx @googlarz/vinted-client search "levis 501"

Быстрый старт CLI

# Search (JSON by default)
vinted search "levi's 501" --country fr

# Pretty table
vinted search "levi's 501" --country de --output table

# Filter by price, brand, condition
vinted search "adidas samba" \
  --price-min 20 --price-max 80 \
  --brand adidas \
  --condition new_with_tags,very_good \
  --output table

# Watch for new listings every 30s
vinted search "air jordan 1" --watch 30

# Walk all pages and collect up to 500 results
vinted search "vintage denim" --all --max-items 500

# Get a specific item (ID or URL)
vinted item 1234567
vinted item https://www.vinted.fr/items/1234567

# Seller profile + active listings
vinted seller 987654
vinted seller-items 987654 --output table

# Cross-country price comparison (6 countries by default)
vinted compare "north face jacket" --output table

# Browse category tree
vinted categories --query shoes --output table

# Look up brand IDs
vinted brands "stone island"

# What's trending right now
vinted trending --country fr --output table

Команды

Команда

Описание

search <query>

Поиск объявлений с полной поддержкой фильтров

`item <id

url>`

Получить подробную информацию о товаре

seller <id>

Профиль продавца

seller-items <id>

Товары, выставленные продавцом на продажу

compare <query>

Сравнение цен между странами

brands <query>

Поиск ID брендов по названию

categories

Просмотр дерева категорий

trending

Новые / популярные объявления

debug

Проверка сессионных cookies (для устранения неполадок)

Глобальные флаги

Флаг

Описание

`--output json

table`

Формат вывода (по умолчанию: json)

--country <cc>

Код страны (см. ниже)

--proxy <url>

HTTP/HTTPS прокси (также: VINTED_PROXY_URL)

--no-cache

Отключить кэширование ответов

Флаги поиска

Флаг

Описание

--price-min / --price-max

Диапазон цен

--brand <names>

Названия брендов (автоматически преобразуются в ID)

--brand-ids <ids>

ID брендов через запятую

--category-id <n>

ID категории (используйте vinted categories для просмотра)

--size-ids <ids>

ID размеров через запятую

--condition <list>

new_with_tags, new_without_tags, very_good, good, satisfactory

--sort <s>

relevance, price_low_to_high, price_high_to_low, newest_first

--date-from / --date-to

Фильтр по дате (ГГГГ-ММ-ДД)

--all

Пройти по страницам и собрать все результаты

--max-items <n>

Лимит для --all (по умолчанию 1000)

--watch [interval]

Опрашивать каждые N секунд на наличие новых объявлений (по умолчанию 60с)


Поддерживаемые страны

fr de uk it es nl pl pt be at lt cz sk hu ro hr fi dk se


MCP-сервер

Добавьте Vinted в любой MCP-совместимый ИИ-ассистент (Claude, Cursor и т.д.).

Настройка — Claude Desktop

Добавьте в claude_desktop_config.json:

{
  "mcpServers": {
    "vinted": {
      "command": "npx",
      "args": ["-y", "@googlarz/vinted-client/mcp"]
    }
  }
}

Настройка — Claude Code

claude mcp add vinted -- npx -y @googlarz/vinted-client/mcp

MCP-инструменты

Инструмент

Описание

search_items

Поиск с полной поддержкой фильтров

get_item

Детали товара по ID или URL

get_seller

Профиль продавца

get_seller_items

Активные объявления продавца

compare_prices

Сравнение цен между странами

get_trending

Популярные объявления

search_brands

Поиск брендов

get_categories

Дерево категорий

Примеры промптов после подключения:

"Найди мне Nike Air Max 95 дешевле €70 в Германии, размер 43, в очень хорошем состоянии"

"Сравни цены на пуховик North Face во Франции, Германии и Италии"

"Следи за продавцом #987654 и сообщи мне, когда он выставит что-то дешевле €30"


Использование библиотеки

import { VintedClient, opSearch, opCompare, opSearchAll } from '@googlarz/vinted-client';

const client = new VintedClient();

// Basic search
const results = await opSearch(client, {
  query: 'levi\'s 501',
  country: 'de',
  priceMax: 50,
  condition: ['very_good', 'good'],
  sortBy: 'price_low_to_high',
});

console.log(results.items);

// Collect all pages concurrently (3-page prefetch window)
const all = await opSearchAll(client, {
  query: 'vintage band tee',
  country: 'uk',
  maxItems: 300,
});

// Multi-country price comparison
const report = await opCompare(client, {
  query: 'air jordan 1 retro',
  countries: ['fr', 'de', 'uk', 'it'],
});

Опции клиента

const client = new VintedClient({
  proxyUrl: 'http://proxy:8080',   // or VINTED_PROXY_URL env var
  cacheTtlMs: 60_000,              // response cache TTL (0 = disable)
  rateLimitPerSec: 3,              // requests/sec per country
  rateLimitBurst: 6,               // burst capacity
  timeoutMs: 20_000,               // per-request timeout
});

Как это работает

У Vinted нет публичного API. Эта библиотека:

  1. Инициализирует сессию, обращаясь к vinted.{cc}/catalog и перехватывая auth-cookies, которые устанавливает фронтенд Vinted.

  2. Вызывает приватный JSON API (/api/v2/...) с этими cookies, имитируя заголовки запросов браузера.

  3. Автоматически переинициализирует сессию при получении 401 — токены истекают, библиотека восстанавливается незаметно для пользователя.

  4. Ограничивает частоту запросов (rate-limit) по странам с помощью алгоритма «маркерной корзины» (настраиваемый burst + refill), чтобы избежать ошибок 429.

  5. Кэширует ответы с помощью LRU+TTL — 60 секунд для результатов поиска, 1 час для статических данных, таких как категории.

  6. Использует HTML-парсинг в качестве резервного варианта для страниц товаров, заблокированных DataDome (JSON-LD + извлечение через регулярные выражения).

  7. Предварительно загружает 3 страницы параллельно в opSearchAll для максимизации пропускной способности в рамках лимитов.


Поддержка прокси

Если Vinted блокирует ваш IP (часто случается на облачных ВМ и CI), установите прокси:

VINTED_PROXY_URL=http://user:pass@proxy:8080 vinted search "nike"
# or
vinted search "nike" --proxy http://user:pass@proxy:8080

Стандартные переменные окружения HTTPS_PROXY / HTTP_PROXY также учитываются.


Переменные окружения

Переменная

Описание

VINTED_PROXY_URL

URL HTTP/HTTPS прокси

VINTED_CACHE_TTL_MS

TTL кэша в мс (по умолчанию 60000)

VINTED_RATE_LIMIT_PER_SEC

Запросов в секунду на страну (по умолчанию 3)

VINTED_RATE_LIMIT_BURST

Размер burst для маркерной корзины (по умолчанию 6)

VINTED_BROWSER

Установите 1 для использования скрытого браузера для получения деталей товара


Требования

  • Node.js ≥ 18

  • Опционально: playwright + puppeteer-extra-plugin-stealth для режима --browser / VINTED_BROWSER=1


Лицензия

MIT © googlarz


Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/googlarz/vinted-mcp-cli'

If you have feedback or need assistance with the MCP directory API, please join our Discord server