Romania's company registry, now callable from Claude and Cursor (MCP + REST)
Last month I wrote about building a free API over Romania's company registry — 4.2 million firms from ONRC, plus ANAF data, because there was no free way to look a company up by CUI without opening four government portal
Last month I wrote about building a free API over Romania's company registry — 4.2 million firms from ONRC, plus ANAF data, because there was no free way to look a company up by CUI without opening four government portals.
The part people actually replied about was the MCP server. So this post is the how-to: wiring Romanian company data into Claude, Cursor, or any MCP-capable client in about three minutes.
Why an agent wants this
If you do anything with Romanian companies — B2B sales, invoicing, compliance, KYB, market research — the workflow is always the same shape. Someone hands you a name or a CUI. You go to the registry. You copy fields into a doc. You check whether the firm is still active. You try to find the phone number.
That is exactly the loop an agent should close on its own. The only reason it can't is that the registry speaks Romanian HTML tables and CAPTCHA, not JSON.
The config
Point your client at the streamable HTTP endpoint:
{
"mcpServers": {
"leadgen": {
"url": "https://leadgen-mcp.adrianhomelab.com/mcp"
}
}
}
That's it for Cursor and Claude Code. For a client that only reads command-line servers, wrap it with mcp-remote:
npx -y mcp-remote https://leadgen-mcp.adrianhomelab.com/mcp
No key is required to start. Anonymous access is 5 queries a day per IP — enough to try it.
What the agent gets
Sixteen tools, all read-only. The ones I use most:
| Tool | For |
|---|---|
lookup_business |
One firm by CUI or name: status, address, CAEN codes, ANAF VAT state |
lookup_companies |
Batch up to 100 CUIs, one row out per row in, same order |
match_companies |
Fuzzy match up to 500 rows (name + county + domain) against the registry |
find_company_by_domain |
Which company owns this website — with SPF/DMARC audit |
lookup_director |
Every firm a person is registered at — useful for due diligence |
lookup_financials |
Turnover, profit, employees, year by year |
watch_company / watch_caen
|
Monitor a firm, or an entire CAEN activity code, for changes |
A real exchange looks like this:
You: which company runs emag.ro, and is its VAT still active?
Agent: (calls
find_company_by_domain, thenlookup_business) — Dante International SA, CUI 14399840, Bucharest, VAT-active as of this month.
The watch_* pair is the sleeper feature: it turns the registry into a feed. Watch a competitor's CUI and you hear about a director change, a branch opening, or a new CAEN code without polling anything yourself.
If you'd rather not use MCP
Same data over plain REST:
curl "https://leadgen.adrianhomelab.com/lookup_business?cui=14399840" \
-H "X-API-Key: lg_your_key"
Every response carries RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset, and GET /usage tells you where you stand without spending a query. Interactive docs with try-it-out: leadgen.adrianhomelab.com/docs.
The limits, stated plainly
- No key: 5 queries/day per IP. Free key from /start: 25/day. Resets 00:00 UTC.
- Every endpoint is free during launch. When paid plans arrive, Pro (€9/month) takes the full 2008–2025 financial history, ratios, health scores, revenue/employee/VAT filters, CSV export and lists over 25 rows. The free tier keeps the company profile, status and risk, ANAF data, last-year figures, and lists up to 25 rows. Nothing free today becomes paid without warning.
- Batches count per row, and a batch larger than your remaining quota is refused whole rather than half-executed.
Why I'm giving it away
The registry data is public. What isn't public is a sane interface to it, and every Romanian developer has now paid the same tax of scraping HTML tables or buying a €200/month KYB subscription for data that came out of a government PDF.
So the free tier is real, not a trial: it exists because the alternative for most people is not paying me, it's giving up on the lookup. The paid tier is for teams who need depth — a decade of financials, ratios, bulk export.
Getting started
Two minutes, no card:
- Get a free key at leadgen.adrianhomelab.com/start
- Add the MCP config above, or call the REST endpoint with
X-API-Key - Ask your agent about a Romanian company
Landing page (EN): leadgen.adrianhomelab.com/en · MCP server card: leadgen-mcp.adrianhomelab.com
It's a solo project, so if something is missing — a field you need, an endpoint that doesn't exist, a county your data is wrong for — reply here or open an issue from the /feedback page. I read both.
More from me
- Romania's company registry has no free API — so I built one (4.2M firms, MCP + REST)
- Building a Romanian Business Registry API: 4.2M Companies as Queryable JSON
- Building a SEC EDGAR Filings Scraper: 10-K Risk Factors and 13F Holdings as Clean JSON
- Building a Price & Competitor Monitor That Diffs Shopify and AliExpress Prices
- Building a Vertical Corpus Builder: Clean JSONL Datasets for LLM Fine-Tuning
- Building a Change & Alert Engine That Webhooks Any Diff on Any URL
- Building a Romania Mall Store Directory: Every Store in 29 Malls, One Schema
- Scraping Romanian Public Contracts: A Native-Language Tender & Awarded Deals Scraper
- Building a 12-City US Building Permits Scraper With Python
- Building an EU Safety Gate (RAPEX) Product Recall Scraper With Python
- How I Built a Water Utility Risk Intelligence Tool With Python and MCP
- Building an Aviation Hub API: Airports, Airlines, Live Flights & Weather From Six Keyless Sources
- I Stopped Scraping Business Directories and Built an MCP Server on Official Registry Data
- I Built a Canada Product Recalls & Safety Alerts Scraper That Reads Open Government Data
- I Built a Telegram Members Scraper That Reads Public Chat Stats Without Login
- Building a WHOIS & DNS Lookup Tool: Domain Intelligence in One...
- Building an AI Web Crawler That Outputs LLM-Ready Content Chunks
- Building a Real-Time Press Release Monitor with Python and RSS...
- Building a Universal Property Listing Scraper with Python and ...
- Tracking Tech Sentiment in Real-Time with VADER and Python
- How I Built a Product Hunt Scraper That Tracks Launches in Rea...
- 5 APIs Every Developer Needs for Content Processing (RSS, Extraction, Sitemaps, AI)
- How to Extract Clean Content From Any Website Sitemap (For SEO...
- Scraping 187,000 Romanian Businesses: Building a B2B Lead Gene...
- Make Any Website AI-Readable: Generating llms.txt Files with
- I Built an RSS Aggregator That Extracts Full Article Content (...
Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.