Real estate
Suumo.jp Japan Real Estate Scraper
Japan's #1 property portal as clean structured data — rent, shikikin/reikin (deposit/key-money) normalized to yen, nearest station + walk-minutes, layout, area and building age — where the incumbent returns no structured fields at all.
Free Apify credit covers a first run. No credit card to try.
What this Actor scrapes
Suumo.jp is Japan's largest real-estate aggregator, covering rentals (chintai), sales (baikyaku), and new construction across all 47 prefectures. This Actor accepts one or more Suumo search-result page URLs — the kind you build by choosing a city, budget, and layout in the Suumo search UI — then follows pagination to collect every visible listing. Each row captures the fields that matter most to analysts, investors, and relocation researchers: the JP-native monetary fields that competitors strip out (deposit, key money, management fee), the madori layout code, and walking time from the nearest transit station.
What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffireplays real Chrome / Firefox TLS handshakes so the target sees a browser, not a Python script. - 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block, with optional JP country targeting for geo-restricted pages.
- 🔁 Retries with exponential backoff on
408 / 429 / 5xx— up to 5 attempts per page,Retry-Afterhonoured. - 🧱 Pagination handled automatically — follow as many pages as you need, or cap with
maxPagesfor a quick spot-check. - 🧊 Clean, typed dataset rows — Pydantic-validated, monetary values normalized to integer Yen, ISO-8601 timestamps, stable listing IDs.
- 💰 Pay-Per-Event pricing — you pay only for results that land in the dataset. No data, no charge (beyond the small start-up fee).
Use cases
- Relocation research — pull 1LDK rentals in central Tokyo, filter by walk time and deposit, compare neighbourhoods side-by-side in a spreadsheet.
- Investment analysis — track price-per-m² across Osaka wards over time by scheduling daily runs and diffing successive datasets.
- Property management benchmarking — monitor competing listings in a target micro-market; alert when a new unit undercuts your asking rent.
- Academic real-estate research — build a structured corpus of JP listing data without hand-copying fields from Japanese HTML pages.
- Immigration/expat tooling — power a filtered rental search app for non-Japanese speakers by normalizing the JP-language fields your app then translates.
Input
Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.
| Field | Type | Required | What it does |
|---|---|---|---|
searchUrls | array | yes | One or more Suumo.jp search-result page URLs to scrape. Example: a chintai (rental) search for Tokyo 1LDK apartments. The Actor follows pagination automatically from each URL. |
maxItems | integer | no | Maximum number of listings to return across all URLs. Set to 0 to collect all results up to natural pagination end. Default 100 keeps local test runs fast. |
maxPages | integer | no | Maximum number of pagination pages to follow per search URL. Set to 0 to follow all pages. Useful for quick spot-checks. |
fetchListingDetails | boolean | no | Opt-in per-row detail-page fetch for agency_name/agency_phone (and buy-mode management_fee_yen/floor). Roughly doubles requests and charges the extra 'detail-enriched' event per successful row. |
{
"searchUrls": [
"https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=030&bs=040&ta=13&sc=13101"
],
"maxItems": 200,
"maxPages": 5,
"proxyConfiguration": {
"useApifyProxy": true
}
} Output
One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.
listing_idnameurlproperty_typeprice_yenmanagement_fee_yendeposit_yenkey_money_yenaddressnearest_stationwalk_minuteslayoutarea_sqmfloorbuilding_age_years
{
"listing_id": "bc_100251966066",
"name": "\u30b0\u30e9\u30f3\u30c9\u30e1\u30be\u30f3\u6e0b\u8c37",
"url": "https://suumo.jp/chintai/bc_100251966066/",
"property_type": "\u30de\u30f3\u30b7\u30e7\u30f3",
"price_yen": 95000,
"management_fee_yen": 5000,
"deposit_yen": 95000,
"key_money_yen": 95000,
"address": "\u6771\u4eac\u90fd\u6e0b\u8c37\u533a\u9053\u7384\u57421\u4e01\u76ee",
"nearest_station": "\u6e0b\u8c37",
"walk_minutes": 5,
"layout": "1LDK",
"area_sqm": 42.5,
"floor": "3\u968e",
"building_age_years": 10,
"scraped_at": "2026-06-07T00:00:00Z"
} Pricing
| Event | Price | When |
|---|---|---|
| Actor start | — | Once per run, covers warm-up and proxy session setup. |
| Actor Start | $0.0000 | Per result written to the dataset. |
| result | $0.0020 | Per result written to the dataset. |
You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.
Limitations
- Japanese-language source — building names, addresses, property types, and layout codes are in Japanese script (kanji, hiragana, katakana). The Actor preserves them as-is; translation is left to your downstream stack.
- Deposit / key money as rent multiples — Suumo often shows shikikin and reikin as
1ヶ月(1 month's rent) rather than an absolute Yen amount. Where the implementer can resolve the multiplier against the price, they do; otherwise the field may be null. - Pagination cap — very large searches (e.g. all of Tokyo) can run to hundreds of pages. Use
maxItemsormaxPagesto cap the run on the free Apify tier. - Listing freshness — Suumo does not expose a "last updated" timestamp for each listing.
scraped_atreflects when the Actor visited the page, not when the landlord last edited it. - New construction (shin-chiku) — some new-build listing pages have a different HTML structure from resale/rental. The implementer's parser may need a separate branch for those pages.
FAQ
Does this work for both rentals and sales?
price_yen field carries the monthly rent for rentals and the total sale price for properties.What is "key money" (reikin)?
key_money_yen field captures this so relocation researchers and expats can factor it into their true move-in cost calculation.Can I scrape a specific neighbourhood or train line?
How do I get Japanese IPs for geo-restricted pages?
proxyConfiguration set "apifyProxyCountry": "JP". This instructs Apify Proxy to route exit traffic through a Japanese residential IP.Can I schedule this?
The dataset is empty — what happened?
Ready to run it?
Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.
Related Actors