# Juwai Property Scraper — Overseas Listings for Chinese Buyers (`ocrad/juwai-property-scraper`) Actor

Scrape Juwai.com (居外网) overseas property listings from any country or filter URL: price in CNY and local currency, type, bedrooms, areas, address, coordinates, photos, description, agent and agency. Export JSON/CSV/Excel.

- **URL**: https://apify.com/ocrad/juwai-property-scraper.md
- **Developed by:** [Ocrad](https://apify.com/ocrad) (community)
- **Categories:** Real estate, Lead generation, Agents
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### Juwai Property Scraper

***

Overseas Listings for Chinese Buyers. Juwai.com (居外网) is the largest Chinese-language portal for international property, listing homes for sale and rent in more than 120 countries for buyers in mainland China. Give the actor any Juwai listing page - a country section such as `https://www.juwai.com/usproperty/`, the same page with filters in the path, or a showcase section (`/projects/`, `/commercial/`, `/luxe/`) - and get structured records from the result cards: Juwai ID, title, listing type, property type, state and city, bedrooms, bathrooms, building and land area, price in CNY and in the local currency, badges and the cover photo. Turn on `detailedInfo` to also visit each listing page for the street address, bilingual country / state / city names, total rooms, garages, floors, property age, view, facing, decoration, full description, all photos, floor plans, coordinates, agent and agency.

Twenty listings per page; Juwai serves up to 500 pages (10,000 listings) per search. Text fields are in Chinese as published; country names (`countryEn`) and, on detail pages, state and city names (`stateEn`, `cityEn`) are also given in English.

***

#### **📋 Example Output**

Record from a run with `detailedInfo: true` on `https://www.juwai.com/usproperty/r-126/` (California). Without `detailedInfo` the detail-only fields (`address`, `stateEn`, `cityEn`, `roomsTotal`, `garages`, `floors`, `propertyAgeYears`, `view`, `facing`, `decoration`, `description`, `amenities`, `latitude`, `longitude`, `floorPlans`, `agentName`, `agencyName`, `agentLanguages`) are `null` and `images` holds the cover photo only:

```json
{
  "id": "78587560",
  "url": "https://www.juwai.com/78587560.htm",
  "title": "美国加州长滩5卧6卫最近整修过的豪宅",
  "listingType": "sale",
  "propertyType": "独栋别墅",
  "country": "美国",
  "countryEn": "United States",
  "state": "加州",
  "stateEn": "California",
  "city": "长滩",
  "cityEn": "Long Beach",
  "address": "6601 E Seaside Walk, Long Beach, California, United States",
  "bedrooms": 5,
  "bathrooms": 6,
  "roomsTotal": 11,
  "garages": 2,
  "floors": 2,
  "buildingAreaSqm": 343,
  "landAreaSqm": 365,
  "priceCny": 33240000,
  "priceLocal": 4990000,
  "currency": "USD",
  "priceText": "USD 4,990,000 约¥ 3,324万",
  "rentPeriod": null,
  "isNew": false,
  "isFeatured": true,
  "propertyAgeYears": 64,
  "view": "沙滩景观",
  "facing": null,
  "decoration": "最近整修过",
  "description": "位于美国加州长滩的房产。 服务代表：Oscar Diaz（奥斯卡·迪亚兹） | +1213-999-2124 | Oscar.Diaz@marcusmillichap.com 东滨海步道6601号（6601 E Seaside Walk ） | 加州长滩半岛社区 海景复式住宅 | 全新翻修 | 空房交付 Marcus & Millichap公司很荣幸能向您推介东滨海步道6601号！这处3,686平方英尺的海滨房产坐落于长滩半岛社区黄金地 …",
  "amenities": null,
  "latitude": 33.7466852,
  "longitude": -118.1208374,
  "images": [
    "https://simages1.juwaistatic.com/auto/1440x960/store-aa/4e0678f55d4faf4af422753a1992cb6d.jpg",
    "https://simages3.juwaistatic.com/auto/1440x960/store-aa/2b50db008f994c3424610f60a27b61a9.jpg",
    "… 22 photos in total"
  ],
  "floorPlans": null,
  "agentName": "Rick Raymundo",
  "agencyName": "Marcus Millichap",
  "agentLanguages": null,
  "scrapedAt": "2026-10-30T19:59:28.383Z"
}
```

`priceCny` is Juwai's own conversion of the local price into yuan (`¥3,324万` = 33,240,000). Rentals carry `listingType: "rent"`, a `rentPeriod` (usually `month`) and prices per period. Showcase cards from `/projects/`, `/commercial/` and `/luxe/` have `listingType: "project"` and a starting price in CNY. Coordinates are published on roughly two thirds of listings; `amenities` is rarely filled by advertisers.

#### ⚙️ **Configuration**

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `url` | String | *(required)* | Any Juwai.com listing page: a country section (`https://www.juwai.com/usproperty/`, `/auproperty/`, `/sgproperty/` …), the same with filters in the path (`https://www.juwai.com/usproperty/r-126_ty-3/` = California rentals), or `/projects/`, `/commercial/`, `/luxe/`. |
| `maxPages` | Integer | `1` | Result pages to scrape, 20 listings each, up to 500. Showcase sections have a single page. |
| `detailedInfo` | Boolean | `false` | Visit each listing page for address, bilingual location, rooms, garages, floors, age, view, description, all photos, floor plans, coordinates, agent and agency. One extra request per listing. |
| `proxyConfiguration` | Object | Apify Proxy (auto) | Proxy settings; switch to RESIDENTIAL only if results are empty. |

##### Example Input

```json
{
  "url": "https://www.juwai.com/usproperty/r-126_ty-3/",
  "maxPages": 5,
  "detailedInfo": true
}
```

##### Getting your start URL

1. Open juwai.com and pick a country from the top menu (e.g. 美国房产 → `https://www.juwai.com/usproperty/`)
2. Narrow the search with the filters on the left (state or city, 在售 / 出租, property type, price, bedrooms, area …); each filter becomes a segment in the URL path such as `r-126` (California) or `ty-3` (rentals)
3. Copy the full URL from your browser address bar and paste it as the `url` input

***

#### 💬 **Support and Feedback**

Reach out via Apify support channels or leave feedback on the Actor's page.

#### **Is it legal to scrape Juwai data?**

It is legal to scrape publicly available data such as listing titles, prices, locations, sizes and descriptions. Results may contain personal data (names of listing agents); scrape personal data only with a legitimate reason. Personal data is protected by China's PIPL, the GDPR and other regulations - consult your legal advisor if unsure.

# Actor input Schema

## `url` (type: `string`):

Any Juwai.com listing page: a country section (https://www.juwai.com/usproperty/, /auproperty/, /sgproperty/ …), the same with filters in the path (https://www.juwai.com/usproperty/r-126_ty-3/ = California rentals), or a showcase section (/projects/, /commercial/, /luxe/).

## `maxPages` (type: `integer`):

How many result pages to scrape (20 listings each; Juwai serves at most 500 pages = 10,000 listings per search). Showcase sections have a single page.

## `detailedInfo` (type: `boolean`):

Visit each listing page for the full address, bilingual country/state/city, total rooms, garages, floors, age, view, facing, description, amenities, all photos, floor plans, coordinates, agent and agency. One extra request per listing.

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

Proxy settings. Defaults to Apify Proxy (auto). Switch to a RESIDENTIAL group if you see blocks or empty results.

## Actor input object example

```json
{
  "url": "https://www.juwai.com/usproperty/",
  "maxPages": 1,
  "detailedInfo": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `id` (type: `string`):

Juwai listing ID

## `url` (type: `string`):

Listing page URL

## `title` (type: `string`):

Listing title (Chinese)

## `listingType` (type: `string`):

sale, rent, auction or project

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

Property type (Chinese, e.g. 独栋别墅 = detached house)

## `country` (type: `string`):

Country (Chinese)

## `countryEn` (type: `string`):

Country (English)

## `state` (type: `string`):

State / province / region (Chinese)

## `stateEn` (type: `string`):

State / province (English, detail pages)

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

City (as shown)

## `cityEn` (type: `string`):

City (English, detail pages)

## `address` (type: `string`):

Street address (detail pages)

## `bedrooms` (type: `string`):

Bedrooms

## `bathrooms` (type: `string`):

Bathrooms

## `roomsTotal` (type: `string`):

Total rooms (detail pages)

## `garages` (type: `string`):

Garages / parking spaces

## `floors` (type: `string`):

Number of floors

## `buildingAreaSqm` (type: `string`):

Building / interior area in square metres

## `landAreaSqm` (type: `string`):

Land area in square metres

## `priceCny` (type: `string`):

Price in Chinese yuan as a number (Juwai's conversion)

## `priceLocal` (type: `string`):

Price in the local currency as a number

## `currency` (type: `string`):

Local currency code, e.g. USD

## `priceText` (type: `string`):

Price as displayed

## `rentPeriod` (type: `string`):

Rent period for rentals (month, week, year, day)

## `isNew` (type: `string`):

New listing badge

## `isFeatured` (type: `string`):

Featured / paid listing

## `propertyAgeYears` (type: `string`):

Property age in years (detail pages)

## `view` (type: `string`):

View (detail pages)

## `facing` (type: `string`):

Facing / orientation (detail pages)

## `decoration` (type: `string`):

Decoration style (detail pages)

## `description` (type: `string`):

Full description (detail pages)

## `amenities` (type: `string`):

Amenities list (detail pages)

## `latitude` (type: `string`):

Latitude when published

## `longitude` (type: `string`):

Longitude when published

## `images` (type: `string`):

Photo URLs (1440px)

## `floorPlans` (type: `string`):

Floor plan image URLs

## `agentName` (type: `string`):

Agent name (detail pages)

## `agencyName` (type: `string`):

Agency name (detail pages)

## `agentLanguages` (type: `string`):

Languages the agent supports

## `scrapedAt` (type: `string`):

Scrape timestamp (ISO 8601)

# 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 = {
    "url": "https://www.juwai.com/usproperty/",
    "maxPages": 1,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ocrad/juwai-property-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 = {
    "url": "https://www.juwai.com/usproperty/",
    "maxPages": 1,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("ocrad/juwai-property-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 '{
  "url": "https://www.juwai.com/usproperty/",
  "maxPages": 1,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call ocrad/juwai-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ocrad/juwai-property-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/JbJYQ3aTrt5lHgolM/builds/ylebTgdhdEEExPdHC/openapi.json
