SUUMO Scraper - Japan Property Listings avatar

SUUMO Scraper - Japan Property Listings

Pricing

from $2.20 / 1,000 listings

Go to Apify Store
SUUMO Scraper - Japan Property Listings

SUUMO Scraper - Japan Property Listings

Collect SUUMO property listings across Japan: prices, floor plans, areas, station access, photos, and public agency contacts. Pay per delivered row plus a small start fee.

Pricing

from $2.20 / 1,000 listings

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

0

Monthly active users

6 hours ago

Last modified

Security

Limited permissions

Share

SUUMO Scraper

Collect sale and rental listings from SUUMO in Japan as structured rows you can export or read through the API.

  • Search used and new condominiums, new and used houses, land, and rentals.
  • Use SUUMO URLs, a city or ward path, administrative codes, or a map area.
  • Get prices in yen, floor plans, areas, station access, fees, and image links when available.
  • Include public agency contact details where the source shows them.
  • Pay for delivered rows: $3.00 per 1,000 rows on the Free plan, plus a small start fee.

What does SUUMO Scraper do?

SUUMO Scraper collects property data from suumo.jp for Tokyo, Osaka, and other Japanese prefectures. Use the rows to compare asking prices, monitor rental supply, or build a property research dataset. Asking prices are not completed transaction prices.

  • Web searches and details: use startUrls for an existing search or property page, or location for an area search.
  • App listings: set provider to app and search by prefectureCode with an optional cityCode.
  • Map searches: set provider to map with bbox and prefectureCode. Rentals also require cityCode.
  • Detail fields: scrapeDetails is on by default. It adds available details to the same row, not a separately billed contact row.

What data can you extract from SUUMO?

Fields vary by property category and source. Examples below are illustrative, not current offers.

FieldDescriptionExample
idListing identifier; some floor plans use a composite identifier12345678
urlSUUMO source linkhttps://suumo.jp/ms/chuko/tokyo/sc_shinjuku/nc_12345678/
propertyTypeProperty categorychuko_mansion
channelSale or rentBUY
titleListing headlineExample condominium
buildingNameBuilding name, when shownExample building
priceOriginal asking-price text2880万円
priceAmountNumeric amount in JPY; lower end for a range28800000
priceMinLowest amount in a price range28800000
priceMaxHighest amount in a price range32000000
floorPlanLayout1LDK
exclusiveAreaSqmApartment area in square metres42.8
landAreaSqmLand area in square metres100
buildingAreaSqmHouse area in square metres85.2
listingAddressProperty address as shownExample property address
addressStructured address; may describe the agency rather than the property{"country":"JP","full":"Example office address"}
accessStation and transport accessExample Station, 6 minutes on foot
builtYearMonthConstruction date text2005年3月
administrationFeeManagement fee text8000円
depositRental deposit text1ヶ月
keyMoneyRental key-money text1ヶ月
imagesAvailable image URLs[]
geoCoordinates, when available{"lat":35.69,"lng":139.70}
phonesPublic agency numbers[{"value":"+1 555 0100","type":"agency"}]
emailsPublic email addresses; placeholders are discarded[]
orgAgency name, identifier, and license when available{"name":"Example agency"}
personNamed agent, when shown{"name":"Jane Doe","role":"Agent"}
webPublic company website and social links when found{"website":null,"socials":[]}
leadAbsencesReasons for missing contact fields{}
scrapedAtCollection timestamp2026-10-24T00:00:00Z

Use listingAddress for property analysis. Do not assume address is the property address. officeAddress, when present, holds the agency address separately. listingCode can preserve the detail-page identifier when id represents a floor plan.

How to scrape SUUMO

  1. Open SUUMO Scraper in Apify Console. A free Apify account is enough to try it.
  2. Fill location, for example tokyo/sc_shinjuku, or paste a search URL into startUrls.
  3. Set maxItems to 5 for your first run.
  4. Click Start and wait for completion.
  5. Download the dataset or read it through the API.

Empty input starts an example search for used condominiums in Shinjuku, limited to 3 rows. Normal start and row charges still apply. Filling a target selects the search operation automatically, but it does not choose provider: set that explicitly for App or map searches.

Web searches and property URLs

Leave provider at the default (Web pages). A startUrls search URL determines the area and property category instead of location and propertyType. Use full HTTPS links on suumo.jp or www.suumo.jp. Sale detail links contain nc_; public rental detail links contain jnc_.

For area searches, use a city or ward path such as tokyo/sc_shinjuku or osaka/sc_osakashikita. A bare prefecture can lead to an index rather than listings. Some familiar place names resolve, but explicit paths are less ambiguous.

App listings by area code

Use provider: "app" with a two-digit prefectureCode, such as 13 for Tokyo or 27 for Osaka. Add a five-digit cityCode to narrow the area; it must start with the prefecture code. Leave startUrls empty. Codes select the area instead of location.

Map searches

Use provider: "map", prefectureCode, and bbox. Supply either four corners or a centre and radius. Rental searches need a matching cityCode. Leave startUrls empty. With scrapeDetails: false, rows contain map identifiers, links, and coordinates, not full property details; rental markers can represent buildings rather than individual units.

