# jdzj Industrial Equipment Scraper 机电之家 – China B2B Machinery (`rastriq/jdzj-industrial-scraper`) Actor

Scrape jdzj.com (机电之家), China's B2B marketplace for industrial and electromechanical equipment: listings with price, supplier, city, brand, model, MOQ, specs, used machinery and buy requests. 机电之家数据采集。

- **URL**: https://apify.com/rastriq/jdzj-industrial-scraper.md
- **Developed by:** [Rastriq — Structured data from the world](https://apify.com/rastriq) (community)
- **Categories:** E-commerce, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.13 / 1,000 listing results

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

## jdzj.com Industrial Equipment Scraper (机电之家) — China B2B Machinery & Electromechanical Listings

Extract structured product listings from **jdzj.com (机电之家)**, one of China's long-running domestic B2B marketplaces for industrial and electromechanical equipment: mining, agricultural and packaging machinery, industrial automation, machine tools, pumps, valves, welding, hydraulics, generators and more. Get prices in CNY, supplier names and storefront URLs, cities, photos and — in details mode — brand, model, spec tables, MOQ, tiered prices and publish dates. Export as JSON, CSV, Excel or via API.

> 🚀 **Try it free** — click **Start** with the default settings to get 10 mining-machinery listings in a few seconds. No account or API key for jdzj.com is needed.

### 🇨🇳 中文说明

**机电之家（jdzj.com）数据采集工具**：无需浏览器、无需登录，批量抓取机电之家的供应产品、二手设备和求购信息，覆盖矿山机械、农业机械、包装设备、工业自动化、机床、泵阀、焊接、液压等行业。

- **可采集字段：** 产品名称、价格（含“面议”标记）、公司名称、所在城市、店铺链接、产品图片、类目；开启“详情”后另含品牌、型号、技术参数、起订量、阶梯价格、发布时间与类目路径。
- **使用方法：** 选择频道（供应 / 二手 / 求购）和行业类目，或粘贴类目链接、输入关键词（如 破碎机、包装机），可按价格排序、更新时间、VIP 企业筛选，设置最大条数后点击 **Start**。
- **隐私：** 以手机号命名的店铺链接默认隐藏（可关闭）；企业电话仅在手动开启且为认证企业时输出。
- **适用人群：** 工业设备贸易商、采购与寻源团队、厂商市场部、行业研究机构。
- **导出格式：** JSON、CSV、Excel 或通过 API 获取，字段结构与 Rastriq 其他中国工业设备采集器统一。
- **合规说明：** 遵守网站 robots.txt；仅采集公开的企业与设备信息，不采集联系人姓名、手机号码、微信/QQ 等个人信息。
- **计费：** 按结果计费：列表数据每 1,000 条 $1.50，含详情每 1,000 条 $3.50（每条只计费一次），每次运行另收 $0.005；更高等级的 Apify 套餐自动享受折扣。平台算力已包含；如自备代理（例如住宅代理），代理流量费用由您的代理服务商收取，不含在本工具价格内。

### 📌 What is the jdzj.com Industrial Equipment Scraper?

jdzj.com has no public API. This Actor reads the same public pages and JSON endpoints that the website itself uses and returns clean, normalised records. It is **pure HTTP — no browser** — so it is fast and cheap: in list mode it needs roughly **0.05 requests per listing** (20 listings per page) and returns about 100 listings every 3–10 seconds.

Use it to:

- 🏭 **Source equipment and components in China** — find suppliers, factory-direct prices and MOQs for specific machine types.
- 📊 **Benchmark Chinese domestic prices** against export prices on Alibaba / Made-in-China and against Western marketplaces.
- 🔄 **Monitor the market** — track price movements and new suppliers per category with the *Updated within* filter.
- ♻️ **Track second-hand equipment** supply in the *Used equipment* catalogue.
- 🛒 **Watch buyer demand** from the public *buy requests* (求购) board.
- 🧠 **Feed pricing, procurement or market-intelligence models** with Chinese B2B listing data.

### 📋 What data does it extract?

| | |
|---|---|
| 🔗 Listing URL and ID | 🏷️ Title (Chinese) |
| 💰 Price in CNY (+ original text, unit, tiers) | 📂 Category path (3 levels) |
| 🏭 Supplier name and shop URL | 📍 Province and city |
| 📸 Photos (gallery in details mode) | 🧾 Brand, model, full spec table (details mode) |
| 📦 MOQ and unit (details mode) | 📅 Publish date (details mode) |
| ✅ Supplier verification badge | 🚩 Data-quality flags |

#### Output fields

| Field | Type | Description |
|---|---|---|
| `source`, `sourceSection` | string | `jdzj.com`; `supply`, `used` or `buy_request` |
| `listingId`, `url` | string | Listing ID and absolute URL |
| `title` | string | Original title (Chinese) |
| `category`, `categoryPath` | string, array | Deepest category and breadcrumb (root first) |
| `brand`, `model` | string / null | From the spec table (**details mode**) |
| `year`, `hours` | integer / null | Only when stated (spec table or title of used items) |
| `condition` | `new` / `used` / null | From the spec table, category or section |
| `priceCny` | number / null | Unit price in yuan (lowest tier when tiered) |
| `priceText`, `priceType` | string | Original price text; `fixed`, `range_min`, `on_request` |
| `location` | object | `province`, `city`, `raw` |
| `seller` | object | `name` (company), `type` (`company`/`dealer`/`individual`), `shopUrl` |
| `images` | array | Absolute https URLs |
| `specs` | object | Spec table, Chinese keys (**details mode**) |
| `postedAt` | string / null | ISO 8601, China time (**details mode**) |
| `qualityFlags` | array | See below |
| `moq`, `moqUnit` | number, string | Minimum order (**details mode**) |
| `ext_priceUnit`, `ext_priceTiers` | string, array | Pricing unit and quantity tiers (**details mode**) |
| `ext_categorySlug`, `ext_categoryEn`, `ext_views`, `ext_companyUrl`, `ext_companyId`, `ext_sellerVerified`, `ext_sellerRegion`, `ext_description` | various | Site-specific extras (description is capped at 1,500 characters with contact numbers masked). `ext_categoryEn` = English name of the item's category from the built-in taxonomy; when the exact leaf has no English name yet, the nearest translated parent category is used (null only outside the taxonomy) |
| `scrapedAt` | string | UTC timestamp |

**Quality flags** (records are marked, never dropped): `price_missing`, `price_on_request`, `price_suspiciously_low`, `price_suspiciously_high`, `price_placeholder_pattern` (e.g. 99999999), `brand_other`, `model_placeholder`, `image_missing`, `location_missing`, `title_only`, `stale_listing` (posted > 1 year ago), `year_out_of_range`, `year_from_title`, `hours_from_title`, `seller_individual`, `shop_subdomain_is_phone`, `shop_url_redacted`, `detail_fetch_failed`, `expired` (buy requests).

### ⚙️ How to use it

1. Choose a **section**: *supply*, *used* or *buy_requests*.
2. Pick one or more **categories** from the dropdown (or paste any jdzj.com category URL), **or** type a Chinese **keyword**. For *used*, pick from **Used equipment categories**.
3. Set **Max listings**. Turn on **Include details** if you need brand / model / specs / MOQ / dates.
4. Click **Start** and download the dataset.

#### Modes

| Mode | What you get | Requests per listing | Speed\* |
|---|---|---|---|
| **List** (default) | title, price, supplier, shop URL, city, 1 photo, category | ~0.05 | ~3–10 s / 100 listings |
| **Details** | + brand, model, specs, MOQ, tiers, date, gallery, full category path, description | ~1.05 | ~30–50 s / 100 listings |
| **Keyword** | site-wide search across all categories (max 10,000 results per keyword) | ~0.05 (+1 with details) | similar |

\* Measured from a US datacenter with concurrency 3–5; the site is slower from outside China.

#### Example input

```json
{
  "section": "supply",
  "categories": ["hy6_88", "hy9_3418"],
  "sortBy": "price_asc",
  "updatedWithin": "month",
  "maxItems": 200,
  "includeDetails": true
}
```

#### Example output (details mode, shortened)

```json
{
  "source": "jdzj.com",
  "sourceSection": "supply",
  "listingId": "6651683",
  "url": "https://www.jdzj.com/dianciliuliangji/2-6651683.html",
  "title": "智能电磁流量计 美天MTLDG-DN20 非防爆智能电磁流量计",
  "category": "电磁流量计",
  "categoryPath": [
    "仪器仪表",
    "流量仪表",
    "电磁流量计"
  ],
  "brand": "美天机电",
  "model": "型号齐全,选型报价,",
  "year": null,
  "hours": null,
  "condition": null,
  "priceCny": 1.0,
  "priceText": "1.00元/台",
  "priceType": "fixed",
  "location": {
    "province": "陕西",
    "city": "西安",
    "raw": "陕西 西安"
  },
  "seller": {
    "name": "西安美天机电设备有限公司",
    "type": "company",
    "shopUrl": "https://mtjdyb.jdzj.com/"
  },
  "images": [
    "https://img.jdzj.com/UserDocument/mallfile/mtjdyb/Picture/2026101015314303484274458989.png",
    "https://img.jdzj.com/UserDocument/mallfile/mtjdyb/Picture/2026101015314341975268458989.png"
  ],
  "specs": {
    "品牌": "美天机电",
    "型号": "型号齐全,选型报价,",
    "连接方式": "法兰式",
    "测量范围": "0m3",
    "电源电压": "220V-240V",
    "精度等级": "±0.2%"
  },
  "postedAt": "2026-10-20T00:00:00+08:00",
  "updatedAt": null,
  "qualityFlags": [],
  "scrapedAt": "2026-10-20T22:57:16Z",
  "moq": 1,
  "moqUnit": "台",
  "ext_priceUnit": "台",
  "ext_priceTiers": [
    {
      "minQty": 1000,
      "priceCny": 1.0,
      "text": "1.00元/台"
    }
  ],
  "ext_categorySlug": "dianciliuliangji",
  "ext_categoryEn": "Electromagnetic flow meters",
  "ext_views": 26,
  "ext_companyUrl": "https://mtjdyb.jdzj.com/",
  "ext_companyId": null,
  "ext_sellerVerified": true,
  "ext_sellerRegion": "陕西 西安",
  "ext_description": "美天MTLDG-DN20 智能电磁流量计产品介绍 在现代工业流体测量领域，精度与稳定性是确保生产高效运行的关键因素。美天MTLDG-DN20 智能电磁流量计是一款专为中小管径流体测量设计的高性能仪表。该设备采用先进的电磁感应原理，适用于测量…",
  "ext_detailFetched": true
}
```

#### Categories

The **Categories** dropdown contains the industrial part of jdzj.com's own category tree — about 54 top-level branches (machinery, equipment, electrical, electronics, instruments, tools, hydraulics, pumps, valves, automation, bearings, motors, generators, explosion-proof, textile/garment machinery …), their ~1,650 second-level categories and ~1,450 third-level categories of the smaller branches, each shown as `English path · 中文名 (listing count)`. Type to filter in English or Chinese. Picking a parent entry marked **(all)** downloads all its subcategories (the actor crawls its leaf pages and logs `Category <id> <中文> (<English>) -> N subcategories`). For *used* equipment use **Used equipment categories** (the whole `二手设备` branch: ~35 second-level and ~270 third-level categories).

Third-level categories of the larger second-level branches are not listed in the dropdown (size limit) but are crawled when you pick their parent *(all)*; to take just one, paste its URL, e.g. `https://www.jdzj.com/chanpin/hy6_86.html` (level 2) or `https://www.jdzj.com/kycjfzsb/` (level 3). Category ids typed through the API (`hy6_86`, `kycjfzsb`, the 27 ids of earlier versions) keep working. Browse the tree at [jdzj.com/chanpin.html](https://www.jdzj.com/chanpin.html).

Categories and URLs are merged and de-duplicated. When several are selected, *Max listings* is split evenly between them (unused quota moves to the next one); inside a parent the leaf pages are read in site order, at least one list page each. With *Sort order*, *Updated within* or *VIP only* active, a second-level category is crawled as its own page (the filters do not exist on third-level pages) and a top-level one as its second-level children.

Excluded as non-industrial (use URLs if you need them): food, agri-produce, fresh/consumer goods, apparel, footwear, leather, textiles, home & furniture, toys, gifts, sports, appliances, lighting, security/CCTV, ICT and telecom, vehicles (`专用汽车`, `汽摩配件`, `交通运输`), raw materials (steel, building materials, chemicals, non-metal and rubber/plastic materials, pipes, mesh, packaging materials), services (business, logistics services, exhibitions, education, processing) and the consumer sub-branches of mixed top-level categories.

### 💵 How much does it cost?

Pay-per-event pricing — you pay only for items that land in your dataset, never for retries or failed pages. Higher Apify plans get automatic volume discounts:

| Event (per 1,000 results) | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| **Listing result** (Include details off) | $1.50 | $1.35 | $1.275 | $1.125 | $0.975 | $0.90 |
| **Detailed result** (Include details on) | $3.50 | $3.15 | $2.975 | $2.625 | $2.275 | $2.10 |

Plus **$0.005 per run** (Actor start). Each item is charged **either** as a listing result **or** as a detailed result — never both; if a detail page cannot be fetched, that item is charged at the listing price.

*Example:* 1,000 items with details on the Free plan ≈ **$3.50**; 10,000 listing-only items ≈ **$15.00**.

Platform compute is included in the price. **Proxy:** not needed by default. If you add your own proxy (for example a residential proxy) in *Proxy URL*, that traffic is billed by your proxy provider and is **not** included in the Actor price. Use *Max items* or the run's *Maximum cost per run* to cap your spend.

Platform usage is minimal because no browser is used (list mode typically runs in well under 256 MB and a few seconds per hundred listings). Set *Max listings* to cap your spend.

### 🔐 Privacy & compliance

- The Actor outputs **company-level business data** from public pages: company name, city, storefront URL, product data.
- It does **not** output phone numbers, QQ/WeChat handles or personal names. Sellers whose listed name is a person ("王先生") are returned with `seller.name = null` and the flag `seller_individual`. Free-text descriptions have phone/QQ/WeChat numbers masked.
- Many storefronts live at `<11-digit mobile number>.jdzj.com`, and the site also embeds the same number in its image paths. By default such storefront URLs are blanked (flag `shop_url_redacted`) because the sub-domain is often a personal mobile number; disable **Redact phone-number shop URLs** to keep them (flag `shop_subdomain_is_phone`).
- **Include company phone** (off by default) adds the phone shown on a listing, only for verified company sellers. Enable it only if you have a lawful basis to process it.
- The Actor reads only paths allowed by the site's `robots.txt` (the site disallows `/search.html*` only) and is deliberately gentle: default concurrency 3, 500 ms delay, retries with exponential backoff.
- You are responsible for complying with jdzj.com's terms and with applicable law (including China's PIPL and the GDPR) when using the data.

### ⚠️ Known limits

- **Catalogue ordering:** the default order promotes paid (VIP) suppliers, so the first pages are dominated by a few suppliers with near-identical listings. Use *Sort order*, *Updated within*, or scrape deeper to diversify. A large share of the catalogue is stale; `Updated within = month` keeps about 2 % of a category.
- **List mode has no brand/model/specs/date** — the listing pages do not contain them. Use *Include details*.
- **Keyword search** covers the entire site (not only industrial goods), is capped at 10,000 results per keyword, and its results do not include the shop URL unless *Include details* is on. The site may show a "register to see more" wall to anonymous heavy users; the Actor stops cleanly if it sees one.
- **Used equipment** listings rarely contain year or hours (they are extracted from the title when present). The legacy `/ershou/` board holds only ~300 listings from 2018–2023.
- **Buy requests**: titles, dates and masked buyer names only — contact details and descriptions are behind a login.
- Prices are **CNY unit prices as advertised** (often "面议" = negotiable, or placeholder values); they are not transaction prices. The listing price is the lowest tier when several quantity tiers exist.
- From datacenter IPs outside China the site can be slow or reset connections; the Actor retries 4 times with backoff. If you are blocked, set a proxy in *Proxy URL*.
- Mobile site (m.jdzj.com) returns 403 to datacenter IPs and is not used.

### ❓ FAQ

**Do I need a proxy?** Usually not. If you see timeouts or blocks, add a residential/ISP proxy URL in *Advanced settings*.

**Can I get English text?** Listing titles, specs and descriptions are returned as published (Chinese). Category names are shown in English in the dropdown and the leaf category is also output as `ext_categoryEn` (all level 1-2 categories, every dropdown entry and ~6,500 further leaf pages are translated by hand; other leaf pages fall back to their translated parent).

**How do I get only new listings?** Use *Updated within* (day / week / month) together with a schedule, and de-duplicate on `listingId`.

**Why are some prices `null`?** The supplier chose "面议" (price on request) or left it empty. See `priceType` and `qualityFlags`.

**How big is the catalogue?** About 28 million product entries site-wide (many non-industrial); the industrial categories offered in the input range from ~100 (laser equipment) to 138,000+ (pumps) listings each; "all machinery" holds ~2.6 million.

**Something broke?** Open an issue on the Actor page with your input and run ID.

*Built and maintained by Rastriq — data infrastructure and scraping tools (rastriq.es).*

# Actor input Schema

## `section` (type: `string`):

What to scrape:<br><br>• <b>supply</b> — product / supplier listings (供应).<br>• <b>used</b> — second-hand equipment (二手设备). By default it crawls the live <i>Used equipment</i> catalogue; see <i>Used source</i>.<br>• <b>buy_requests</b> — buyer requests (求购). Titles, dates and masked buyer names only; details are behind a login on the site.

## `categories` (type: `array`):

Pick what to download from the <b>jdzj.com industrial category tree</b> (Machinery › Mining machinery › …). Choosing a parent entry marked <b>(all)</b> downloads <b>all its subcategories</b>; <b>type to filter</b> the list in English or Chinese. Numbers in brackets are the site's own listing totals. Leaf subcategories (3rd level) are listed for the smaller branches only — for the others pick the parent <i>(all)</i> or paste the subcategory URL in <i>Custom category URLs</i>. Categories and URLs are merged; when several are selected, <i>Max listings</i> is split evenly between them. Leave both empty for the default (<b>Mining machinery</b> for supply). For <b>used</b> equipment use the <i>Used equipment categories</i> field. Ignored when a <b>keyword</b> is set.

## `usedCategories` (type: `array`):

Only for <b>section = used</b> (catalogue source): subcategories of the site's <i>Used equipment</i> branch (二手设备). Pick the <b>(all)</b> entry for the whole catalogue or a parent to include all its subcategories; <b>type to filter</b> in English or Chinese. Leave empty for the whole used-equipment catalogue. Merged with <i>Custom category URLs</i>.

## `categoryUrls` (type: `array`):

Optional extra category pages, one per line, <b>merged</b> with the categories picked above (duplicates removed). Formats: <code>https://www.jdzj.com/chanpin/hy6_86.html</code> (1st/2nd level, crawled as that page), a 3rd-level page such as <code>https://www.jdzj.com/kycjfzsb/</code>, or the bare ids <code>hy6_86</code> / <code>kycjfzsb</code>. Browse <a href='https://www.jdzj.com/chanpin.html' target='_blank'>jdzj.com/chanpin.html</a> to find them. For legacy used data you can pass <code>/ershou/ProductionList\_…</code> URLs.

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

Optional Chinese keyword (e.g. <code>破碎机</code>, <code>码垛机</code>). Uses the site's own search API across the <b>whole</b> catalogue (categories are ignored). The site exposes at most 10,000 results (500 pages) per keyword. For <i>buy_requests</i>/<i>legacy used</i> the keyword filters titles.

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

Maximum number of listings to return. Use a low value (5-10) for a first test. Set <code>0</code> for unlimited (the biggest categories hold 100k+ listings).

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

Fetch each listing's page for <b>brand, model, specs table, MOQ, tiered prices, publish date, photo gallery, full category path, description</b> and the supplier's shop URL (for keyword search). Costs <b>1 extra request per listing</b> (~10× slower). Off = fast list mode: ~0.05 requests per listing.

## `sortBy` (type: `string`):

Sort order of category listings.

## `updatedWithin` (type: `string`):

Keep only listings (re)published recently. Note: most of the catalogue is old — the 'month' filter keeps ~2% of it.

## `verifiedOnly` (type: `boolean`):

Restrict to the site's VIP (paid, verified) suppliers.

## `usedSource` (type: `string`):

For <b>used</b>: <b>catalog</b> = live 'Used equipment' category (26k+ listings, same format as supply). <b>legacy</b> = the old /ershou/ board (~300 stale listings from 2018-2023, mostly spam).

## `includeDescription` (type: `boolean`):

With <i>Include details</i>: add the listing description (max 1,500 chars, phone/QQ/WeChat numbers masked) as <code>ext_description</code>.

## `includeSellerContact` (type: `boolean`):

With <i>Include details</i>: add the phone shown on the listing as <code>ext_sellerPhone</code>, <b>only for verified company sellers</b>. Off by default — make sure you have a lawful basis before enabling.

## `redactPhoneShopUrls` (type: `boolean`):

Many shops live at <code><11-digit-mobile>.jdzj.com</code>. By default such URLs are blanked (flag <code>shop_url_redacted</code>) because the sub-domain is often a personal mobile number. Disable to keep them (flagged <code>shop_subdomain_is_phone</code>).

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

Parallel requests (1-10). The site is reachable but slow from outside China; keep it low.

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

Base delay before each request, in milliseconds (±40% jitter).

## `proxyUrl` (type: `string`):

Optional proxy, e.g. <code>http://user:pass@gate.decodo.com:7000</code>. Leave empty to connect directly. <b>Proxy traffic is billed by your own proxy provider</b> and is not included in this Actor's price.

## `debugMode` (type: `boolean`):

Verbose logging (every request URL).

## Actor input object example

```json
{
  "section": "supply",
  "categories": [
    "hy6_86"
  ],
  "maxItems": 10,
  "includeDetails": false,
  "sortBy": "relevance",
  "updatedWithin": "any",
  "verifiedOnly": false,
  "usedSource": "catalog",
  "includeDescription": true,
  "includeSellerContact": false,
  "redactPhoneShopUrls": true,
  "maxConcurrency": 3,
  "requestDelayMs": 500,
  "debugMode": false
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset with all scraped listings (normalised schema).

## `stats` (type: `string`):

Requests per item, seconds per 100 items and quality-flag counts.

# 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 = {
    "categories": [
        "hy6_86"
    ],
    "keyword": "",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("rastriq/jdzj-industrial-scraper").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 = {
    "categories": ["hy6_86"],
    "keyword": "",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("rastriq/jdzj-industrial-scraper").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 '{
  "categories": [
    "hy6_86"
  ],
  "keyword": "",
  "maxItems": 10
}' |
apify call rastriq/jdzj-industrial-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rastriq/jdzj-industrial-scraper"
        }
    }
}
```

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/fAD4ZKXZoYCPXVmev/builds/42ZgdMgiwwT8n9d9N/openapi.json
