Open-source Vinted monitoring platform for resellers.
Real-time scraping · Discord & Telegram alerts · Proxy rotation · Account linking · Beautiful dashboard
⭐ If you find Vintrack useful, please consider giving it a star on GitHub! It helps the project grow and reach more people. ⭐
Live Demo • Browser Extension • Self-Hosting • Features • Community • Architecture • Screenshots • Contributing
You can try Vintrack without hosting anything yourself:
- URL: https://vintrack.jakobaio.dev
- Login: sign up with Discord OAuth
- Default role: new accounts start as Free
- Browser extension: download the latest Chrome ZIP or Firefox XPI from GitHub releases
- Support: join the Discord server if you need help: https://discord.gg/WbEpEjaWjP
- Open https://vintrack.jakobaio.dev and sign in with Discord.
- Open Proxies and add your own proxy group if your account does not have server proxy access.
- Open Monitors or the dashboard and create a monitor with your Vinted search, region, price, size, brand, and country filters.
- Enable notifications:
- Discord: paste your Discord webhook URL in the monitor notification dialog.
- Telegram: click Connect Telegram, send the generated
/connect ...command to the bot shown in the dialog, then enable Telegram for the monitor.
- Watch new items in the dashboard, live feed, Discord, or Telegram.
- Optional: install the browser extension and link your Vinted account from the Account page to like items, send offers, message sellers, and keep your Vinted session synced.
- Free demo accounts normally use their own proxies. Server proxies are not guaranteed on the public demo.
- The demo is shared infrastructure, so monitoring reliability can vary.
- Telegram users never need a bot token or chat ID. The public demo shows the bot username during the connect flow.
- Discord notifications require your own Discord webhook URL.
- Vinted account linking is optional, but it is required for actions such as liking items, sending offers, sending messages, and checkout-link tools.
Vinted doesn't have a proper notification system — you either refresh manually or miss the deal. Vintrack solves this by monitoring listings and sending alerts to Discord or Telegram before anyone else can see the item.
Built for resellers who need speed. Open-sourced for the community.
- Sub-2s detection — catch items faster than any other tool
- Anti-detection — TLS fingerprint rotation with proxy support
- Granular filters — price, size, category, brand, color, and country/region
- Direct Interaction — Like items, send offers, and message sellers from the dashboard
- Browser session sync — Chrome extension keeps linked Vinted sessions fresh without copying tokens manually
- Experimental checkout tooling — browser-assisted checkout link creation with checkout-link history
- Full dashboard — no CLI needed, everything from the browser
- One-command deploy —
docker compose upand you're live
Create unlimited monitors with custom search queries. Each monitor polls the Vinted API independently with configurable intervals (default: 1.5s). Results are deduplicated via Redis — you'll never see the same item twice.
Fine-tune every monitor with:
- Search query — keyword-based filtering
- Price range — min/max price boundaries
- Categories — over 900+ Vinted categories supported
- Brands — filter by specific brands
- Colors — filter by item colors
- Sizes — clothing size filtering
- Seller Origin — filter by seller country (e.g. only show items from France or Italy)
- Region — choose the Vinted market per monitor (e.g.
vinted.de,vinted.hu,vinted.fr)
Link your Vinted account directly in the dashboard to interact with listings without leaving Vintrack:
- Like / Unlike items — one-click like/unlike from the feed or monitor view
- Send Offers — make price offers directly to sellers (with built-in 60% minimum price validation)
- Message Sellers — start a conversation or ask questions instantly
- Browser-assisted checkout — Vintrack opens the native Vinted checkout flow in your browser and stores checkout links for recovery
- Multi-Image Preview — view extra images and high-res gallery directly in the dashboard
- Account management — link/unlink with region selection (12 EU markets)
- Browser Sync Extension — automatically refreshes the linked session when you log in to Vinted in the same browser
- Status monitoring — see your linked account status, username, and domain at a glance
The recommended linking flow is the browser extension. Install it once, sign in to Vinted in the same browser, then connect it from the Vintrack Account page. Manual token linking still exists as a fallback, but normal users should not need it.
The extension is the easiest way to use linked Vinted accounts on the live demo and in self-hosted installs.
- Chrome download: vintrack-browser-sync-extension.zip
- Firefox download: vintrack-browser-sync-extension-firefox.xpi
- Source:
apps/vintrack-browser-sync-extension - Install in Chrome: open
chrome://extensions, enable Developer mode, click Load unpacked, and select the extracted extension folder - Install in Firefox: open
about:debugging#/runtime/this-firefox, click Load Temporary Add-on, and select the Firefox build during development. For normal users, publish a Mozilla-signed.xpi. - Connect in Vintrack: open Account, click Download Extension if needed, then Link With Installed Extension
- What it syncs:
access_token_web,refresh_token_web, Vinted domain, browser user agent, and the Vintrack light/dark theme - What it does not sync: the full cookie header or full cookie jar
For distribution, attach vintrack-browser-sync-extension.zip and the Mozilla-signed vintrack-browser-sync-extension-firefox.xpi to every GitHub release. The live demo and documentation can point to /releases/latest/download/..., so users do not need to browse the repo.
Vintrack includes an experimental buy module for controlled checkout tests. It is intentionally separated from the normal monitoring workflow.
- The buy module is experimental and may break when Vinted changes authentication or checkout protection.
- Use a dedicated buy account for this module, not your main personal Vinted account.
- The browser-assisted checkout flow uses the shipping address and checkout context already stored on your linked Vinted account.
- Vintrack opens the native Vinted checkout link; the user chooses the payment method and completes payment manually.
- Vintrack does not replace or override your delivery address or payment method in this flow.
- The extension is strongly recommended, otherwise automatic session recovery may fail.
- Use experimental buy actions only if you understand that Vinted may reserve an item before payment is completed.
Rich alerts sent instantly when a new item is found:
- Item image, title, price (including fees), size, condition
- Seller region & rating (enriched via HTML scraping)
- Direct buy link + app deep link + dashboard link
- Discord webhooks per monitor
- Telegram account connection via one-time bot code — users never see the bot token or chat ID
- Per-monitor notification toggles
Server-Sent Events (SSE) stream items directly to the dashboard in real-time. See every new listing appear the moment it's detected — no manual refresh needed.
Two-tier proxy architecture designed for scale:
- Server proxies — shared pool for premium users
- User proxy groups — BYOP (Bring Your Own Proxies) for free users
- Automatic rotation with
tls-clientTLS fingerprint spoofing - Input validation — garbage lines are silently skipped
- Supports
http://,https://,socks4://,socks5://, andhost:port:user:passformats - Note:
vinted.co.ukdoes not support IPv6 proxies. Use IPv4 proxies for UK monitors.
Built-in role system with Discord OAuth:
| Role | Server Proxies | Own Proxies | Admin Panel |
|---|---|---|---|
| Free | ❌ | ✅ | ❌ |
| Premium | ✅ | ✅ | ❌ |
| Admin | ✅ | ✅ | ✅ |
Need help, want to exchange setups with other users, or report a bug?
- Join the Vintrack Discord server: https://discord.gg/WbEpEjaWjP
- Use the server for community support, feature feedback, setup questions, and bug reports
- For reproducible code issues, GitHub issues and PRs are still welcome
┌──────────────────┐
│ Internet │
└────────┬─────────┘
│
┌────────▼─────────┐
│ Caddy │
│ (Auto HTTPS) │
└────────┬─────────┘
│
┌─────────────▼──────────────┐
│ Control Center │
│ Next.js 16 · React 19 │
│ Prisma · NextAuth · SSE │
└──┬──────────┬──────────┬───┘
│ │ │
┌────────────▼──┐ ┌────▼────────┐ │
│ PostgreSQL │ │ Redis │ │
│ (Storage) │ │(Cache+Dedup)│ │
└────────────▲──┘ └──▲────────▲─┘ │
│ │ │ │
┌────────┴────────┴──┐ ┌──┴───▼──────────┐
│ Go Worker │ │ Vinted Service │
│ tls-client · proxy │ │ Account linking │
│ rotation · scrape │ │ Likes · Offers │
└──────┬──────────┬──┘ └────────┬────────┘
│ │ │
┌────────▼──┐ ┌───▼───────┐ ┌───▼────────┐
│ Vinted API │ │ Alerts │ │ Vinted API │
│ (Proxied) │ │Discord/TG │ │ (Authed) │
└──────────── └───────────┘ └────────────┘
Data flow:
- User creates a monitor via the dashboard
- Go Worker detects the new monitor within 5s and starts a goroutine
- Goroutine polls Vinted API through rotating proxies
- New items are deduplicated via Redis, stored in PostgreSQL, published via SSE
- Discord and Telegram notifications fire immediately for configured monitors
- Users with a linked Vinted account can like items, send offers, and message sellers directly via the Vinted Service
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | Next.js 16, React 19, Tailwind CSS 4, shadcn/ui | Dashboard & UI |
| Backend | Next.js Server Actions, API Routes | API & auth |
| Worker | Go 1.25, tls-client, goroutines | High-perf scraping |
| Vinted Service | Go 1.25, TLS client, Redis sessions | Account linking & item actions |
| Database | PostgreSQL 15 + Prisma ORM | Persistent storage |
| Cache | Redis 7 | Deduplication & SSE pub/sub |
| Auth | NextAuth.js v5 (Discord OAuth2) | Authentication |
| Proxy | tls-client with SOCKS4/5 & HTTP(S) | Anti-detection |
| Reverse Proxy | Caddy 2 | Auto HTTPS via Let's Encrypt |
| Deployment | Docker Compose | One-command orchestration |
Use this section if you want to run your own Vintrack instance instead of using the public demo.
Before starting, prepare:
- Docker & Docker Compose v2
- Discord Developer App (for OAuth2 login)
- Proxies for Vinted monitoring (residential recommended)
- A public HTTPS domain for production
- Optional: a Telegram bot from @BotFather if you want Telegram notifications
If you need proxies, I currently recommend Webshare Proxy Server as the better option. Webshare also offers a small amount of free proxies, which can be enough for short initial tests.
- Referral link: https://www.webshare.io/?referral_code=qhu9q567qrqp
- You can check your proxies here to see whether they work with Vinted: https://proxy6.net/checker
git clone https://github.com/JakobAIOdev/Vintrack-Vinted-Monitor
cd vintrackcp .env.example .envEdit .env and configure at least the required auth values:
# Generate with: openssl rand -base64 32
AUTH_SECRET=your-random-secret
# From Discord Developer Portal
AUTH_DISCORD_ID=your-discord-client-id
AUTH_DISCORD_SECRET=your-discord-client-secret
# Local development
AUTH_URL=http://localhost:3000
DASHBOARD_URL=http://localhost:3000For production, both URLs must use your public HTTPS domain:
AUTH_URL=https://your-domain.com
DASHBOARD_URL=https://your-domain.comDASHBOARD_URL is used for dashboard links in notifications. If it is missing or set to localhost, Telegram item alerts still send, but the Telegram dashboard button is omitted because Telegram rejects local URLs.
In the Discord Developer Portal:
- Create an application.
- Open OAuth2.
- Add your redirect URL:
- Local:
http://localhost:3000/api/auth/callback/discord - Production:
https://your-domain.com/api/auth/callback/discord
- Local:
- Copy the client ID and client secret into
.env.
Add one proxy per line:
nano apps/worker/proxies.txtExample:
http://user:pass@host:portFree users can also add their own proxy groups from the dashboard. Admin and premium users can use server proxies when configured.
docker compose up -d --buildOpen:
http://localhost:3000The most important variables are:
# Required — generate with: openssl rand -base64 32
AUTH_SECRET=your-random-secret
# Required — from Discord Developer Portal
AUTH_DISCORD_ID=your-discord-client-id
AUTH_DISCORD_SECRET=your-discord-client-secret
# Required in production — public app URL used by auth and dashboard links
AUTH_URL=https://your-domain.com
DASHBOARD_URL=https://your-domain.com
# Optional — Telegram notifications
TELEGRAM_BOT_TOKEN=your-telegram-bot-token
TELEGRAM_BOT_USERNAME=your_bot_username_without_at
TELEGRAM_WEBHOOK_SECRET=your-random-webhook-secretTelegram support uses a secure connect-code flow. The bot token stays on the server; users connect from the dashboard by sending a generated /connect VT-... command to your bot.
- Create a Telegram bot with @BotFather.
- Set these variables in the root
.env:
TELEGRAM_BOT_TOKEN=your-telegram-bot-token
TELEGRAM_BOT_USERNAME=your_bot_username_without_at
TELEGRAM_WEBHOOK_SECRET=your-random-webhook-secret- Make sure
DASHBOARD_URLpoints to your public HTTPS dashboard:
DASHBOARD_URL=https://your-domain.com- After deploying Vintrack on HTTPS, register the webhook:
curl "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/setWebhook?url=https://your-domain.com/api/telegram/webhook&secret_token=$TELEGRAM_WEBHOOK_SECRET"- Verify delivery:
curl "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getWebhookInfo"- In Vintrack, open a monitor's notification dialog, click Connect Telegram, send the generated command to the bot shown in the dialog, then enable Telegram for that monitor.
Users do not need to know the bot token or chat ID. They only need the bot username shown in Vintrack and the one-time connect command.
Telegram webhooks require a public HTTPS URL. For local testing, expose localhost:3000 with ngrok or Cloudflare Tunnel.
Example with an ngrok URL:
AUTH_URL=http://localhost:3000
DASHBOARD_URL=https://your-ngrok-subdomain.ngrok-free.dev
TELEGRAM_BOT_TOKEN=your-telegram-bot-token
TELEGRAM_BOT_USERNAME=your_bot_username_without_at
TELEGRAM_WEBHOOK_SECRET=your-random-webhook-secretThen register the webhook against the tunnel URL:
curl "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/setWebhook?url=https://your-ngrok-subdomain.ngrok-free.dev/api/telegram/webhook&secret_token=$TELEGRAM_WEBHOOK_SECRET"Recreate the services after changing .env:
docker compose up -d --force-recreate control-center workerFor a first production deployment from the published images:
docker compose pull
docker compose up -dIf you want to build the images directly on the server instead:
docker compose up -d --buildMake sure your domain points to the server and ports 80 and 443 are available for Caddy.
For release updates on a server, pull the new images and run the migration service before recreating the app services:
git pull
docker compose pull
docker compose up --force-recreate control-center-migrate
docker compose up -d --force-recreate control-center worker vinted-service caddyThe control-center-migrate service uses the same pulled control-center image and runs npx prisma migrate deploy, so new Prisma migrations are applied even when deploying with docker compose pull.
Do not use prisma db push --accept-data-loss in production. Schema changes should be represented as committed Prisma migrations.
Vintrack accepts multiple proxy formats (one per line in apps/worker/proxies.txt):
http://user:pass@host:port
socks5://user:pass@host:port
host:port:user:pass
host:port
Invalid lines are automatically skipped with a warning in logs.
- Vinted Account Linking
- Like / Unlike items
- Send offers to sellers
- Send messages to sellers
- One-click buy
- Auto-buy with price rules
- Auto Chat Module
- Price history tracking & charts
- Saved searches / favorites
- Rate limiting per user
- API tokens for external integrations
- Mobile app (React Native)
Contributions are welcome! Here's how:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please make sure to:
- Follow existing code style
- Test your changes with
docker compose up --build - Update documentation if needed
- vinted-dataset by @teddy-vltn — Categories, brands, and sizes data used in the filter system
This project is licensed under the MIT License.
Built with ❤️ for the reselling community
If Vintrack helped you catch a deal, consider giving it a ⭐








