Angie SkyHelper

NPC-to-Bazaar profit tracker for Hypixel SkyBlock. Real order book depth, live data, and filters that show only the flips worth doing.

100+verified weekly visitors
300+monthly visitors
Aug 2024first commit
100%organic traffic

The gap no other tool filled

Hypixel SkyBlock has a player-driven economy. NPC vendors sell certain items at fixed prices, sometimes well below what players will pay on the Bazaar. The opportunity is real: buy from an NPC, sell on the Bazaar. But finding which items are worth trading meant checking each one manually, pulling order book data, and doing the maths, then repeating all of it five minutes later because prices move constantly.

Other tools covered player-to-player Bazaar flips. None I could find specifically ranked fixed NPC prices against live Bazaar order books. Most players either did not know this arbitrage existed or gave up on tracking it manually.


Live data, ranked by profit

Angie pulls live data from the Hypixel Bazaar API, walks the order book to calculate real fill profit for every eligible NPC item, filters out thin markets, and returns a list ranked by daily profit.

Toggle between insta-sell and sell order pricing to see recalculated profits instantly. Thin market warnings flag items where the visible price is held up by a small buy wall that may not last. Volume and minimum daily profit filters cut out noise so only actionable flips appear. Item data loads from a local cache on first visit, so there is no waiting.

No account, no setup. Open the site and start flipping.

angie.lichargic.com
Enchanted Sugar Cane+2.4M / day
Enchanted Cocoa Bean+1.8M / day
Enchanted Carrot+940K / day
Enchanted Potato+610K / day

Technical decisions

Walk-the-book profit engine

The Bazaar API returns order books: lists of buy and sell orders at different prices and quantities. A naive calculation subtracts the NPC price from the top-of-book sell price, but that price often represents a small quantity. Fill a realistic order and you move deeper into the book, where the price gets worse.

Angie walks the order book instead, computing a weighted average fill price across the player's full daily buy limit. A return of zero from this function means no market depth, not zero profit. Those two cases need separate filters, and getting that wrong passes bad data through. Markets that fall apart under realistic volume are flagged as thin and filtered before they reach the list.

ETag/304 conditional polling

The client polls every 30 seconds. Hypixel's Bazaar data updates every 20 seconds at most, so without caching, most polls fetch identical data.

The server tracks the last fetch timestamp as an ETag. The client sends If-None-Match on every poll. If the server cache is still valid, it returns HTTP 304 with no body. The client skips the update. Full payload only travels when data actually changes. With CDN caching (s-maxage=20, stale-while-revalidate=10) on top, Hypixel gets hit at most once every 20 seconds no matter how many clients are polling.

Stale-on-failure with timeout guard

The upstream fetch to Hypixel runs with a 5-second abort timeout. Without it, a slow Hypixel response can eat the serverless function's entire execution budget, and the stale fallback never gets a chance to run. The 5-second limit leaves enough headroom for the catch block to respond before the function times out.

If Hypixel is down but the server has cached data, it serves the stale response with an X-Cache-Stale header rather than a 502. Slightly old prices are better than a broken page. A cold-start failure with no cache at all is the only case that returns an error.

Aug 17, 2024Initial commit
Jan 14, 2025First working version deployed to Vercel
Jan / Feb 2025Insta Sell / Sell Order toggle, volume filters, analytics
Jan 2026Backend proxy, ETag caching, settings, moved to angie.lichargic.com
Mar 2026V2 shipped: full refactor, accessibility, Kiara shard items
HTMLCSSJavaScriptVercel Serverless FunctionsHypixel Bazaar API

Shipping something real teaches you things you cannot learn any other way.

The ETag/304 pattern came from noticing that the client was fetching identical Bazaar payloads every 30 seconds. The stale fallback came from Hypixel going down and users seeing a broken page. The 5-second abort timeout came from watching a slow upstream response eat the entire serverless budget. Every one of those decisions came from something going wrong in production, not from planning.

Build it. Ship it. Watch it break. Fix it. That loop is how this project got from a basic profit calculator to a tool with real users, real edge cases, and a codebase with actual lessons written into it.


← Back to portfolio