Overview
Patrigios Market Analytics is a web application that fetches in-game market data from the official API of the MMORPG Black Desert Online and brings information from multiple places together in one interface.
I made it as part of a training lesson at my current job. Back then I had started in the frontend department, mostly doing HTML, CSS and some JavaScript, but later switched into backend and had to work through PHP lessons. This project was the final one: find an API of your choice and build a web project around it.
Since Black Desert is still my main game, that was an easy pick.
Working with the API
The most memorable part of this project was honestly the API itself, and not in a particularly pleasant way.
At the time, it was pretty awkward to work with. You could not just call one endpoint and get all items. Instead, items were buried behind a main category and then a subcategory, so to get everything you basically had to work through the category tree step by step and recursively pull the contents of every branch.
So for something as stupidly simple as beer, you first had to fetch the main category for consumables, then the subcategory for food, and only then you got the items inside that part of the market. And then you had to keep doing that for everything else.
The even better part was that the API rate limited pretty aggressively, so back then a full fetch of all items took me around six hours because I had to put sleeps everywhere just to not get blocked. Peak engineering.
The responses were not exactly pleasant to work with either. A lot of it came back in formats that were way uglier than they needed to be, so a decent amount of the project was really just about turning annoying API output into something usable.
I checked again recently and there is now a wrapper that offers a proper endpoint for all items and returns associative arrays too, which would have made things much easier. A bit late for me, but nice that it exists now.
Once the items were fetched, they still had to be hydrated with separate market price calls afterwards, so even after the first hurdle the process was not exactly elegant.
What the application does
The main purpose of the application is to track item prices over time and present them in a way that is more useful than the game itself.
Black Desert only shows market history for up to 90 days ingame. Other tools apparently go further, but sometimes put that behind a paywall. This one does not really care about that limit. It just keeps storing the data. And honestly I still do not really understand why this is usually capped so hard, because even after accumulating market history over a long period of time, the actual amount of stored data is still tiny.
Items are fetched first, then filled with current market information such as base price, last sold price, supply, category and the hard minimum and maximum price limits that are not really visible ingame.
On top of that, you can pin items to the homepage and set notifications for them. When a selected market value, either average price or last sold price, moves above or below a threshold, a notification gets triggered. So instead of checking ingame all the time whether it is finally worth buying or selling something, you can just let the app keep an eye on it.
That was really the useful part for me: longer history, better overview, notifications, and a few extra market details the game does not show properly.
Building it
Everything was basically done by me.
Tech-wise it used PHP, Latte, MySQL, CSS, Chart.js and the official BDO API. It was also one of the first times I worked with a real API that was not just some neat polished learning example but something actually useful and also kind of ugly.
Rate limits were annoying as hell, and later I also ran into a data issue where some market entries repeated themselves if they were not updated correctly. So for example, after looking at the collected data for a while, I noticed that an item updated on day one and day two could end up filling day two to day ten with repeated versions of the earlier values. Not exactly ideal.
Also, this was around the time AI started becoming actually useful in practice, so despite this being a learning exercise, some of the code was AI-generated. I am not particularly proud of that part, but it is what it is.
Even with those issues though, I still think it was a pretty good first real backend-heavy project. It had an actual use case, dealt with messy external data, and forced me to think about collection, storage, presentation and automation all at once.
Current state
Right now it is abandoned and somewhat broken. If you want to check it out anyways, clicke here.
Logins do not work anymore for whatever reason, but the data collection side did run for quite a while. So by now I have accumulated price information from late 2024 up to early 2026, at least as of writing this.
Theoretically, it is still a pretty useful concept. Just from the long-term data collection alone, you could do a lot more with it. It was a nice experiment, a useful personal tool, and my first time dealing with a real API that fought back a little.
I would like to fix it up again at some point.