# Japan Recall Monitor — Vehicles, Food & Consumer Products (`jp-data-engine/japan-recall-monitor`) Actor

Structured feed of official Japanese product recalls: MLIT vehicle/child seat/tyre notifications and Consumer Affairs Agency consumer product and food recalls.

- **URL**: https://apify.com/jp-data-engine/japan-recall-monitor.md
- **Developed by:** [Shota Tatara](https://apify.com/jp-data-engine) (community)
- **Categories:** News, E-commerce, Automation
- **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/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 Recall Monitor** turns Japan's official product-recall registers into clean, machine-readable JSON. It reads the [MLIT motor vehicle recall database](https://renrakuda.mlit.go.jp/renrakuda/recall-search.html) (cars, trucks, motorcycles, child seats and tyres) and the [Consumer Affairs Agency recall site](https://www.recall.caa.go.jp/) (food, appliances, household goods, clothing, health products and more), and returns one consistent record shape for every recall — with **English structural fields**, **ISO dates**, **affected unit counts** and **chassis-number ranges**. Hit Start with the defaults to see real records in under a minute.

Both registers are Japanese-language, session-based government sites with no official bulk export, which is why this data is essentially absent from English-language compliance tooling. Running it on Apify gives you scheduling, a REST API, webhooks, and integrations with Zapier, Make, Slack and n8n — so a daily check for new Japanese recalls becomes a five-minute setup.

### Why use Japan Recall Monitor?

- **Import and resale compliance.** If you sell Japanese-market products — cars, appliances, food, baby gear — you need to know the moment a recall is filed in Japan. This is the only structured feed of both registers.
- **Used-car and parts exporters.** Vehicle records include the type designation (型式), trade name, production period and the exact chassis-number ranges affected, so you can screen inventory against open recalls.
- **Product-safety and regulatory intelligence.** Track defect trends by manufacturer, component or category, and cross-reference Japanese filings with FDA/RAPEX data.
- **Food safety and allergen monitoring.** Consumer Affairs Agency food recalls carry the reason, the affected lot/JAN codes and the remedy offered.
- **AI agents and MCP.** Every Actor on Apify is callable as an MCP tool, so an agent can answer "has this model been recalled in Japan?" against the primary source instead of guessing.
- **Insurers, law firms and researchers.** A dated, citable record set with a link back to the official page and the original notification PDF.

### How to use Japan Recall Monitor

1. Click **Try for free** / **Start** — the defaults pull the most recent motor vehicle and consumer product recalls.
2. Pick your **data sources**: motor vehicles, consumer products (incl. food), child seats, tyres.
3. Narrow the run — a date range, a manufacturer, a type designation, a product category, or a Japanese keyword.
4. Set **Maximum results**. This is the only thing that determines what the run costs.
5. Run it, then download the dataset as JSON, CSV, Excel or XML — or wire it to a webhook and get new recalls pushed to you.
6. To monitor continuously, open the **Schedule** tab and run it daily with a date range like "the last 7 days".

### Input

All fields are optional; the Actor ships with working defaults.

| Field | Type | Description |
| --- | --- | --- |
| `sources` | array | Which registers to read: `automobile`, `consumerProducts`, `childSeat`, `tire`. Default: vehicles + consumer products. |
| `maxItems` | integer | Hard cap on returned records across all sources. Default `100`. |
| `notificationDateFrom` / `notificationDateTo` | string | `YYYY-MM-DD` bounds on the notification date (MLIT sources only). |
| `manufacturer` | string | Manufacturer name in Japanese, e.g. `トヨタ`, `ホンダ`, `日産`, `スズキ`, `いすゞ` (MLIT only). |
| `modelName` | string | Japanese type designation (型式), e.g. `3BA-GRJ150W` (MLIT only). |
| `recallType` | string | `1` recall, `2` improvement measure, `3` service campaign (MLIT only). |
| `consumerCategories` | array | Consumer Affairs Agency categories, `1`–`10`. Empty means all. |
| `keyword` | string | Japanese free-text search over consumer product recalls, e.g. `リチウム`, `アレルギー`, `発火`. |
| `requestDelayMs` | integer | Minimum pause between requests. Floored at 1000 ms. |

```json
{
    "sources": ["automobile"],
    "manufacturer": "トヨタ",
    "notificationDateFrom": "2026-01-01",
    "maxItems": 200
}
```

### Output

Every record uses the same shape regardless of source, so vehicle and food recalls can sit in one table.

```json
{
    "recallId": "mlit:recalldatacar:1158390",
    "source": "mlit",
    "sourceAgency": "Ministry of Land, Infrastructure, Transport and Tourism (MLIT), Japan",
    "sourceUrl": "https://renrakuda.mlit.go.jp/renrakuda/ris-detail-car.html?selCarTp=1&id=3010497",
    "productDomain": "automobile",
    "category": "Motor vehicle",
    "recallType": "Recall",
    "notificationNumber": "リ 国-5839-0",
    "notificationDate": "2026-06-30",
    "company": "いすゞ",
    "productName": "ギガ",
    "manufacturers": ["いすゞ"],
    "models": ["2PG-CYJ77CA", "2PG-CYJ77DA"],
    "tradeNames": ["ギガ"],
    "chassisNumberRanges": [
        { "model": "2PG-CYJ77CA", "from": "CYJ77C-7017898", "to": "CYJ77C-7026631" }
    ],
    "affectedUnits": 200,
    "productionPeriodFrom": "2021-09-02",
    "productionPeriodTo": "2025-11-13",
    "defectiveComponentJa": "その他(車枠車体)",
    "defectDescriptionJa": "スワップボディコンテナキャリアにおいて、突入防止装置の設計が不適切なため…",
    "remedyDescriptionJa": "全車両、バンパースペーサを変更…",
    "documentUrl": "https://renrakuda.mlit.go.jp/renrakuda/recallpdf/1158390.pdf",
    "attribution": "出典：国土交通省ウェブサイト (https://renrakuda.mlit.go.jp/renrakuda/recall-search.html)",
    "scrapedAt": "2026-08-14T09:13:32.342Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

#### Data fields

| Field | Description |
| --- | --- |
| `recallId` | Stable unique identifier, prefixed by source. |
| `source`, `sourceAgency`, `sourceUrl` | Which register the record came from and the official page for it. |
| `productDomain`, `category` | `automobile` / `child_seat` / `tire` / `consumer_product`, plus an English category label. |
| `recallType` | `Recall`, `Improvement measure`, `Service campaign` (MLIT) or `Voluntary recall / remedy` (CAA). |
| `notificationNumber` | Formatted exactly as the official register displays it. |
| `notificationDate`, `publishedDate`, `actionStartDate` | ISO `YYYY-MM-DD`. |
| `company`, `productName`, `title` | Filing company and product. |
| `manufacturers`, `tradeNames`, `models` | Vehicle maker, trade name and type designation (型式). |
| `chassisNumberRanges` | Affected chassis / serial number ranges, per model. |
| `affectedUnits` | Number of units covered by the notification. |
| `productionPeriodFrom`, `productionPeriodTo` | Manufacture or import period of affected units. |
| `defectiveComponentJa`, `defectDescriptionJa`, `remedyDescriptionJa` | Component, defect and remedy, verbatim in Japanese. |
| `targetProductDetailsJa`, `contactJa`, `remarksJa` | Lot/JAN identification, contact details and notes (CAA). |
| `documentUrl` | Original notification PDF (MLIT). |
| `referenceUrl` | Cross-reference to the publishing ministry (CAA). |
| `imageUrls` | Product photo URLs on the official site. Images are linked, never re-hosted. |
| `attribution`, `disclaimer` | Required source attribution and a reminder to verify against the primary source. |

#### A note on language

Structural fields — categories, recall types, dates, counts, model codes — are normalised to English and ISO formats. **Free-text fields are kept verbatim in Japanese** and are suffixed `Ja`. Nothing is machine-translated, because a mistranslated defect description in a safety dataset is worse than no translation. Pipe the `Ja` fields through your own translation step if you need English prose.

### How much does it cost to monitor Japanese recalls?

Cost scales with **Maximum results**, not with runtime. Vehicle recalls are read from a JSON API in batches of 50, so they are extremely cheap to collect; consumer product recalls need one request per record and are the slower of the two.

As a reference point from real runs: 63 consumer product recalls took about 95 seconds, and 6 vehicle recalls took about 8 seconds. A daily "what's new in the last 7 days" run typically returns well under 50 records.

The Apify free tier is enough to try the Actor and to run a small daily monitor.

### Tips

- **For daily monitoring**, set `notificationDateFrom` to a rolling recent date and keep `maxItems` low. You get new filings without re-paying for history.
- **To screen a fleet or inventory**, filter by `manufacturer` and match your chassis numbers against `chassisNumberRanges`.
- **For food safety**, select only `consumerProducts` with `consumerCategories: ["1"]` and a keyword such as `アレルギー`.
- **Vehicle recalls are the cheapest source per record** — one request returns 50 notifications, so a broad historical pull of the entire MLIT register is practical.
- A proxy is available in Advanced settings but is normally unnecessary: these are public government sites with no anti-bot protection.

### FAQ

**Where does the data come from?**
Two official Japanese government registers: the MLIT recall notification database (via its public JSON endpoint) and the Consumer Affairs Agency recall information site. Both are public, require no login, and place no crawling restriction in their `robots.txt`.

**Is this legal?**
The Actor reads publicly published government data only. MLIT content is provided under the Japanese Public Data License, which permits commercial reuse with attribution; the required attribution string is included in every record. No personal data is collected — filings are made by companies, and the Actor does not gather names or private contact details of individuals. Product photographs remain on the government site and are only linked, never copied.

**How current is the data?**
It reads the registers live at run time, so records are as current as the source. Japanese agencies typically publish within days of a filing.

**Is the Japanese text translated?**
No. See "A note on language" above.

**How fast is it?**
Deliberately capped at one request per second so the government servers are never put under load. This is a floor, not a setting you can lower.

**Something broke or you need another Japanese dataset?**
Open the **Issues** tab on this Actor. Government sites do change structure occasionally, and issues reported there get fixed. Custom variants — other Japanese registers, other output shapes — can be built on request.

***

*Disclaimer: this Actor reproduces official recall notifications for information purposes. Always confirm the current status of a recall with the manufacturer or the source page before acting on it. Not affiliated with, or endorsed by, the Government of Japan.*

# Actor input Schema

## `sources` (type: `array`):

Which official Japanese recall registers to read. Motor vehicles, child seats and tyres come from the MLIT public API; consumer products come from the Consumer Affairs Agency recall site (food, appliances, household goods, clothing and more).

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

Hard cap on the number of recall records returned across all selected sources. This is what determines the cost of the run.

## `notificationDateFrom` (type: `string`):

Only return vehicle, child seat and tyre recalls notified on or after this date. Format: YYYY-MM-DD. Leave empty for no lower bound.

## `notificationDateTo` (type: `string`):

Only return vehicle, child seat and tyre recalls notified on or before this date. Format: YYYY-MM-DD. Leave empty for no upper bound.

## `manufacturer` (type: `string`):

Filter vehicle recalls by manufacturer name as written on the official register, in Japanese. Examples: トヨタ, ホンダ, 日産, スズキ, いすゞ, メルセデス・ベンツ.

## `modelName` (type: `string`):

Filter vehicle recalls by the Japanese type designation (型式), for example 3BA-GRJ150W.

## `recallType` (type: `string`):

Restrict to one class of notification. Leave empty to return all three.

## `consumerCategories` (type: `array`):

Which Consumer Affairs Agency categories to crawl. Leave empty to crawl every category.

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

Free-text search across consumer product recalls, in Japanese. Examples: リチウム (lithium), アレルギー (allergen), 発火 (ignition).

## `requestDelayMs` (type: `integer`):

Minimum pause between two requests to the source sites. Values below 1000 ms are ignored so the government servers are never hit faster than once per second.

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

Optional. The sources are public government sites without anti-bot protection, so a proxy is normally unnecessary.

## Actor input object example

```json
{
  "sources": [
    "automobile",
    "consumerProducts"
  ],
  "maxItems": 100,
  "notificationDateFrom": "2026-01-01",
  "notificationDateTo": "2026-12-31",
  "consumerCategories": [],
  "requestDelayMs": 1100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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 = {
    "sources": [
        "automobile",
        "consumerProducts"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jp-data-engine/japan-recall-monitor").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 = { "sources": [
        "automobile",
        "consumerProducts",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("jp-data-engine/japan-recall-monitor").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 '{
  "sources": [
    "automobile",
    "consumerProducts"
  ]
}' |
apify call jp-data-engine/japan-recall-monitor --silent --output-dataset

```

## MCP server setup

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

```

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/pxhjYjaKSnvDR5bKK/builds/rHIJV3WaMFMBqPAh1/openapi.json
