DEV Community

member_3b7e8758
member_3b7e8758

Posted on

I built 8 small dev APIs (furigana, romaji, postal address, holidays, QR codes…)

If you've ever shipped a product that touches Japanese — or just needed a QR code without pulling in a library — you keep hitting the same small-but-annoying jobs: adding reading hints (furigana) to kanji, autocompleting an address from a postal code, counting characters properly, tokenizing text for search, normalizing full/half-width input, or generating a QR code.

I turned these into 8 small APIs. All have a free tier and live on RapidAPI. Here's the lineup and a few copy-paste examples.

The lineup

API What it does Typical use
Furigana kanji → hiragana/katakana reading + POS ruby display, e-learning, TTS preprocessing
Romaji Japanese → Hepburn romaji i18n, name conversion, search
Character Count chars / char-types / words / reading time CMS limits, SNS, proofreading
Word Segmentation tokenize Japanese into words full-text search, NLP preprocessing
Postal → Address 7-digit postal code → prefecture/city/town e-commerce checkout autofill
Calendar Japanese holidays / business days / era logistics, finance, scheduling
Text Normalizer full/half-width, half-width kana→full, kana unify, whitespace form-input cleaning, search keys, dedupe
QR Code Generator text/URL → PNG or SVG, custom color/size/EC level tickets, business cards, payments, inventory

The Japanese-text ones share a morphological-analysis engine (kuromoji / IPADIC). Postal ships Japan Post's open data, Calendar ships the official holiday dataset, and QR is pure generation — so there's no external paid dependency anywhere.

Common usage

Subscribe on RapidAPI, get an X-RapidAPI-Key, then POST JSON. No SDK required.

curl -X POST https://<api-host>/v1/<name>/read \
  -H "content-type: application/json" \
  -H "x-rapidapi-host: <api-host>" \
  -H "x-rapidapi-key: YOUR_KEY" \
  -d '{ ... }'
Enter fullscreen mode Exit fullscreen mode

Example 1: Postal code → address

Probably the highest-demand one. Great for autofilling a shipping address on checkout.

curl -X POST https://japan-postal-code-to-address-zipcode-lookup.p.rapidapi.com/v1/postal/read \
  -H "content-type: application/json" \
  -H "x-rapidapi-host: japan-postal-code-to-address-zipcode-lookup.p.rapidapi.com" \
  -H "x-rapidapi-key: YOUR_KEY" \
  -d '{"zipcode":"100-0001"}'
Enter fullscreen mode Exit fullscreen mode
{ "zipcode": "1000001", "count": 1,
  "results": [ { "prefecture": "東京都", "city": "千代田区", "town": "千代田" } ] }
Enter fullscreen mode Exit fullscreen mode

Hyphenated or full-width digits are accepted. Call it on blur and the address fills itself.

Example 2: Furigana

curl -X POST https://furigana-japanese-reading-converter.p.rapidapi.com/v1/furigana/read \
  -H "content-type: application/json" \
  -H "x-rapidapi-key: YOUR_KEY" \
  -d '{"text":"日本語","mode":"hiragana"}'
# => {"reading":"にほんご", ...}
Enter fullscreen mode Exit fullscreen mode

Because it's morphological-analysis based, context-dependent readings are handled.

Example 3: QR code (PNG or SVG)

Newest of the set. Returns a PNG data URL you can drop straight into an <img src>, raw base64, or a scalable SVG. Size, quiet-zone margin, error-correction level (L/M/Q/H) and colors are all options.

curl -X POST https://qr-code-generator-png-and-svg-custom-colors.p.rapidapi.com/v1/qr/read \
  -H "content-type: application/json" \
  -H "x-rapidapi-key: YOUR_KEY" \
  -d '{"text":"https://example.com","size":300,"ecLevel":"H","dark":"#c2452a"}'
# => { "format":"dataurl", "mimeType":"image/png", "dataUrl":"data:image/png;base64,..." }
Enter fullscreen mode Exit fullscreen mode

Ask for "format":"svg" when you want crisp print output.

Wrap-up

Offloading "small boring jobs" to APIs keeps both your frontend and backend lean. Address autofill, furigana, and one-call QR generation in particular pay off fast.

Full list with a live demo: https://claude.ai/artifact/JFqUDGK5PQ3nRYR9CFoTCB

Happy to answer anything about the engines under the hood — drop a comment.

Top comments (1)

Collapse
 
alexcodebytes profile image
Oleksandr •

Offloading text normalization and morphological analysis to pure, dependency-free microservices is such a textbook senior move. It keeps the main monolith lean and saves dozens of engineering hours down the line.
We’ve been experimenting with similar lightweight, decoupled architectures for our infra lately, and seeing someone actually ship this format at scale is pure validation. Absolutely stellar execution.