# China House Price Index: 70 Cities Monthly (NBS) (`sinodata/china-house-price-index`) Actor

Official China house price indexes for 70 cities from the National Bureau of Statistics (国家统计局), no login: new and second-hand homes, month on month, year on year, by home size. Monthly since 2022, with English city names and tiers.

- **URL**: https://apify.com/sinodata/china-house-price-index.md
- **Developed by:** [SinoData](https://apify.com/sinodata) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 1,000 city-months

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

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## China House Price Index: 70 Cities Monthly (NBS)

Get the **official China house price indexes for 70 cities**, straight from the monthly releases of the **National Bureau of Statistics of China (国家统计局)**, as clean JSON. No login, no Excel wrangling, no Chinese needed.

- **70 cities**: Beijing, Shanghai, Guangzhou, Shenzhen and 66 more, with English names and city tiers (1, 2, 3)
- **New homes (新建商品住宅) and second-hand homes (二手住宅)**
- **Month on month, year on year and year-to-date** indexes, plus ready-made % changes
- **By home size**: under 90 m², 90-144 m², over 144 m²
- **History**: every monthly release on the NBS site, back to about 2022

### Use cases

- **Macro and real-estate research**: track China's property market city by city, every month.
- **Investors and banks**: China property developers, mortgage and construction exposure; tier-1 vs tier-3 divergence.
- **Dashboards**: schedule a monthly run (releases come out around the 15th) and push the results to Google Sheets, BigQuery or your BI tool.
- **Journalism and academia**: clean, sourced time series with a link to the official release.

### Example input

```json
{
  "monthFrom": "2025-01",
  "cities": ["Beijing", "Shanghai", "Shenzhen", "Guangzhou"],
  "housingTypes": ["newHome", "secondHand"]
}
```

Leave everything empty to get the latest month for all 70 cities (140 records).

### Output

One record per city, month and housing type:

```json
{
  "type": "cityHousePrice",
  "month": "2026-08",
  "city": "北京",
  "cityEnglish": "Beijing",
  "cityTier": 1,
  "housingType": "newHome",
  "momIndex": 99.8,
  "yoyIndex": 97.7,
  "ytdAvgIndex": 97.8,
  "momChangePct": -0.2,
  "yoyChangePct": -2.3,
  "under90sqm": { "mom": 99.7, "yoy": 96.7, "ytdAvg": 96.7 },
  "from90to144sqm": { "mom": 99.7, "yoy": 96.8, "ytdAvg": 96.9 },
  "over144sqm": { "mom": 99.9, "yoy": 99.2, "ytdAvg": 99.1 },
  "sourceUrl": "https://www.stats.gov.cn/sj/zxfb/202609/t20260915_1965304.html",
  "releaseTitle": "2026年8月份70个大中城市商品住宅销售价格变动情况"
}
```

- Indexes follow the NBS convention: **previous period = 100**. `momIndex` 99.8 means prices fell 0.2% from the previous month; `momChangePct` gives that directly.
- `ytdAvgIndex` compares the average from January to this month with the same period last year. January releases have no separate year-to-date figure, so it is null for January.
- `cityTier`: 1 = Beijing, Shanghai, Guangzhou, Shenzhen; 2 = the other 31 large cities; 3 = the 35 medium-sized cities.

### Pricing

**$0.001 per city record.** The latest month for all cities (140 records) costs $0.14; four years of history for all cities costs about $7.

### Notes and limits

- These are official price **indexes**, not prices per m². NBS does not publish prices per m² for these cities.
- A month is published around the 15th of the following month. A month that isn't out yet is skipped and reported in the log.
- Data is parsed from the official release pages and every record links to its source.

### Related

- [China Car Price Cuts](https://apify.com/sinodata/china-car-price-cuts) and [China Car Sales](https://apify.com/sinodata/china-car-sales): China's car market by city and by month.

### Feedback

Need another NBS series (CPI, PMI, retail sales, property investment)? Open an issue on the Issues tab.

# Actor input Schema

## `latestMonths` (type: `integer`):

How many of the most recent monthly releases to fetch. Used when no months or month range are given.

## `months` (type: `array`):

Months to fetch, as YYYY-MM (e.g. 2026-08). Releases are available from about 2022.

## `monthFrom` (type: `string`):

Start of a month range, YYYY-MM. Combine with "To month" (default: the latest release).

## `monthTo` (type: `string`):

End of the month range, YYYY-MM.

## `cities` (type: `array`):

Only these cities (Chinese or English names, e.g. 上海 or Shanghai). Leave empty for all 70.

## `housingTypes` (type: `array`):

New homes (新建商品住宅) and/or second-hand homes (二手住宅).

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

Not needed for normal use.

## Actor input object example

```json
{
  "latestMonths": 1,
  "housingTypes": [
    "newHome",
    "secondHand"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `results` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("sinodata/china-house-price-index").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("sinodata/china-house-price-index").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 '{}' |
apify call sinodata/china-house-price-index --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sinodata/china-house-price-index"
        }
    }
}
```

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/jPAxJpROasm45SRtX/builds/73YNXxTX01YN8UNbJ/openapi.json
