# Japan EDINET Disclosure Filings (Official API) (`jpopendata/japan-edinet-filings`) Actor

List Japan's securities-disclosure filings (yuho, quarterly, large-shareholding, etc.) via the official EDINET API v2: by date or date range, filterable by company or document type. Bibliographic metadata only, corporations/funds only. Bring your own EDINET API key. Unofficial.

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

## Pricing

from $2.00 / 1,000 record scrapeds

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

## Japan EDINET Disclosure Filings (Official API v2)

**Japan's securities-disclosure filings — annual reports (yuho), quarterly reports, extraordinary reports, large-shareholding reports and more — straight from the official EDINET API of the Financial Services Agency, as clean English-schema JSON.**

This Actor is a thin client of the **official EDINET API v2** (`api.edinet-fsa.go.jp`) run by Japan's 金融庁 (Financial Services Agency). It lists the disclosure documents submitted to EDINET — by a single date or across a date range — and returns their **bibliographic metadata**: document ID, filer (company/fund), securities code, corporate number, document type (resolved to a name), reporting period, submission time, and content flags. Think of it as an English, scriptable index over Japan's equivalent of the SEC's EDGAR filing feed.

> **Unofficial tool.** Not affiliated with or endorsed by the Financial Services Agency of Japan. Source: 金融庁 EDINET. EDINET content is provided under the **公共データ利用規約（第1.0版）(PDL1.0)**, which permits reproduction, adaptation, and **commercial use** with attribution — the required 出典 statement 「出典：金融庁 EDINET」 is embedded in the `license` string of every output record.

***

### Quick start — verified input

Copy, paste, replace the key, run (verified against mock API fixtures in `npm test`; a live run needs your own EDINET API key — see the next section for how to get one in two minutes):

```json
{
  "apiKey": "<your key>",
  "mode": "list",
  "date": "2026-08-25",
  "maxItems": 100
}
```

Get the key at https://disclosure2.edinet-fsa.go.jp/ (free) → **ログイン** (create an account) → **API キー発行** → copy the Subscription-Key. For a window of days use `{"mode": "range", "dateFrom": "2026-08-01", "dateTo": "2026-08-31"}` (max 62 days).

### Bring your own EDINET API key

Since 2024, the EDINET API requires an **API key** (a `Subscription-Key`). This Actor does **not** bundle a shared key — it never has one. You pass **your own** free EDINET API key in the `apiKey` input (stored as a secret). Every request runs under your own registration, and EDINET's access limits apply to you.

**Get a key (free):** open the EDINET viewer site → **ログイン** → create an account → **API キー発行**. Portal: https://disclosure2.edinet-fsa.go.jp/

### Metadata only — no document bodies

This Actor calls only the **書類一覧API** (`documents.json`), which returns the list of filings **with their metadata**. It deliberately never calls the 書類取得API (`documents/{docID}`), so it **never downloads XBRL, PDF, or CSV document bodies** — only the bibliographic index. The flags (`xbrlFlag`, `pdfFlag`, `csvFlag`, `englishDocFlag`) tell you which bodies exist, so you can fetch them yourself with your key if you need them.

### Corporations and funds only (privacy by design)

Large-shareholding reports (大量保有報告書) can be filed by **individuals**, whose filer name is a personal name. This Actor **drops every filing whose submitter is a natural person** — detected by the absence of a 法人番号 (Corporate Number / JCN). Only filings from corporations and funds are emitted, so no individual's name ever appears in the output. (This conservatively also drops the rare corporate filer that carries no JCN — privacy is prioritised over completeness.)

### Modes

- **`list`** — every filing for one submission `date` (`YYYY-MM-DD`). One API request.
- **`range`** — filings across `dateFrom`..`dateTo` (one request per day, span capped at 62 days). Best for tracking one company (`secCode` / `edinetCode`) or one document type over time.

### Input example

```json
{
  "apiKey": "<your key>",
  "mode": "list",
  "date": "2026-08-25",
  "docTypeCode": "120,140",
  "maxItems": 100
}
```

- `apiKey` — **required**: your own EDINET API key (secret).
- `date` — required in `list` mode (YYYY-MM-DD; `2026/08/25` and `20260825` are tolerated). `dateFrom`/`dateTo` — required in `range` mode; if you pass only these two, the Actor switches to `range` for you.
- `docTypeCode` — optional comma-separated 3-digit type codes. Common ones: `120` 有価証券報告書 (annual / yuho), `140` 四半期報告書 (quarterly), `160` 半期報告書 (semi-annual), `180` 臨時報告書 (extraordinary), `350` 大量保有報告書 (large-shareholding).
- `secCode` — optional 4-digit ticker (e.g. `7203`; `7203.T` tolerated) or full 5-digit EDINET securities code.
- `edinetCode` — optional filer EDINET code (`E` + 5 digits), for non-listed filers and funds.
- `maxItems` / `maxApiRequests` — output and request caps (defaults 1000 / 40).

