# Japan Real Estate Brokers Register (MLIT 宅建業者) (`jpopendata/japan-real-estate-brokers`) Actor

Licensed real-estate brokers (宅地建物取引業者) from MLIT's official register: license number, authority, renewals, validity dates, head-office city, guarantee and trade associations, office and staff counts. Corporations only; no personal names or phone numbers. Unofficial; not affiliated with MLIT.

- **URL**: https://apify.com/jpopendata/japan-real-estate-brokers.md
- **Developed by:** [JP Open Data](https://apify.com/jpopendata) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

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

## Japan Real Estate Brokers Register (MLIT 宅建業者)

**Licensed real-estate brokers in Japan (宅地建物取引業者), straight from the Ministry of Land, Infrastructure, Transport and Tourism's official register — by prefecture or company name, with license number, validity dates, head-office city, guarantee and trade associations, office count and staff counts.**

This Actor searches MLIT's public company-information system (建設業者・宅建業者等企業情報検索システム, [etsuran2.mlit.go.jp](https://etsuran2.mlit.go.jp/TAKKEN/)) — the register behind every licensed real-estate brokerage in Japan — and returns **corporate** license holders as clean JSON with an English schema. Japanese values (company names, associations) are kept as published, so they match what you see on property ads and company websites.

> **Unofficial tool.** Not affiliated with or endorsed by MLIT or the Government of Japan. Records are edited/processed data from the register, published under 公共データ利用規約（第1.0版）(PDL 1.0), which permits commercial reuse with attribution. Every record carries the required notice: *出典：国土交通省 建設業者・宅建業者等企業情報検索システム（https://etsuran2.mlit.go.jp/TAKKEN/）の宅地建物取引業者情報を編集・加工して作成*.

***

### Quick start — verified input

Copy-paste this into the input (JSON tab) or send it via the API. It was run successfully on 2026-10-13: 20 licensed brokers headquartered in Tokyo, each with its company page and office count, in about one minute.

```json
{
  "prefecture": "Tokyo",
  "maxItems": 20
}
```

Running with an empty input `{}` does exactly the same.

#### Common input mistakes

| Wrong | Right | Why |
|---|---|---|
| `"prefecture": "東京都"` or `"13"` (via API) | `"prefecture": "Tokyo"` | The platform checks the dropdown values (47 English names, or empty) before the run starts. |
| `"prefecture": "Yokohama"` | `"prefecture": "Kanagawa"` | Cities are not prefectures. |
| `"companyName": "株式会社三井不動産"` | `"companyName": "三井不動産"` | The register searches the name without 株式会社 / 有限会社 (a leading or trailing one is removed for you). |
| `"companyName": "三"` | `"companyName": "三井"` | At least 2 characters. |
| `"prefecture": ""` with nothing else | add `"companyName"` or `"licenseType": "minister"` | Unfiltered national lists are not supported; the run would fall back to Tokyo. |
| `"maxItems": 5000` | `"maxItems": 1000` and split by `companyName` / `licenseType` | One run returns at most 1,000 brokers. |

Invalid values stop the run immediately — before any request to the register — with a message that names the field and lists the valid values.

#### Empty results?

A run that ends with **0 records and `complete: true`** is not an error. Typical causes:

- the register has no broker whose name contains your `companyName` fragment in that prefecture (try a shorter fragment, the katakana reading such as `"ミツイ"`, or `"officeScope": "anyOffice"` to include branch offices);
- every match is an **individual** (sole-proprietor) broker — those are always excluded (see FAQ);
- `includeDetails: false` (list mode) and none of the names carries a corporate designator such as 株式会社.

A run with no records incurs no per-record charges.

***

### Who is this for?

- **Proptech and real-estate SaaS sales** — build target lists of licensed brokerages by prefecture, filter by size (staff, licensed agents, offices) and by association membership (e.g. 全宅連 / 全日 members, the ハトマーク and ウサギマーク networks).
- **Market research** — count and profile licensed brokers in a region; license renewal counts (the number in parentheses) show how long a firm has been licensed.
- **Counterparty and ad verification (KYB)** — confirm that a company's license number, licensing authority and validity period match the official register before you sign or publish.

### What you get per broker

| Field | Example | Notes |
|---|---|---|
| `companyName`, `companyNameKana` | 三井不動産株式会社, ミツイフドウサンカブシキガイシヤ | As registered; reading converted to fullwidth katakana |
| `licenseNumber` | 国土交通大臣(17)第000011号 | The form used on property ads |
| `licenseAuthority`, `licenseAuthorityEn`, `licenseType` | 国土交通大臣, "Minister of Land, …", `minister` | `minister` = offices in 2+ prefectures, `governor` = one prefecture |
| `renewalCount`, `licenseSerial` | 17, 11 | (1) = first 5-year term, +1 per renewal |
| `validFrom`, `validTo`, `firstLicensedDate` | 2023-10-09, 2028-10-08, 1965-10-08 | ISO dates |
| `prefecture`, `prefectureEn`, `prefectureCode`, `address` | 東京都, Tokyo, 13, 東京都中央区 | Head office, **municipality level only** |
| `officeCount` | 15 | Licensed offices (head office + branches) |
| `employeeCount`, `licensedAgentCount` | 1999, 472 | Staff engaged in the business; full-time licensed agents (専任の宅地建物取引士) — counts only |
| `guaranteeAssociation` | （公社）全国宅地建物取引業保証協会 | null when the broker lodged its own deposit instead |
| `tradeAssociations`, `sideBusinesses` | \["（一社）不動産協会", …], \["建設業"] | As registered (empty list = none) |
| `capitalThousandJpy` | 12003797 | Capital at the time of the license application, in thousand JPY |
| `matchedOfficeName`, `matchedOfficeAddress` | 本店, 東京都中央区 | The office row that matched your search |
| `entityVerification`, `detailFetched` | `corporate`, true | How the corporate status was verified |
| `source`, `sourceUrl`, `license`, `retrievedAt` | | Attribution on every record |

### Sample output (one dataset item, run of 2026-10-13)

```json
{
  "companyName": "三井住友建設株式会社",
  "companyNameKana": "ミツイスミトモケンセツカブシキカイシヤ",
  "licenseNumber": "国土交通大臣(17)第000001号",
  "licenseAuthority": "国土交通大臣",
  "licenseAuthorityEn": "Minister of Land, Infrastructure, Transport and Tourism (MLIT)",
  "licenseType": "minister",
  "renewalCount": 17,
  "licenseSerial": 1,
  "validFrom": "2023-10-09",
  "validTo": "2028-10-08",
  "firstLicensedDate": "1965-10-08",
  "prefecture": "東京都",
  "prefectureCode": "13",
  "prefectureEn": "Tokyo",
  "address": "東京都中央区",
  "officeCount": 2,
  "guaranteeAssociation": null,
  "tradeAssociations": [],
  "sideBusinesses": ["建設業"],
  "employeeCount": 20,
  "licensedAgentCount": 4,
  "capitalThousandJpy": 12003797,
  "matchedOfficeName": "本店",
  "matchedOfficeAddress": "東京都中央区",
  "entityVerification": "corporate",
  "detailFetched": true,
  "source": "国土交通省 建設業者・宅建業者等企業情報検索システム（宅地建物取引業者）",
  "sourceUrl": "https://etsuran2.mlit.go.jp/TAKKEN/",
  "license": "公共データ利用規約（第1.0版）PDL1.0 per https://www.mlit.go.jp/link.html (commercial reuse permitted with attribution) — 出典：国土交通省 建設業者・宅建業者等企業情報検索システム（https://etsuran2.mlit.go.jp/TAKKEN/）の宅地建物取引業者情報を編集・加工して作成。Unofficial tool, not affiliated with or endorsed by MLIT; processed data, not an official MLIT publication.",
  "retrievedAt": "2026-10-12T20:33:44.873Z"
}
```

### Input reference

| Field | Default | Meaning |
|---|---|---|
| `prefecture` | `"Tokyo"` | One of the 47 prefectures (English name). Empty = all of Japan, only together with `companyName` or `licenseType: "minister"`. |
| `companyName` | — | Fragment of the trade name. Kanji/kana as written searches the name; katakana only searches the registered reading. Latin letters are converted to the register's fullwidth form. |
| `licenseType` | `"any"` | `minister`, `governor` or `any`. |
| `officeScope` | `"headOffice"` | `headOffice` = head office in the prefecture; `anyOffice` = any office there, including branches of nationwide firms (each company once). |
| `includeDetails` | `true` | Read each company page (validity, associations, counts, and the authoritative corporate/individual flag). `false` = fast list mode, 50 brokers per request, corporate-designator names only. |
| `includeOfficeCount` | `true` | Read each office list to return `officeCount` (one more request per broker). |
| `maxItems` | `20` | 1–1,000 brokers per run. About 3 seconds per broker with details and office counts. |
| `maxApiRequests` | `0` (automatic) | Hard request budget, at most 2,500. When it runs out the run still succeeds with what it collected and `complete: false`. |
| `proxyConfiguration` | no proxy | Not needed: the register answers direct requests. |

A run summary (`RUN_SUMMARY` in the key-value store) reports the register's total, rows scanned, individuals excluded, requests used, and whether the result is `complete`.

### FAQ

**Where does the data come from, and how fresh is it?**
Live from MLIT's official register, which the ministry updates about **twice a month** for real-estate brokers. The register shows what the licensing authorities (MLIT regional bureaus and prefectures) have recorded; occasionally a validity period is shown as expired while a renewal is being processed.

**Are individual (sole-proprietor) brokers included?**
No — corporations only. The register records whether each licensee is a corporation or an individual (法人・個人の別), and the Actor excludes individuals using that flag. In list mode, where the flag is not read, only names with an explicit corporate designator are returned. The run summary shows how many were excluded.

**Why are there no representative names, phone numbers or e-mail addresses?**
By design. Representative names, the names of branch managers and licensed agents, and phone numbers are never read or stored — the parser locates those columns only to skip them. The register does not publish e-mail addresses or websites. Office lists are only counted. Addresses stop at the city/ward level.

**Can I download the whole country?**
No. Searches are always scoped (prefecture, company name or license type), one run returns at most 1,000 brokers, and every run has a hard request budget. Split larger lists over several runs.

**What about server load?**
Requests are strictly one at a time, at least 1.5 seconds apart, with exponential backoff, `Retry-After` support and no block evasion. If the register refuses or changes its layout, the run stops with a clear message — as a partial success if records were already collected, as a failed run otherwise.

**Legal and privacy notes**
This Actor collects only data the register publishes openly under PDL 1.0. You are responsible for complying with the source's terms and with the laws that apply to your use (for example Japan's Act on the Protection of Personal Information or the GDPR) — in particular when you combine these records with other data. Keep the attribution notice when you publish or redistribute the data, and do not present it as an official MLIT publication.