What to fill in

FieldWhat to enterDefault
startUrlsArray of SUUMO search or detail URL objectsEmpty
locationCity or ward path when no URLs are suppliedExample: tokyo/sc_shinjuku
propertyTypeOne of the six categories belowchuko_mansion
channelCompatibility setting: BUY or RENT; prefer propertyTypeBUY
maxItemsRows per URL or selected area, from 1 to 2,00070; form example 3
maxPagesPage setting from 1 to 100; not a strict run-wide limit1
scrapeDetailsInclude available detail-page fieldstrue
providercurl for web, app for area codes, map for a map areacurl
prefectureCodeTwo-digit code, required for App and mapEmpty
cityCodeFive-digit city or ward code; required for map rentalsEmpty
bboxCorners lat1, lng1, lat2, lng2, or centre lat, lng, radiusKmEmpty
pageSizeApp rows per page, from 1 to 5050
requestDelayMillisDelay between requests, in milliseconds800
maxConcurrencyConcurrent detail requests, from 1 to 82

The categories are chuko_mansion (used condos), shinchiku_mansion (new condos), ikkodate (new houses), chukoikkodate (used houses), tochi (land), and chintai (rentals). Setting channel: "RENT" changes the default condo category to rentals; an explicit non-default propertyType wins.

Web area example:

{
"location": "tokyo/sc_shinjuku",
"propertyType": "chuko_mansion",
"maxItems": 5
}

Rental URL example:

{
"startUrls": [{"url": "https://suumo.jp/chintai/tokyo/sc_shinjuku/"}],
"maxItems": 5
}

App example:

{
"provider": "app",
"prefectureCode": "13",
"cityCode": "13104",
"propertyType": "chuko_mansion",
"maxItems": 5
}

Map example:

{
"provider": "map",
"prefectureCode": "13",
"bbox": {"lat": 35.69, "lng": 139.70, "radiusKm": 1},
"maxItems": 5,
"scrapeDetails": false
}
  • maxResults, limit, and max_results are aliases for maxItems.
  • Close field-name misspellings can be corrected. Other unknown fields are ignored with a warning. Unknown propertyType or channel values are dropped rather than treated as new categories.
  • Invalid targets or incompatible fields fail before any rows are charged, with messages such as INVALID_INPUT: prefectureCode — required when provider is app. The start fee is separate.
  • Check the INPUT_REPORT record in the run's key-value store for filled, corrected, and ignored fields.
  • Pagination may continue beyond maxPages to reach the requested row count. Use maxItems and the run's spending limit to control collection.

Output example

Illustrative property row; the name, address, and identifier are placeholders:

{
"id": "12345678",
"url": "https://suumo.jp/ms/chuko/tokyo/sc_shinjuku/nc_12345678/",
"source": "suumo",
"propertyType": "chuko_mansion",
"channel": "BUY",
"title": "Example condominium",
"price": "2880万円",
"priceAmount": 28800000,
"currency": "JPY",
"floorPlan": "1LDK",
"exclusiveAreaSqm": 42.8,
"listingAddress": "Example property address",
"phones": [],
"scrapedAt": "2026-10-24T00:00:00Z"
}

You can export the dataset as JSON, CSV, Excel, XML, RSS, or an HTML table. JSON retains nested contact fields. OUTPUT and RUN_SUMMARY provide counts and warnings separately from the dataset.

Why use this SUUMO scraper?

  • Pay per delivered row. Failed page attempts do not create billable property rows.
  • Keep useful results. A failed detail page can leave the search row available. Accepted partial results can be delivered with warnings; an abrupt stop does not guarantee delivery of unfinished work.
  • Understand missing fields. Unavailable values remain empty or absent, and contact fields can include absence reasons.
  • Use several URLs. Submit several targets with a row allowance for each and one spending limit for the run.
  • No proxy setup. You do not need to set up proxies or supply a SUUMO login.

How much does it cost to scrape SUUMO?

The Actor uses pay-per-event pricing. The start event costs $0.005 per GB of selected run memory, with a minimum of one event. At the default 512 MB, the start fee is $0.005. Platform usage is included in these prices.

Apify planPrice per rowPrice per 1,000 rows
Free$0.003$3.00
Starter$0.003$3.00
Scale$0.0026$2.60
Business$0.0022$2.20
  • maxItems applies to each URL or selected area. The default is 70, and the accepted range is 1–2,000. Larger requests are collected in smaller parts.
  • Free Apify plan users are limited to 200 rows per run and 10 runs of this Actor in total. These are limits set by the developer.
  • The whole run stops at Maximum cost per run, named maxTotalChargeUsd in the API. The per-input allowance does not override this spending cap.

Example: one input delivering 5 rows at the default 512 MB costs 5 × $0.003 + $0.005 = $0.020 on the Free plan. Returning fewer rows reduces the row charge; a run with no delivered rows can still incur the start fee.

What happens when the run timeout is too short

