SUUMO vs at home — Japan Rent by Ward, Two Sites Compared avatar

SUUMO vs at home — Japan Rent by Ward, Two Sites Compared

Pricing

from $20.00 / 1,000 area rent benchmarks

Go to Apify Store
SUUMO vs at home — Japan Rent by Ward, Two Sites Compared

SUUMO vs at home — Japan Rent by Ward, Two Sites Compared

Enter a Japanese ward and get the going rent on both SUUMO and at home, side by side. Returns median rent, total monthly cost, rent per m² and floor area from each site, and how far apart the two sites are. $0.02 per area, only when both sites answer; +$0.002 per listing for the list. Unofficial.

Pricing

from $20.00 / 1,000 area rent benchmarks

Rating

0.0

(0)

Developer

h ichi

h ichi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

What it does: Shows the going rent in a Japanese ward on the two big rental sites, SUUMO and at home, side by side — and how far apart they are.

You enter: A 5-digit city code, e.g. 13113 (Shibuya); outside Tokyo's 23 wards give <code>|<at home path>.

You get: One row per area: median rent, total monthly cost, rent per m² and floor area on each site, the gap between the sites in %, floor-plan mix and no-deposit share, sample size and hit count. Optional: one row per listing.

Price: $0.02 per area, charged only when both sites return a rent median. +$0.002 per listing if you also want the list.

Example: enter 13113 (Shibuya) → SUUMO median rent ¥73,000 (60 units) · at home ¥195,000 (256 rooms) · rent per m² ¥4,026 vs ¥5,668 · gap 40.8%

Unofficial — not affiliated with SUUMO or at home. Reads public pages only.

The divergence is the product, not a defect

There is deliberately no attempt to match the same building across the two portals. Name matching in Japanese rental data is guesswork, and it is not what the question needs: a renter, a landlord setting a price and an investor underwriting a yield all ask "what is the going rent for this kind of unit here", which is a distribution question. So the same area is priced on both portals under the same client-side filters and the quantiles are reported side by side.

When the two medians disagree by 20%, that is the finding. Two portals covering one ward do not sample the same population — their agency mixes differ, SUUMO's newest-first order over-weights units just put on the market, and at home's default order was never verified to be neutral. A single-portal number hides all of that behind one confident-looking figure. So every block ships:

  • sampleSize (what the statistics were computed on) next to totalFound (what the portal itself says exists) — never the same number, never inferred from each other
  • samplingOrder and a plain-English samplingOrderNote, plus divergence.compositionSignals.samplingOrderMatches, which is false here by construction
  • compositionSignals — median floor area, floor-plan mix, move-in-cost practice and (SUUMO only) median building age, i.e. the mix that the median is made of

divergencePct is |athome − suumo| as a percentage of the lower of the two medians, so it is symmetric and never negative; higherSource carries the direction. The headline is rent per m², because it is the only metric a difference in unit size cannot move.

The one tag you must not drop: rentBasis: "asking"

Both portals publish advertised rents of vacant units. Neither publishes signed-contract rents. Every block and the divergence itself carry rentBasis, and the comparison is tagged asking_vs_asking. Reading these numbers as contract rents — or against a purchase price — is the one way to turn this product into a lie.

Rent only. Japanese transaction prices are already served free by the Ministry of Land's official API, so this Actor never touches the sale side of either portal.

Filters mean the same thing on both portals

floorPlans, minFloorAreaSqm / maxFloorAreaSqm and minRentJpy / maxRentJpy are applied client-side, after fetching, identically to both sources — a filter that means the same thing everywhere is what keeps the two medians comparable. 1R and ワンルーム are folded to one token so a floor-plan filter cannot match on one portal only.

There is no building-age filter on purpose. Only SUUMO publishes building age on its list page, so filtering on it would silently narrow one side and not the other — and destroy the comparison it was supposed to explain. Age is reported as a signal instead (compositionSignals.*.medianBuildingAgeYears, buildingAgeCoverage: "suumo_only").

