Back to Portfolio

Skoop Filters: A browser extension for Skroutz Skoop

A browser extension that turns Skroutz Skoop into a searchable, filterable list with price alerts.

Play video Play video Play video
Summary
Skroutz Skoop has hundreds of second-hand items per category and almost no filters. Skoop Filters is a Chrome and Firefox extension that loads every page into one list, builds filters automatically from titles and specs, and sends notifications for new matches and price drops. It runs entirely in the browser, with no server, and is published on Firefox Add-ons.
38
Overview

Skoop Filters turns Skroutz Skoop, Skroutz’s second-hand marketplace, into something you can actually search. It loads every page of a listing into one unified list, builds filters automatically from the item titles and specs, and notifies you when something you want appears or a price drops. It runs entirely in your browser, with no server, on Chrome and Firefox 128+.

The problem

A single Skoop category can have hundreds of items across dozens of pages and almost no filters. Finding a specific graphics card, or a phone with the right storage, means paging through results one page at a time and coming back every day to check whether something better has appeared. The items themselves carry no structured attributes, only free text in the title: “RTX 4070 Super 12GB OC”, “iPhone 13 128GB Midnight”, “LEGO 42115 Lamborghini”. Everything a buyer cares about is in there, but none of it can be filtered.

The goal was to make a second-hand marketplace feel like a proper shop: pick a category, narrow it down in a few clicks, and get told when something worth buying shows up, without writing a scraper per category and without sending anyone’s browsing anywhere.

The approach

The extension runs as a content script on the Skoop pages, so it fetches listings with the same cookies and headers as the browser itself. It downloads the pages of a listing at a gentle pace, parses the real Skoop cards, and renders them in one scrolling list with a filter sidebar next to it. On top of that sits a facet engine that reads the titles and the item specs and works out the filters by itself, plus a background process that re-checks your searches and sends desktop notifications.

What it does

One list instead of dozens of pages

All pages of a category (up to 40, around 1,900 items) are downloaded with two parallel requests, jitter between them, and shown together with infinite scroll. The cards are Skoop’s own, so they keep their look and their cart button. Refreshing is fast: the extension remembers the previous listing and re-downloads only the first pages, usually just one. The total item count that Skoop reports is used to verify that nothing changed further down, and if the numbers do not match it simply keeps crawling. A full scan runs every 30 minutes, or on demand with the “Full scan” button, so price changes on older items are still caught. You can sort by newest, lowest or highest price, best deal compared to new, or most recent price drop, and in categories where it makes sense, by price per unit such as € per GB.

Filters that build themselves

Brand, model, memory, capacity, size, series and more are derived from the item titles with statistics (tokenization, frequent n-grams, quantity and unit parsing) and, once each item page has loaded, from the structured specs Skroutz already publishes. Per-category profiles add what statistics cannot discover on their own: the platform of a game, clothing sizes, Pokémon sets, socket and chipset for PC parts. Profiles exist for PC hardware, phones and tablets, laptops, monitors, gaming, trading card games (Pokémon, Yu-Gi-Oh!, Magic, One Piece, Lorcana), clothing and shoes, books, home appliances, audio, toys and LEGO, and phone accessories. Every option shows how many results it would give, and those counts update as you change the other filters. Items that are still waiting for their specs are never hidden silently; a chip lets you include them.

The classic filters are there too: price with a histogram and a slider, condition, trusted seller, free shipping, and when an item was published (today, 3 days, a week, a month). The filter state is stored in the URL, so a search can be bookmarked or shared, and you can also save filters per listing.

Search that behaves like a power tool

The search box works inside the results and ignores case and accents. rtx 4070 requires both words, -mining excludes a word, "low profile" matches an exact phrase, and /regex/ is available when you need it.

Notifications that respect your time

Turn any filtered listing into a watch: the background process re-runs it every 15 minutes up to 24 hours, as you choose, and sends a desktop notification for new matching items, price drops (or, optionally, rises) and items that disappeared. A single product can be watched too, with a target price. You can set active hours so nothing wakes you at night, check on demand, see the history and pause or delete any watch from the popup. Checks happen in the background while the browser is open, missed checks are made up on startup, and a click on the notification opens the item or the listing with the filters already applied. If Skroutz responds with a block, the interval backs off by doubling up to 6 hours.

Offers, badges and dates

If you sent an offer to a seller, the card shows it (“My offer €400”), and when the seller counters, the counter-offer (“Counter-offer €510”) together with the price you would pay. The offer is read from the item page right after you send it and re-checked every 15 minutes while it is pending. There is a filter for “only where I sent an offer” and a notification when an offer is rejected. Other badges mark items that are new since your last visit, price drops, the discount against a new item, price per unit, and a warning when the catalogue entry does not match. The publication date, which Skoop does not show with a year, is estimated and then refined from the item page.

Built to be polite to Skroutz

This is an unofficial tool and it behaves like a considerate visitor. Crawling is deliberately conservative: two parallel requests with jitter, backoff on 429 and Retry-After, a pause after three consecutive blocks, a single crawler shared by all tabs, and a local cache so the same page is not fetched twice. It never tries to solve CAPTCHAs or bypass anti-bot measures.

Privacy

There is no server, no analytics and no third-party requests. Everything, including your filters, watches, offers and the listing cache, is stored in the browser, and the extension only talks to skroutz.gr. The privacy policy on the project site lists exactly what is stored and for how long.

Under the hood

The core (parsers, crawler, rate limiter, storage, filters, facet engine, profiles, watch logic) is plain TypeScript with no DOM except in the parsers, which makes it easy to test. The interface is built with Preact inside a Shadow DOM, so the page’s styles cannot break it and it cannot break the page. The background part is a service worker with an offscreen document for HTML parsing on Chrome, and an event page on Firefox. The store screenshots are generated from a mock Skoop with synthetic data, so they never contain real listings or Skroutz branding.

Quality

689 automated tests (Vitest with jsdom), including fixtures with real titles and pages from Skoop, a strict type-check and web-ext lint for the Firefox build. The build is reproducible from the source for the add-on reviewers, and the extension is published on Firefox Add-ons.

Tech stack

TypeScript, Preact, Vite, Manifest V3, Vitest, jsdom, puppeteer-core for the store assets.

Website · All features · User guide · Firefox Add-ons

Machine Learning Full-Stack Dev Computer Vision Cloud Architecture Data Science Deep Learning System Optimization UI / UX Design API Integration Experience Database Management Machine Learning Full-Stack Dev Computer Vision Cloud Architecture Data Science Deep Learning System Optimization UI / UX Design API Integration Experience Database Management
Valuable Feedback

Trusted By the World's Fastest Growing Companies

Digital product design and scalable web platforms

[2022-2025]

0 % Growth
Knowledge-driven systems and content architecture

[2023-2024]

0 % Growth
Lightweight development for high-performance products

[2020-2026]

0 % Growth
AUTh
bos
UOP
QuickFind
Business Managmenet
logo