# Japan Corporate Registry Daily Changes | New, Updated, Closed (`regbase/jp-diff-feed`) Actor

Daily changes in Japan's National Tax Agency corporate registry (houjin bangou): newly registered, updated, and closed Japanese companies, parsed from the official daily diff CSV.

- **URL**: https://apify.com/regbase/jp-diff-feed.md
- **Developed by:** [regbase](https://apify.com/regbase) (community)
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.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 Corporate Registry Daily Diff | New, Changed & Closed Companies (Official Registry Data)

Apify actor that parses the official daily diff of Japan's National Tax Agency corporate registry （法人番号） and emits one dataset item per company registration change — corporate number, registered name, address, entity type, and change type (new / changed / closed / revival) — public registry data, no account or cookies required.

**Cost, up front:** pay-per-event — $0.10 per actor start + $0.005 per result item. Your maximum charge for a run is fixed before you start: $0.10 + (maxResults × $0.005). The sample run below (12 items) costs $0.16; a full real day at the 2026-11-06 volume (2,617 items) costs $13.19. There is no rental or subscription. **If a run returns zero result items, no per-item charge applies — you pay only the $0.10 actor-start charge.**

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| diffPath | string | ./data/diff_sample.csv | Path to the NTA daily diff CSV, relative to actor root |
| date | string | (none) | Optional date label used only in the run log line. It does not filter anything and does not appear in output items |
| changeTypes | array of strings | \[] | Change types to include: 新規 / new, 変更 / changed, 閉鎖 / closed, 復活 / revival, other. Empty = all types |
| prefecture | string | (none) | Exact match on the Japanese prefecture name, e.g. 東京都. Empty = all prefectures |
| maxResults | integer | 100 | Maximum number of results to emit (min 1, max 10000) |

No input field is required.

### Output summary

Each kept row becomes one dataset item with exactly 34 fields: the 30 registry columns in English plus change_type, process_label, address, and status.

- change_type: new / changed / closed / revival / other
- process_label: same value as change_type
- address: prefecture + city + street_address concatenated
- status: active, or closed when closing_date is set

### Sample output (before the pricing section, on purpose)

**Real run, real data.** This actor's code (version 0.1.0, actor.json build: Dockerfile) was run on the official National Tax Agency diff file dated 2026-11-06. Result: 2,617 items — 1,404 new, 895 changed, 298 closed, 20 revived. The first three items, exactly as emitted:

| sequence | corporate_number | name | change_type | address |
|---|---|---|---|---|
| 1 | 1010001091202 | ウエスタン・アセット・マネジメント株式会社 | closed | 東京都千代田区丸の内１丁目５番１号 |
| 2 | 1010001132674 | ＪＰＭ株式会社 | changed | 千葉県市原市若宮２丁目１９－２４ |
| 3 | 1010001141980 | アセアン・トレーディング株式会社 | changed | 東京都千代田区丸の内１丁目１１番１号 |

The first item, in full:

```json
{
  "sequence_number": "1",
  "corporate_number": "1010001091202",
  "process_code": "21",
  "correction_code": "0",
  "update_date": "2026-11-06",
  "change_date": "2026-10-07",
  "name": "ウエスタン・アセット・マネジメント株式会社",
  "name_image_id": "",
  "entity_type": "301",
  "prefecture": "東京都",
  "city": "千代田区",
  "street_address": "丸の内１丁目５番１号",
  "address_image_id": "",
  "prefecture_code": "13",
  "city_code": "101",
  "postal_code": "1000005",
  "address_outside_japan": "",
  "reserved_empty": "",
  "closing_date": "2026-10-07",
  "closing_reason": "11",
  "succeeded_corporate_number": "5010001048652",
  "change_cause": "令和８年１０月１日東京都千代田区丸の内一丁目５番１号フランクリン・テンプルトン・ジャパン株式会社（5010001048652）に合併し解散",
  "assignment_date": "2015-10-05",
  "latest_history_flag": "1",
  "name_en": "",
  "prefecture_en": "",
  "city_en": "",
  "address_outside_japan_en": "",
  "name_kana": "ウエスタンアセットマネジメント",
  "non_display_flag": "0",
  "change_type": "closed",
  "process_label": "closed",
  "address": "東京都千代田区丸の内１丁目５番１号",
  "status": "closed"
}
```

These are public registry records, shown unedited. (This run was executed locally with the actor's own parser on 2026-11-08; the actor is not yet published, so no Apify run ID exists for it. The console test run after publication uses the bundled sample below.)

**Bundled-sample run.** The same code run on the bundled 12-row fictional sample — the run the Apify console test performs. Result: 12 items (3 new, 6 changed, 2 closed, 1 revival). Five of them:

| sequence | corporate_number | name | change_type | address |
|---|---|---|---|---|
| 000001 | 1010001000001 | 東京アルファ製作所 | new | 東京都港区 |
| 000003 | 1010001000003 | 大阪ベータ商事 | new | 大阪府大阪市中央区 |
| 000004 | 1010001000004 | 東京ガンマ株式会社 | changed | 東京都新宿区 |
| 000009 | 1010001000009 | 東京ケータイ合同会社 | closed | 東京都港区 |
| 000011 | 1010001000011 | 東京カー株式会社 | revival | 東京都文京区 |

The first item, in full:

```json
{
  "sequence_number": "000001",
  "corporate_number": "1010001000001",
  "process_code": "01",
  "correction_code": "0",
  "update_date": "2026-11-06",
  "change_date": "2026-11-05",
  "name": "東京アルファ製作所",
  "name_image_id": "",
  "entity_type": "301",
  "prefecture": "東京都",
  "city": "港区",
  "street_address": "赤坂1-2-3, 4丁目",
  "address_image_id": "",
  "prefecture_code": "13",
  "city_code": "103",
  "postal_code": "1070052",
  "address_outside_japan": "",
  "reserved_empty": "",
  "closing_date": "",
  "closing_reason": "",
  "succeeded_corporate_number": "",
  "change_cause": "",
  "assignment_date": "2026-11-05",
  "latest_history_flag": "1",
  "name_en": "Tokyo Alpha Seisakusho",
  "prefecture_en": "Tokyo",
  "city_en": "Minato-ku",
  "address_outside_japan_en": "",
  "name_kana": "トウキョウアルファセイサクショ",
  "non_display_flag": "0",
  "change_type": "new",
  "process_label": "new",
  "address": "東京都港区赤坂1-2-3, 4丁目",
  "status": "active"
}
```

### Dataset format / column layout

No header row. Exactly 30 comma-separated columns per row in NTA daily-diff order:

sequence_number, corporate_number, process_code, correction_code, update_date, change_date, name, name_image_id, entity_type, prefecture, city, street_address, address_image_id, prefecture_code, city_code, postal_code, address_outside_japan, reserved_empty, closing_date, closing_reason, succeeded_corporate_number, change_cause, assignment_date, latest_history_flag, name_en, prefecture_en, city_en, address_outside_japan_en, name_kana, non_display_flag

Fields containing commas or Japanese text are quoted per the real NTA CSV layout.

### Process-code classification

| Process code | change_type | Meaning |
|--------------|-------------|---------|
| 01 | new | Newly registered |
| 11, 12, 13, 71 | changed | Changed (name, head office, representatives, etc.) |
| 21 | closed | Registry record closed |
| 22 | revival | Closed registry record revived |
| other | other | Unknown or unmapped process code |

### Verifying the output

Every item carries the registry's own sequence number and the official 13-digit corporate number, in the National Tax Agency's own 30-column layout — so any item can be checked line by line against the official daily diff file it came from. The data is an official public registry: no scraping, no accounts, no cookies.

### Local development

```bash
npm install
npm run test:local
```

The local test is dependency-free and works without the Apify platform. Syntax-check the actor sources with:

```bash
node --check src/main.js
node --check src/diff.js
```

### Pricing

Pay-per-event (PPE) only. Monthly rentals were retired platform-wide. Creators keep 80% of event revenue.

| Event | Price |
|---|---|
| Actor start | $0.10 |
| Per result item | $0.005 |

Worked examples: the bundled sample (12 items) = $0.10 + (12 × $0.005) = **$0.16**. A full real day at the 2026-11-06 volume (2,617 items) = $0.10 + (2,617 × $0.005) = **$13.19**. Your spend cap is maxResults — a run can never return (or charge for) more items than you set.

### Support

Questions, or a run that does not match this description? Open the **Issues** tab on this actor's page — issues are answered within 24 hours. If an output does not match its description, we refund first.

# Actor input Schema

## `diffPath` (type: `string`):

Path to a daily diff CSV in NTA 30-column layout, relative to actor root

## `date` (type: `string`):

The diff date label, e.g. 2026-11-06

## `changeTypes` (type: `array`):

Change types to include. Japanese labels 新規/変更/閉鎖/復活 or English new/changed/closed/revival/other. Empty = all.

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

Japanese prefecture name, e.g. 東京都. Empty = all.

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

Maximum number of results to emit (minimum 1, maximum 10000).

## Actor input object example

```json
{
  "diffPath": "./data/diff_sample.csv",
  "maxResults": 100
}
```

# Actor output Schema

## `dataset` (type: `string`):

URL of the dataset containing this run's results.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("regbase/jp-diff-feed").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("regbase/jp-diff-feed").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 '{}' |
apify call regbase/jp-diff-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,regbase/jp-diff-feed"
        }
    }
}
```

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/DFlSTXcXieakFRbGf/builds/cmw8auNaJhJMty9xs/openapi.json
