Self-hosted price tracker
Finds the cheapest store, in real time, and tells you.
A self-hosted, multi-store price tracker with scheduled checks, cheapest-store alerts, AI link research and a built-in MCP server — one Node.js process and SQLite.

- 8price extraction methods
- 7alert channels
- 17MCP tools
How it works
Finding the lowest price, live (PriceSentinel)
Add a product
Paste the product link and PriceSentinel records that first price as the base price, then keeps checking it on the schedule you choose: every 15 minutes, every 6 hours, once a day.
Every store
Each store link is read with the best method available: a built-in store adapter, schema.org JSON-LD, microdata or price heuristics, with a headless browser and AI as fallbacks.
Price history
Each link keeps its own price history, with the 30-day average, the all-time low and the highest price, converted to one currency with daily ECB rates.
Best price
The cheapest in-stock link becomes the best price, and you see exactly how much you save compared with the base price.
Alerts
When a store becomes the cheapest, an alert goes out by e-mail, Telegram, Discord, Slack, ntfy, Gotify or a signed webhook, with quiet hours and cool-downs.
AI + MCP
A built-in assistant and an MCP server with 17 tools let your AI answer questions like “what dropped this week?” or start tracking a new link for you.
About the project
Paste a product link from any online store. PriceSentinel records that first price as the base price, keeps checking it on the schedule you choose, and compares it with the same product on every other store you attach.
When a store becomes the cheapest, you hear about it — by e-mail, Telegram, Discord, Slack, ntfy, Gotify or a signed webhook. Ask your AI assistant over MCP what dropped this week.
Eight ways to read a price
Your own CSS selector or domain rule, built-in store adapters (Amazon, eMAG, eBay, Altex, cel.ro, PC Garage, evoMAG…), schema.org JSON-LD, microdata, Open Graph tags, a scoring heuristic that ignores struck-through prices, optional headless Chromium and an optional AI fallback.
AI that does the research
Type a product name and the AI plans search queries, searches the web, opens every result, reads the real price and adds the stores it trusts — with any OpenAI-compatible provider, including fully local Ollama or LM Studio.
Built for self-hosting
One Node.js process with SQLite built in, a password-protected web UI with live updates, encrypted credentials at rest and a Docker image. No external services required.
Features
Multi-store products
Any number of store links per product. The cheapest in-stock link is the best price; the all-time low is kept separately.
Your schedule
Per-product intervals (15m, 6h, 1d 6h…) with jitter, exponential back-off and a polite per-store delay.
Multi-currency
Every store's price is converted into the product's currency with daily ECB exchange rates.
Smart alerts
Cheapest store, below target, % below base, back in stock, link failing — with cool-downs and quiet hours.
AI research & assistant
Let the AI find stores for a product, or chat with your price data: “what dropped this week?”
Built-in MCP server
Streamable HTTP with bearer tokens plus a stdio bridge: 17 tools, resources and prompts for any AI client.
Screenshots
Run it
- docker compose up -d, then open http://localhost:8787 and choose an admin password.
- Or from source with Node.js 22.5+ (24 recommended): npm install, npm run build, npm start.
- Try it safely with npm run demo:shop — a local fake shop whose prices drift every minute.
Questions about PriceSentinel
Which stores does it support?
Any store that exposes a price in its page: built-in adapters cover Amazon, eMAG, eBay, Altex, cel.ro, PC Garage and evoMAG, and structured data, heuristics, headless rendering or AI handle the rest.
Does it need a cloud service?
No. It runs as one Node.js process with SQLite on your own machine, NAS or server.
Can I use a local AI model?
Yes. Any OpenAI-compatible endpoint works, including Ollama and LM Studio, as well as the Anthropic API.
How do alerts avoid spamming me?
Alerts have cool-downs, de-duplication, quiet hours that hold messages until morning, and per-channel event filters.
Contact
Got a project in mind?
Let's talk.
Tell me briefly what you want to build. I'll reply with a concrete proposal: what goes into the first version, how long it takes and what the steps look like.