If results are not ready within a short timeout, the run can pause rather than fail. It shows ABORTED with the message "Queued on the collection backend; this run will resume automatically when results are ready (about N s)."

When results are ready, the same run restarts automatically, reports "Resumed: delivering N rows.", writes to the same dataset, and finishes as SUCCEEDED. Already delivered rows are skipped, so they are not delivered or charged twice. No manual restart is needed for this queued state.

Automatic pauses are limited to 3 per run. Keep the default timeout of 3600 seconds to reduce interruptions. The synchronous endpoints run-sync and run-sync-get-dataset-items wait at most 300 seconds and can return an empty dataset while the run is paused. For longer searches, start asynchronously and read the dataset after SUCCEEDED, or use a webhook for ACTOR.RUN.SUCCEEDED.

Use with AI agents and the API

Apify MCP server

Add this Actor as a tool in a remote MCP client, such as Claude, ChatGPT, Cursor, or VS Code:

https://mcp.apify.com?tools=lentic_clockss/suumo-property-scraper

Sign in with Apify using OAuth when prompted, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool returns run and dataset IDs; the agent can then read rows with get-dataset-items. Clients without remote MCP support can use npx @apify/actors-mcp-server --tools lentic_clockss/suumo-property-scraper with APIFY_TOKEN configured.

Example prompt: "Get 5 used condominiums in Shinjuku using location tokyo/sc_shinjuku. Show asking price, floor plan, area, and listing URL."

Apify API

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("lentic_clockss/suumo-property-scraper").call(
run_input={"location": "tokyo/sc_shinjuku", "maxItems": 5}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('lentic_clockss/suumo-property-scraper').call({
location: 'tokyo/sc_shinjuku', maxItems: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

For asynchronous HTTP access, send the input as JSON to POST https://api.apify.com/v2/acts/lentic_clockss~suumo-property-scraper/runs with Authorization: Bearer <YOUR_APIFY_TOKEN>. After completion, read GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json. If a waiting SDK call returns an ABORTED run, follow the timeout guidance above before reading its final results.

Integrations

Use the Actor's Integrations tab to connect results to Google Sheets, Make, Zapier, n8n, Slack, Airtable, or your webhook. Apify Schedules can start repeated runs; each run is charged separately.

日本語の説明

SUUMOの中古・新築マンション、一戸建て、土地、賃貸物件を収集します。地域で探す場合は location に tokyo/sc_shinjuku のような市区のパスを入力してください。検索ページや物件ページがある場合は startUrls にURLを指定します。まずは maxItems を 5 にして、価格、間取り、面積、交通情報を確認できます。公開されていない項目は空欄になることがあります。料金は出力された行ごとに計算され、別途開始料金がかかります。無料プランにも上限があります。結果はCSVやExcelで保存でき、住所と不動産会社の所在地は区別して利用してください。

FAQ

Public availability is not permission for every use. You are responsible for complying with SUUMO's terms and applicable data-protection law. Personal-data processing needs a lawful basis; seek qualified advice if unsure about your intended use.

Why did my run end as ABORTED?

A queued run can pause while waiting for results and restart automatically. Check for the automatic-resume status message described above. Not every ABORTED run has that cause; a manually stopped run is different.

How many results can I get?

Request up to 2,000 rows per input with maxItems. Actual delivery depends on available listings, successful collection, your spending cap, and the Free plan limits. A requested count is not a guarantee of that many matches.

Why are some fields empty?

Fields differ across search pages, detail pages, App listings, and map markers. Detail collection can add information but cannot create missing data. Contact availability varies; check leadAbsences and run warnings.

How do I select rentals, new condos, or land?

Choose chintai, shinchiku_mansion, or tochi in propertyType. For web searches, a matching SUUMO search URL selects the category directly.

Why did my Free-plan run stop after 10 runs?

The developer limits Free-plan usage to 10 runs total, with up to 200 rows per run. The run reports the limit rather than continuing collection. A paid Apify plan removes that developer-set run-count limit.

Do I need a SUUMO API key?

No SUUMO API key is required. You need an Apify token only when using authenticated Apify API calls or token-based MCP access.

What if my search returns zero rows?

Check the category and city path, or narrow the region. Inspect OUTPUT, RUN_SUMMARY, and, on failure, ERROR_SUMMARY. A confirmed no-match response can finish successfully without rows; a collection error is a different result.

Limitations

  • Japan only. /kasu/, /chintai/soba/, specialty nj_ pages, magazine pages, and rental subtype hubs are not supported listing searches.
  • Full HTTPS links are safer than shortened or scheme-less URLs. Acceptance by input validation does not guarantee a supported page.
  • Large map areas can be truncated. Split them into smaller areas; map results are not a promise of every listing.
  • App rental detail pages are skipped; available App listing and contact fields remain included.
  • Missing emails, social links, coordinates, or named agents are not filled with guesses. No member-only information is promised.

More real estate and property data scrapers from the same publisher:

Browse all of our scrapers at apify.com/lentic_clockss.

Support

Found a problem or need another field? Open an issue in the Issues tab of this Actor's page and include the run ID and the input you used.