# Japan Land Price API — Official Appraisals & 40-Year History (`jp-data-engine/japan-land-price-api`) Actor

Every official Japanese land price survey site: appraised price per m2, year-on-year change, zoning, floor-area ratio, current use, nearest station - plus the price for every year back to 1983. 46,988 sites from 地価公示 and 都道府県地価調査. Government open data, no scraping.

- **URL**: https://apify.com/jp-data-engine/japan-land-price-api.md
- **Developed by:** [Shota Tatara](https://apify.com/jp-data-engine) (community)
- **Categories:** Real estate, Developer tools, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 survey sites

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/platform/actors/running/actors-in-store#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

## Japan Land Price API — Official Appraisals & 40-Year History

Every official land-price survey site in Japan, with what it is worth today and what it was
worth every year back to 1983.

```json
{
    "address": "東京都 中央区銀座4丁目2番4",
    "prefecture": "東京都",
    "municipality": "中央区",
    "municipalityCode": "13102",
    "latitude": 35.671989,
    "longitude": 139.765335,
    "year": 2025,
    "pricePerSqm": 60500000,
    "pricePerTsubo": 200000090,
    "yearOnYearChangePercent": 8.6,
    "change10YearPercent": 79.0,
    "changeSincePeakPercent": 0,
    "zoning": "商業",
    "floorAreaRatioPercent": 800,
    "nearestStation": "銀座",
    "distanceToStationMeters": 100,
    "priceHistory": [{ "year": 2002, "pricePerSqm": 14100000 }, "…"]
}
```

**No scraping. No API keys. No rate limits.** Every answer comes from a registry compiled
from Japanese government open data and shipped inside the Actor.

***

### What is in it

|                            |                                                                                                                                                                                              |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **46,988 survey sites**    | 25,563 from 地価公示 + 21,425 from 都道府県地価調査                                                                                                                                          |
| **1,933 municipalities**   | every prefecture, city, ward, town and village with a survey site                                                                                                                            |
| **43 years of prices**     | the appraised price for each site for every year from 1983                                                                                                                                   |
| **26 attributes per site** | price, change, area, zoning, FAR, coverage ratio, current use, building structure, nearest station and distance, front road and its width, and a written description of the surrounding area |

Japan runs two official appraisals a year and this Actor carries both:

- **地価公示 (`koji`)** — appraised as of 1 January by the national government under 地価公示法.
  This is the number quoted when the news says "land prices rose x%".
- **都道府県地価調査 (`chosa`)** — appraised as of 1 July by each prefecture. It covers areas
  outside the 公示 grid, so together they give roughly twice the coverage of either alone.

***

### Why this is hard to get otherwise

The source is published as 国土数値情報 Shapefile/GeoJSON archives with **numbered columns**
(`L01_008`, `L01_051`, …) whose meaning is not in the file. The published attribute spec does
not line up with what actually ships: 標準地コード is three columns in the data but two in the
spec, and the order around 駅名 / 交通施設との近接状況 differs as well. Guess wrong by one and
you publish the wrong price against the wrong site.

Every column in this Actor was pinned by profiling the real value distributions across
thousands of features — direction fields hold the eight compass points, 用途地域 holds the
twelve zoning codes, 建蔽率 lands in 0–80, 容積率 in 0–800, and so on. The mapping is
regression-tested: the most expensive site in the country must come out as **銀座4丁目2番4 at
¥60,500,000/m²**, which is the published 2025 figure.

***

### Use cases

- **Value a Japanese property.** Find the survey sites within a kilometre, take the price per
  square metre, and you have the appraisal basis every Japanese valuer starts from.
- **Check what can be built on a site.** `zoning`, `floorAreaRatioPercent`,
  `buildingCoverageRatioPercent`, `cityPlanningArea` and `frontRoadWidthMeters` are the
  inputs to a Japanese development feasibility calculation.
- **Screen a market before you fly.** Sort a prefecture by `yearOnYearChangePercent` to find
  where prices are actually moving, or by `changeSincePeakPercent` to find what is still
  below its bubble-era high.
- **Build a time series.** 43 years of appraisals per site, already cleaned of the zeros that
  mark "not yet surveyed".
- **Give an AI agent a Japanese property tool.** It runs as an MCP tool: an agent can ask
  "what is land worth near this station, and is it rising?" and get typed rows back.

***

### Input

```json
{
    "prefectures": ["東京都"],
    "municipalityCodes": ["13102"],
    "keyword": "銀座",
    "near": { "latitude": 35.6717, "longitude": 139.765, "radiusMeters": 1000 },
    "surveyTypes": ["koji"],
    "zoning": ["商業"],
    "minPricePerSqm": 1000000,
    "sortBy": "price",
    "maxResults": 100
}
```

Every field is optional; an empty input returns the most expensive sites in Tokyo.

| Field                               | Meaning                                                                               |
| ----------------------------------- | ------------------------------------------------------------------------------------- |
| `prefectures`                       | Prefecture names, with or without the suffix (`東京` = `東京都`)                      |
| `municipalityCodes`                 | 5-digit 全国地方公共団体コード — narrower and faster than a prefecture                |
| `keyword`                           | Substring over site name, address, municipality, nearest station and area description |
| `near`                              | `{latitude, longitude, radiusMeters}` — results come back sorted by distance          |
| `surveyTypes`                       | `koji` (地価公示) and/or `chosa` (都道府県地価調査)                                   |
| `zoning`                            | `1低専`, `1中専`, `1住居`, `近商`, `商業`, `準工`, `工業`, `工専`, …                  |
| `currentUse`                        | `住宅`, `店舗`, `事務所`, `工場`, `駐車場`, `田`, `畑`, …                             |
| `minPricePerSqm` / `maxPricePerSqm` | Price band in JPY per square metre                                                    |
| `includePriceHistory`               | Set to `false` for a flat, smaller output                                             |
| `sortBy`                            | `price`, `priceAscending`, `yearOnYearChange`, `distance`                             |
| `maxResults`                        | Hard cap on rows — this is what determines the cost of the run                        |

### Output

One row per survey site. Notable fields:

| Field                                                                                 | Description                                                                            |
| ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| `pricePerSqm` / `pricePerTsubo`                                                       | Appraised land value, JPY. Tsubo is the unit Japanese agents quote                     |
| `yearOnYearChangePercent`                                                             | Official change against last year's appraisal                                          |
| `change5YearPercent`, `change10YearPercent`                                           | Computed from this site's own history                                                  |
| `changeSincePeakPercent`                                                              | Against the site's highest appraisal ever — negative means still below its bubble peak |
| `zoning`, `buildingCoverageRatioPercent`, `floorAreaRatioPercent`, `cityPlanningArea` | What may be built                                                                      |
| `nearestStation`, `distanceToStationMeters`                                           | As recorded by the appraiser                                                           |
| `frontRoad`, `frontRoadDirection`, `frontRoadWidthMeters`                             | Road access, which drives value in Japan                                               |
| `surroundings`                                                                        | The appraiser's written description of the neighbourhood                               |
| `priceHistory`                                                                        | `[{year, pricePerSqm}]`, oldest first, zeros removed                                   |
| `municipalityCode`                                                                    | The join key for every Japanese government statistic                                   |
| `distanceMeters`                                                                      | Radius searches only                                                                   |

***

### Pricing

Pay per event: a small charge to start the run, plus a charge per site returned. There are no
proxy costs, because there is nothing to proxy.

***

### Data sources

Everything is public, free and downloaded from the publisher. There is no scraping anywhere in
this Actor, at build time or at run time.

| Source                                                                  | Publisher  | Licence                                                   |
| ----------------------------------------------------------------------- | ---------- | --------------------------------------------------------- |
| [国土数値情報 地価公示 (L01-25)](https://nlftp.mlit.go.jp/ksj/)         | 国土交通省 | 公共データ利用規約 第1.0版 (PDL1.0)                       |
| [国土数値情報 都道府県地価調査 (L02-24)](https://nlftp.mlit.go.jp/ksj/) | 国土交通省 | 公共データ利用規約 第1.0版 (PDL1.0)                       |
| [郵便番号データ](https://www.post.japanpost.jp/zipcode/download.html)   | 日本郵便   | Japan Post asserts no copyright over the postal code data |

PDL1.0 permits commercial use and redistribution and requires the source credit plus a
statement that the data was edited. Reproduced here and in every run's `RUN_SUMMARY`:

> 「国土数値情報（地価公示）」（国土交通省）（https://nlftp.mlit.go.jp/ksj/）をもとに jp-data-engine が加工して作成
>
> 「国土数値情報（都道府県地価調査）」（国土交通省）（https://nlftp.mlit.go.jp/ksj/）をもとに jp-data-engine が加工して作成
>
> 郵便番号データ（日本郵便株式会社）をもとに jp-data-engine が加工して作成

The registry is recompiled from the publishers' current releases every time the Actor is
rebuilt, and each row carries the `datasetBuiltAt` date it was answered from.

***

### Known limits

Stated up front rather than discovered later:

- **These are survey points, not every parcel.** Japan has ~47,000 official survey sites, not
  a price for every plot. The standard practice is to value a property from the nearby sites,
  which is what the radius search is for.
- **地価公示 is as of 1 January, 地価調査 as of 1 July**, and the latest editions here are
  2025 and 2024 respectively. Mixing the two in one ranking mixes two appraisal dates.
- **Zoning is blank for about 9,000 rural sites** — they sit outside a 用途地域, which the
  source records as empty rather than as a category.
- **Price history starts when the site was first surveyed**, which for many sites is well
  after 1983. `priceHistory` is only as long as the site is old.
- **This is not a transaction database.** These are appraisals, not actual sale prices.

***

### Local development

```bash
npm install
npm run build:data   # downloads the government data and compiles the registry into data/
npm test             # 17 tests, including the field-mapping regression
npx apify run        # run with the default input
```

Part of the **jp-data-engine Japan data suite** — Japanese data, structured for everyone else.
See also [Japan Address Normalizer, Geocoder & Romanizer](https://apify.com/jp-data-engine/japan-address-intelligence)
for turning a Japanese address into coordinates and a municipality code you can feed straight
into this Actor.

# Actor input Schema

## `prefectures` (type: `array`):

Prefecture names in Japanese, with or without the suffix — `東京` and `東京都` both work. Leave empty for the whole country.

## `municipalityCodes` (type: `array`):

5-digit 全国地方公共団体コード (JIS X 0402 + check digit), e.g. `13102` for 中央区. Narrower and faster than a prefecture filter.

## `keyword` (type: `string`):

Case-insensitive substring matched against the site name, address, municipality, nearest station and the description of the surrounding area. Example: `銀座`, `渋谷`, `駅前`.

## `near` (type: `object`):

Find survey sites around a point, e.g. `{"latitude": 35.6717, "longitude": 139.7650, "radiusMeters": 1000}`. Results come back sorted by distance.

## `surveyTypes` (type: `array`):

`koji` = 地価公示 (appraised 1 January, national). `chosa` = 都道府県地価調査 (appraised 1 July, prefectural). Empty means both.

## `zoning` (type: `array`):

Filter by zoning code as published: `1低専`, `2低専`, `1中専`, `2中専`, `1住居`, `2住居`, `準住居`, `近商`, `商業`, `準工`, `工業`, `工専`.

## `currentUse` (type: `array`):

Filter by how the site is used, as published: `住宅`, `店舗`, `事務所`, `工場`, `倉庫`, `駐車場`, `林地`, `田`, `畑` and combinations of them.

## `minPricePerSqm` (type: `integer`):

Only return sites appraised at or above this price.

## `maxPricePerSqm` (type: `integer`):

Only return sites appraised at or below this price.

## `includePriceHistory` (type: `boolean`):

Each site carries its appraised price for every year back to 1983. Turn this off for a smaller, flatter output.

## `sortBy` (type: `string`):

How to order the results. `distance` only applies to a radius search.

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

Hard cap on the number of rows written. This is what determines the cost of the run.

## Actor input object example

```json
{
  "prefectures": [
    "東京都"
  ],
  "includePriceHistory": true,
  "sortBy": "price",
  "maxResults": 100
}
```

# Actor output Schema

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

No description

## `runSummary` (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 = {
    "prefectures": [
        "東京都"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jp-data-engine/japan-land-price-api").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 = { "prefectures": ["東京都"] }

# Run the Actor and wait for it to finish
run = client.actor("jp-data-engine/japan-land-price-api").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 '{
  "prefectures": [
    "東京都"
  ]
}' |
apify call jp-data-engine/japan-land-price-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jp-data-engine/japan-land-price-api"
        }
    }
}

```

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/T8XKFAx1T2MuGSZK0/builds/fA2lJTiVYWXfYjqtZ/openapi.json
