# eChinaCities Jobs Scraper: China English Jobs Data (`getascraper/echinacities-jobs-scraper`) Actor

Collect public eChinaCities job listings for hiring research, job feeds, and market analysis.

- **URL**: https://apify.com/getascraper/echinacities-jobs-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.12 / 1,000 job postings

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/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

## 🇨🇳 eChinaCities Jobs Scraper: English Jobs in China

<table width="100%" style="table-layout:fixed;border-collapse:collapse">
<tr>
<td colspan="3" style="padding:14px 18px;background:#FFF7ED;border-top:3px solid #B45309;border-left:1px solid #D6D3D1;border-right:1px solid #D6D3D1;border-radius:8px 8px 0 0">
<span style="font-size:16px;font-weight:700;color:#1C1917">Find English-speaking China jobs with visa and salary intelligence.</span> <span style="font-size:15px;color:#57534E">Search public eChinaCities listings by role, city, work type, freshness, and salary, then export direct job links and source-backed visa, housing, and benefit tags.</span>
</td>
</tr>
<tr>
<td colspan="3" style="padding:10px 14px;background:#B45309;border-left:1px solid #D6D3D1;border-right:1px solid #D6D3D1">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">China tech and English-language hiring</span>
<span style="color:#FDDCC0;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;English-language and tech-focused China job boards</span>
</td>
</tr>
<tr>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:33.333%;background:#FFFFFF;border-radius:0 0 0 8px">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-A0Z91P1koU7kWs1Hv-vVQaLEx8YR-CompressJPEG.Online_img%28512x512%29_%2810%29.jpg" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/getascraper/lagou-tech-jobs-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Lagou</a></span><br>
<span style="color:#57534E;font-size:11px">Tech roles &amp; salary data</span>
</td>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:33.333%;background:#FFF7ED">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-lfUHE61ve727BkvyO-W5boDY4u8T-unnamed_%2829%29.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/getascraper/echinacities-jobs-scraper" style="color:#B45309;text-decoration:none;font-weight:700;font-size:13px">eChinaCities</a></span><br>
<span style="color:#B45309;font-size:11px;font-weight:700">&#10148; You are here</span>
</td>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-right:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:33.333%;background:#FFFFFF;border-radius:0 0 8px 0">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-e2mxWFMIH10tIVN0f-yhHOLwlfsM-CompressJPEG.Online_img%28512x512%29_%289%29.jpg" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/getascraper/51job-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">51job</a></span><br>
<span style="color:#57534E;font-size:11px">Jobs, salary &amp; employer context</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#FFF7ED;border:1px solid #F7D6AA;border-top:4px solid #B45309;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">English-speaking China jobs with visa and salary intelligence</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Search public eChinaCities listings by role, city, work type, freshness, and salary, then export direct job links plus source-backed visa, housing, and benefit tags.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F7D6AA;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#B45309">🛂 Visa and benefit tags</span><br>
<span style="font-size:12px;color:#57534E">Work visa, housing, travel, and insurance tags when published.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F7D6AA;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#B45309">💰 Comparable salary bounds</span><br>
<span style="font-size:12px;color:#57534E">CNY or USD salary ranges when the source publishes a range.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F7D6AA;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#B45309">🕓 Freshness filters</span><br>
<span style="font-size:12px;color:#57534E">Filter listings updated within the last 30 or 90 days.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F7D6AA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#B45309">🔗 Direct job links</span><br>
<span style="font-size:12px;color:#57534E">Verified public listing URLs with stable listing IDs.</span>
</td>
</tr>
</table>

### 🔍 What does this Actor do?

The eChinaCities Jobs Scraper searches public eChinaCities listings for English-speaking and international China jobs. It is made for job-data teams, recruitment researchers, and China market analysts who need source-backed salary, visa, benefit, expiry, employer, and direct-job-link data without copying individual listings.

### 👥 Who uses it?

- A job-data team comparing English-language hiring demand across Chinese cities.
- A recruitment researcher tracking public roles and stated skills from selected searches.
- A market-intelligence analyst mapping companies that advertise international-facing roles.

### ✨ What you receive

