A Japanese POI API that lets you keep the data
2,629,417 points of interest across Japan, five derived signals you cannot get from raw feeds, and a licence that lets you store the results. Free tier with attribution; paid signals from $0.02 per call with no account.
The problem this solves
If you are building anything that needs to know where Japanese shops, clinics, hotels, or stations actually are, you have three options and all of them hurt:
- Google Places — accurate, but its terms forbid storing or caching results, and pricing starts at $200/month for real usage. Anything with a database is out.
- OpenStreetMap — storable and free, but coverage in Japan is patchy outside major cities, and you do the POI hygiene yourself.
- OpenPOI — genuinely good raw data (Overture Maps plus 81 municipal food-facility datasets), but it ships records as-is: 11.3% have no category at all, and many coordinates drift.
This API sits on top of that raw corpus and does the hygiene work for you, then sells the aggregate signals rather than the raw lookups.
What you actually get
| Signal | What it contains | Price |
|---|---|---|
| Municipality census | POI counts by prefecture 16 categories. 105 prefectures, 124,821 records reverse-geocoded into a prefecture where the source had none. | Free |
| Geocode quality | 0–100 score per record from coordinate plausibility, address completeness, and category resolution. Corpus mean 84.9. | Free |
| Station catchment | Facility count, category mix, and density within 500m of 1,917 rail stations. Odawara is the densest at 594 facilities. | $0.05/call |
| Chain detection | 16,064 chain stores with facility counts, prefecture coverage, and category breakdown. Top: Lawson at 18,048 sites across 109 prefectures. | $0.03/call |
| Aliveness index | 0–100 open/closed probability for all 2.63M records, from source recency, category stability, and temporal signals. | $0.02/call |
Free, right now, no key
curl "https://japan-places.local-connect-design.trade/api/v1/poi/municipality?prefecture=tokyo"
{
"census": {
"\u6771\u4eac": {
"restaurant": 41288,
"cafe": 4391,
"retail": 18204,
"service_medical": 6122
}
},
"extra": { "prefectures": 105, "backfilled": 124821, "total": 2629417 },
"attribution": "Source: koteihi-lab Japan Data Foundry, derived from OpenPOI"
}
Paid endpoints answer the same way, with a 402 first:
curl -i "https://japan-places.local-connect-design.trade/api/v1/poi/catchment?limit=3"
HTTP/2 402
PAYMENT-REQUIRED: eyJ4NDAyVmVyc2lvbiI6MiwiYWNjZXB0cyI6W3sic2NoZW1lIjoiZXhhY3Qi...
{"x402Version":2,"error":"payment_required","accepts":[
{"scheme":"exact","network":"eip155:8453","amount":"50000",
"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo":"0x...","resource":{"serviceName":"Japan Places",...},
"extra":{"priceUsd":0.05,"creditPacks":[{"usd":5,"calls":100}]}}
]}
Paying without an account
There is no signup anywhere in this flow. The 402 body states the exact
amount, the asset, the network, and the address it goes to. You sign a USDC
transfer authorization on Base, retry with the PAYMENT-SIGNATURE
header, and the facilitator settles it. If you would rather not sign per call,
per-call x402 payments are $0.02-$0.05 and monthly plans start at $25 on RapidAPI.
Nothing is charged before you sign, and the amount cannot change between the 402 and the settlement because it is fixed in the requirements.
If you are building an agent
The MCP endpoint at /mcp exposes the same five signals. Paid
tools return a payment_required result that includes the
PAYMENT-REQUIRED header, so the agent can build and sign the
payment without a second request:
claude mcp add --transport http japan-places https://japan-places.local-connect-design.trade/mcp
For a fully offline install (data bundled inside the package):
npx -y @modelcontextprotocol/server-japan-places
The licence, stated plainly
- Free tier is CC BY 4.0. Commercial use, storage, caching, modification, and redistribution are all permitted.
- You may put the results in your own database. This is the part most place APIs forbid.
- Keep the per-record
licensesandattributionsarrays when you store records, and show the attribution link wherever the data is displayed. - Paid tier is the same data and the same permissions with higher limits.
Upstream licence chain (Overture Maps under CDLA-Permissive-2.0 and Apache-2.0, 81 municipal datasets under CC BY and PDL-1.0, MLIT under CC BY 4.0) and the list of modifications we made are on the attribution page.
What it cannot do
Published on the limitations page, but the short version: 11.3% of source records have no category, some coordinates drift, closed shops persist until the weekly rebuild, and this is not a complete census of Japanese businesses. Use the quality signal to filter and the aliveness index to prioritise.
Start
- Landing page, endpoints, and pricing
- OpenAPI 3.0 specification
- Python client / TypeScript client
- llms.txt — the machine-readable version of this page