Deposit and key money get the same treatment in reverse: SUUMO writes them in yen, at home in months. They are converted (amount ÷ that unit's own rent) and compared as practice — how many units ask for none / one / two months — never as a price.

Pricing — from $0.02 per area, no subscription

EventPriceWhen
Area benchmarked on both portals (area-analyzed, primary event)$0.02Once per area
Individual listing (listing-scraped)$0.002Only if you enable Include individual listings

A default run (1 area, both portals, summary only) costs $0.02 and took 8 seconds end to end when measured. Five wards in one call cost $0.10.

An area is only charged when both portals returned a rent median. A "benchmark" with one portal in it is not a comparison — it is a single-portal lookup you can buy for the same price elsewhere, so here it is free (the record is still published, with divergence.comparable: false and the failing portal's error).

Most property-data products rent by the month; here an occasional benchmark costs cents.

Individual listings are off by default, so the price of a run stays predictable. On the measured default run that would have been 60 SUUMO units + 256 at home rooms = 316 × $0.002 = $0.63 on top of the $0.02 — enable it deliberately, and narrow with floorPlans or a rent window if you only want a segment (the same area filtered to 1K emitted 105 listings).

Input

FieldExampleNotes
areas["13113"]JIS city code, at home path, or "<JIS>|<at home path>". Max 8 per run, $0.02 each
floorPlans["1K","1LDK"]Optional. Applied identically to both portals
minFloorAreaSqm / maxFloorAreaSqm20 / 40Optional m² window. Units with no published area are dropped when set
minRentJpy / maxRentJpy80000Optional rent window, applied identically to both portals
suumoListingsPerArea6030–300 SUUMO units sampled (30 per page, 1.5 s apart)
athomePagesPerArea21–5 at home pages (measured: ~115 rooms across 30 building cards, ~1 MB each)
includeIndividualItemsfalseEnable to also get every sampled unit, +$0.002 each
convertToUsdtrueAdds USD rent stats at the current rate (one FX lookup per run)

Naming an area

SUUMO is addressed by 5-digit JIS city code, at home by a URL path. There is no formula between them, so the pairing is a table — and the table only contains pairs that were actually probed.

  • Built in: Tokyo's 23 special wards (1310113123) plus Hachioji (13201) and Machida (13209) — every one of those at home paths was probed, and a made-up path such as tokyo/nosuchward-city answers 404, which is what makes the probe mean something. Give either half — "13113" or "tokyo/shibuya-city" — and the other is filled in.
  • Anywhere else: give the pair explicitly, in the form "13113|tokyo/shibuya-city". To find the two halves: open the ward on at home, and copy the path that sits between /chintai/ and /list/ out of the address bar (at home does not use a predictable romaji rule — osaka/kita-ku and kanagawa/yokohama-city are both 404s); the JIS code list is at soumu.go.jp.

Half a pair is refused with an error rather than guessed. Comparing one portal's ward against another portal's prefecture would produce a divergence number that means nothing, and you would have no way to tell.

Output example (type: "rent_benchmark", abridged — a real run with the default input, Shibuya, 2026-08-07)

{
"type": "rent_benchmark",
"areaLabel": "Shibuya, Tokyo (渋谷区)",
"suumoCityCode": "13113",
"athomeArea": "tokyo/shibuya-city",
"areaPairing": "builtin",
"suumoAddressLabel": "東京都渋谷区",
"filter": { "floorPlans": [], "applied": false, "note": "Applied client-side and identically to both portals, after fetching. `totalFound` is the portal's own unfiltered hit count and is never affected by it." },
"sources": {
"suumo": {
"source": "suumo",
"sourceName": "SUUMO (スーモ)",
"rentBasis": "asking",
"samplingOrder": "newest_first",
"totalFound": 77534,
"sampleSize": 60,
"pagesFetched": 2,
"rentJpy": { "min": 10000, "p25": 67000, "median": 73000, "p75": 77250, "max": 190000, "average": 74558 },
"totalMonthlyJpy": { "p25": 70000, "median": 78000, "p75": 82250 },
"totalMonthlyKnown": 60,
"rentPerSqmJpy": { "min": 390, "p25": 3745, "median": 4026, "p75": 4294, "max": 8426 },
"floorAreaSqm": { "min": 9.02, "p25": 16.09, "median": 18.5, "p75": 20.27, "max": 52.95 },
"buildingAgeYears": { "min": 8, "p25": 26, "median": 35, "p75": 42, "max": 53 },
"floorPlanTop": [["1K", 36], ["1R", 23], ["3LDK", 1]],
"moveInCost": { "keyMoneyMonths": { "none": 20, "one": 37, "two": 1, "other": 2 }, "noDepositNoKeyMoneyShare": 0.0833, "basis": "SUUMO publishes 敷金/礼金 as an amount; it is divided by the unit's own rent to get months. `-` is read as none." },
"rentUsd": { "median": 461.43 }
},
"athome": {
"source": "athome",
"sourceName": "at home (アットホーム)",
"rentBasis": "asking",
"samplingOrder": "site_default",
"totalFound": null,
"totalFoundBasis": "at home publishes no hit count that can be told apart from its facet counts, so it is reported as null rather than guessed from the sample.",
"sampleSize": 256,
"sampledBuildings": 60,
"pagesFetched": 2,
"rentJpy": { "min": 87000, "p25": 157750, "median": 195000, "p75": 226000, "max": 485000, "average": 213775 },
"totalMonthlyJpy": { "p25": 167750, "median": 205000, "p75": 244750 },
"rentPerSqmJpy": { "min": 3234, "p25": 5462, "median": 5668, "p75": 6473, "max": 8953 },
"floorAreaSqm": { "min": 18.53, "p25": 28.46, "median": 34.51, "p75": 39.76, "max": 134.5 },
"buildingAgeYears": { "median": null },
"buildingAgeKnown": 0,
"floorPlanTop": [["1LDK", 90], ["1K", 69], ["2LDK", 37], ["1DK", 25], ["1R", 20]],
"moveInCost": { "noDepositNoKeyMoneyShare": 0.1289, "basis": "at home publishes 敷金/礼金 as months; taken as written." },
"rentUsd": { "median": 1232.6 }
}
},
"divergence": {
"rentBasis": "asking_vs_asking",
"comparable": true,
"headlineMetric": "rentPerSqmJpy",
"headlineDivergencePct": 40.8,
"agreementBand": "wide",
"definition": "divergencePct is |athome - suumo| as a percentage of the LOWER of the two medians, so it is symmetric and never negative; `higherSource` carries the direction and `diffJpy` is athome minus suumo.",
"metrics": {
"rentJpy": { "suumoMedian": 73000, "athomeMedian": 195000, "diffJpy": 122000, "divergencePct": 167.1, "higherSource": "athome", "agreementBand": "wide" },
"totalMonthlyJpy": { "suumoMedian": 78000, "athomeMedian": 205000, "divergencePct": 162.8, "higherSource": "athome" },
"rentPerSqmJpy": { "suumoMedian": 4026, "athomeMedian": 5668, "diffJpy": 1642, "divergencePct": 40.8, "higherSource": "athome" },
"floorAreaSqm": { "suumoMedian": 18.5, "athomeMedian": 34.51, "diffSqm": 16.01, "divergencePct": 86.5, "higherSource": "athome" }
},
"compositionSignals": {
"suumo": { "sampleSize": 60, "totalFound": 77534, "medianFloorAreaSqm": 18.5, "floorPlanTop": [["1K", 36], ["1R", 23], ["3LDK", 1]], "noDepositNoKeyMoneyShare": 0.0833, "medianBuildingAgeYears": 35 },
"athome": { "sampleSize": 256, "totalFound": null, "medianFloorAreaSqm": 34.51, "floorPlanTop": [["1LDK", 90], ["1K", 69], ["2LDK", 37]], "noDepositNoKeyMoneyShare": 0.1289, "medianBuildingAgeYears": null },
"samplingOrderMatches": false,
"buildingAgeCoverage": "suumo_only"
},
"note": "The two portals were sampled in different orders (SUUMO newest-first, at home site-default), so part of any gap is a sampling difference rather than a market difference. Read compositionSignals before treating a divergence as a price signal."
},
"sourcesWithData": ["suumo", "athome"],
"exchangeRateJpyUsd": 0.006321,
"checkedAt": "2026-08-07T07:37:46+00:00"
}

Read that record the right way — and notice what one portal alone would have told you. "Median rent in Shibuya" is ¥73,000 on SUUMO and ¥195,000 on at home: a 167% gap between two reputable portals, for the same ward, on the same day. Either number, quoted on its own, is a confident-looking lie.

compositionSignals says how much of that is mix. SUUMO's newest-first sample is 59 of 60 studios (1K + 1R) with a median of 18.5 m²; at home's 256 rooms are 1LDK-led with a median of 34.5 m². Per m² the gap collapses from 167% to 40.8% — so most of the headline number was unit size, not price.

And the remaining 40.8% is real. Re-running the same area with floorPlans: ["1K"] — 36 SUUMO 1Ks against 69 at home 1Ks — gives ¥4,088 vs ¥5,756 per m²: 40.8%, unchanged to the decimal. Like-for-like, at home's Shibuya inventory is priced about 40% above SUUMO's newest listings. SUUMO's median building age of 35 years is the likeliest reason, and it is in the record too. That is the kind of thing only two portals at once can show you.

That reasoning is the product. No single-portal median can support it.

(That run also shows why the outlier filters exist: SUUMO's rentJpy.min of ¥10,000 is a real advertised unit whose ¥15,000 management fee dwarfs its rent. Set minRentJpy to cut that class of listing.)

With includeIndividualItems: true you additionally get one record per unit, each tagged with source, rentBasis and a canonical floorPlan.

Use cases

  • Rent benchmarking — price a unit against two portals at once instead of trusting one, with the sample size and the mix in the same record
  • Landlord / property-manager repricing — schedule it and watch the median and the ¥/m² move per ward
  • Investor underwritingrentPerSqmJpy is the number that compares wards honestly; pair it with your own purchase price for a yield
  • Relocation and corporate housingmoveInCost is the up-front cash a tenant is asked for, which the rent alone never shows
  • Data quality research — how far apart are two Japanese portals on the same ward, and which direction does each one lean

Notes & limits

  • Both portals publish asking rents. Neither publishes contracted rents. rentBasis says so on every block; nothing here pretends otherwise
  • Most of a large divergence is usually a mix difference — but not all of it. Check floorAreaSqm and floorPlanTop before reading a gap as a market signal, then set floorPlans / minFloorAreaSqm and re-run to see what survives. In the measured Shibuya run 167% collapsed to 40.8% per m², and the 40.8% did not move when both sides were restricted to 1K
  • totalFound is null on at home, and that is deliberate. Its list page is full of facet counts (per ward, per rent band), so no …件 number on it can be trusted as the total for the query. It is reported as null rather than guessed from the sample
  • SUUMO's totalFound counts what SUUMO counts — the same unit advertised by several agencies is counted several times. Use it as an order of magnitude, and sampleSize as the statistic's real denominator
  • SUUMO's - management fee is read as a real ¥0, matching at home's . Without that normalization totalMonthlyJpy would quietly exclude every fee-free SUUMO unit while including at home's
  • SUUMO is sampled newest-first because its default order is ad-weighted. That is a deliberate bias with a known direction, not a neutral sample. at home's default order was not verified at all
  • A portal that fails does not fail the run: it comes back as available: false with an error, the other portal is still reported, and the area is not charged. Only an area where both portals failed — for every area — fails the run
  • at home sometimes answers HTTP 200 with an 8 KB 「認証中」 bot-protection page instead of the list. That is detected and named as such rather than blamed on a layout change. On page 1 the area's at home side fails (and the area is not charged); on page 2 or later the rooms already collected are kept and the block carries botProtectionAtPage — a partial sample beats throwing away good data. Retry later or lower athomePagesPerArea
  • Read-only, no login, no browser. SUUMO and at home are different infrastructure so they are fetched in parallel; pages inside one portal are always sequential and throttled to one per 1.5 s. A run stops adding pages once its 95-second budget is spent
  • No personal data is collected — agent names and phone numbers are never parsed or emitted

日本語ガイド

1エリアにつき、SUUMO とアットホームの2大賃貸ポータルの募集家賃相場を同一条件で並べ、その乖離を返す Actor です。 物件の名寄せは行いません(エリア×条件の分位点を2ソースで比較します)。divergencePct が大きいこと自体が情報で、母集団の取り方の違い(SUUMO は新着順、アットホームはサイト既定順)を示します。両ソースとも募集家賃(asking)であり成約賃料ではありません。各ブロックに sampleSize(標本)と totalFound(母数・アットホームはファセット件数と区別できないため null)を必ず併記します。間取り・面積・家賃の絞り込みは両ソースへ同一に適用します(築年は SUUMO にしか無いため、絞り込み条件ではなく参考指標として返します)。料金はエリア1件 $0.02、個別明細は $0.002/件(既定 OFF)。両ソースから中央値が返らなかったエリアには課金しません。サブスクリプション不要です。

中文说明

一次调用即可获取日本某个区的租金行情,并同时来自 SUUMO 与 at home 两大租房门户,附带两者的差异率。 不做同一房源匹配,而是在相同筛选条件下比较分位数;两边都是挂牌租金(非成交租金)。每个区 $0.02,无订阅。

If something goes wrong

  • Wrong number or a failed run? Open a ticket on the Issues tab. I read every one and reply within 2 business days (Japan time).
  • You never get a fake "empty" result. If the site can't be read, the run fails and says so.
  • No results = no charge. You only pay for results you actually get.
  • Checked every week. An automatic test runs this tool weekly; if the site changes, I fix it.
  • Public pages only. No login, no personal data, and it goes easy on the site.

More tools by the same author

All tools (Japan marketplaces, real estate, jobs, racing, prediction markets): https://apify.com/jpmarketdata

Disclaimer

Unofficial, independent tool — not affiliated with, endorsed by, or sponsored by SUUMO, at home or Statistics Bureau of Japan (soumu.go.jp). Product names and logos belong to their owners and only say where the data comes from. Data is read from public pages, for market research; check before you act on it.