# Anjuke 安居客 Real Estate Scraper - 100+ Fields, 677 Cities (`zen-studio/anjuke-real-estate-scraper`) Actor

Extract 100+ fields per Anjuke (安居客) sale listing (二手房) across 677 Chinese cities. Prices in 万/RMB, broker profiles, community price history, nearby schools/transit/shops with distances, photos, VR tours, mortgage estimates. 房源数据采集 at ~300 listings/min.

- **URL**: https://apify.com/zen-studio/anjuke-real-estate-scraper.md
- **Developed by:** [Zen Studio](https://apify.com/zen-studio) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 66.7% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.99 / 1,000 listings

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Anjuke Sale Listings Scraper | Chinese Real Estate Data (2026)

<table>
<tr>
<td style="text-align:center;padding:18px 10px;background:#FFF7ED;border:1px solid #FFE4CC;border-radius:4px;width:25%">
<span style="font-size:28px;font-weight:800;color:#FF7300;letter-spacing:-0.02em">100+</span><br>
<span style="font-size:11px;color:#78716C;text-transform:uppercase;letter-spacing:0.08em;font-weight:600">Fields / Listing</span>
</td>
<td style="text-align:center;padding:18px 10px;background:#FFF7ED;border:1px solid #FFE4CC;border-radius:4px;width:25%">
<span style="font-size:28px;font-weight:800;color:#FF7300;letter-spacing:-0.02em">677</span><br>
<span style="font-size:11px;color:#78716C;text-transform:uppercase;letter-spacing:0.08em;font-weight:600">Chinese Cities</span>
</td>
<td style="text-align:center;padding:18px 10px;background:#FFF7ED;border:1px solid #FFE4CC;border-radius:4px;width:25%">
<span style="font-size:28px;font-weight:800;color:#FF7300;letter-spacing:-0.02em">~300</span><br>
<span style="font-size:11px;color:#78716C;text-transform:uppercase;letter-spacing:0.08em;font-weight:600">Listings / Min</span>
</td>
<td style="text-align:center;padding:18px 10px;background:#FFF7ED;border:1px solid #FFE4CC;border-radius:4px;width:25%">
<span style="font-size:28px;font-weight:800;color:#FF7300;letter-spacing:-0.02em">LIVE</span><br>
<span style="font-size:11px;color:#78716C;text-transform:uppercase;letter-spacing:0.08em;font-weight:600">Real-Time Data</span>
</td>
</tr>
</table>

![Anjuke Real Estate Scraper](https://files.catbox.moe/efe0k1.png)

#### Copy to your AI assistant / 复制给你的 AI 助手

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

````

zen-studio/anjuke-real-estate-scraper on Apify. Call: ApifyClient("TOKEN").actor("zen-studio/anjuke-real-estate-scraper").call(run\_input={...}), then client.dataset(run\["defaultDatasetId"]).list\_items().items for results. Key inputs: city (required, pinyin of a Chinese city e.g. "beijing", "shanghai"; supports 677 cities), maxResults (int, 10-5000, default 100), optional filters: location (district/shangquan/community/subway), schoolDistrict, priceMinWan/priceMaxWan (万 = 10000 RMB), rooms (array: 1BR/2BR/3BR/4BR/5BR/5BR+), sortBy (default/priceAsc/priceDesc/areaDesc/unitPriceAsc/unitPriceDesc). Full actor spec (input schema with all cities/enums/defaults, output dataset fields, README): GET https://api.apify.com/v2/acts/zen-studio~anjuke-real-estate-scraper/builds/default (Bearer TOKEN) → inputSchema (JSON string, parse it), actorDefinition.storages.dataset.views.overview.transformation.fields (output field list), readme. Get token: https://console.apify.com/account/integrations

````

### Key Features

- **100+ fields per listing** — price, area, floor, orientation, tags, photos, post date, tax status, VR tour, and mortgage estimate — all automatic
- **Full community block** — avg price per m², month-over-month change, year built, developer, plot rate, engagement counts, and nearby schools/transit/shops with walking distances
- **Full broker profile** — name, agency, store, rating, seniority, service tags, earned medals (honors) with icons, and credit flags
- **All 677 Anjuke cities** — from tier-1 (北京 / 上海 / 广州 / 深圳) down to county-level markets
- **Deep filters** — district, shangquan, school catchment, price (万), rooms, area, property type, year built, orientation, fitment, amenities, keyword

### How to Scrape Anjuke Sale Listings

#### Basic — Beijing, 50 listings

```json
{
    "city": "beijing",
    "maxResults": 50
}
````

#### Filter by district + price range + rooms

```json
{
    "city": "beijing",
    "location": "海淀",
    "priceMinWan": 500,
    "priceMaxWan": 1200,
    "rooms": ["2BR", "3BR"],
    "sortBy": "priceAsc",
    "maxResults": 100
}
```

#### School district + keyword

```json
{
    "city": "beijing",
    "schoolDistrict": "史家胡同小学",
    "keyword": "满五唯一",
    "maxResults": 50
}
```

#### Shanghai, new-ish buildings with elevator

```json
{
    "city": "shanghai",
    "yearBuiltMin": 2015,
    "features": ["elevator", "nearSubway"],
    "sortBy": "unitPriceAsc",
    "maxResults": 200
}
```

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `city` | string | *required* | Pinyin of the city (`beijing`, `shanghai`, `guangzhou`…). 677 cities supported — searchable dropdown with Chinese + pinyin |
| `maxResults` | integer | `100` | How many listings to return (10 – 5,000) |
| `location` | string | — | District (`海淀`), shangquan / business zone (`中关村`), community name, or subway line (`10号线`) |
| `schoolDistrict` | string | — | School name (partial OK). Resolves to the school's catchment-area communities automatically |
| `priceMinWan` / `priceMaxWan` | integer | — | Price range in 万 (10,000 RMB). Ex: `300` = ¥3,000,000 |
| `rooms` | array | — | `1BR`, `2BR`, `3BR`, `4BR`, `5BR`, `5BR+` |
| `areaMinM2` / `areaMaxM2` | integer | — | Area range in m² |
| `propertyType` | string | `any` | `apartment` (商品房住宅), `mixedUse` (商住两用), `affordable` (经济适用房), `public` (公房), `other` |
| `keyword` | string | — | Free-text match on title + description (`地铁`, `学区房`, `满五唯一`…) |
| `yearBuiltMin` / `yearBuiltMax` | integer | — | Community completion year range |
| `sortBy` | string | `default` | `priceAsc`, `priceDesc`, `areaDesc`, `unitPriceAsc`, `unitPriceDesc` |
| `orientation` | array | — | `south`, `north`, `east`, `west`, `southEast`, `southWest`, `northEast`, `northWest` |
| `fitment` | array | — | `rough` (毛坯), `simple` (简装), `goodDecoration` (精装), `luxury` (豪装) |
| `features` | array | — | `elevator`, `nearSubway`, `vrTour`, `videoTour`, `hotListing`, `urgentSale`, `storePick`, `txGuaranteed` |

### What Data Can You Extract from Anjuke?

Every listing returns:

- **Identity** — listing ID, desktop URL, title, post date (ISO), source type, status
- **Price** — total price in 万 + RMB, price per m², `priceOnRequest` flag for "contact broker" listings
- **Layout** — area, rooms, halls, bathrooms, orientation, floor (total + level type), fitment, heating, year built, property type
- **Flags** — hasElevator, isUniqueProperty, hasPanoramaTour, taxStatus (满二/满五 tax classification, human-readable)
- **Description** — full text + structured sections (`核心卖点` · `业主心态` · `服务介绍`)
- **Media** — photos (de-duped, all sizes), VR tour URL, panorama URL, video flag
- **Tags** — feature tags, highlights, dynamic activity tags, publicity brands
- **Mortgage estimate** — first payment + monthly payment (Anjuke's calculation)
- **Location** — city, district, block, shangquan, full address, coordinates in Baidu + Gaode + bucketed variants
- **Community** — name, photo, year built, building type, developer, property management company, total units, parking spaces + fee, property fee per m², heat / water / power supply, land-use period, overall score (0-10) + **7-category rating breakdown** (commercial, transit, environment, quality, ...), live **supply/demand ratio** and **6-month price history**, market sentiment (看好 / 观望 / 悲观), live counts of on-sale + rent listings in this community, **nearby metro stations with walking distance**, nearby schools (where available), nearby facilities (schools / transit / shopping / hospitals), engagement counts (browse / collect / takelook / wechat), featured broker preview
- **Broker** — name, photo, agency, store, rating, seniority, IP location, service tags, badges, earned medals (category slug + title + description + icon URL), unearned medals, credit flags, store identifier

#### Output Example — Beijing 2BR, 63m², 320万 (¥3.2M)

```json
{
  "listingId": "4522147953892364",
  "url": "https://beijing.anjuke.com/prop/view/4522147953892364",
  "title": "急售 安贞里三区 文物局家属楼 明厨明卫  临近地铁12号线",
  "sourceType": "broker",
  "status": "active",
  "postDate": "2026-03-29T08:41:04Z",
  "priceTotalWan": 320,
  "priceTotalRmb": 3200000,
  "pricePerM2Rmb": 50466,
  "area": 63.41,
  "rooms": 2,
  "halls": 1,
  "bathrooms": 1,
  "orientation": "东北",
  "floor": { "total": 17, "type": "high", "levelRaw": "高层(共17层)" },
  "fitment": "简单装修",
  "heating": "central",
  "yearBuilt": 1998,
  "propertyType": "单位集体自建房",
  "hasElevator": true,
  "isUniqueProperty": false,
  "hasPanoramaTour": false,
  "taxStatus": "over-2-years (满二, VAT-free)",
  "tags": ["高清VR", "满五年", "有电梯", "近地铁", "采光较好", "经纪人力荐", "人气好房"],
  "photos": [
    "https://pic1.ajkimg.com/display/ajk/.../960x720.jpg",
    "...12 more high-res photos"
  ],
  "descStructure": [
    {
      "name": "核心卖点",
      "content": "高楼层，视野好；有钥匙，随时看房；明卫；小区中心位置。此房户型为2室1厅1卫，建筑面积为63.41平米..."
    },
    "...业主心态 · 服务介绍"
  ],
  "location": {
    "cityName": "北京",
    "district": "朝阳",
    "block": "安贞",
    "shangquan": "安贞",
    "address": "安贞路",
    "lat": 39.969576,
    "lng": 116.40393,
    "coordSystem": "baidu"
  },
  "community": {
    "id": "848635",
    "name": "碧森里",
    "yearBuilt": 2019,
    "buildingType": "小高层",
    "propertyType": "商品房住宅",
    "totalHouseHoldNum": 1226,
    "parking": "0",
    "propertyFee": "1.78元/平米/月",
    "propertyCompany": "北京国宇嘉物业管理有限公司",
    "heatSupply": "是",
    "landUsagePeriod": "70年",
    "supplyDemandRatio": 1.13,
    "rating": {
      "score": 8.0,
      "categories": [
        { "name": "商业配套", "score": 8.0 },
        { "name": "交通便利", "score": 8.5 },
        { "name": "居住品质", "score": 8.6 },
        { "name": "小区环境", "score": 6.5 },
        "...3 more categories"
      ]
    },
    "counts": {
      "saleListings": 11,
      "rentListings": 27,
      "newBuildUnits": 0,
      "recentTransactions": 0
    },
    "price": {
      "reportMonth": "4",
      "avgPricePerM2Rmb": 62295,
      "avgPriceMonthChangePct": -2.65,
      "marketSentiment": "观望",
      "trendMonthly": [
        { "month": "26/4", "pricePerM2Rmb": 62295 },
        { "month": "26/3", "pricePerM2Rmb": 63991 },
        { "month": "26/2", "pricePerM2Rmb": 65540 },
        "...3 more months"
      ]
    },
    "nearbyMetro": [
      { "line": "6号线", "station": "田村", "walkingDistance": "步行625米" }
    ],
    "nearbySchools": "...where available, with walking distance",
    "media": { "photoCount": 0, "videoCount": 34, "panoCount": 0 },
    "featuredBroker": {
      "name": "文健",
      "agencyName": "麦田房产",
      "storeName": "麦田房产汤泉一店",
      "rating": 4.9,
      "recommendText": "近期服务11人"
    },
    "nearbyFacilities": [
      {
        "category": "school",
        "categoryLabel": "学校",
        "facilities": [
          { "title": "五彩鹿幼儿园", "distanceM": 91, "distanceText": "直线 91m" },
          { "title": "北京市朝阳区教育国资中心幼儿园(安馨园)", "distanceM": 225, "distanceText": "直线 225m" }
        ]
      },
      "...transit · shopping · hospital (3 more categories, each with distances)"
    ]
  },
  "broker": {
    "name": "王爽",
    "agencyName": "我爱我家",
    "storeName": "我爱我家国典华园店",
    "rating": 4.9,
    "seniority": "5-8年",
    "badges": ["服务新锐之星", "小区达人", "好评如潮", "房源丰富", "闪电回复"],
    "serviceTags": ["新房买卖", "专车接送", "有钥匙"],
    "honors": [
      { "category": "service_star", "title": "服务新锐之星", "text": "平台精选优质服务", "type": 8 },
      "...4 more medals (each with icon URL)"
    ]
  },
  "mortgageEstimate": { "firstPayRmb": 640000, "perMonthRmb": 11353 },
  "media": {
    "panoUrl": "https://m.anjuke.com/panorama?p=...&type=102",
    "isVrTakeLook": true
  },
  "scrapedAt": "2026-04-16T20:06:37Z"
}
```

### Advanced Usage

#### Cheap post-2010 builds in a school catchment

```json
{
  "city": "beijing",
  "schoolDistrict": "史家胡同小学",
  "priceMaxWan": 1500,
  "yearBuiltMin": 2010,
  "features": ["elevator", "nearSubway"],
  "sortBy": "priceAsc",
  "maxResults": 200
}
```

#### High-end listings in Shanghai

```json
{
  "city": "shanghai",
  "fitment": ["luxury"],
  "priceMinWan": 3000,
  "sortBy": "priceDesc",
  "maxResults": 100
}
```

#### South-facing 2BRs near subway in 成都

```json
{
  "city": "chengdu",
  "rooms": ["2BR"],
  "orientation": ["south", "southEast"],
  "features": ["nearSubway"],
  "sortBy": "unitPriceAsc",
  "maxResults": 500
}
```

#### Bulk pricing research in a specific shangquan

```json
{
  "city": "shenzhen",
  "location": "南山",
  "sortBy": "priceAsc",
  "maxResults": 1000
}
```

### Pricing

**From $7.99 / 1,000 listings** — pay-per-event on the `listing-scraped` event. Only fully enriched listings delivered to your dataset are charged. Your Apify subscription tier applies a volume discount automatically.

| Plan | Per 1,000 | Per listing |
|---|---|---|
| Free | $9.99 | $0.00999 |
| Bronze | $8.99 | $0.00899 |
| Silver | $8.49 | $0.00849 |
| Gold | $7.99 | $0.00799 |

**Cut cost:** narrow with `location` + `rooms` + price range before enrichment, set `maxResults` to your real need (actor stops at cap), and split wide surveys by district or price band.

### FAQ

**Which cities are supported?**
All 677 Anjuke-supported Chinese cities, from tier-1 (北京 / 上海 / 广州 / 深圳) to county-level markets. Search the city dropdown by Chinese name or pinyin.

**How fast is the scraper?**
\~300 enriched listings per minute in typical runs. Each listing includes detail + broker + community lookups, all parallelized across 40 workers.

**Is the data fresh?**
Yes — every run hits Anjuke live. No cached data, no stale snapshots.

**Can I filter by Chinese district names?**
Yes. The `location` field accepts Chinese (`海淀`), pinyin (`Haidian`), shangquan (`中关村`), community names, and subway lines. The scraper resolves free text to the correct filter automatically.

**What currency are prices in?**
RMB. `priceTotalWan` is in 万 (10,000 RMB — the way Chinese buyers think about it), `priceTotalRmb` is raw RMB, `pricePerM2Rmb` is per square meter.

**Are coordinates accurate?**
Every listing returns three coordinate variants: Baidu (default for China maps), Gaode (AMap), and a bucketed form Anjuke uses internally. Use Baidu for Chinese maps, Gaode for most Western libraries.

**Does `maxResults` guarantee that many results?**
It's a hard ceiling, not a floor. Narrow filters may naturally return fewer. For `maxResults > 5,000`, split into multiple queries — API ranking degrades deep into the feed.

**Does it include broker phone numbers?**
No. Phone reveal requires an authenticated Anjuke app session and is out of scope for this actor.

**Does this scrape new-home (新房) developments?**
No — this actor is for resale listings (二手房). For new-home developer data (loupan/楼盘) with pricing, floorplans, and permanent 400-hotline sales-office phones, use our companion [Anjuke 新房 Scraper](https://apify.com/zen-studio/anjuke-new-home-scraper).

**Can I run the same query on a schedule?**
Yes, use Apify's built-in scheduler. Each run is independent — no state is carried between runs.

**What does 满五唯一 mean in the tags?**
"5+ years, sole owner property" — a Chinese tax classification that exempts the seller from most capital-gains tax. High-value signal for buyers.

### Support

- **Bugs**: Issues tab
- **Features**: Issues tab

### Legal Compliance

Extracts publicly available data. Users must comply with Anjuke's terms of service and data protection regulations (PIPL in China, GDPR in EU, CCPA in California).

***

*Second-hand Chinese real estate listings from Anjuke — full details, broker, community context, nearby facilities, mortgage estimate — enriched per listing across 677 cities.*

# Actor input Schema

## `city` (type: `string`):

City to search (城市).<br><br>Start typing to filter — every city shows both its Chinese name (e.g. <code>北京</code>) and pinyin (e.g. <code>beijing</code>). All <b>677 Anjuke-supported cities</b> are available, from tier-1 (北京 / 上海 / 广州 / 深圳) down to county-level cities (县级市).

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

How many listings (房源) to return.<br><br>Prefilled at <b>50</b> for a quick, low-cost first run. Increase after you like the output.<br><br>Need more than 5,000? Split into multiple narrower queries (by district 区, price band 价格段, or room count 户型) — Anjuke's ranking gets noisy deep into the feed.

## `location` (type: `string`):

Narrow to a specific area (区域).<br><br>Accepts:<br>• <b>District / 区</b> — e.g. <code>海淀</code> (Haidian)<br>• <b>Shangquan / 商圈</b> — e.g. <code>中关村</code><br>• <b>Community / 小区</b> — e.g. <code>万科城</code><br>• <b>Subway line / 地铁线</b> — e.g. <code>10号线</code><br><br>Leave empty for a citywide search.

## `schoolDistrict` (type: `string`):

School name (学校名) — full or partial, e.g. <code>北师大朝阳附小</code>.<br><br>Returns only listings inside that school's catchment area (学区房).

## `priceMinWan` (type: `integer`):

Lower price bound / 总价下限 in <b>万</b> (1 万 = 10,000 RMB).<br><br>Example: <code>300</code> = ¥3,000,000. Leave empty for no minimum.

## `priceMaxWan` (type: `integer`):

Upper price bound / 总价上限 in <b>万</b>.<br><br>Example: <code>800</code> = ¥8,000,000. Leave empty for unbounded.

## `rooms` (type: `array`):

Number of bedrooms (卧室数). Select one or more — OR'd together.

## `areaMinM2` (type: `integer`):

Lower bound / 建筑面积下限 in square meters. Leave empty for no minimum.

## `areaMaxM2` (type: `integer`):

Upper bound / 建筑面积上限 in square meters. Leave empty for no maximum.

## `propertyType` (type: `string`):

Filter by property classification (房屋类型). Leave as <b>Any / 不限</b> to include all types.

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

Free-text search across title and description (关键词搜索).<br><br>Examples:<br>• <code>地铁</code> — near subway<br>• <code>学区房</code> — school district<br>• <code>满五唯一</code> — 5+ years, sole property (tax-friendly)<br>• <code>电梯</code> — has elevator

## `yearBuiltMin` (type: `integer`):

Earliest community completion year / 建成年代下限. Leave empty for no lower bound.

## `yearBuiltMax` (type: `integer`):

Latest community completion year / 建成年代上限. Leave empty for no upper bound.

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

How to order search results / 排序方式 before enrichment.<br><br><b>Default / 默认</b> uses Anjuke's internal ranking (mix of recency, relevance, and featured listings).

## `orientation` (type: `array`):

Building orientation (朝向) — south-facing (南向) units get the best light in the northern hemisphere. Select one or more.

## `fitment` (type: `array`):

Interior finish level (装修状况). Most resale units are <b>简装</b> or <b>精装</b>.

## `features` (type: `array`):

Amenity and listing flags (特色标签). Combine for multi-filter matches.

## Actor input object example

```json
{
  "city": "beijing",
  "maxResults": 50,
  "propertyType": "any",
  "sortBy": "default"
}
```

# Actor output Schema

## `listings` (type: `string`):

Link to the dataset containing all scraped Anjuke sale listings.

# 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 = {
    "city": "beijing",
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("zen-studio/anjuke-real-estate-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 = {
    "city": "beijing",
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("zen-studio/anjuke-real-estate-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "city": "beijing",
  "maxResults": 50
}' |
apify call zen-studio/anjuke-real-estate-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=zen-studio/anjuke-real-estate-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Anjuke 安居客 Real Estate Scraper - 100+ Fields, 677 Cities",
        "description": "Extract 100+ fields per Anjuke (安居客) sale listing (二手房) across 677 Chinese cities. Prices in 万/RMB, broker profiles, community price history, nearby schools/transit/shops with distances, photos, VR tours, mortgage estimates. 房源数据采集 at ~300 listings/min.",
        "version": "0.0",
        "x-build-id": "0iIrJxJIA3DzpU23M"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/zen-studio~anjuke-real-estate-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-zen-studio-anjuke-real-estate-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/zen-studio~anjuke-real-estate-scraper/runs": {
            "post": {
                "operationId": "runs-sync-zen-studio-anjuke-real-estate-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/zen-studio~anjuke-real-estate-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-zen-studio-anjuke-real-estate-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "city",
                    "maxResults"
                ],
                "properties": {
                    "city": {
                        "title": "City",
                        "enum": [
                            "shanghai",
                            "guangzhou",
                            "shenzhen",
                            "beijing",
                            "chengdu",
                            "nanjing",
                            "tianjin",
                            "hangzhou",
                            "suzhou",
                            "chongqing",
                            "dalian",
                            "wuhan",
                            "jinan",
                            "foshan",
                            "wuxi",
                            "zhengzhou",
                            "changsha",
                            "shijiazhuang",
                            "zghk",
                            "qingdao",
                            "xian",
                            "ningbo",
                            "hefei",
                            "dongguan",
                            "fuzhou",
                            "kunming",
                            "guiyang",
                            "taiyuan",
                            "shenyang",
                            "kunshan",
                            "nanchang",
                            "zhuhai",
                            "changzhou",
                            "zhongshan",
                            "jiaxing",
                            "xiamen",
                            "yantai",
                            "haerbin",
                            "haikou",
                            "changchun",
                            "sanya",
                            "huizhou",
                            "baoding",
                            "guilin",
                            "handan",
                            "huhehaote",
                            "jilin",
                            "lanzhou",
                            "langfang",
                            "luoyang",
                            "mianyang",
                            "nanning",
                            "nantong",
                            "qinhuangdao",
                            "quanzhou",
                            "shaoxing",
                            "taizhou",
                            "tangshan",
                            "weihai",
                            "weifang",
                            "xuzhou",
                            "yangzhou",
                            "yichang",
                            "yinchuan",
                            "zhenjiang",
                            "zibo",
                            "liuzhou",
                            "jiangmen",
                            "yangjiang",
                            "laiwu",
                            "jingmen",
                            "huanggang",
                            "yongzhou",
                            "huainan",
                            "huangshan",
                            "fuyang",
                            "luan",
                            "yulinshi",
                            "kaifeng",
                            "hebi",
                            "jinzhou",
                            "jingdezhen",
                            "ganzhou",
                            "jian",
                            "panzhihua",
                            "luzhou",
                            "deyang",
                            "nanchong",
                            "guangan",
                            "qujing",
                            "lijiang",
                            "dali",
                            "wulumuqi",
                            "zhangjiakou",
                            "shantou",
                            "wenzhou",
                            "anshan",
                            "jining",
                            "zhuzhou",
                            "hengyang",
                            "dezhou",
                            "jinhua",
                            "baotou",
                            "cangzhou",
                            "nanyang",
                            "binzhou",
                            "rizhao",
                            "dongying",
                            "taian",
                            "linyi",
                            "anyang",
                            "taiz",
                            "zhangzhou",
                            "jieyang",
                            "liaocheng",
                            "pingdingsha",
                            "baoji",
                            "daqing",
                            "maoming",
                            "lianyungang",
                            "huzhou",
                            "xiangtan",
                            "zhanjiang",
                            "zhaoqing",
                            "xiangyang",
                            "zaozhuang",
                            "yancheng",
                            "shiyan",
                            "yueyang",
                            "hengshui",
                            "xinxiang",
                            "lishui",
                            "ningde",
                            "zhoushan",
                            "changji",
                            "xinyang",
                            "jinzhong",
                            "sanmenxia",
                            "loudi",
                            "xianyang",
                            "zunyi",
                            "wuhu",
                            "xingtai",
                            "jiujiang",
                            "xiaogan",
                            "xining",
                            "sanming",
                            "shaoguan",
                            "jiaozuo",
                            "chifeng",
                            "changde",
                            "leshan",
                            "hanzhong",
                            "eerduosi",
                            "xuchang",
                            "shangqiu",
                            "jincheng",
                            "anqing",
                            "huaian",
                            "liaoyang",
                            "wuzhou",
                            "zhumadian",
                            "maanshan",
                            "huangshi",
                            "panjin",
                            "pingxiang",
                            "dandong",
                            "lasa",
                            "xinzhou",
                            "bengbu",
                            "jingzhou",
                            "mudanjiang",
                            "heze",
                            "yuncheng",
                            "linfen",
                            "chenzhou",
                            "yichun",
                            "fushun",
                            "huaihua",
                            "benxi",
                            "qiqihaer",
                            "yingkou",
                            "neijiang",
                            "yulin",
                            "suqian",
                            "suihua",
                            "tieling",
                            "zigong",
                            "longyan",
                            "chengde",
                            "guigang",
                            "jiamusi",
                            "quzhou",
                            "changzhi",
                            "datong",
                            "shaoyang",
                            "yibin",
                            "luohe",
                            "puyang",
                            "qingyuan",
                            "putian",
                            "huaibei",
                            "dazhou",
                            "tongliao",
                            "suining",
                            "huludao",
                            "fuxin",
                            "shangrao",
                            "fuzhoushi",
                            "siping",
                            "yiyang",
                            "chizhou",
                            "chuzhou",
                            "tongling",
                            "nanping",
                            "heyuan",
                            "beihai",
                            "yiwu",
                            "chaoyang",
                            "ankang",
                            "yuxi",
                            "qinzhou",
                            "shihezi",
                            "ziyang",
                            "yili",
                            "liangshan",
                            "bayinguoleng",
                            "meishan",
                            "qingyang",
                            "chaozhou",
                            "xuancheng",
                            "bazhong",
                            "honghe",
                            "shunde",
                            "zhoukou",
                            "suzhoushi",
                            "zhangqiu",
                            "songyuan",
                            "yangquan",
                            "kashi",
                            "tianshui",
                            "enshi",
                            "shuyang",
                            "yanan",
                            "guangyuan",
                            "liupanshui",
                            "meizhou",
                            "anshun",
                            "jiuquan",
                            "bayannaoer",
                            "weinan",
                            "shizuishan",
                            "zhangjiajie",
                            "suizhou",
                            "ezhou",
                            "bozhou",
                            "hami",
                            "xianning",
                            "wuhai",
                            "yingtan",
                            "wenshan",
                            "chuxiong",
                            "chaohu",
                            "kelamayi",
                            "xinganmeng",
                            "wuwei",
                            "yanbian",
                            "jixi",
                            "jiyuan",
                            "tonghua",
                            "xinyu",
                            "shuozhou",
                            "wulanchabu",
                            "baiyin",
                            "shanwei",
                            "baicheng",
                            "hegang",
                            "liaoyuan",
                            "zhucheng",
                            "puer",
                            "hulunbeier",
                            "yufu",
                            "aba",
                            "akesu",
                            "ali",
                            "alaer",
                            "alashanm",
                            "baise",
                            "baishan",
                            "boertala",
                            "bijie",
                            "xishuangbanna",
                            "baoshan",
                            "changdu",
                            "changge",
                            "chongzuo",
                            "dafeng",
                            "dehong",
                            "dingzhou",
                            "diqing",
                            "dingxi",
                            "dxanling",
                            "fangchenggang",
                            "ganzi",
                            "gannan",
                            "guantao",
                            "guoluo",
                            "guyuan",
                            "haibei",
                            "haidong",
                            "hainan",
                            "hechi",
                            "heihe",
                            "hexian",
                            "hezhou",
                            "hailaer",
                            "huoqiu",
                            "hetian",
                            "huangnan",
                            "hexi",
                            "jinchang",
                            "jiayuguan",
                            "kenli",
                            "lezilesu",
                            "laibin",
                            "lingcang",
                            "linxia",
                            "linyishi",
                            "linzhi",
                            "longnan",
                            "lvliang",
                            "minggang",
                            "naqu",
                            "nujiang",
                            "pingliang",
                            "zhuanghe",
                            "qiandongnan",
                            "qianjiang",
                            "qingxu",
                            "qiannan",
                            "qitaihe",
                            "qianxinan",
                            "rikeze",
                            "ruian",
                            "sansha",
                            "shangluo",
                            "shannan",
                            "shennongjia",
                            "shuangyashan",
                            "taishan",
                            "tongchuan",
                            "tulufan",
                            "tianmen",
                            "tumushuke",
                            "tongcheng",
                            "tongren",
                            "wafangdian",
                            "wujiaqu",
                            "wuyishan",
                            "wuzhong",
                            "wuzhishan",
                            "xiangxi",
                            "xiantao",
                            "xilinguole",
                            "yaan",
                            "yangchun",
                            "yanling",
                            "yichunshi",
                            "yushu",
                            "yueqing",
                            "yuzhou",
                            "yongxin",
                            "zhengding",
                            "zhangbei",
                            "zhangye",
                            "zhaotong",
                            "weizhong",
                            "zhaoxian",
                            "taicang",
                            "qidong",
                            "longkou",
                            "nananshi",
                            "shishi",
                            "jinjiangshi",
                            "zhuji",
                            "shouguang",
                            "rugao",
                            "haimen",
                            "haianxian",
                            "rudongxian",
                            "wnelingshi",
                            "liyang",
                            "pizhou",
                            "xinyishi",
                            "haining",
                            "tongxiang",
                            "dongyang",
                            "dongtai",
                            "jianhuxian",
                            "danyang",
                            "yangzhong",
                            "taixing",
                            "jingjiang",
                            "xinghuashi",
                            "huidongxian",
                            "boluoxian",
                            "changxingxian",
                            "deqingxian",
                            "yidou",
                            "donghaixian",
                            "yuyao",
                            "cixi",
                            "ningguo",
                            "xiangshanxian",
                            "rituxian",
                            "gaizexian",
                            "wenchang",
                            "wanning",
                            "tunchang",
                            "qh",
                            "lingshui",
                            "dongfang",
                            "tianchang",
                            "da",
                            "cm",
                            "danzhou",
                            "xzpeixian",
                            "jiashanxian",
                            "changshushi",
                            "aletai",
                            "tuscaloosa",
                            "yanjiao",
                            "rongchengshi",
                            "tengzhoushi",
                            "qiananshi",
                            "zoupingxian",
                            "zouchengshi",
                            "shenmuxian",
                            "xintaishi",
                            "guangraoxian",
                            "laizhoushi",
                            "feichengshi",
                            "qingzhoushi",
                            "jintan",
                            "jiangyan",
                            "yongkangshi",
                            "linhaishi",
                            "lingbaoshi",
                            "baoyingxian",
                            "gongzhulingshi",
                            "yuhuanxian",
                            "cangnanxian",
                            "hanchuanshi",
                            "jianyangshi",
                            "ruzhoushi",
                            "siyangxian",
                            "sihongxian",
                            "juxian",
                            "caoxian",
                            "renshouxian",
                            "guanghanshi",
                            "anjixian",
                            "guanyunxian",
                            "danxian",
                            "guannanxian",
                            "changyuanxian",
                            "qixian-584",
                            "lepingshi",
                            "anyuexian",
                            "haifengxian",
                            "zhuozhoushi",
                            "xiangchengshi",
                            "zhaoyuanshi",
                            "gaomishi",
                            "wuanshi",
                            "renqiushi",
                            "huantaixian",
                            "zaoyangshi",
                            "rushanshi",
                            "sanheshi",
                            "renhuaishi",
                            "penglaishi",
                            "lilingshi",
                            "jiangyin",
                            "anxi",
                            "anqiu",
                            "anning",
                            "anda",
                            "bazh",
                            "changning-620",
                            "changyi",
                            "changleshi",
                            "dengzhou",
                            "dangyang",
                            "emeishan",
                            "funing",
                            "fuqing",
                            "fuan",
                            "fengcheng",
                            "fengxian",
                            "fengchengshi",
                            "guan",
                            "huadian",
                            "haiyan",
                            "jurong",
                            "jingshan",
                            "jinxian",
                            "jinhu",
                            "kaili",
                            "kaiping",
                            "luannan",
                            "longmen",
                            "linqu",
                            "linqing",
                            "laohekou",
                            "lankao",
                            "laiyang",
                            "mengjin",
                            "puning",
                            "pingtan",
                            "pinghu",
                            "qingzhen",
                            "qianxi",
                            "qixia",
                            "suiningx",
                            "wugang",
                            "youxian",
                            "xinan",
                            "xianghe",
                            "yutian",
                            "yongchun",
                            "yongcheng",
                            "yongan",
                            "yiyangx",
                            "yixing",
                            "yicheng",
                            "yichuan",
                            "zunhua",
                            "zhongxiang",
                            "zhijiang",
                            "zhaozhou",
                            "zhaodong",
                            "zhangjiagang",
                            "guangshui",
                            "shengzhou",
                            "meihekou",
                            "dengta",
                            "beipiao",
                            "shahe",
                            "huanghua",
                            "hejian",
                            "dunhuang",
                            "geermu",
                            "hancheng",
                            "linzhou",
                            "qinyang",
                            "mengzhou",
                            "anlu",
                            "wuxue",
                            "chibi",
                            "yuanjiang",
                            "zixing",
                            "lengshuijiang",
                            "lianyuan",
                            "jishou",
                            "duyun",
                            "xuanwei",
                            "cengxi",
                            "guiping",
                            "beiliu",
                            "zhangshu",
                            "gaoan",
                            "lufeng",
                            "fuding",
                            "kaiyuan",
                            "xiaoyi",
                            "jiangshan",
                            "songzi",
                            "laoling",
                            "yucheng",
                            "pingyang",
                            "xiangyin",
                            "lixian",
                            "fuliang",
                            "huaxian",
                            "shangshui",
                            "cangxian",
                            "wudi",
                            "pingyi",
                            "gucheng",
                            "xinchang",
                            "xuyuxian",
                            "dazhu",
                            "zhangpu",
                            "changning-961",
                            "boxingxian",
                            "cixian",
                            "dingbianxian",
                            "dongmingxian",
                            "dongpingxian",
                            "fuguxian",
                            "gaotangxian",
                            "guanxian",
                            "hengdongxian",
                            "huarongxian",
                            "jingbianxian",
                            "juyexian",
                            "juanchengxian",
                            "liangshanxian",
                            "linyixian",
                            "luyixian",
                            "nanzhangxian",
                            "ningjinxian",
                            "ningyangxian",
                            "panshishi",
                            "qihexian",
                            "qidongxian",
                            "sheyangxian",
                            "shexian",
                            "xinxian",
                            "shenqiuxian",
                            "taikangxian",
                            "tanchengxian",
                            "weishanxian",
                            "wenshangxian",
                            "wuyi",
                            "xiangshuixian",
                            "xinyexian",
                            "yangguxian",
                            "yinanxian",
                            "yiyuanxian",
                            "yunchengxian",
                            "dawuxian",
                            "fanxian",
                            "gushixian",
                            "guiyangxian",
                            "huaibinxian",
                            "xunxian",
                            "lishuxian",
                            "lijingxian",
                            "liulinxian",
                            "nanchengxian",
                            "qixian-1009",
                            "shagnhangxian",
                            "suixian-1011",
                            "tongxuxian",
                            "weishixian",
                            "wuweixian",
                            "xiangyuanxian",
                            "xiaochangxian",
                            "yongxingxian",
                            "yunmengxian",
                            "bobaixian",
                            "cilixian",
                            "dongzhixian",
                            "fenyixian",
                            "fuyushi",
                            "gaopingshi",
                            "jiayuxian",
                            "mileshi",
                            "mianchixian",
                            "nanxian",
                            "qiyangxian",
                            "quxian",
                            "shayangxian",
                            "shaodongxian",
                            "shehongxian",
                            "shuangfengxian",
                            "suixian-1035",
                            "wenxian",
                            "xuanhanxian",
                            "zezhouxian",
                            "changlingxian",
                            "shaoyangxian",
                            "yujiang",
                            "chiping",
                            "dayawana"
                        ],
                        "type": "string",
                        "description": "City to search (城市).<br><br>Start typing to filter — every city shows both its Chinese name (e.g. <code>北京</code>) and pinyin (e.g. <code>beijing</code>). All <b>677 Anjuke-supported cities</b> are available, from tier-1 (北京 / 上海 / 广州 / 深圳) down to county-level cities (县级市)."
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 10,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "How many listings (房源) to return.<br><br>Prefilled at <b>50</b> for a quick, low-cost first run. Increase after you like the output.<br><br>Need more than 5,000? Split into multiple narrower queries (by district 区, price band 价格段, or room count 户型) — Anjuke's ranking gets noisy deep into the feed.",
                        "default": 100
                    },
                    "location": {
                        "title": "Location / 区域",
                        "type": "string",
                        "description": "Narrow to a specific area (区域).<br><br>Accepts:<br>• <b>District / 区</b> — e.g. <code>海淀</code> (Haidian)<br>• <b>Shangquan / 商圈</b> — e.g. <code>中关村</code><br>• <b>Community / 小区</b> — e.g. <code>万科城</code><br>• <b>Subway line / 地铁线</b> — e.g. <code>10号线</code><br><br>Leave empty for a citywide search."
                    },
                    "schoolDistrict": {
                        "title": "School district / 学区",
                        "type": "string",
                        "description": "School name (学校名) — full or partial, e.g. <code>北师大朝阳附小</code>.<br><br>Returns only listings inside that school's catchment area (学区房)."
                    },
                    "priceMinWan": {
                        "title": "Min price / 最低总价 (万)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Lower price bound / 总价下限 in <b>万</b> (1 万 = 10,000 RMB).<br><br>Example: <code>300</code> = ¥3,000,000. Leave empty for no minimum."
                    },
                    "priceMaxWan": {
                        "title": "Max price / 最高总价 (万)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Upper price bound / 总价上限 in <b>万</b>.<br><br>Example: <code>800</code> = ¥8,000,000. Leave empty for unbounded."
                    },
                    "rooms": {
                        "title": "Rooms / 户型",
                        "type": "array",
                        "description": "Number of bedrooms (卧室数). Select one or more — OR'd together.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1BR",
                                "2BR",
                                "3BR",
                                "4BR",
                                "5BR",
                                "5BR+"
                            ],
                            "enumTitles": [
                                "1 bedroom (一室)",
                                "2 bedrooms (两室)",
                                "3 bedrooms (三室)",
                                "4 bedrooms (四室)",
                                "5 bedrooms (五室)",
                                "5+ bedrooms (五室以上)"
                            ]
                        }
                    },
                    "areaMinM2": {
                        "title": "Min area / 最小面积 (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Lower bound / 建筑面积下限 in square meters. Leave empty for no minimum."
                    },
                    "areaMaxM2": {
                        "title": "Max area / 最大面积 (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Upper bound / 建筑面积上限 in square meters. Leave empty for no maximum."
                    },
                    "propertyType": {
                        "title": "Property type / 房屋类型",
                        "enum": [
                            "any",
                            "apartment",
                            "mixedUse",
                            "affordable",
                            "public",
                            "other"
                        ],
                        "type": "string",
                        "description": "Filter by property classification (房屋类型). Leave as <b>Any / 不限</b> to include all types.",
                        "default": "any"
                    },
                    "keyword": {
                        "title": "Keyword / 关键词",
                        "type": "string",
                        "description": "Free-text search across title and description (关键词搜索).<br><br>Examples:<br>• <code>地铁</code> — near subway<br>• <code>学区房</code> — school district<br>• <code>满五唯一</code> — 5+ years, sole property (tax-friendly)<br>• <code>电梯</code> — has elevator"
                    },
                    "yearBuiltMin": {
                        "title": "Year built min / 最早建成年代",
                        "minimum": 1950,
                        "maximum": 2030,
                        "type": "integer",
                        "description": "Earliest community completion year / 建成年代下限. Leave empty for no lower bound."
                    },
                    "yearBuiltMax": {
                        "title": "Year built max / 最晚建成年代",
                        "minimum": 1950,
                        "maximum": 2030,
                        "type": "integer",
                        "description": "Latest community completion year / 建成年代上限. Leave empty for no upper bound."
                    },
                    "sortBy": {
                        "title": "Sort by / 排序",
                        "enum": [
                            "default",
                            "priceAsc",
                            "priceDesc",
                            "areaDesc",
                            "unitPriceAsc",
                            "unitPriceDesc"
                        ],
                        "type": "string",
                        "description": "How to order search results / 排序方式 before enrichment.<br><br><b>Default / 默认</b> uses Anjuke's internal ranking (mix of recency, relevance, and featured listings).",
                        "default": "default"
                    },
                    "orientation": {
                        "title": "Orientation / 朝向",
                        "type": "array",
                        "description": "Building orientation (朝向) — south-facing (南向) units get the best light in the northern hemisphere. Select one or more.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "south",
                                "north",
                                "east",
                                "west",
                                "southEast",
                                "southWest",
                                "northEast",
                                "northWest"
                            ],
                            "enumTitles": [
                                "South (南)",
                                "North (北)",
                                "East (东)",
                                "West (西)",
                                "Southeast (东南)",
                                "Southwest (西南)",
                                "Northeast (东北)",
                                "Northwest (西北)"
                            ]
                        }
                    },
                    "fitment": {
                        "title": "Fitment / 装修",
                        "type": "array",
                        "description": "Interior finish level (装修状况). Most resale units are <b>简装</b> or <b>精装</b>.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "rough",
                                "simple",
                                "goodDecoration",
                                "luxury"
                            ],
                            "enumTitles": [
                                "Rough / unfinished (毛坯)",
                                "Simple decoration (简装)",
                                "Good decoration (精装)",
                                "Luxury (豪装)"
                            ]
                        }
                    },
                    "features": {
                        "title": "Features / 特色",
                        "type": "array",
                        "description": "Amenity and listing flags (特色标签). Combine for multi-filter matches.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "elevator",
                                "nearSubway",
                                "vrTour",
                                "videoTour",
                                "hotListing",
                                "urgentSale",
                                "storePick",
                                "txGuaranteed"
                            ],
                            "enumTitles": [
                                "Has elevator (有电梯)",
                                "Near subway (近地铁)",
                                "VR tour (VR带看)",
                                "Video tour (视频探房)",
                                "Hot listing (人气好房)",
                                "Urgent sale (房东急售)",
                                "Store manager's pick (店长推荐)",
                                "Transaction guaranteed (交易保障)"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
