Hi everybody.
My name is Luca and I'm not a developer. I shipped 4 APIs in two weeks. After 10 days I have 10 subscribers, 43 calls and $0.
My day job is in finance. I don't write code for a living. A few weeks ago I needed to validate EU VAT numbers for a side project, and I got angry at the SOAP/XML mess out there. So I did the thing everyone warns you about: I built my own APIs. Cloudflare Workers, a lot of AI help, and stubbornness.
Now there are four of them, all in the same boring niche (EU B2B compliance, the stuff invoicing software needs):
- VAT validation against the official EU VIES service
- Italian fiscal code decoder (checksum, omocodia, municipality lookup)
- working days / public holidays calculator for IT, DE, FR, ES
- IBAN validator, 73 countries
Total cost so far: 0€. Cloudflare free tier does everything. They live on RapidAPI with a free plan and two paid tiers.
Now the numbers, because nobody ever posts these:
10 subscribers. 43 total calls, and I'd guess 30 of those are my own tests. Revenue: $0. The 4 reviews on my listings? Friends. I asked them personally, one by one.
So yes, this is a "nobody cares about my product yet" post. But here's what surprised me, in both directions.
Things that broke (my favorites):
- The ISTAT dataset stores the province as an object, so on launch day my beautiful API answered "birth_place: Roma ([object Object])". A stranger could have seen that on day one. Nobody did. Pure luck.
- I once configured my top plan at $9 for 500,000 requests per month. I was about to sell half a million calls for the price of a coffee. Caught it before publishing. Barely.
- A trailing slash in the base URL made my health check scream FAILURE for a whole day. One character.
- I got permanently banned from a subreddit because my first post was "clearly written with AI". It was. This sentence you're reading is the revenge version: I'm writing it myself, badly, at night, after work.
Things I learned:
"Build it and they will come" is a lie told by people who already have an audience. Marketplaces don't show new APIs to anyone, because search is sorted by reviews and traffic... that you don't have yet. It's a locked door: you need traffic to get traffic. The only keys I found so far live outside the marketplace: answering real questions on Stack Overflow (with honest disclosure that the API is mine), one tutorial on Dev.to, and this post.
Where I am now: 4 APIs, 0 customers, 0 regrets. The product works. The distribution doesn't. Yet.
Questions for people who've been here:
- Where do B2B developers actually discover APIs like these? RapidAPI search seems dead for newcomers. Is it Google? A newsletter? A Discord I don't know about?
- Would you stay on the marketplace, or self-host with Stripe and eat the discovery problem yourself?
- What's the one thing you'd fix in my positioning ("official sources, compliance-first, EU niche")?
I'll answer every comment. My English is not perfect and my energy today is even less, but I'll be here tomorrow morning with coffee.
Links in the first comment, so the post doesn't smell like an ad.
Top comments (5)
On discovery: B2B developers mostly find these by searching the problem, not a marketplace. "VIES API JSON", "validate EU VAT number API", "codice fiscale API". One page per problem with a copy-paste curl example and a free key tends to beat a listing. Package registries are the other place they look, so a tiny open-source VIES client on npm/PyPI that calls your API (or works keyless with limits) is a decent funnel. On positioning, the VAT one has a real edge you could lead with: VIES regularly returns MS_UNAVAILABLE or timeouts for a member state, and most wrappers report that as "invalid". If yours clearly says "VIES is down for DE, retry" versus "number invalid", and keeps the last successful check with its timestamp, that's the thing invoicing software actually needs.
This is the most useful comment I've received in weeks, thank you. The MS_UNAVAILABLE point is exactly right: today I return a clean error on VIES failures but I don't separate "down" from "invalid" clearly enough, and I don't keep the last good check. Building it this week: explicit vies_status (up / ms_unavailable / timeout), a retry hint, and a cached last_successful_check with timestamp. Landing pages per problem + the npm client are next on the list. I'll update here when shipped.
The "[object Object]" and trailing-slash bugs have something in common: a status check would pass both, and only someone reading the actual output would notice. A small scheduled job that calls each of the four APIs with one known input (a real VAT number, a sample fiscal code, a known IBAN) and compares the whole response body to a saved copy would have caught both on day one. It also gives you a quiet way to know a stranger is seeing what you expect while the real call volume is still low.
You're right, and it hurts because both bugs would have been caught by exactly that. Adding a cron-triggered canary this week: one known input per API, full body compare against a saved golden copy, ping me on mismatch. Cheap on Workers cron, and it doubles as a "is a stranger seeing what I expect" check while volume is low. Thanks — this is the kind of advice that usually costs money.
Links, as promised:
Tutorial showing all 4 in one flow: dev.to/luca_bianchini_515fc277c5/h...
Happy to answer questions in the comments!