# Japan Food Import Risk Signals (`japan_signal_lab/japan-food-import-risk-signals`) Actor

Official MHLW food-import violation, inspection-order and monitoring-notice signals in auditable English JSON.

- **URL**: https://apify.com/japan\_signal\_lab/japan-food-import-risk-signals.md
- **Developed by:** [Japan Signal Lab](https://apify.com/japan_signal_lab) (community)
- **Categories:** Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.00 / 1,000 food import risk signal emitteds

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 Food Import Risk Signals

**Official Japan food-import risk signals for overseas suppliers, in auditable English JSON.** The Actor monitors a deliberately small MHLW source set and returns what the official source reported, who it explicitly names by country when available, when it was published, and the original Japanese evidence link.

It is for food and food-contact-material exporters, overseas seller/compliance teams, testing and inspection companies, Japanese import-support firms, and AI compliance workflows that need to route a source-backed review task. It is not a Japan import-clearance engine, a legal opinion, a certificate, or a decision that a shipment is admissible.

### What it returns

The feed joins three current official MHLW publication types:

1. Published imported-food Food Sanitation Act violation records.
2. Inspection-order implementation notices.
3. Monitoring-inspection implementation notices.

Every Dataset item includes a stable `eventType`, priority, source-country values only when directly extracted from Japanese official text, Japanese official scope, a fixed English source-backed summary, publication date, source URL, document URL where present, retrieval time, and processed-source attribution.

```json
{
  "eventType": "violation_detected",
  "riskLevel": "medium",
  "affectedProductCategory": "food",
  "productNameJa": "生鮮亜麻の種子",
  "sourceCountries": [{ "name": "India", "iso2": "IN", "sourceTextJa": "インド" }],
  "hazardOrReasonJa": "シアン化合物 180 mg/kg 検出",
  "englishSummary": "MHLW published an imported-food Food Sanitation Act violation record involving India...",
  "requiredActionSummary": "Treat this as a historical official record...",
  "legalDetermination": "not_provided",
  "source": {
    "sourceKind": "violation_list",
    "sourcePublicationDate": "2026-08-24",
    "officialDocumentUrl": "https://www.mhlw.go.jp/content/001741833.xlsx",
    "sourcePageUrl": "https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/kenkou_iryou/shokuhin/yunyu_kanshi/ihan/index.html"
  }
}
```

`productNameEnglish` is intentionally `null`. The MVP does not invent a translation for a product description that was not published in English. `englishSummary` is a fixed, conservative event envelope; the Japanese original evidence is retained for the exact scope.

### Safety and legal boundary

- `inspection_order_updated` is not silently recast as a new order, cancellation, or legal consequence. The original notice title controls.
- `inspection_order_exemption_updated` is used only where the Japanese official title explicitly refers to an inspection-order exemption list.
- An official violation record is historical evidence, not a finding about another exporter, producer, or shipment.
- The Actor never republishes the violation workbook's manufacturer, shipper, importer, or cause/remedy company fields.
- No LLM is used. English summaries, country projection, and priority are deterministic templates around retained official facts.

### Official sources and permitted use

The source of truth is the MHLW imported-food violation page and the MHLW import-food monitoring portal:

- [Published violation records](https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/kenkou_iryou/shokuhin/yunyu_kanshi/ihan/index.html)
- [Inspection-order and monitoring-notice portal](https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/kenkou_iryou/shokuhin/yunyu_kanshi/kanshi/index.html)
- [MHLW terms of use / Government of Japan Standard Terms of Use (PDL 1.0)](https://www.mhlw.go.jp/chosakuken/)

MHLW says its content is available under the Government of Japan Standard Terms of Use (Version 2.0 / PDL 1.0), unless a page states otherwise. This Actor retains source attribution and identifies its data as processed. Before adding a new source or redistributing a source-specific attachment, check the page for an exception or separate rights statement. The Actor uses only MHLW-hosted HTTPS links discovered from those pages; it reads the current link chain and one current violation workbook per run, enforces a 20-second timeout and byte limits, and does not crawl PDFs or use a non-public API.

`https://www.mhlw.go.jp/robots.txt` does not disallow these target paths as checked on 2026-08-27 JST. Robots rules are not a copyright licence; they are observed alongside the explicit terms above.

### Input

```json
{
  "lookbackDays": 30,
  "maxResults": 500,
  "signalTypes": ["violation_detected", "inspection_order_updated", "inspection_order_exemption_updated", "monitoring_updated"],
  "sourceCountries": ["China", "South Korea", "United States"],
  "includeViolationCases": true,
  "includeInspectionOrders": true,
  "includeMonitoringUpdates": true
}
```

- `lookbackDays` is 1–365 and applies to the official publication date.
- `sourceCountries` accepts an English name or ISO-2 code only for source countries that can be directly derived from official Japanese text. Leave it blank to retain unclassified records too.
- `maxResults` limits output after filtering. The bounded source scan is still three primary publications at most.

### Why this product / competitive boundary

This is not a recall feed. It also does not compete head-on with a Japanese importer workflow. Japan-focused importer tools such as [シルシさん](https://shirushi.seni8.jp/) provide a Japanese shipment workflow and country/category warning experience. Global food regulatory services such as [FoodChain ID](https://www.foodchainid.com/services/regulatory) provide broad regulatory intelligence. The differentiated product is a small, current, **MHLW-first English JSON feed** that preserves original evidence and can be consumed by overseas supplier or agent workflows.

Direct catalog checks on 2026-08-27 JST found no matching Japan MHLW food-import inspection/violation feed in Apify Store searches for `MHLW food import` and `Japan import inspection`; RapidAPI search for `Japan food import` returned no result. That is a search result, not a claim that no substitute exists.

Public price evidence supports paid demand for the underlying Japanese import-compliance work: [Powerspot lists product/ingredient checks and quarantine consulting](https://powerspot-japan.com/import-to-japan/) and [Sapporo Public Health Research Institute lists imported-food testing fees](https://www.sapporohokeniryo.or.jp/contents/syokuhin/kensa/kensa_yunyuu.html). This Actor sells an early, machine-readable source signal—not a replacement for their laboratory or advisory services.

### Frequency and recurring value

The MHLW FY2025 consolidated violation workbook contained **803** published cases (about **67/month**). The FY2025 inspection-order and monitoring-notice lists contained **88** and **76** PDF notices, respectively (about **14/month** combined). That is enough continuing change volume for a supplier-side monitoring feed, particularly when a user filters to a country, ingredient, hazard, or product group downstream.

On 2026-08-27 JST, the live 365-day E2E scanned three current primary publications, observed 313 source rows, and emitted the first 100 bounded results with no source failures. The current source pages are dynamic public publications; these counts are an observed sample, not a future-volume guarantee.

### Pay per event proposal

The code permits PPE only when the Console contract matches exactly:

| Event | Billed unit | Price |
| --- | --- | ---: |
| `official-publication-scanned` | Each of the current violation workbook, inspection-order list, or monitoring-notice list actually scanned | $0.030 |
| `food-import-risk-signal-emitted` | Each Dataset item emitted after filters | $0.015 |

Do not add `apify-default-dataset-item`: it would duplicate the emitted-signal charge. With all three sources enabled, the source component is $0.09/run; a 10-signal run is $0.24. A 30-day daily monitor that averages three signals/day is approximately $4.05/month before Apify platform costs. This is a proposed initial contract; enable it only after confirming the Cloud run cost and the Console pricing page permits these values.

### Development and verification

```bash
npm ci
npm test
npm run build
npm run e2e:live
APIFY_LOCAL_STORAGE_DIR=storage npm start
npm audit --json
```

Verified locally on 2026-08-27 JST:

- Unit tests: 4/4 passed.
- TypeScript build: passed.
- Live source E2E: 3 primary MHLW publications, 313 source rows, 100 bounded result samples, zero source failures.
- Full Actor local run: 3 publications, 313 rows, 10 output signals, `SUMMARY` written, no company identity fields in Dataset output.
- Dependency audit: 0 vulnerabilities after upgrading `fast-xml-parser` to 5.11.0.

The Private GitHub source and Apify Cloud build/run were verified on 2026-08-27 JST. The Actor remains private. PPE pricing and Store publication are intentionally disabled pending a separate publication decision.

# Actor input Schema

## `lookbackDays` (type: `integer`):

Only emit source records published during this lookback window. The current violation workbook may contain only the current Japanese fiscal-year records.

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

Hard output limit after date, event-type and country filters.

## `signalTypes` (type: `array`):

Use generic updated-event types where the MHLW notice itself does not safely establish an addition, removal, or legal consequence.

## `sourceCountries` (type: `array`):

Filter by English country name or ISO-2 code when it is directly derived from the official Japanese source text. Blank includes all countries and unclassified records.

## `includeViolationCases` (type: `boolean`):

Include rows from the current MHLW imported-food violation workbook. Supplier, shipper and importer fields are deliberately not emitted.

## `includeInspectionOrders` (type: `boolean`):

Include current official MHLW inspection-order notices and inspection-order exemption updates.

## `includeMonitoringUpdates` (type: `boolean`):

Include current official MHLW monitoring-inspection plan and related notice updates.

## Actor input object example

```json
{
  "lookbackDays": 30,
  "maxResults": 500,
  "signalTypes": [
    "violation_detected",
    "inspection_order_updated",
    "inspection_order_exemption_updated",
    "monitoring_updated"
  ],
  "sourceCountries": [
    "China",
    "South Korea",
    "United States"
  ],
  "includeViolationCases": true,
  "includeInspectionOrders": true,
  "includeMonitoringUpdates": true
}
```

# Actor output Schema

## `signals` (type: `string`):

No description

## `summary` (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 = {
    "lookbackDays": 30,
    "maxResults": 500,
    "signalTypes": [
        "violation_detected",
        "inspection_order_updated",
        "inspection_order_exemption_updated",
        "monitoring_updated"
    ],
    "sourceCountries": [
        "China",
        "South Korea",
        "United States"
    ],
    "includeViolationCases": true,
    "includeInspectionOrders": true,
    "includeMonitoringUpdates": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("japan_signal_lab/japan-food-import-risk-signals").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 = {
    "lookbackDays": 30,
    "maxResults": 500,
    "signalTypes": [
        "violation_detected",
        "inspection_order_updated",
        "inspection_order_exemption_updated",
        "monitoring_updated",
    ],
    "sourceCountries": [
        "China",
        "South Korea",
        "United States",
    ],
    "includeViolationCases": True,
    "includeInspectionOrders": True,
    "includeMonitoringUpdates": True,
}

# Run the Actor and wait for it to finish
run = client.actor("japan_signal_lab/japan-food-import-risk-signals").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 '{
  "lookbackDays": 30,
  "maxResults": 500,
  "signalTypes": [
    "violation_detected",
    "inspection_order_updated",
    "inspection_order_exemption_updated",
    "monitoring_updated"
  ],
  "sourceCountries": [
    "China",
    "South Korea",
    "United States"
  ],
  "includeViolationCases": true,
  "includeInspectionOrders": true,
  "includeMonitoringUpdates": true
}' |
apify call japan_signal_lab/japan-food-import-risk-signals --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,japan_signal_lab/japan-food-import-risk-signals"
        }
    }
}

```

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/o3AYwwOlbf2IbfY4Q/builds/q2FZqOzk59Z39XVi7/openapi.json
