# Japan Trade Show Exhibitor List – JIMTOF, CEATEC (`datalab-jp/japan-trade-show-exhibitors`) Actor

Exhibitor lists of trade shows run by Japanese organisers (JIMTOF, CEATEC, TECHNO-FRONTIER, Maintenance & Resilience): company name (JA/EN), booth, hall, zone, product categories (JA/EN), country, website, new-exhibitor tracking. Company data only.

- **URL**: https://apify.com/datalab-jp/japan-trade-show-exhibitors.md
- **Developed by:** [Task Data](https://apify.com/datalab-jp) (community)
- **Categories:** Lead generation, Business
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 exhibitor rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Trade Show Exhibitor List Scraper – JIMTOF, CEATEC, JMA

Extract the **exhibitor lists of trade shows run by Japanese organisers** – JIMTOF (machine tools), CEATEC (electronics & IT), TECHNO-FRONTIER (motors, power electronics) and Maintenance & Resilience (plant maintenance, infrastructure) – as clean, company-level rows: **company name in Japanese and English, booth number, hall and zone, the organiser's product categories in Japanese and English, country and prefecture, company website**, and a **new-exhibitor feed** that tells you who joined since your last run. Built for B2B sales teams, sourcing and purchasing staff (including Chinese-speaking buyers looking for Japanese suppliers), distributors and market researchers. No coding required.

**Company-level data only.** Contact persons, e-mail addresses and phone/fax numbers are never collected, and the exhibitors' promotional texts and images are not copied.

### What data can you extract?

| Field | Description | JIMTOF | CEATEC | JMA shows |
|---|---|---|---|---|
| `showEdition`, `showStartDate`, `showEndDate`, `venue`, `organizer` | Which show and edition, dates and venue as published by the organiser | ✓ | ✓ | ✓ |
| `companyName` / `companyNameEn` | Company name as listed (mostly Japanese) and the organiser's English name | ✓ / ✓ | ✓ / ✓ | ✓ / ✓ |
| `exhibitorType`, `parentExhibitor` | `exhibitor`, `co-exhibitor` or `internal-exhibitor`; the booth host for CEATEC co-exhibitors | ✓ | ✓ | ✓ |
| `boothNumbers`, `hall`, `zone` / `zoneEn` | Booth(s), hall, show zone | ✓ booth + hall | ✓ all | ✓ booth + zone |
| `productCategories` / `productCategoriesEn` | The organiser's product categories in **Japanese and English** | ✓ category tree | ✓ category filters | ✓ show zone |
| `targetIndustries` / `targetIndustriesEn` | Industries the exhibitor targets (Aerospace, Automobile/Parts, Medical …) | ✓ | – | – |
| `exhibitedProducts` | Names of products registered in the organiser's guide | – | – | ✓ |
| `country`, `prefecture` | Country of the company address (English) and Japanese prefecture – region level only | ✓ | – | – |
| `productOriginCountry` | Where the exhibited products are made | ✓ | – | – |
| `isOverseasExhibitor` | Listed by the organiser as an overseas exhibitor | ✓ | – | ✓ |
| `boothLanguages` | Languages spoken at the booth (English, Chinese, Korean …) | – | ✓ | – |
| `websiteUrl`, `exhibitorPageUrl` | Company website; the exhibitor's page on the organiser's site | ✓ / ✓ | – / ✓ | ✓ / ✓ |
| `changeType`, `firstSeenAt` | `first_run`, `new`, `updated`, `unchanged` versus your previous run | ✓ | ✓ | ✓ |

Measured on 2026-10-10: JIMTOF 2026 lists 1,147 booth entries (1,145 exhibitors after merging multi-booth companies, 806 with a detail page), CEATEC 2026 396 exhibitors plus 396 co-exhibitors, TECHNO-FRONTIER 2026 461, Maintenance & Resilience 2026 368. Fields that a show does not publish are `null` or `[]`.

#### Supported shows

| `shows` value | Show | Organiser (Japanese) | Edition on the site (2026-10-10) |
|---|---|---|---|
| `jimtof` | JIMTOF – Japan International Machine Tool Fair | Japan Machine Tool Builders' Association (JMTBA) & Tokyo Big Sight | JIMTOF 2026, 26–31 Oct 2026, Tokyo Big Sight |
| `ceatec` | CEATEC | JEITA | CEATEC 2026, 13–16 Oct 2026, Makuhari Messe |
| `jma-technofrontier` | TECHNO-FRONTIER | Japan Management Association (JMA) | TECHNO-FRONTIER 2026, 15–17 Jul 2026 |
| `jma-mente` | Maintenance & Resilience | Japan Management Association (JMA) | Maintenance & Resilience 2026, 15–17 Jul 2026 |

The Actor always reads whatever edition the organiser currently publishes. Shows organised by RX Japan (NEPCON JAPAN and other Reed Exhibitions shows) are **not** supported because their website terms prohibit automated collection.

### Why scrape Japanese trade show exhibitor lists?

- **Find Japanese suppliers and partners** – filter JIMTOF by category (`26 Machining centers (vertical spindle)`) or CEATEC by `AI (artificial intelligence)` and get the English company name and website in one table.
- **Plan your show visit** – booth numbers, halls and zones for every exhibitor, plus which CEATEC booths speak English or Chinese.
- **Track new exhibitors** – schedule a weekly run with `changeTracking: "new_only"` and receive only the companies that joined since last week; withdrawals and booth moves go to the `CHANGES` record.
- **Market and competitor research** – how many machining-centre makers exhibit, how many overseas exhibitors come from China or Taiwan, which companies moved halls.
- **AI agents / RAG** – give an assistant a structured, bilingual list of Japanese exhibitors through the **Apify MCP server**, e.g. "list CEATEC 2026 exhibitors in the Mobility category with English names".

Apify Store searches for "JIMTOF" and "CEATEC" returned no Actors on 2026-10-10; the existing exhibitor-list scrapers on the Store mainly cover European and US platforms (Map Your Show, Messe Frankfurt, Reed Expo and others).

### How to use it (no coding)

1. Open the Actor and pick one or more **Trade shows** (default: JIMTOF).
2. Set **Max exhibitors per show** – 100 for a sample, 5000 for the full list.
3. Keep **Include categories, English names and websites** on for the bilingual categories and websites.
4. Optional: set **Change tracking** to `new_only` and schedule the Actor weekly.
5. Click **Start** and download the results as Excel, CSV or JSON.

### Input example

```json
{
  "shows": ["jimtof"],
  "maxItems": 100,
  "includeDetails": true,
  "changeTracking": "off"
}
```

Weekly new-exhibitor feed for two shows:

```json
{
  "shows": ["jimtof", "ceatec"],
  "maxItems": 5000,
  "changeTracking": "new_only",
  "stateStoreName": "japan-shows-weekly"
}
```

### Output example

A real JIMTOF 2026 row (category arrays shortened):

```json
{
  "show": "jimtof",
  "showName": "JIMTOF (Japan International Machine Tool Fair / 日本国際工作機械見本市)",
  "showEdition": "JIMTOF 2026",
  "showStartDate": "2026-10-26",
  "showEndDate": "2026-10-31",
  "venue": "東京ビッグサイト",
  "organizer": "Japan Machine Tool Builders' Association (JMTBA, 日本工作機械工業会) & Tokyo Big Sight",
  "exhibitorKey": "jimtof:Yl0biW0wGYQ",
  "exhibitorId": "Yl0biW0wGYQ",
  "companyName": "愛知産業株式会社",
  "companyNameEn": "Aichi Sangyo Co., Ltd.",
  "exhibitorType": "exhibitor",
  "parentExhibitor": null,
  "boothNumbers": ["E2024"],
  "hall": "E1-3",
  "zone": null,
  "zoneEn": null,
  "productCategories": ["1. 工作機械", "（5） マシニングセンタ", "26 マシニングセンタ（立軸）", "3. 工作機器", "155 マシンバイス"],
  "productCategoriesEn": ["1. METAL MACHINE TOOLS", "(5) Machining Centers", "26 Machining centers (vertical spindle)", "3. MACHINE ACCESSORIES", "155 Machine vises"],
  "targetIndustries": ["航空・宇宙", "エネルギー・環境", "自動車・部品", "医療", "その他"],
  "targetIndustriesEn": ["Aerospace", "Energy/Environment", "Automobile/Parts", "Medical", "Others"],
  "exhibitedProducts": [],
  "country": "Japan",
  "prefecture": "東京都",
  "productOriginCountry": "Germany",
  "isOverseasExhibitor": false,
  "boothLanguages": [],
  "websiteUrl": "https://www.aichi-sangyo.co.jp",
  "exhibitorPageUrl": "https://www.jimtof.org/search/jp/ESdetails?e=Yl0biW0wGYQ",
  "detailFetched": true,
  "changeType": null,
  "firstSeenAt": null,
  "sourceUrl": "https://www.jimtof.org/jp/exhi_search_pronoun?k=1",
  "scrapedAt": "2026-10-10T11:56:12.599Z"
}
```

A CEATEC 2026 row (selected fields): `"companyName": "株式会社アイシン", "companyNameEn": "AISIN CORPORATION", "boothNumbers": ["7H210"], "hall": "Hall 7", "zoneEn": "General Exhibits", "productCategoriesEn": ["Mobility", "Medical and healthcare", …], "boothLanguages": ["English"]`.

**Field notes**

- `productCategories*` are the **organiser's own labels**. JIMTOF prints a category tree (group, sub-group, numbered item, one per array element); CEATEC categories are the organiser's category filters whose result includes the exhibitor (co-exhibitors have none); JMA shows classify exhibitors only by show zone.
- `country` / `prefecture` are reduced from the company address on the JIMTOF page; the street address itself is not returned.
- JIMTOF entries marked `(*)` (co-exhibitor) or `(**)` (内部出展者) by the organiser often have no detail page, so their English name, categories and website stay empty (about 340 of 1,145 in 2026).
- CEATEC builds its exhibitor detail pages in the browser from an API, which this Actor does not call – so CEATEC rows have no website.
- A company listed with several booths becomes one row with several `boothNumbers`.
- The `RUN_REPORT` record summarises each show (status `ok`, `partial`, `no_changes`, `list_empty` or `list_unavailable`, with a plain-language `hint`).

### How much does it cost?

Pay-per-event: a tiny start charge of $0.00005 (Apify's default Actor Start event, charged once per GB of memory; this Actor runs on 1 GB) plus a per-row price:

| Event | What it is | Price |
|---|---|---|
| Actor Start (`apify-actor-start`) | Once per run (per GB of memory) | $0.00005 |
| Exhibitor row (`apify-default-dataset-item`) | Each exhibitor row returned | $0.003 (FREE and BRONZE plans) · $0.002 (SILVER and above) |

Categories, English names and websites are included at no extra charge when you set `includeDetails: true` (the default is `false`, a faster name/booth list). The full JIMTOF 2026 list (1,145 rows) costs about $3.44 on the FREE plan; a weekly `new_only` run that finds 20 new exhibitors costs about $0.06. Use `maxItems` to cap spend. A full run of all four shows with details (2,766 rows, 2,593 page requests) took about 5 minutes in a local test; the Actor pauses between pages to keep the load on the organisers' servers low.

### Integrations: API, MCP, and AI agents

This Actor is **read-only**: it only reads public exhibitor list pages and never logs in, submits forms or contacts exhibitors. It is safe for AI agents to call autonomously.

#### API (curl)

```bash
curl -X POST "https://api.apify.com/v2/acts/datalab-jp~japan-trade-show-exhibitors/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" -d '{"shows": ["jimtof"], "maxItems": 100}'
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("datalab-jp/japan-trade-show-exhibitors").call(run_input={"shows": ["jimtof"], "maxItems": 100})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

#### JavaScript

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('datalab-jp/japan-trade-show-exhibitors').call({ shows: ['jimtof'], maxItems: 100 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

`run-sync-get-dataset-items` waits up to 300 seconds; for full lists of several shows, start the run asynchronously and read the dataset when it finishes.

**MCP / AI agents:** add the Apify MCP server (`https://mcp.apify.com`) to Claude, Cursor or any MCP client; the agent can find this Actor by searching "Japan trade show exhibitors", read the input schema and call it with e.g. `{"shows": ["ceatec"], "maxItems": 500}`.

### Related Actors

Other Japan data Actors by the same developer:

- [**Japan Scrap Metal Prices – Steel & Non-Ferrous**](https://apify.com/datalab-jp/japan-scrap-metal-prices) — scrap steel and non-ferrous buying prices from Japanese dealers
- [**Japan Gold & Silver Prices – Dealer Buy & Retail**](https://apify.com/datalab-jp/japan-precious-metal-prices) — gold, silver, platinum and palladium dealer prices
- [**Japan Tax Auction Real Estate – NTA Public Auction**](https://apify.com/datalab-jp/japan-nta-public-auction) — real estate from National Tax Agency public auctions
- [**Mercari Japan Scraper – Listings & Item Details**](https://apify.com/datalab-jp/mercari-japan-listings-scraper) — Mercari listings and sold prices

### FAQ

**Is scraping these exhibitor lists legal?**
The Actor reads only exhibitor lists that the organisers publish openly, without logging in or bypassing access controls, at a low request rate. It returns factual, company-level data (names, booths, the organiser's category labels, websites) and does not copy texts, images, or any personal contact data. The JIMTOF site prohibits reproducing its texts and images; the CEATEC and JMA sites publish no terms of use beyond privacy and linking policies (checked 2026-10-10). Shows whose terms prohibit automated collection (RX Japan) are excluded. You are responsible for using the data in line with applicable law and each organiser's terms.

**Can I use it through the API?**
Yes – see the curl, Python and JavaScript examples above. All inputs have defaults, so `{}` runs JIMTOF with 100 rows.

**Can AI agents use this Actor via MCP?**
Yes. It is read-only, the input schema describes every field and its default, and results are plain JSON.

**How does the new-exhibitor tracking work?**
With `changeTracking` set, each run stores a snapshot (exhibitor keys, booth and zone) in a named key-value store in **your** Apify account (`stateStoreName`), one record per show and edition. The next run compares against it: `new_only` returns only new exhibitors, `all_with_flags` returns everything with a `changeType`. Withdrawn exhibitors are listed in `CHANGES` only when the whole list loaded successfully. Set `maxItems` to cover the whole show; exhibitors beyond the cap are not recorded and will show up as new later.

**Why are there no e-mails or phone numbers?**
By design. Some organiser pages show a contact phone number or a staff e-mail address; the Actor skips them so the output contains no personal data.

**Why is a show empty?**
Organisers sometimes take the list down between editions or publish it only weeks before the show. `RUN_REPORT` says whether the page could not be loaded (`list_unavailable`) or loaded without exhibitors (`list_empty`).

**Can you add another show?**
Open an issue with the show name. Only shows whose organiser publishes the list openly and whose terms do not prohibit automated collection can be added.

### Disclaimer

This Actor is not affiliated with, endorsed by or sponsored by JMTBA, Tokyo Big Sight, JEITA, the Japan Management Association or any show organiser. Show names are used only to identify the source of the data. Data is provided as published by the organisers at the time of the run and may contain their errors or omissions.

***

**中文简介：** 本Actor抓取日本本土主办方展会（JIMTOF日本国际机床展、CEATEC、TECHNO-FRONTIER、Maintenance & Resilience）的展商名录，输出公司名（日文/英文）、展位号、展馆、展区、主办方产品分类（日文+英文对照）、国家/都道府县及官网。
支持"仅返回新增展商"模式，可每周定期运行，追踪自上次运行以来新加入的展商。
仅输出企业层面的公开信息，不采集联系人、邮箱、电话等个人信息。

# Actor input Schema

## `shows` (type: `array`):

Which Japanese trade shows to extract, e.g. \['jimtof'] or \['ceatec', 'jma-technofrontier']. Values: 'jimtof' (machine tools), 'ceatec' (electronics/IT), 'jma-technofrontier' (motors, power electronics), 'jma-mente' (plant maintenance, infrastructure). Defaults to \['jimtof'] when omitted or empty. Each show returns the organiser's current edition; RX Japan shows (NEPCON etc.) are not supported.

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

Maximum exhibitor rows returned for each show, e.g. 100 for a quick sample or 5000 for the full list (JIMTOF 2026 has about 1,150 entries, CEATEC 2026 about 800). Each returned row is one billable result, so this is your main cost control. Defaults to 100 when omitted; accepts 1–5000. When change tracking is on, set it high enough to cover the whole show, otherwise exhibitors beyond the cap are reported as new on a later run.

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

Adds the organiser's product categories in Japanese and English, the English company name, country/prefecture (JIMTOF) and the company website (JIMTOF, JMA shows), e.g. true for buyer research or false for a fast name/booth list. Costs nothing extra but makes runs slower: JIMTOF reads two detail pages per exhibitor and CEATEC reads 96 category pages. Defaults to false when omitted, which returns the fast name/booth list; set true for categories, English names and websites. Rows whose detail page fails keep the list-level fields and show detailFetched=false.

## `changeTracking` (type: `string`):

Compares this run with the snapshot saved by your previous run, e.g. 'new_only' for a weekly new-exhibitor feed or 'all_with_flags' for the full list with a changeType column. 'off' saves nothing; 'all_with_flags' returns every row with changeType first_run/new/updated/unchanged; 'new_only' returns everything on the first run, afterwards only new exhibitors. Defaults to 'off'. Withdrawn exhibitors and booth changes go to the CHANGES record.

## `stateStoreName` (type: `string`):

Name of the key-value store in your Apify account where the change-tracking snapshot is kept, e.g. 'japan-trade-show-exhibitors-state' or 'jimtof-weekly'. Letters, digits and hyphens only (max 63). Defaults to 'japan-trade-show-exhibitors-state'. Only used when changeTracking is not 'off'; use different names to keep independent watch lists, one snapshot per show and edition inside each store.

## `maxConcurrency` (type: `integer`):

How many pages are requested at the same time, e.g. 3 (default) or 1 for the gentlest crawl. The organisers run their own small servers, so values above 3 rarely help. Defaults to 3 when omitted; accepts 1–5. Each worker also pauses 0.25 s after every page.

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

Proxy settings, e.g. no proxy (default) or Apify Proxy with Japanese residential IPs. All supported organiser sites answered direct requests from Apify's datacenter IPs when tested on 2026-10-10, so no proxy is needed. Defaults to a direct connection when omitted. If you enable Apify Proxy without choosing a group, Japanese residential IPs are used as a precaution.

## Actor input object example

```json
{
  "shows": [
    "jimtof"
  ],
  "maxItems": 100,
  "includeDetails": false,
  "changeTracking": "off",
  "stateStoreName": "japan-trade-show-exhibitors-state",
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `exhibitors` (type: `string`):

All exhibitor rows as dataset items: show, edition and dates, company name (Japanese/English), booth, hall, zone, product categories (Japanese/English), country, website and change flags (see dataset schema).

## `runReport` (type: `string`):

Per-show summary: edition, dates, venue, exhibitors listed, rows returned, detail fetches, change counts and a status code (ok, partial, no_changes, list_empty, list_unavailable) with a plain-language hint.

## `changes` (type: `string`):

Only when changeTracking is on: per show, the names of new and updated exhibitors and the exhibitors that disappeared from the organiser's list since the previous snapshot.

# 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 = {
    "shows": [
        "jimtof"
    ],
    "maxItems": 100,
    "includeDetails": false,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("datalab-jp/japan-trade-show-exhibitors").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 = {
    "shows": ["jimtof"],
    "maxItems": 100,
    "includeDetails": False,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("datalab-jp/japan-trade-show-exhibitors").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 '{
  "shows": [
    "jimtof"
  ],
  "maxItems": 100,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call datalab-jp/japan-trade-show-exhibitors --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,datalab-jp/japan-trade-show-exhibitors"
        }
    }
}
```

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/VRa8CHbNpF9ZyprkE/builds/6d1g1o0NI0f1FEQNx/openapi.json