Values are validated **before** the first request; an invalid value fails the run immediately with a message that shows the expected format.

#### Common input mistakes

| Mistake | Correct |
|---------|---------|
| `"apiKey": "<your key>"` left as is / empty | paste your real Subscription-Key (the run fails immediately with a link to get one) |
| `"date": "25/08/2026"` / `"Aug 25"` | `"2026-08-25"` |
| `"date"` on a Saturday/Sunday/holiday | a Japanese business day — weekends have no filings (0 items) |
| `{"mode": "list", "dateFrom": …, "dateTo": …}` | `"mode": "range"` (the Actor switches for you when `mode` is omitted) |
| `"dateFrom": "2025-01-01", "dateTo": "2025-12-31"` | at most 62 days per run — split the year into windows |
| `"docTypeCode": "yuho"` | the code: `"120"` |
| `"secCode": "TM"` / `"Toyota"` | the ticker `"7203"` or `"edinetCode": "E02144"` |

#### Empty results?

A run that finds nothing completes with 0 items and a warning in the log (not a failure). Typical causes: a non-business day (no filings on weekends / Japanese holidays), a `docTypeCode` that no filer submitted that day (e.g. `120` yuho outside the June peak), or a `secCode`/`edinetCode` filter for a company that did not file in the window — annual reports come once a year, so use `range` over the filing season. EDINET answers HTTP 401 for a bad key — that fails the run visibly.

### Sample output (dataset item)

```json
{
  "seqNumber": 1,
  "docId": "S100ABCD",
  "edinetCode": "E02144",
  "secCode": "72030",
  "jcn": "1180301018771",
  "filerName": "トヨタ自動車株式会社",
  "fundCode": null,
  "ordinanceCode": "010",
  "formCode": "030000",
  "docTypeCode": "120",
  "docTypeName": "有価証券報告書",
  "periodStart": "2025-04-01",
  "periodEnd": "2026-03-31",
  "submitDateTime": "2026-08-25 15:04",
  "docDescription": "有価証券報告書－第122期(令和7年4月1日－令和8年3月31日)",
  "issuerEdinetCode": null,
  "xbrlFlag": "1",
  "pdfFlag": "1",
  "csvFlag": "1",
  "englishDocFlag": "1",
  "legalStatus": "1",
  "source": "金融庁 EDINET（有価証券報告書等の開示書類に関する電子開示システム）API / EDINET, Financial Services Agency of Japan",
  "sourceUrl": "https://disclosure2.edinet-fsa.go.jp/",
  "license": "出典：金融庁 EDINET（https://disclosure2.edinet-fsa.go.jp/）。公共データ利用規約（第1.0版）（PDL1.0）に準拠し出典表示のうえ複製・翻案・商用利用可。Unofficial EDINET API v2 client …",
  "retrievedAt": "2026-08-26T09:12:44Z"
}
```

Flags are the source's own `"1"`/`"0"` strings; `null` fields are values EDINET did not publish for that filing (e.g. `periodStart`/`periodEnd` only appear for period-based reports), passed through honestly.

### Pricing

Pay per result — see the pricing tab. One `list` day is a handful to a few hundred filings; a `range` panel of one company across a quarter is a few rows.

### FAQ

**Where does the data come from?**
The official EDINET API v2 (`api.edinet-fsa.go.jp/api/v2/documents.json`) operated by Japan's Financial Services Agency. Retrieved via the API — the EDINET terms forbid scraping but expressly permit API access, which is what this Actor uses.

**Is this an official government service?**
No. **Unofficial**, independently built and maintained. EDINET content is reusable commercially under PDL1.0 with attribution; the required 出典 statement is embedded in every record.

**Do I need an API key?**
Yes — your own free EDINET API key. This Actor never ships a shared key. See "Bring your own EDINET API key" above.

**How fresh is the data?**
Real-time to EDINET: filings appear the moment they are accepted. EDINET keeps roughly the last 10 years of filings queryable by date. Non-business days have no filings.

**Does it download the actual reports?**
No. Bibliographic metadata only. The `xbrlFlag` / `pdfFlag` / `csvFlag` fields tell you which document bodies exist so you can retrieve them yourself.

**Any privacy concerns?**
None by construction: individual (natural-person) filers are dropped, so only corporation/fund filing metadata is emitted. Automated tests assert no individual name, phone, e-mail, or address survives, and full source attribution on every record.

**What about server load?**
One polite request per date, ≥1.5 s apart, exponential backoff on 429/5xx, hard request budget, no rate-limit evasion. `range` is capped at 62 days per run. The EDINET terms forbid 「短時間における大量のアクセス」 — honoured in code.

### Search terms this Actor answers

edinet api actor · japan securities filings · japan financial disclosure english · yuho data · japanese annual report data · EDINET disclosure documents API · japan large shareholding reports · japan quarterly report data · japan company filings by securities code · FSA Japan disclosure feed