- Public job title, company, city, work type, salary text, and comparable salary ranges when the source publishes them.
- Source-published work visa, housing, travel, insurance, and other benefit tags.
- Public direct job links, expiry dates, employer IDs, foreign-teacher flags, and source freshness text when available.
- Stable listing IDs and source provenance to support downstream deduplication.

### 🧭 How it works

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#FFF7ED;border:1px solid #F7D6AA;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#B45309;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Describe the roles</span><br>
<span style="font-size:12px;color:#57534E">Enter job titles, then choose cities and work types.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FFF7ED;border:1px solid #F7D6AA;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#B45309;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Narrow the search</span><br>
<span style="font-size:12px;color:#57534E">Use freshness and source salary filters to focus your export.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FFF7ED;border:1px solid #F7D6AA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#B45309;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Use the dataset</span><br>
<span style="font-size:12px;color:#57534E">Choose an Output-tab database view for roles, employers, or source freshness.</span>
</td>
</tr>
</table>

### 🧾 Input

| Field                                   | Type             | Required | Description                                                                   |
| --------------------------------------- | ---------------- | -------- | ----------------------------------------------------------------------------- |
| `queries`                               | array of strings | No       | Job titles or skills; each keyword can be combined with selected cities.      |
| `cityIds`                               | array            | No       | Popular eChinaCities locations; leave empty for all locations.                |
| `jobTypes`                              | array            | No       | Full-time, part-time, internship, freelance, teaching, or non-teaching roles. |
| `lastUpdatedWithinDays`                 | enum             | No       | Source freshness: all available listings, 30 days, or 90 days.                |
| `salaryCurrency`                        | string           | No       | CNY or USD source salary view.                                                |
| `minMonthlySalary` / `maxMonthlySalary` | integer          | No       | Optional source salary thresholds in the selected currency.                   |
| `maxItems`                              | integer          | No       | Maximum unique listings returned across selected searches.                    |
| `outputMode`                            | string           | No       | Full records or compact database/agent records.                               |
| `startUrls`                             | array of URLs    | No       | Advanced exact-search override; these URLs take precedence.                   |

### 📊 Data table

| Field                         | Type   | Description                                                          |
| ----------------------------- | ------ | -------------------------------------------------------------------- |
| listingId                     | string | Stable public listing identifier.                                    |
| title                         | string | Published job title.                                                 |
| companyName                   | string | Hiring company name when published.                                  |
| salary                        | string | Salary text as published.                                            |
| salaryMin / salaryMax         | number | Comparable published salary bounds when the source gives a range.    |
| salaryCurrency / salaryPeriod | string | Currency and period for comparable salary bounds.                    |
| city                          | string | Published job city.                                                  |
| jobType                       | string | Published job type.                                                  |
| skills                        | array  | Published skills or tags.                                            |
| benefits                      | array  | Published benefits such as work visa, housing, travel, or insurance. |
| description                   | string | Listing description preview when published.                          |
| expiresAt                     | string | Source-provided end date when published.                             |
| listingUrl                    | string | Verified public eChinaCities job URL.                                |
| logoUrl                       | string | Public company logo URL when available.                              |
| scrapedAt                     | string | Time the record was collected.                                       |
| sourceUrl                     | string | Listing page that returned the record.                               |

### 💰 Pricing

Pricing is pay per result. Empty runs cost nothing, and there are no subscriptions.

### ⭐ Enjoying eChinaCities Jobs Scraper?

<table width="100%"><tr><td style="padding:20px 24px;background:#FFF7ED;border:1px solid #F7D6AA;border-left:5px solid #B45309;border-radius:10px 10px 0 0"><span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br><b>Found international-facing China job listings that support your research?</b><br>A rating helps job-data teams and China market researchers find this Actor. It also tells us what source fields to improve next.</td></tr><tr><td style="padding:0;background:#B45309;border:1px solid #F7D6AA;border-top:none;border-radius:0 0 10px 10px;text-align:center"><a href="https://apify.com/getascraper/echinacities-jobs-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800">★&nbsp;&nbsp;Rate this Actor on Apify</a></td></tr></table>

