Quick overview
Watches multiple Vinted searches, tracks each search's 14-day median price, scores new or cheaper listings against it, skips anything an AI check flags as fake, damaged or mis-sized, and sends real deals to Discord: the best instantly, the rest in a daily digest.
How it works
- You keep a Google Sheet of searches — one row per search, each with its own Discord channel webhook, so different searches can alert different channels or people.
- Every 15 minutes the workflow reads your active rows, builds the actor's watchlist input from each row's columns, and calls
vinted-listing-lookup once per search in delta mode — so a listing you've already seen is never billed or alerted on twice.
- Every listing found is logged to a
History tab first. A Code node then reads back the last 14 days of that exact search's history and computes the median price, so “underpriced" is measured against real recent prices, not a guess.
- A deal score is built from how far below that median the listing is, a weight for its condition, and (if you turn on the actor's
includeDetails option) a weight for the seller's rating.
- An OpenAI step reads the title and description and is asked to flag anything that looks fake, replica, damaged, "for parts" or missing its size — flagged listings are dropped before anyone sees them. The step ships wired but with an empty credential, so it does nothing until you add your own key.
- A routing step sends the genuinely hot ones (30%+ below median) straight to Discord with a photo and the numbers; the merely good ones (10–29% below median) are queued for one 8am digest message instead of a constant drip of pings; everything else is already logged to
History with no further alert.
- If a search fails, or comes back with nothing, three runs in a row, you get a one-off Discord warning and the Sheet row is marked
needs attention, so a dead search or a target that's started blocking requests doesn't just go silently quiet.
Setup
- Apify token. Get one at Apify Console → Settings → API & Integrations. Create a Header Auth credential named
Apify token (Authorization / Bearer YOUR_TOKEN) and select it on the "Search Vinted (delta mode)" node.
- Build your Google Sheet, with 3 tabs
Searches needs the columns searchInput, country, maxPrice, conditions, brands, discordWebhook, active, failCount, status — one row per search you want watched, active set to yes or no. History and Digest start empty with their own column headers (listed under Requirements) — the workflow fills them in as it runs. Add a Google Sheets credential and pick this document on all 5 Google Sheets nodes in the workflow.
- Add a Discord webhook per search row. No Discord app or bot is needed: open your channel's Integrations → Webhooks → New Webhook, copy the URL, and paste it into that row's
discordWebhook column. Different rows can point at different channels.
- Optional: turn on the AI check by adding your own OpenAI credential to the “OpenAI Chat Model" node. Left empty, the red-flag check is skipped safely rather than breaking the run — a missing or malformed AI reply is always treated as "not flagged".
- Activate the workflow. Both schedules start running: every 15 minutes for searches, and once a day at 8am for the digest.
Requirements
- An Apify account and API token (free tier works for testing).
- A Google account, a Google Sheet with 3 tabs, and the Google Sheets node's OAuth2 credential set up in n8n.
- Searches
tab columns:searchInput, country, maxPrice, conditions, brands, discordWebhook, active, failCount, status`.
History tab columns: searchLabel, listingId, title, price, priceEur, currency, condition, country, url, imageUrl, discordWebhook, checkedAt.
Digest tab columns: searchLabel, title, priceEur, dealScorePct, medianPriceEur, url, imageUrl, discordWebhook, checkedAt.
- A Discord webhook URL per search row (no bot token, no Discord app).
- Optional: an OpenAI API key, only if you want the red-flag check to actually run.
Customization
- Change the HOT (default 30%) and GOOD (default 10%) deal-score thresholds in the "Route by deal score" Switch node.
- Turn on
includeDetails in the "Build Apify input" Code node to get seller ratings factored into the score, and the listing description for a sharper AI red-flag check (costs a per-listing details fetch on the actor).
- Edit the system prompt on "AI red-flag check" to flag other things you personally care about (e.g. a brand you don't trust, a size you can never return).
- Add more columns to "Queue for daily digest" / "Build digest message" if you want the digest to include a photo link or the seller's country.
- Change the 15-minute and 8am schedules on either Schedule Trigger node.