Read Japanese property listings with the yen and the walk minutes parsed
The Japan Real Estate API returns Japanese property listings as clean JSON.
5 active endpoints. Every call is 1 credit.
- POST/japan-re/v1/search
- POST/japan-re/v1/detail
- POST/japan-re/v1/areas
- POST/japan-re/v1/listings/search
- POST/japan-re/v1/listings/detail
What Japan Real Estate endpoints does ReefAPI ship?
5 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Japan Real Estate API
3 of 5 endpoints, ready to run
Listings for one prefecture: rent or price in plain yen, floor area in square metres, building age in years, and every nearby station with its walk time.
{ "ok": true, "meta": { "api": "japan-re", "endpoint": "search", "mode": "live", "latency_ms": 8337.5, "record_count": 51, "cache_hit": false, "completeness_pct": 100 }, "data": { "items": [ { "listing_id": "000109252250", "bukken_code": "100522784135", "source": "suumo", "listing_type": "rent", "transaction_type": "rent", "url": "https://suumo.jp/chintai/jnc_000109252250/?bc=100522784135", "title_ja": "パレス清澄", "address_ja": "東京都江東区清澄3", "price_jpy": 75000, "price_ja": "7.5万円", "admin_fee_jpy": 10000, "madori": "ワンルーム", "madori_ja": "ワンルーム", "area_m2": 17.62, "station_access": [ { "access_ja": "東京メトロ半蔵門線/清澄白河駅 歩1分", "walk_minutes": 1, "bus_minutes": null }, { "access_ja": "都営新宿線/森下駅 歩10分", "walk_minutes": 10, "bus_minutes": null }, { "access_ja": "東京メトロ東西線/門前仲町駅 歩19分", "walk_minutes": 19, "bus_minutes": null } ], "building_age_years": 38, "photos": [ "https://img01.suumo.com/front/gazo/fr/bukken/135/100522784135/100522784135_go.jpg", "https://img01.suumo.com/front/gazo/fr/bukken/135/100522784135/100522784135_co.jpg", "https://img01.suumo.com/front/gazo/fr/bukken/135/100522784135/100522784135_1o.jpg" ] }, { "listing_id": "000109264505", "bukken_code": "100522635163", "source": "suumo", "listing_type": "rent", "transaction_type": "rent", "url": "https://suumo.jp/chintai/jnc_000109264505/?bc=100522635163", "title_ja": "パレス清澄", "address_ja": "東京都江東区清澄3", "price_jpy": 77000, "price_ja": "7.7万円", "admin_fee_jpy": 10000, "madori": "ワンルーム", "madori_ja": "ワンルーム", "area_m2": 17.62, "station_access": [ { "access_ja": "東京メトロ半蔵門線/清澄白河駅 歩1分", "walk_minutes": 1, "bus_minutes": null }, { "access_ja": "都営新宿線/森下駅 歩10分", "walk_minutes": 10, "bus_minutes": null }, { "access_ja": "東京メトロ東西線/門前仲町駅 歩19分", "walk_minutes": 19, "bus_minutes": null } ], "building_age_years": 38, "photos": [ "https://img01.suumo.com/front/gazo/fr/bukken/135/100522784135/100522784135_go.jpg", "https://img01.suumo.com/front/gazo/fr/bukken/135/100522784135/100522784135_co.jpg", "https://img01.suumo.com/front/gazo/fr/bukken/135/100522784135/100522784135_1o.jpg" ] }, { "listing_id": "000108861146", "bukken_code": "100519612843", "source": "suumo", "listing_type": "rent", "transaction_type": "rent", "url": "https://suumo.jp/chintai/jnc_000108861146/?bc=100519612843", "title_ja": "京成本線 千住大橋駅 14階建 築18年", "address_ja": "東京都荒川区南千住7", "price_jpy": 76000, "price_ja": "7.6万円", "admin_fee_jpy": 8000, "madori": "1K", "madori_ja": "1K", "area_m2": 22.41, "station_access": [ { "access_ja": "京成本線/千住大橋駅 歩7分", "walk_minutes": 7, "bus_minutes": null }, { "access_ja": "JR常磐線/南千住駅 歩10分", "walk_minutes": 10, "bus_minutes": null }, { "access_ja": "都電荒川線/三ノ輪橋駅 歩14分", "walk_minutes": 14, "bus_minutes": null } ], "building_age_years": 18, "photos": [ "https://img01.suumo.com/front/gazo/fr/bukken/843/100519612843/100519612843_go.jpg", "https://img01.suumo.com/front/gazo/fr/bukken/843/100519612843/100519612843_co.jpg", "https://img01.suumo.com/front/gazo/fr/bukken/843/100519612843/100519612843_ro.jpg" ] } ], "count": 51, "prefecture": "tokyo", "listing_type": "rent", "page": 1, "pages_fetched": 1, "has_next_page": true, "next_page": 2 } }
How the Japan Real Estate API works
Japan Real Estate is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 184 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Rank Tokyo rentals by yen per square metre near a station
The three numbers that matter in a Japanese rental — the rent, the floor area and the walk to the station — are the three fields this engine normalizes. Everything else stays in Japanese, and mostly does not need to be translated.
{"prefecture": "tokyo", "listing_type": "rent", "max_walk_minutes": 10, "max_pages": 3}1 flat credit. price_jpy is plain yen, area_m2 a decimal, and station_access is one entry per line with walk_minutes already extracted.
{"listing_id": "…", "listing_type": "rent"}1 flat credit. Adds the lease terms and updated_ja, which is the only date this engine returns anywhere.
Two credits per listing you shortlist, and rent divided by area_m2 is computable straight off the grid without touching a single Japanese string.
curl -X POST https://api.reefapi.com/japan-re/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"prefecture":"tokyo","listing_type":"rent","max_pages":1}'{
"ok": true,
"data": { … },
"meta": {
"api": "japan-re",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}Reading a Japanese listing without misplacing four zeros
Japanese property prices are quoted in man-yen (units of 10,000). The number you get back is not. price_jpy is already multiplied out into ordinary yen, while the filter you send, max_price_man, is still in man-yen. Getting those two the wrong way round is a factor of 10,000. All values measured on 2026-08-27.
| Field or parameter | Unit and meaning | Measured |
|---|---|---|
| price_jpy | Ordinary yen, already expanded out of man-yen | Rent price_ja '7.5万円' returned price_jpy 75000. Sale price_ja '498万円' returned price_jpy 4980000. |
| max_price_man | Your filter, in MAN-YEN, not yen | 10 means 100,000 yen a month for rent; 5000 means 50,000,000 yen for a sale |
| area_m2 | Square metres. SUUMO publishes m2, not tsubo, so nothing is converted | 17.62 on a Tokyo 1K rental, 52.54 on an Osaka 1LDK resale |
| madori | The Japanese layout code, returned as published | 1K, 1LDK, 3LDK, and ワンルーム for a studio |
| listing_id, rentals | 12 digits, zero-padded. URL is /chintai/jnc_<id>/ | 000109252250 |
| listing_id, sales | 8 digits. The URL is path-based, /ms/chuko/<pref>/sc_<ward>/nc_<id>/ | 20227675. `detail` needs the url for sales; an id alone returns MISSING_PARAM |
| station_access[] | One entry per line, with walk_minutes parsed from the Japanese string | A Tokyo rental returned three: 1, 10 and 16 minutes on three different lines |
| areas.ar | SUUMO region code, 9 values from 010 to 090 | tokyo 030, osaka 060, fukuoka 090 |
| areas.ta | JIS prefecture code, 01 to 47 | hokkaido 01, tokyo 13, osaka 27, okinawa 47 |
| admin_fee_jpy | Monthly management fee on rentals, separate from rent | 10000 on a 75,000 yen apartment, i.e. the real monthly outlay is 85,000 |
One page is not a fixed 30 rows. A single rent page for Tokyo returned 52 items, because SUUMO lists several units under one building block and each unit becomes its own row. Two rows can therefore share title_ja, address_ja, area_m2 and building_age_years while carrying different listing_id, bukken_code and price_jpy. Deduplicate on listing_id, never on building name.
Forty-seven prefectures, yen already converted, and no listing date on the grid
Measured on 2026-08-28 on Tokyo rentals, Osaka apartments and Kyoto houses, with one listing opened individually. Three of these lines go against us, and one of them will save you money.
Japan, all 47 prefectures, addressed by romaji slug or kanji name — the free areas endpoint returns the full list with the source's own area codes. Five inventories: rent, buy_house, buy_apartment, buy_land and buy_new_house. Note that a companion product in our catalogue resolves Japanese addresses only for Tokyo, Kanagawa, Osaka and Kyoto; this engine's prefecture search covers all 47.
Against us if you expected English, and honest about it. price_jpy, area_m2, building_age_years, walk_minutes and bus_minutes come back as numbers. Everything else stays Japanese: title_ja, address_ja, madori (the floor-plan code, ワンルーム or 5DK), building_type_ja, structure_ja, station_access[].access_ja. There is no translation layer. In practice the numeric fields are enough to filter, rank and price on, and the Japanese strings are what you would display anyway.
The source prints prices in 万円 — units of ten thousand yen. A Kyoto house printed 480万円 and the response carried price_jpy 4,800,000 alongside price_ja "480万円". The conversion is right. One catch: the max_price_man filter takes the man unit, not yen, so 480 there means 4.8 million.
Against us, and it is the direct answer to the freshness question. No published, added or updated field appears on any search row, on any inventory. detail carries updated_ja — "2026/08/27" — and that is the only date the engine returns. There is no sold archive and no price history. Change detection here means paging with your own id diff.
Against us. A Tokyo rental grid row carried admin_fee_jpy 10,000; the detail response for the same listing returned admin_fee_jpy null. deposit_jpy and key_money_jpy — the shikikin and reikin that decide what a Japanese tenancy actually costs to start — exist as fields and came back null on the listing we opened. Read the fees from the grid; read the lease terms from detail.
Rent listings return area_m2 only. Buy listings return land_area_m2 and building_area_m2 separately, with area_m2 mirroring the building figure. A Kyoto house came back at 53.33 land and 50.43 building. If you are comparing across inventories, decide which one area_m2 means for you.
This one saves you money. search and listings/search returned byte-identical results on our run — 52 rows each, the same field set, all 52 ids in common — but search costs 1 credit and listings/search costs 2. Same for detail against listings/detail. Use the short names.
Against us, cosmetically. madori and madori_ja held the identical string on every row we read. One of them is redundant; pick either.
About 30 to 52 rows a page depending on inventory. Page 20 of a Tokyo rental query returned 52 fresh listings with zero overlap against page one. There is no total count in the response — only has_next_page and next_page — so you page until it says stop rather than budgeting up front.
search, detail and areas at 1 flat credit each; the longer-named duplicates at 2. No per-row billing. A single-page Tokyo rental search took five to seven seconds, which is the slowest in this batch.
What people build with Japan Real Estate
The jobs this data is most often used for.
endpoints
credit per call
Investors call search to track Japanese listing prices by area.
Dashboards use detail and madori to enrich a property.
Analysts use areas to size a Japanese market.
What Japan Real Estate data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 184 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/japan-re/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"prefecture":"tokyo","listing_type":"rent","max_pages":1}'import requests
r = requests.post(
"https://api.reefapi.com/japan-re/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"prefecture": "tokyo",
"listing_type": "rent",
"max_pages": 1
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Japan Real Estate.
Get a free key →Is price_jpy in man-yen or in yen?▾
In yen, already multiplied out, and both transaction types were checked. A Tokyo rental showing price_ja '7.5万円' returned price_jpy 75000, and an Osaka resale showing price_ja '498万円' returned price_jpy 4980000. You never need to multiply by 10,000. The one place man-yen survives is the filter: max_price_man is in man-yen, so 10 caps rent at 100,000 yen a month and 5000 caps a sale at 50 million yen.
Why does `detail` reject my sale listing_id?▾
Because SUUMO sale pages have no id-only URL to reconstruct. Rentals live at /chintai/jnc_<12-digit id>/ and can be fetched by listing_id alone; sales live at a path that includes the prefecture and the ward, such as /ms/chuko/osaka/sc_osakasayama/nc_20227675/, which cannot be derived from the id. Passing a sale listing_id returned MISSING_PARAM saying exactly that. Copy the `url` from the search result instead and pass it with the matching listing_type.
What extra fields does a sale detail carry over a search row?▾
The recurring costs and the building facts a buyer needs, and they arrive as Japanese strings rather than parsed numbers: management_fee_ja ('8600円/月(委託(通勤))'), repair_fund_ja ('4130円/月'), total_units_ja ('293戸'), zoning_ja ('2種住居'), handover_ja ('即引渡可') and updated_ja ('2026年8月2日'). Those five are not advertised in the action's declared return shape but were present on the sale listing measured. Budget for the monthly fees separately: on that 4.98 million yen apartment they came to 12,730 yen a month before anything else.
Why does title_ja change between search and detail on a sale listing?▾
Because the two pages title the same property differently. The search row carried the agent's marketing headline, and the detail page for the same listing carried a generated title of building name, price and layout. property_name_ja is the field that stayed identical across both, so use it as the building's name and treat title_ja as display copy. On rentals the two agree, since a rental row is titled with the building name in both places.
How do I find the right prefecture value?▾
Call `areas`, which returns all 47 with four fields each: a romaji slug, the kanji name, ar and ta. The slug or the kanji both work as the `prefecture` parameter. ar is the SUUMO region grouping, only nine values from 010 to 090, so tokyo and kanagawa share 030 while kyoto and osaka share 060. ta is the JIS prefecture code, unique per prefecture, 01 for hokkaido through 47 for okinawa. Pass `query` to filter, for example 'osa' returned only osaka.
Why are deposit_jpy and key_money_jpy null?▾
They came back null on all three Tokyo rentals sampled, along with deposit_ja and key_money_ja. SUUMO does not print shikikin and reikin on every listing page, and where the page does not print them there is nothing to parse, so the field is null rather than zero. Read null as unknown, not as 'no deposit required'. admin_fee_jpy is more reliably present on search rows, at 8,000 to 10,000 yen a month on the listings measured.
How much does one page actually return, and how do I get more?▾
It varies by listing type. A Tokyo rent page returned 52 items and an Osaka buy_apartment page returned 30, both with max_pages 1, because rentals list every available unit under one building block. has_next_page and next_page tell you whether to continue, and max_pages up to 20 merges pages in a single call, stopping early on an empty page. meta.stop_reason says which limit ended the run.
What do station_access entries look like, and is walk_minutes reliable?▾
Each entry has access_ja, the raw Japanese line naming the railway line and station, plus walk_minutes and bus_minutes parsed out of it. Search rows return every line a property is near: one Tokyo rental came back with three entries at 1, 10 and 16 minutes on the Hanzomon, Oedo and Shinjuku lines, each number matching its own access_ja string. The formatting differs slightly between rent and sale pages, so keep access_ja as the source of truth and treat walk_minutes as the sortable convenience field.
What is the Japan Real Estate API?▾
Japan Real Estate API is a ReefAPI endpoint group for japan property listings and details. It returns live JSON through POST requests under /japan-re/v1.
Is the Japan Real Estate API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Japan Real Estate calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Japan Real Estate login or account?▾
No login to Japan Real Estate is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Japan Real Estate data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Japan Real Estate API use?▾
Japan Real Estate actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Japan Real Estate from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call japan-re actions with the same key, credit pool and JSON envelope used by normal REST requests.
11 Real Estate APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Japan Real Estate, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 183 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-08-28.