### ❓ FAQ

#### Does this collect private applicant data?

No. It collects only public job-listing information shown on the selected eChinaCities pages.

#### Can I combine multiple eChinaCities searches?

Yes. Add several keywords and cities. The Actor combines those searches and deduplicates returned listings by their published IDs.

#### Why does the run summary mention coverage?

Some public eChinaCities pages expose fewer rows than the source reports for that search. The Actor still returns only genuine public rows, and the run summary makes that source limitation visible rather than claiming a complete export.

#### Why are some fields blank?

eChinaCities does not publish every field for every listing. Missing values are omitted instead of being invented.

#### eChinaCities 招聘信息可以导出吗？

Yes. Add a public eChinaCities listing page and export the genuine listings returned by that page.

#### eChinaCities 英语招聘职位如何批量整理？

Use several public listing pages in one run, then use the company and job-listing dataset views to organize the results.

### 🔗 Other actors

- [Zhaopin Scraper 智联招聘: China Jobs & Salary API](https://apify.com/getascraper/zhaopin-jobs-scraper) ↗ - Public China job and salary data for hiring intelligence.
- [51job China Jobs Scraper](https://apify.com/getascraper/51job-scraper) ↗ - Collect public recruitment data from 51job.
- [Liepin China Jobs Scraper](https://apify.com/getascraper/liepin-scraper) ↗ - Explore white-collar recruitment listings in China.
- [Lagou Jobs Scraper](https://apify.com/getascraper/lagou-jobs-scraper) ↗ - Collect technology job listings and hiring signals.

# Actor input Schema

## `queries` (type: `array`):

One or more job titles or skills. Each keyword can be combined with each selected city.

## `cityIds` (type: `array`):

Enter up to three popular locations: Beijing, Shanghai, Guangzhou, Shenzhen, Tianjin, Chengdu, Dalian, Hangzhou, Nanjing, Chongqing, Qingdao, Suzhou, or Wuhan. Leave empty to search all locations.

## `jobTypes` (type: `array`):

Enter one or more public eChinaCities work types: Full time, Part time, Internship, Freelance, Teaching, or Non-teaching. Leave empty for all types.

## `lastUpdatedWithinDays` (type: `string`):

Return listings published or refreshed within this source-provided time window.

## `salaryCurrency` (type: `string`):

Use the currency view supplied by eChinaCities. Both published salary variants are retained when available.

## `minMonthlySalary` (type: `integer`):

Optional source search threshold in the selected salary currency.

## `maxMonthlySalary` (type: `integer`):

Optional source search threshold in the selected salary currency.

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

Maximum number of unique public job listings returned across all selected searches.

## `outputMode` (type: `string`):

Full keeps every published field. Compact is optimized for databases, spreadsheets, and agents.

## `startUrls` (type: `array`):

Advanced override. Paste public eChinaCities listing pages to reproduce an exact source search. These URLs take precedence over the guided filters above.

## Actor input object example

```json
{
  "queries": [
    "English teacher"
  ],
  "lastUpdatedWithinDays": "30",
  "salaryCurrency": "CNY",
  "maxItems": 10,
  "outputMode": "full",
  "startUrls": []
}
```

# Actor output Schema

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

No description

## `runSummary` (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 = {
    "queries": [
        "English teacher"
    ],
    "lastUpdatedWithinDays": "30",
    "salaryCurrency": "CNY",
    "maxItems": 10,
    "outputMode": "full",
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/echinacities-jobs-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 = {
    "queries": ["English teacher"],
    "lastUpdatedWithinDays": "30",
    "salaryCurrency": "CNY",
    "maxItems": 10,
    "outputMode": "full",
    "startUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/echinacities-jobs-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 '{
  "queries": [
    "English teacher"
  ],
  "lastUpdatedWithinDays": "30",
  "salaryCurrency": "CNY",
  "maxItems": 10,
  "outputMode": "full",
  "startUrls": []
}' |
apify call getascraper/echinacities-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/echinacities-jobs-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/lfUHE61ve727BkvyO/builds/KebiP76idJyqENXL9/openapi.json