### Search terms this Actor answers

Japan real estate agents list · licensed real estate brokers Japan · 宅建業者 一覧 · 不動産会社 リスト · takken license lookup · Japan real estate license verification · MLIT broker register · real estate companies Tokyo Osaka database

***

*Data source: 国土交通省 建設業者・宅建業者等企業情報検索システム — https://etsuran2.mlit.go.jp/TAKKEN/ (PDL 1.0). Attribution and processing notice embedded in every record.*

# Actor input Schema

## `prefecture` (type: `string`):

Default Tokyo. The prefecture to list licensed real-estate brokers (宅地建物取引業者) for, by English name ("Tokyo", "Osaka", "Fukuoka"). Via API pass the English name exactly as listed — the platform checks the list before the run starts. Cities are not prefectures: use "Kanagawa" for Yokohama, "Aichi" for Nagoya. Choose "(all of Japan)" (an empty value) only together with a companyName or licenseType "minister" — unfiltered national lists are not supported by design; without either the run falls back to Tokyo.

## `companyName` (type: `string`):

Optional. A fragment of the trade name, WITHOUT 株式会社 / 有限会社 (the register asks for the name without the corporate designator; a leading or trailing one is removed automatically). At least 2 characters. Kanji/kana as written ("三谷", "不動産", "ハウス") searches the written name; katakana only ("ミタニ") searches the registered reading. Latin letters and digits are converted to the fullwidth form the register uses ("KOEI" finds 「ＫＯＥＩ」). Leave empty to list the whole prefecture.

