# Yahoo! Real Estate Japan Used Condo Prices by Area (`jpmarketdata/yahoo-realestate-condo-market-checker`) Actor

Enter a Japanese city or ward code and see what sellers ask for used condos on Yahoo! Real Estate. You get the average price for each floor plan, how many are already rented to a tenant, building age, walk time to the station, plus nearby areas. $0.02 per area, no results = no charge. Unofficial.

- **URL**: https://apify.com/jpmarketdata/yahoo-realestate-condo-market-checker.md
- **Developed by:** [h ichi](https://apify.com/jpmarketdata) (community)
- **Categories:** Real estate, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 area analyzeds

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Yahoo! Real Estate Japan Used Condo Prices by Area

> **Unofficial** — independent tool, **not affiliated with, endorsed by, or sponsored by Yahoo! Real Estate**. It reads only publicly visible pages. Support, reliability guarantees and the full disclaimer are at the bottom of this page.

**What it does:** Enter a Japanese city or ward code and get the whole used-condo market of that area as Yahoo! Real Estate itself counts it.

**You enter:** one or more 5-digit Japanese city codes, e.g. `13113` (渋谷区 / Shibuya, Tokyo) or `27127` (大阪市北区 / Kita, Osaka).

**You get:** for the whole area — how many condos are for sale, how many are already rented to a tenant, the average price for each floor plan, building age and walk-time spread, and nearby wards. Price range and price per m2 come from the units read (30 buildings a page).

**Price:** $0.02 per area. +$0.002 per row if you also want the list of units. No results = no charge.

**Example:** enter `13113` → 516 condos for sale in 376 buildings · 108 of them (20.9%) already rented to a tenant · average asking price ¥168,137,426 across the area · 2LDK ¥194,280,000 (149 units), 1LDK ¥112,780,000 (159 units) · half the stock is 30 years old or less and within 7 minutes of a station · 118 units read for the price range ¥30,000,000–¥804,800,000 (real run, 2026-09-09)

> Unofficial — not affiliated with Yahoo! Real Estate. Reads public pages only.

### Pricing — $0.02 per area

| Event | Price | When |
|---|---|---|
| Area market summary | **$0.02** | Per city or ward code you enter |
| Individual condo unit | **$0.002** | Only if you enable **Include individual condo units** |

A default run (1 area, summary only) costs **$0.02**. You pay per area; there is no monthly fee. **An area that returns zero condos for sale is never charged.**

Ten areas per run is the maximum, and the run option **Maximum cost per run** ($3.00 by default) is far above what ten areas cost — what limits a run here is time, not money.

### Input

| Field | Example | Notes |
|---|---|---|
| `cityCodes` | `["13113"]` | 5-digit Japanese city codes. `13113` = Shibuya (Tokyo), `27127` = Kita (Osaka), `13205` = Ome (Tokyo). Up to 10 per run, each charged $0.02 |
| `extraPages` | `1` | 0–4. Extra result pages added to the price sample only. One page holds 30 buildings. The area-wide numbers all come from the first page and never change |
| `includeIndividualListings` | `false` | Enable to also get one row per condo unit that was read (+$0.002 each) |
| `includeNearbyAreas` | `true` | Adds the neighbouring wards to the summary row. No extra page read, no extra charge |
| `convertToUsd` | `true` | Adds USD figures at the current exchange rate. A failed lookup never fails the run |

### Which numbers cover the whole area, and which cover only what was read?

Every record says so itself, in two fields:

| Field | Label | What it covers |
|---|---|---|
| `averagePriceJpyBasis` | `population` | `averagePriceJpy` and `byLayout` are Yahoo's own averages, worked out over **every vacant condo in the area** — 408 units in the run below, not the 118 that were read |
| `priceJpyBasis` | `sample` | `priceJpy`, `pricePerM2Jpy`, `priceUpdatedShareSampled` and `adsPerUnitSampled` cover **only the units actually read** (`sampledListings` says how many) |

`tenantedShare`, `buildingAgeCdf`, `walkMinutesCdf`, `listedWithinDaysCdf` and `featureCounts` are area-wide counts published by the site, so they are not sample numbers either. **This matters.** The first result page of Shibuya showed 3 of 63 units rented out (4.8%), while the area's true figure is 108 of 516 (20.9%) — a tool that read the share off the first page would be wrong by a factor of four.

### Output example (`type: "area_condo_market_summary"`)

Measured on 2026-09-09 (real run, `{"cityCodes": ["13113"], "extraPages": 1, "includeIndividualListings": false, "includeNearbyAreas": true, "convertToUsd": true}`). The whole record, nothing shortened.

```json
{
  "type": "area_condo_market_summary",
  "cityCode": "13113",
  "areaLabel": "東京都、渋谷区",
  "areaStatus": "ok",
  "totalListingsFound": 516,
  "unitsFound": 516,
  "buildingsFound": 376,
  "vacantUnits": 408,
  "tenantedUnits": 108,
  "tenantedShare": 0.2093,
  "averagePriceJpy": 168137426,
  "averagePriceJpyBasis": "population",
  "byLayout": [
    {
      "layout": "ワンルーム",
      "count": 17,
      "meanPriceJpy": 61490000
    },
    {
      "layout": "1K/1DK",
      "count": 18,
      "meanPriceJpy": 65670000
    },
    {
      "layout": "1LDK",
      "count": 159,
      "meanPriceJpy": 112780000
    },
    {
      "layout": "2K/2DK",
      "count": 12,
      "meanPriceJpy": 52460000
    },
    {
      "layout": "2LDK",
      "count": 149,
      "meanPriceJpy": 194280000
    },
    {
      "layout": "3K/3DK",
      "count": 3,
      "meanPriceJpy": 78130000
    },
    {
      "layout": "3LDK",
      "count": 47,
      "meanPriceJpy": 360490000
    },
    {
      "layout": "4LDK",
      "count": 3,
      "meanPriceJpy": 562000000
    }
  ],
  "sampledListings": 118,
  "pagesRead": 2,
  "sortUsed": "site default",
  "priceJpy": {
    "min": 30000000,
    "p25": 84847500,
    "median": 127495000,
    "p75": 226000000,
    "max": 804800000,
    "average": 166732034
  },
  "priceJpyBasis": "sample",
  "pricePerM2Jpy": {
    "min": 854701,
    "p25": 2005636,
    "median": 2543013,
    "p75": 3297564,
    "max": 7645103,
    "average": 2738260
  },
  "buildingAgeCdf": [
    {
      "maxYears": 1,
      "count": 13,
      "share": 0.0252
    },
    {
      "maxYears": 2,
      "count": 35,
      "share": 0.0678
    },
    {
      "maxYears": 3,
      "count": 41,
      "share": 0.0795
    },
    {
      "maxYears": 5,
      "count": 45,
      "share": 0.0872
    },
    {
      "maxYears": 7,
      "count": 76,
      "share": 0.1473
    },
    {
      "maxYears": 10,
      "count": 98,
      "share": 0.1899
    },
    {
      "maxYears": 15,
      "count": 138,
      "share": 0.2674
    },
    {
      "maxYears": 20,
      "count": 156,
      "share": 0.3023
    },
    {
      "maxYears": 25,
      "count": 212,
      "share": 0.4109
    },
    {
      "maxYears": 30,
      "count": 282,
      "share": 0.5465
    },
    {
      "maxYears": 35,
      "count": 298,
      "share": 0.5775
    },
    {
      "maxYears": 99,
      "count": 516,
      "share": 1.0
    }
  ],
  "medianBuildingAgeYears": 30,
  "walkMinutesCdf": [
    {
      "maxMinutes": 3,
      "count": 94,
      "share": 0.1822
    },
    {
      "maxMinutes": 5,
      "count": 246,
      "share": 0.4767
    },
    {
      "maxMinutes": 7,
      "count": 360,
      "share": 0.6977
    },
    {
      "maxMinutes": 10,
      "count": 495,
      "share": 0.9593
    },
    {
      "maxMinutes": 15,
      "count": 516,
      "share": 1.0
    },
    {
      "maxMinutes": 20,
      "count": 516,
      "share": 1.0
    },
    {
      "maxMinutes": 99,
      "count": 516,
      "share": 1.0
    }
  ],
  "medianWalkMinutes": 7,
  "listedWithinDaysCdf": [
    {
      "maxDays": 1,
      "count": 4,
      "share": 0.0078
    },
    {
      "maxDays": 3,
      "count": 12,
      "share": 0.0233
    },
    {
      "maxDays": 5,
      "count": 24,
      "share": 0.0465
    },
    {
      "maxDays": 7,
      "count": 28,
      "share": 0.0543
    },
    {
      "maxDays": 99,
      "count": 516,
      "share": 1.0
    }
  ],
  "priceUpdatedShareSampled": 0.1271,
  "adsPerUnitSampled": 3.25,
  "nearbyAreas": [
    {
      "cityCode": "13103",
      "areaLabel": "港区",
      "averagePriceJpy": 230050000,
      "vacantUnits": 641
    },
    {
      "cityCode": "13104",
      "areaLabel": "新宿区",
      "averagePriceJpy": 103050000,
      "vacantUnits": 534
    },
    {
      "cityCode": "13112",
      "areaLabel": "世田谷区",
      "averagePriceJpy": 93930000,
      "vacantUnits": 440
    },
    {
      "cityCode": "13109",
      "areaLabel": "品川区",
      "averagePriceJpy": 119890000,
      "vacantUnits": 309
    },
    {
      "cityCode": "13110",
      "areaLabel": "目黒区",
      "averagePriceJpy": 114900000,
      "vacantUnits": 262
    },
    {
      "cityCode": "13115",
      "areaLabel": "杉並区",
      "averagePriceJpy": 65390000,
      "vacantUnits": 255
    },
    {
      "cityCode": "13114",
      "areaLabel": "中野区",
      "averagePriceJpy": 86770000,
      "vacantUnits": 197
    }
  ],
  "featureCounts": [
    {
      "code": "A0501",
      "label": "ペット可",
      "count": 253
    },
    {
      "code": "D0112",
      "label": "リノベーション・リフォーム",
      "count": 260
    },
    {
      "code": "D0109",
      "label": "駐車場空きあり（近隣を含む）",
      "count": 181
    },
    {
      "code": "B0102",
      "label": "南向き（南東・南西含む）",
      "count": 298
    },
    {
      "code": "B0103",
      "label": "2階以上",
      "count": 453
    },
    {
      "code": "A0405",
      "label": "エレベーター",
      "count": 432
    },
    {
      "code": "A0205",
      "label": "タワー（20階建て以上）",
      "count": 37
    },
    {
      "code": "D0117",
      "label": "低層マンション（4階建て以下）",
      "count": 67
    },
    {
      "code": "A0401",
      "label": "宅配ボックスあり",
      "count": 292
    },
    {
      "code": "A0408",
      "label": "オートロック",
      "count": 312
    },
    {
      "code": "C0102",
      "label": "即入居可能",
      "count": 186
    }
  ],
  "consistencyCheck": "ok",
  "layoutTableExcludesTenanted": true,
  "priceUsd": {
    "min": 195030.0,
    "p25": 551593.6,
    "median": 828844.99,
    "p75": 1469226.0,
    "max": 5232004.8,
    "average": 1083924.95
  },
  "pricePerM2Usd": {
    "min": 5556.41,
    "p25": 13038.64,
    "median": 16532.13,
    "p75": 21437.46,
    "max": 49700.81,
    "average": 17801.43
  },
  "averagePriceUsd": 1093061.41,
  "exchangeRateJpyUsd": 0.006501,
  "truncatedForTimeLimit": false,
  "hint": null,
  "sourceUrl": "https://realestate.yahoo.co.jp/used/mansion/search/03/13/13113/",
  "checkedAt": "2026-09-09T01:36:20.423463+00:00"
}
```

Reading it: 516 condos are on the market in Shibuya across 376 buildings; 408 are empty and 108 (20.9%) come with a tenant already paying rent. Yahoo's own average over those 408 is ¥168,137,426, and `byLayout` shows why one number is not enough — a 1LDK averages ¥112,780,000 and a 3LDK ¥360,490,000. `consistencyCheck: "ok"` means the floor-plan table's counts still add up to exactly the 408 empty units, which is what makes that average safe to quote.

With **Include individual condo units** on, each unit also comes back on its own row: `type: "condo_listing"` with `buildingName`, `buildingAddress`, `builtOn`, `buildingAgeYears`, `totalUnitsInBuilding`, `buildingFloors`, `stationLine`, `stationName`, `walkMinutes`, `floorLabel`, `direction`, `areaM2`, `layout`, `priceJpy`, `pricePerM2Jpy`, `isTenanted`, `isPriceUpdated` and `adCount`.

### What this Actor does not do

- **No sold prices.** These are **asking** prices for condos on the market today. Japan publishes no per-unit sale prices, so nothing here says what a condo actually changed hands for
- **No rentals.** Buy side only. The rental question is answered by our SUUMO and at home tools
- **No unit list by default.** The product is the area summary; individual units are opt-in and priced separately
- **No people.** The pages carry agent names, agency phone numbers, sales comments and photos. None of them are read and none of them are returned — only facts about the property and the area
- **No new-build market.** Only pre-owned condos (中古マンション)
- **Nothing is stored.** Every run reads the site live; nothing is kept between runs

### Notes on the data

- **Two different totals, and both are in the record.** `unitsFound` (516) counts condo units for sale — it is the number the page prints as 「516件」. `buildingsFound` (376) counts buildings. Paging works in buildings: 30 per page
- **One condo is often advertised by several agencies.** The first Shibuya page held 30 buildings, 63 units and 218 price elements; counting price elements would count one room up to twelve times. Units are grouped, and `adsPerUnitSampled` (3.25 in the run above) reports how many agencies advertise the average unit. Where agencies quote different prices for the same unit — 14 of 63 units on 2026-09-09 — the lowest is used, because the higher ones are the pre-reduction prices
- **`nearbyAreas` counts empty units.** The neighbour table on an area page is built from the same group of units as `byLayout`, so its `vacantUnits` is that ward's empty stock, not its total. Measured 2026-09-09: Shinjuku's page lists Shibuya as ¥168,140,000 / 408 units, which is Shibuya's own vacant count and its own average, to the yen
- **“Fresh” is the closest thing to liquidity here.** No sale dates exist, so `listedWithinDaysCdf` stands in: in Shibuya only 28 of 516 units (5.4%) were listed within the last 7 days, which is a slow-moving market
- **`extraPages` buys sample only.** Page 2 was verified to return byte-identical area counts and market tables — they are per search condition, not per page — so more pages widen `priceJpy` and `pricePerM2Jpy` and change nothing else
- **The region code in the URL is not the prefecture code**, and it is not sequential either: prefecture 19 (Yamanashi) sits in region 03 and 20 (Nagano) in region 04. The full map was checked against all 701 city URLs of the site's own city sitemap on 2026-09-09, and every run also checks that the page answered with the prefecture the code belongs to — a wrong code otherwise returns a perfectly healthy page for a different area
- **Walk times are station walks only.** Where a building is reached by bus (「青梅線 「小作」駅 バス5分 … 徒歩8分」), the minutes on the page are the walk from the *bus stop*. The line and station still come back, but `walkMinutes` is left empty rather than passing a bus ride off as an eight-minute station walk
- **Encoding and size.** UTF-8 throughout. A result page is 2.0–3.4 MB (an empty area is 126 KB); one page is read, parsed and dropped before the next is requested, which is how the run stays inside 256 MB
- **Politeness.** At least 1.5 s between page reads and never more than 12 page reads in one run. In a 10-area run that means the later areas get their first page only, and their records say so with `truncatedForTimeLimit`; their area-wide numbers are unaffected because those come from the first page anyway

### If something goes wrong

- **Wrong number or a failed run?** Open a ticket on the **Issues** tab. I read every one and reply within 2 business days (Japan time).
- **You never get a fake "empty" result.** If the site can't be read, the run fails and says so.
- **No results = no charge.** You only pay for results you actually get.
- **Checked every week.** An automatic test runs this tool weekly; if the site changes, I fix it.
- **Public pages only.** No login, no personal data, and it goes easy on the site.

### More tools by the same author

- [at home Japan Rent Prices by Area — Fees & Deposits](https://apify.com/jpmarketdata/athome-rent-market-checker)
- [SUUMO vs at home — Japan Rent by Ward, Two Sites Compared](https://apify.com/jpmarketdata/japan-rent-market-benchmark)
- [LIFULL HOME'S Japan Home Prices by City and Building Age](https://apify.com/jpmarketdata/lifull-homes-property-price-checker)
- [SUUMO Japan Rent & Used Condo Prices by City + Gross Yield](https://apify.com/jpmarketdata/suumo-market-checker)
- [Mercari Japan Sold Prices — What Items Really Sell For](https://apify.com/jpmarketdata/mercari-japan-price-checker)
- [Yahoo! Auctions Japan Sold Prices — Median, Range, Bids](https://apify.com/jpmarketdata/yahoo-auction-sold-comps)

All tools (Japan marketplaces, real estate, jobs, racing, prediction markets): <https://apify.com/jpmarketdata>

### Disclaimer

Unofficial, independent tool — **not affiliated with, endorsed by, or sponsored by Yahoo! Real Estate**. Product names and logos belong to their owners and only say where the data comes from. Data is read from public pages, for market research; check before you act on it.

# Actor input Schema

## `cityCodes` (type: `array`):

5-digit Japanese city codes. 13113 = Shibuya (Tokyo), 27127 = Kita (Osaka), 13205 = Ome (Tokyo). You get one summary row per code, and each code is charged $0.02; a code with nothing for sale is never charged. Up to 10 codes per run. Maximum cost per run is $3.00 by default, far more than 10 areas cost, so what limits a run is time rather than money.

## `extraPages` (type: `integer`):

How many more result pages are added to the price sample for each area (one page holds 30 buildings). It only widens that sample — units found, the average for each floor plan, the rented-out share, the age and walk-time tables and the nearby areas all come from the first page and never change. A run stops after 12 page reads, so in a 10-area run the later areas get the first page only.

## `includeIndividualListings` (type: `boolean`):

Off by default: a run costs a flat $0.02 per area. Turn it on to also get one row per condo unit that was read — building name, address, year built, line, station and walk time, floor, direction, size in m2, floor plan, asking price, price per m2, whether it is rented out, whether the price was reduced — at +$0.002 per row. A busy ward returns 60 to 120 rows per area.

## `includeNearbyAreas` (type: `boolean`):

On by default. Adds the neighbouring wards to each summary row — their average used-condo price and how many units are on their market — taken from a table the area page already carries. It costs no extra page read and no extra charge. Turn it off if you only want the one area you asked for.

## `convertToUsd` (type: `boolean`):

Adds USD figures next to the yen ones at the current exchange rate (open.er-api.com). A failed rate lookup never fails the run — the yen numbers simply come back on their own.

## Actor input object example

```json
{
  "cityCodes": [
    "13113"
  ],
  "extraPages": 1,
  "includeIndividualListings": false,
  "includeNearbyAreas": true,
  "convertToUsd": true
}
```

# Actor output Schema

## `areaCondoSummaries` (type: `string`):

One row per city or ward: how many used condos are for sale, how many are already rented to a tenant, the average price for each floor plan, and the price range of the units that were read.

# 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 = {
    "cityCodes": [
        "13113"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jpmarketdata/yahoo-realestate-condo-market-checker").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 = { "cityCodes": ["13113"] }

# Run the Actor and wait for it to finish
run = client.actor("jpmarketdata/yahoo-realestate-condo-market-checker").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 '{
  "cityCodes": [
    "13113"
  ]
}' |
apify call jpmarketdata/yahoo-realestate-condo-market-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jpmarketdata/yahoo-realestate-condo-market-checker"
        }
    }
}

```

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/EZbS7pIzX74BXJOi3/builds/0p45jxVSB8Ou2azZX/openapi.json
