# SUUMO Rental Listings Scraper (`bovi/suumo-scraper`) Actor

Collect room-level rental listings from SUUMO search pages. Extracts available prices, layouts, areas, access, photos and listing links into structured dataset items.

- **URL**: https://apify.com/bovi/suumo-scraper.md
- **Developed by:** [Vitalii Bondarev](https://apify.com/bovi) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.35 / 1,000 suumo rental listings scrapers

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 Rental Listings Scraper

Collect room-level rental listings from public SUUMO search results at suumo.jp. The actor reads the listing cards in the search results HTML and emits one dataset item for each available room row. It extracts only values present on the page; unavailable fields are left out. Each record includes a link to its SUUMO listing page.

### What it collects

The parser returns the room and building IDs, property type, building name, address, station access, building age and floor count, room floor, monthly rent, management fee, deposit, key money, layout, area in square metres, available image URLs, listing tags, source host, and scrape time. Japanese rent amounts written in 万円 are converted to integer Japanese yen. Search result pages may not provide every field, so optional values appear only when SUUMO supplies them.

The actor reads rental search pages. It does not log in or fetch extra room detail pages. To inspect a room's full current page, use the URL in its output record.

### Input

| Field | Type | Default | Purpose |
| --- | --- | --- | --- |
| searchUrl | string, required | Tokyo rental search | SUUMO rental search results URL; filters in the URL are preserved |
| maxResults | integer | 50 | Maximum number of room records to store |
| proxyConfiguration | object, optional | none | Apify proxy settings; omit it or set useApifyProxy to false for direct requests |

Example input:

{
"searchUrl": "https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=030\&bs=040\&ta=13\&pc=50",
"maxResults": 10,
"proxyConfiguration": {
"useApifyProxy": false
}
}

### Example output

A record is based on fields visible in a real SUUMO room card:

{
"id": "jnc_000110224747",
"building_id": "100531547269",
"url": "https://suumo.jp/chintai/jnc_000110224747/?bc=100531547269",
"property_type": "賃貸一戸建て",
"building_name": "川口中学校北側貸家",
"address": "東京都八王子市川口町",
"station_access": \[
"ＪＲ五日市線/秋川駅 歩90分",
"ＪＲ五日市線/武蔵引田駅 歩93分",
"ＪＲ五日市線/東秋留駅 歩90分"
],
"building_age": "築48年",
"building_floors": "地上2階建",
"floor": "1階",
"rent_jpy": 78000,
"layout": "4DK",
"area_sqm": 74.36,
"image_urls": \[
"https://img01.suumo.com/front/gazo/fr/bukken/269/100531547269/100531547269_go.jpg"
],
"source": "suumo.jp"
}

### Results and price per result

Results are written with the platform dataset storage. Apify bills each pushed result as a dataset item at the rate shown for this actor when you run it. This actor does not add a separate custom Actor.charge fee.

Paste any SUUMO rental search results URL into searchUrl to preserve its filters. The actor follows the next-page link until maxResults is reached or the result pages end. It accepts only HTTP or HTTPS URLs on suumo.jp and its subdomains.

# Actor input Schema

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

Paste a SUUMO rental search results URL. The prefilled URL searches Tokyo.

## `maxResults` (type: `integer`):

Maximum number of rental room records to store.

## `proxyConfiguration` (type: `object`):

Optional Apify proxy settings. Omit this field or set useApifyProxy to false for direct requests.

## Actor input object example

```json
{
  "searchUrl": "https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=030&bs=040&ta=13&pc=50",
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "searchUrl": "https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=030&bs=040&ta=13&pc=50",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("bovi/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 = {
    "searchUrl": "https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=030&bs=040&ta=13&pc=50",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("bovi/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 '{
  "searchUrl": "https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=030&bs=040&ta=13&pc=50",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call bovi/suumo-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,bovi/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/eAsaM2pA1Dt4Cp53S/builds/jP9g7uqFeLK4cNLE2/openapi.json
