How I turned a boring government database into a developer API (and got my first paying customer)
I built a REST API for the Austrian company register - here's what happened Austria has a public company register called the Firmenbuch. It lists around 500,000 registered companies: addresses, managing directors, shareholders, legal form, and annual financial statements going back years. Useful stuff if you want to research a company before a job application, check a business partner, or just satisfy your curiosity. The problem: the official way to access this data is painful. You pay €3–7 per company lookup. The UI looks like it was built in 2003. And there is no API, just a SOAP-based web service that nobody would choose to use voluntarily. I needed to look up company data for a personal project and got frustrated enough to build a wrapper. That was the start of firmafind. The technical nightmare nobody warns you about SOAP in 2026 is already bad enough. But the Austrian Firmenbuch takes it further. Annual financial statements are stored in XML where every field is mapped to a cryptographic code. There is an official "decode key", it is an Excel spreadsheet. A very old Excel spreadsheet. AI tools are basically useless here because the encoding is too obscure and too specific to get right without manually cross-referencing the sheet for every single field. Getting the parsing right took way longer than building the actual API endpoints. If you ever need to work with Austrian Firmenbuch XML data, expect to spend a good amount of time just figuring out what field HS2 means (it is the equity, by the way). From web search to API wrapper The free search tool was getting used but it was a dead end for monetization. I didn't want to put it behind a paywall the whole point was that this data should be accessible to everyone. So I thought about who else might need this. Developers building CRMs, compliance tools, onboarding flows anyone who needs to look up Austrian company data programmatically and doesn't want to deal with a SOAP API from 2003. I already had all the parsing logic from the search tool, so I rewrote it into clean REST endpoints and added caching to make it actually fast. The government API is slow. With caching, response times dropped significantly. I made the endpoints available for free at first to see if anyone would use them. They did. The overengineered detour Then the API started getting hammered with requests and Vercel's free tier couldn't keep up. I needed to monetize. My first idea was a credit system users start with 500 credits, each request costs some, buy more when you run out. Seemed logical. It was a mistake. Transaction handling, credit balances, edge cases everywhere. I spent weeks on infrastructure that had nothing to do with the actual product. Eventually I scrapped the whole thing and switched to simple monthly subscriptions. Should have done that from day one. First paying customer and a pivot I did almost no marketing. A few posts on niche Austrian subreddits that barely got seen. No ads, no outreach campaigns. Then last week I got my first paying subscriber. What surprised me: they are not Austrian. They are an international company that needed to look up Austrian business partners. The product was in German. They subscribed anyway. That was enough signal for me. I translated everything to English and shifted focus toward international customers, compliance teams, legal firms, fintechs operating in Austria who need programmatic access to Austrian company data. The data is local but the problem is not. What's next The roadmap right now: More European countries (same API structure, different registers) Credit scoring based on annual financial statements KYC API with modular Austrian register coverage: insolvency registry, beneficial ownership register, entity mapping The free search tool stays free. The API is at firmafind.at if you ever need Austrian company data in your stack. Lessons learned: don't overbuild your billing system, post in the right communities, and pay attention when a customer finds you instead of the other way around - they are telling you something.