## `licenseType` (type: `string`):

Default any. "minister" = licensed by the Minister of Land, Infrastructure, Transport and Tourism (国土交通大臣免許 — brokers with offices in two or more prefectures); "governor" = licensed by a prefectural governor (都道府県知事免許 — offices in one prefecture only); "any" = both.

## `officeScope` (type: `string`):

Default headOffice. "headOffice" = brokers whose head office (主たる事務所) is in the prefecture — one row per company. "anyOffice" = brokers with ANY office there, including branches of nationwide companies (each company appears once; matchedOfficeName tells which office matched).

## `includeDetails` (type: `boolean`):

Default true. Reads the register's company summary (業者概要) for each broker: the authoritative corporate/individual flag (individual brokers are excluded with it), license validity period, first license date, guarantee association, trade associations, side businesses, staff counts and capital. false = cheap list mode (50 brokers per request, no details): only names carrying an explicit corporate designator (株式会社 etc.) are emitted, all others are excluded as unverifiable.

## `includeOfficeCount` (type: `boolean`):

Default true. Also reads each broker's office list (one more request per broker) and returns officeCount — the number of licensed offices (head office + branches). Only the count is kept: office names, addresses and phone numbers are not stored. Needs includeDetails.

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

Default 20. Stop after this many broker records (1-1000 per run). With company pages and office counts each broker takes about 3 seconds (two polite requests); 1000 brokers take roughly 50 minutes. Larger lists: split the search by companyName fragment or licenseType over several runs.

