# Suumo Scraper — Japan Real Estate Listings (`jungle_synthesizer/suumo-scraper`) Actor

Scrape rental and sale property listings from Suumo.jp — Japan's largest real estate portal. Pick a mode (rental, used/new condo, used/new house, or land) and paste a Suumo search URL. Extract price/rent, layout, area, address, station access, building age, and more.

- **URL**: https://apify.com/jungle_synthesizer/suumo-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 73 total users, 6 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 2.51 out of 5 stars

## Pricing

from $10.00 / 1,000 record scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Suumo Web Crawler: Rental and Sales Data Extraction for Japan Real Estate

Gather detailed insights on rental and sale property listings across Japan with the **Suumo Web Crawler** — a Japan real estate Suumo scraper built for professionals, investors, and analysts. It covers Suumo.jp's full property surface — rentals, used and new condos, used and new houses, and land — with one unified actor.

### Key Features

- **Six Listing Modes**: Switch between rentals (賃貸), used condos (中古マンション), new condos (新築マンション), used houses (中古一戸建て), new houses (新築一戸建て), and land (土地) via a single `mode` input.
- **Mode-Aware Output Schema**: Rentals return rent / deposit / key money; sales return price, exclusive area or land + building area, zoning, and price-per-tsubo where applicable.
- **Advanced Search Filters**: Use Suumo's native URL parameters (area, price range, building age, floor area) — no in-actor filter logic required.
- **Pagination Support**: Walks through search result pages until `maxItems` or `maxPages` is reached.
- **Optional Detail Page Enrichment**: For rentals, follow each listing to fetch building structure, contract terms, parking, and more.

### Supported Modes & URL Patterns

| Mode              | Vertical | Search URL family                                                   |
|-------------------|----------|---------------------------------------------------------------------|
| `rental`          | 賃貸       | `https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=030&bs=040&...` |
| `sale_used_condo` | 中古マンション  | `https://suumo.jp/jj/bukken/ichiran/JJ012FC001/?bs=011&...`         |
| `sale_new_condo`  | 新築マンション  | `https://suumo.jp/jj/bukken/ichiran/JJ011FC001/?bs=010&...`         |
| `sale_used_house` | 中古一戸建て   | `https://suumo.jp/jj/bukken/ichiran/JJ012FC001/?bs=021&...`         |
| `sale_new_house`  | 新築一戸建て   | `https://suumo.jp/jj/bukken/ichiran/JJ012FC001/?bs=020&...`         |
| `sale_land`       | 土地       | `https://suumo.jp/jj/bukken/ichiran/JJ012FC001/?bs=030&...`         |

Open Suumo, navigate to the right vertical, set your filters, and paste the resulting URL into `searchUrl`.

### Ideal Use Cases for Real Estate Professionals

- **In-depth Real Estate Analysis**: Uncover rental trends and pricing variations in hotspots like Tokyo or other major Japanese cities.
- **Thorough Market Research**: Equip yourself with data-driven insights to evaluate market conditions and make informed real estate investments.
- **Comparative Property Listings**: Compile comparable properties to refine your valuation and pricing strategies, enhancing your competitive edge.

### Input Schema

```json
{
  "mode": "sale_used_condo",
  "searchUrl": "https://suumo.jp/jj/bukken/ichiran/JJ012FC001/?ar=030&bs=011&ta=14&sc=14104&pc=20",
  "maxItems": 100,
  "maxPages": 0,
  "fetchDetails": false
}
```

#### Input Fields

- **mode**: Listing vertical to scrape. One of `rental`, `sale_used_condo`, `sale_new_condo`, `sale_used_house`, `sale_new_house`, `sale_land`. Defaults to `rental`.
- **searchUrl**: A Suumo search results URL matching the chosen mode. Open suumo.jp, set your filters in the UI, copy the URL.
- **maxItems**: Cap on records returned (0 = unlimited).
- **maxPages**: Cap on pages crawled (0 = unlimited).
- **fetchDetails**: Rentals only — follow each listing to fetch enriched fields (structure, parking, contract terms). Ignored in sales modes.

### Sample Output

Used condo (sale_used_condo):

