Suumo.jp Japan Real Estate Scraper avatar

Suumo.jp Japan Real Estate Scraper

Pricing

Pay per usage

Go to Apify Store
Suumo.jp Japan Real Estate Scraper

Suumo.jp Japan Real Estate Scraper

Scrape Suumo.jp rental and sale listings from any search-result URL. Get building name, price, layout, area, deposit, key money, nearest station, and walk time — structured and typed, one row per listing. We handle the blocks, retries, and proxy routing.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share


🎯 What this 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 rotationcurl-cffi replays 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-After honoured.
  • 🧱 Pagination handled automatically — follow as many pages as you need, or cap with maxPages for 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.

⚙️ How to use it

  1. Go to suumo.jp and run a property search for your target area, budget, and layout.
  2. Copy the full search-result page URL from your browser's address bar.
  3. Click Try for free at the top of this Actor's page.
  4. Paste the URL into the Search-result URLs field. Add more URLs to batch multiple searches.
  5. Set maxItems (default 100) and maxPages (default: follow all pages).
  6. Click Start. Listing rows stream into the dataset in real time.
  7. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the Apify API.

Tip: To scrape a specific prefecture or city with many results, set maxPages to 1 first to confirm the run works, then remove the cap for a full harvest.

📥 Input

FieldTypeRequiredDefaultNotes
searchUrlsarrayyesOne or more Suumo search-result page URLs. Copy directly from the browser after running a Suumo search.
maxItemsintegerno100Total listing cap across all URLs. Set to 0 for unlimited.
maxPagesintegerno0Pagination cap per URL. 0 follows all pages.
proxyConfigurationobjectnoApify Proxy onApify Proxy config. Set apifyProxyCountry: "JP" if you encounter geo-related blocks.

Example input

{
"searchUrls": [
"https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=030&bs=040&ta=13&sc=13101"
],
"maxItems": 200,
"maxPages": 5,
"proxyConfiguration": {
"useApifyProxy": true
}
}

📤 Output

Every row is one Suumo listing. Monetary values are always integer Japanese Yen.

FieldTypeNotes
listing_idstringUnique Suumo listing identifier.
namestring | nullBuilding or property name (Japanese text preserved).
urlstringCanonical Suumo listing URL.
property_typestring | nulle.g. マンション, アパート, 一戸建て.
price_yeninteger | nullMonthly rent or sale price in Yen.
management_fee_yeninteger | nullMonthly kanrihi (management fee) in Yen.
deposit_yeninteger | nullShikikin (security deposit) in Yen.
key_money_yeninteger | nullReikin (key money, non-refundable) in Yen.
addressstring | nullFull address in Japanese script.
nearest_stationstring | nullNearest train or subway station name.
walk_minutesinteger | nullWalking time from nearest station in minutes.
layoutstring | nullMadori layout code — e.g. 1K, 1LDK, 3LDK.
area_sqmnumber | nullFloor area in m².
floorstring | nullUnit floor within the building — e.g. 3階.
building_age_yearsinteger | nullBuilding age in years, derived from construction date.
scraped_atstring | nullISO-8601 UTC timestamp when the row was recorded.

Example output

{
"listing_id": "bc_100251966066",
"name": "グランドメゾン渋谷",
"url": "https://suumo.jp/chintai/bc_100251966066/",
"property_type": "マンション",
"price_yen": 95000,
"management_fee_yen": 5000,
"deposit_yen": 95000,
"key_money_yen": 95000,
"address": "東京都渋谷区道玄坂1丁目",
"nearest_station": "渋谷",
"walk_minutes": 5,
"layout": "1LDK",
"area_sqm": 42.5,
"floor": "3階",
"building_age_years": 10,
"scraped_at": "2026-06-07T00:00:00Z"
}

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.005One-off warm-up charge per run
result$0.0025Per listing row written to the dataset

Example: 1 000 listings ≈ $2.50. No subscription, no minimum, no card to start — every new Apify account gets $5 of free credit, good for ~2 000 listing rows before you owe anything.

🚧 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 maxItems or maxPages to cap the run on the free Apify tier.
  • Listing freshness — Suumo does not expose a "last updated" timestamp for each listing. scraped_at reflects 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?

Yes. The Actor accepts any Suumo search-result URL — the same code path handles chintai (rental) and baikyaku (sale) searches. The price_yen field carries the monthly rent for rentals and the total sale price for properties.

What is "key money" (reikin)?

Reikin (礼金) is a non-refundable "thank-you" payment to the landlord, typically one or two months' rent, paid upfront when signing a lease. It has no equivalent in most Western markets. The 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?

Yes — build the search on suumo.jp by choosing your preferred station, ward, or neighbourhood, then copy that URL into the Actor. The Actor scrapes exactly the results your URL describes.

How do I get Japanese IPs for geo-restricted pages?

In proxyConfiguration set "apifyProxyCountry": "JP". This instructs Apify Proxy to route exit traffic through a Japanese residential IP.

Can I schedule this?

Yes — connect the Actor to an Apify Schedule and it will run automatically at whatever interval you choose. Each run writes to a fresh dataset; use the Apify API to retrieve the latest run's dataset for comparison.

The dataset is empty — what happened?

Check the run log for HTTP errors or empty-page signals. If the page redirected to a CAPTCHA or an error page, enable Apify Proxy and optionally set the country to JP. Persistent empty results after proxy routing are reported on the Issues tab.

💬 Your feedback

Spotted a bug, a missing field, or a Suumo page structure that the parser doesn't handle? Open an issue on the Actor's Issues tab in Apify Console — we read every report and ship fixes weekly.