### More Japan public-data Actors by the same developer

- **Japan e-Stat Official Statistics** — the official statistics portal API (getStatsList / getStatsData).
- **Japan Trade Statistics** — monthly customs import/export by HS code and country.
- **Japan Government Tenders & Awards** — tender notices and award results from kkj.go.jp.
- **Japan Government Subsidies & Grants** — open subsidy calls from the official jGrants API.
- **Japan Financial Licenses & Registrations** — FSA-licensed banks, securities firms, and crypto exchanges.

***

*Data source: 金融庁 EDINET — https://disclosure2.edinet-fsa.go.jp/ . API: https://api.edinet-fsa.go.jp/api/v2 . Terms: https://disclosure2dl.edinet-fsa.go.jp/guide/static/disclosure/WZEK0030.html (PDL1.0 — commercial use permitted, attribution required — embedded in every record).*

# Actor input Schema

## `apiKey` (type: `string`):

REQUIRED. YOUR OWN EDINET API key (Subscription-Key, a 32-character string). This Actor does NOT bundle a shared key — every request runs under your own registration and EDINET's access limits apply to you. Register for free: https://disclosure2.edinet-fsa.go.jp/ → ログイン (create an account) → API キー発行 → copy the key.

## `mode` (type: `string`):

`list` (default) returns every disclosure filing for one submission date — set date. `range` returns filings across a dateFrom..dateTo window (company / document-type tracking), one request per day — set dateFrom and dateTo. Aliases "day"/"period" are accepted; if you pass only dateFrom/dateTo the Actor switches to range for you. Example: "list".

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

list mode (REQUIRED there): the submission date to list, YYYY-MM-DD, e.g. "2026-08-25" (2026/08/25 and 20260825 are tolerated). Only Japanese business days have filings. EDINET keeps roughly the last 10 years available.

## `dateFrom` (type: `string`):

range mode (REQUIRED there): inclusive start submission date, YYYY-MM-DD, e.g. "2026-08-01" (2026/08/01 and 20260801 are tolerated).

## `dateTo` (type: `string`):

range mode (REQUIRED there): inclusive end submission date, YYYY-MM-DD, e.g. "2026-08-31". The span is capped at 62 days per run (server-load safety).

## `docTypeCode` (type: `string`):

Optional. 3-digit EDINET document type codes to keep, comma-separated ("120,140") or as a list. Common: 120 有価証券報告書 (annual securities report / yuho), 140 四半期報告書 (quarterly), 160 半期報告書 (semi-annual), 180 臨時報告書 (extraordinary), 350 大量保有報告書 (large-shareholding). Leave empty for all types.

## `secCode` (type: `string`):

Optional. Filer securities code (listed companies). Accepts the 4-digit ticker (e.g. "7203" for Toyota; "7203.T" is tolerated) or the full 5-digit EDINET securities code ("72030").

## `edinetCode` (type: `string`):

Optional. Filer EDINET code, `E` + 5 digits (e.g. "E02144" for Toyota; lower-case is tolerated). Use this to track a single filer, including non-listed filers and funds' management companies.

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

Maximum number of filing-metadata records to output across all fetched dates, 1-100000 (default 1000).

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

Hard safety cap on API requests per run, 1-120 (default 40; one request per date). Politeness (1 connection, >= 1.5 s spacing, exponential backoff on 429/5xx) is enforced in code; the EDINET terms forbid short-burst bulk access.

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

Apify proxy settings. Default is NO proxy (direct connection) — an official JSON API rarely needs one. The Actor backs off exponentially on 429/5xx and fails visibly on a persistent block; it never attempts rate-limit evasion.

## Actor input object example

```json
{
  "mode": "list",
  "date": "2026-08-25",
  "docTypeCode": "120,140",
  "secCode": "7203",
  "edinetCode": "E02144",
  "maxItems": 1000,
  "maxApiRequests": 40,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

EDINET disclosure-document metadata records (corporations/funds only), 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 = {
    "mode": "list",
    "date": "2026-08-25",
    "maxItems": 1000,
    "maxApiRequests": 40
};

// Run the Actor and wait for it to finish
const run = await client.actor("jpopendata/japan-edinet-filings").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 = {
    "mode": "list",
    "date": "2026-08-25",
    "maxItems": 1000,
    "maxApiRequests": 40,
}

# Run the Actor and wait for it to finish
run = client.actor("jpopendata/japan-edinet-filings").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 '{
  "mode": "list",
  "date": "2026-08-25",
  "maxItems": 1000,
  "maxApiRequests": 40
}' |
apify call jpopendata/japan-edinet-filings --silent --output-dataset

```

## MCP server setup

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

```

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/d5BSquFbGiDtou2Yz/builds/QfBdNTEX99jAJn31A/openapi.json