```json
{
  "mode": "sale_used_condo",
  "propertyType": "中古マンション",
  "buildingTitle": "プロスパーハウス",
  "address": "神奈川県横浜市中区本牧荒井",
  "stationAccess": ["ＪＲ根岸線「山手」徒歩12分"],
  "buildingAge": "1968年6月",
  "price": "1280万円",
  "exclusiveArea": "66.6m2（壁芯）",
  "layout": "3DK",
  "detailUrl": "https://suumo.jp/ms/chuko/kanagawa/sc_yokohamashinaka/nc_78367586/",
  "propertyCode": "78367586"
}
```

Rental:

```json
{
  "mode": "rental",
  "propertyType": "賃貸マンション",
  "address": "神奈川県横浜市中区山手町",
  "rent": "85万円",
  "managementFee": "5,000円",
  "deposit": "1ヶ月",
  "keyMoney": "1ヶ月",
  "layout": "4SLDK",
  "area": "178m2",
  "buildingAge": "築12年"
}
```

### Need Additional Features?

Want to customize your scraping experience? If you're looking to add new data fields or require a bespoke scraper for a different purpose, don't hesitate to reach out. We're keen to enhance the functionality to meet your specific needs.

### Why Choose the Suumo Web Crawler?

- **Efficient Performance**: Designed for efficient large-scale data scraping with advanced session and concurrency management capabilities.
- **Highly Customizable**: Easily adjust input options to cater to your specific scraping needs.
- **Dependable**: Featuring robust error-handling mechanisms to minimize disruption during data collection.

### Anti-Blocking Measures

The scraper manages sessions automatically to keep long real-estate crawls from being interrupted. There is nothing for you to configure.

Unlock the power of the Suumo Web Crawler today and stay ahead in the competitive real estate market!

### Related Actors

- **[Kenbiya Scraper — Japan Investment Property (建美家)](https://apify.com/jungle_synthesizer/kenbiya-investor-scraper)** — Japanese investment properties with yields and asking prices from Kenbiya.

***

**Further reading:** [Building Permit Data and Property Records: Where to Get Them in Bulk](https://orbtop.com/articles/building-permit-property-data/)

# Actor input Schema

## `sp_intended_usage` (type: `string`):

What will this data feed? E.g. lead lists, KYB checks, price tracking.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

We'll personally help with your use case. No spam.

## `resumeCursor` (type: `string`):

Leave empty for a fresh crawl. To CONTINUE a previous run where it stopped — without paying again for records you already received — paste the `resumeCursor` value from that run's Output (the run's OUTPUT key). Resume promptly: the previous run's data expires with your account's retention window (free tier: your ~10 most recent runs).

## `mode` (type: `string`):

Type of Suumo listing to scrape. Each mode binds to a different Suumo search URL family — paste the matching URL in `searchUrl` below.

## `searchUrl` (type: `string`):

Suumo.jp search results URL matching the selected mode. Open suumo.jp, navigate to the right vertical (rental/sale/condo/house/land), set your filters, and paste the resulting URL here.

## `maxItems` (type: `integer`):

Maximum number of listings to scrape. Set to 0 for unlimited.

## `maxPages` (type: `integer`):

Maximum number of search result pages to crawl. Set to 0 for unlimited.

## `fetchDetails` (type: `boolean`):

Follow each listing link to fetch additional fields (rental: structure, contract terms, parking; sales: detail-page enrichment is currently rental-only). Slower but more data.

## Actor input object example

```json
{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "mode": "rental",
  "searchUrl": "https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=030&bs=040&ta=14&sc=14104&pc=50",
  "maxItems": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "mode": "rental",
    "searchUrl": "https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=030&bs=040&ta=14&sc=14104&pc=50",
    "maxItems": 100,
    "maxPages": 0,
    "fetchDetails": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/suumo-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "mode": "rental",
    "searchUrl": "https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=030&bs=040&ta=14&sc=14104&pc=50",
    "maxItems": 100,
    "maxPages": 0,
    "fetchDetails": False,
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/suumo-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "mode": "rental",
  "searchUrl": "https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=030&bs=040&ta=14&sc=14104&pc=50",
  "maxItems": 100,
  "maxPages": 0,
  "fetchDetails": false
}' |
apify call jungle_synthesizer/suumo-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jungle_synthesizer/suumo-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/yPBObiZnhJwlq4e2o/builds/t0B143upvXEjfW832/openapi.json