## `maxApiRequests` (type: `integer`):

Default 0 = sized automatically from maxItems (result pages + one company page + one office list per broker, with headroom for excluded individual brokers). Hard budget of requests to etsuran2.mlit.go.jp for this run (at most 2500; strictly one at a time, at least 1.5 s apart). If it runs out, the run still SUCCEEDS with the records collected so far and complete=false in RUN_SUMMARY.

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

Default: no proxy — the register answers direct requests. Optional Apify Proxy settings; one sticky session (one exit IP) is used for the whole run, never rotated.

## Actor input object example

```json
{
  "prefecture": "Tokyo",
  "licenseType": "any",
  "officeScope": "headOffice",
  "includeDetails": true,
  "includeOfficeCount": true,
  "maxItems": 20,
  "maxApiRequests": 0,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `records` (type: `string`):

One record per licensed corporate broker, with source attribution (source, sourceUrl, license, retrievedAt) on every item.

# 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 = {
    "prefecture": "Tokyo",
    "licenseType": "any",
    "officeScope": "headOffice",
    "includeDetails": true,
    "includeOfficeCount": true,
    "maxItems": 20,
    "maxApiRequests": 0,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("jpopendata/japan-real-estate-brokers").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 = {
    "prefecture": "Tokyo",
    "licenseType": "any",
    "officeScope": "headOffice",
    "includeDetails": True,
    "includeOfficeCount": True,
    "maxItems": 20,
    "maxApiRequests": 0,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("jpopendata/japan-real-estate-brokers").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 '{
  "prefecture": "Tokyo",
  "licenseType": "any",
  "officeScope": "headOffice",
  "includeDetails": true,
  "includeOfficeCount": true,
  "maxItems": 20,
  "maxApiRequests": 0,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call jpopendata/japan-real-estate-brokers --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jpopendata/japan-real-estate-brokers"
        }
    }
}
```

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/Jq9g3xcRknJkHLky7/builds/F64mpeANqYqubq0wg/openapi.json
