# 58.com Scraper: Extract China Real Estate (`getascraper/58-classifieds-scraper`) Actor

Scrape China's largest classifieds marketplace on 58.com. Extract property sale and rental listings with fully decrypted prices, area sizes, and community details directly to Excel or JSON. Safe residential proxy bypass. Only $1.99 per 1,000 results.

- **URL**: https://apify.com/getascraper/58-classifieds-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Real estate, Lead generation, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.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.

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

## 58.com Scraper: Extract China Real Estate

**Get live Chinese real estate listings (including fully decrypted prices, area sizes, and compound details) ready for your spreadsheet in under 60 seconds.** Get property titles, standardized CNY prices, prefecture locations, room layouts, and direct landlord contact details for any city subdomain across China.

---

### What can you do with it?

*   **I am an international property investor** monitoring and comparing second-hand compound prices in Beijing and Shanghai to discover undervalued investment apartments.
*   **I am a market researcher** tracking average rental prices per square meter across major Chinese tech hubs (like Shenzhen, Guangzhou, and Hangzhou) to analyze residential migration trends.
*   **I am a corporate lead generator** sourcing direct owner listings and landlord contact details, bypassing broker intermediation fees.

---

### How to use it

#### Store Quick Start
1. Create a free Apify account.
2. Open the **58.com Scraper** in the Apify Store.
3. Select your target city (e.g., Beijing / 北京, Shanghai / 上海) and category (For-Sale or Rentals).
4. Enter an optional keyword (e.g., district name, compound name, or subway).
5. Click **Start** and download the dataset as JSON, CSV, or Excel.

#### API Quick Start
For developers, you can trigger a run programmatically with a single request:

```bash
curl --request POST \
  --url "https://api.apify.com/v2/acts/getascraper~58-classifieds-scraper/runs?token=YOUR_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
    "city": "bj",
    "category": "ershoufang",
    "keyword": "望京",
    "maxItems": 100
  }'
````

***

### Input

| Field | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `city` | `string` | `bj` | Target city subdomain (Beijing `bj`, Shanghai `sh`, Shenzhen `sz`, Guangzhou `gz`). |
| `category` | `string` | `ershoufang` | Vertical category: `ershoufang` (For-Sale / 二手房) or `chuzu` (Rentals / 租房). |
| `keyword` | `string` | `""` | Optional keyword in Chinese (e.g., compound name `望京`, layout `南北通透`). |
| `maxItems` | `integer` | `100` | Maximum number of classified listings to extract. |
| `onlyLandlord` | `boolean` | `false` | If enabled, automatically filter out real estate brokers and list direct owners only. |
| `decryptNumbers` | `boolean` | `true` | Automatically download and decode Ozon/58's dynamic `.woff` obfuscated web fonts in real-time. |
| `solveCaptcha` | `boolean` | `true` | Solve sliding CAPTCHAs locally using template-matching curves (no paid solvers required). |
| `proxyConfiguration` | `object` | `{"useApifyProxy": true}` | Premium rotating residential proxies are highly recommended to bypass geoblocking checks. |

***

### Output

Each row represents a single property advertisement from 58.com.

```json
{
  "id": "578414171",
  "url": "https://bj.58.com/ershoufang/578414171x.shtml",
  "title": "望京西园 经典三居室 南北通透",
  "description": "房源真实有效，户型方正，南北通透，采光好，看房方便...",
  "price": 4800000,
  "priceRaw": "480万",
  "currency": "CNY",
  "city": "北京",
  "district": "朝阳",
  "neighborhood": "望京",
  "compoundName": "望京西园",
  "layout": "3室2厅1卫",
  "area": 96.38,
  "areaRaw": "96.38㎡",
  "sellerType": "PRIVATE",
  "sellerName": "张先生",
  "scrapedAt": "2026-06-10T13:00:00.000Z"
}
```

#### Field Reference

| Field | Type | Description |
| :--- | :--- | :--- |
| `id` | `string` | Unique identifier of the property ad. |
| `url` | `string` | Canonical direct property link. |
| `title` | `string` | Title of the listing. |
| `price` | `number` | Standardized price value in Yuan (CNY) or Monthly Rent. |
| `priceRaw` | `string` | Raw price string as displayed (e.g., `480万` or `3200元/月`). |
| `compoundName` | `string` | Name of the residential compound or community. |
| `layout` | `string` | Apartment room layout configuration (e.g. `3室2厅`). |
| `area` | `number` | Standardized floor area size in square meters. |
| `sellerType` | `string` | Type of seller (PRIVATE landlord or PROFESSIONAL agency). |
| `sellerName` | `string` | Name of the seller or listing broker. |

***

### Pricing & Cost

Pricing is pay-per-result and is billed per row successfully saved to your dataset. Empty runs cost absolutely nothing.

- **Rate:** **$1.99 per 1,000 results** ($0.00199 per result).
- **100 listings** typically cost **$0.20**.
- **1,000 listings** cost exactly **$1.99**.
- **10,000 listings** cost exactly **$19.90**.
- No fixed monthly subscriptions or hidden maintenance fees.

***

### Tips & Best Practices

- **Decrypted Price & Area Values.** 58.com obfuscates numbers using dynamic, custom-generated web fonts on every page load. The Actor automatically parses the page styles, downloads the `.woff` font file, and decodes the Unicode glyphs back to correct, readable digits in real-time.
- **Local Sliding-CAPTCHA Solver.** When 58.com serves a sliding puzzle verification, the Actor automatically triggers a native curve-matching algorithm to resolve the slide locally, requiring zero paid CAPTCHA solvers.
- **Bypass Chinese Geoblocks.** 58.com applies aggressive geoblocks to traffic originating outside mainland China. Ensure `proxyConfiguration` is set to use premium rotating residential proxies to guarantee unblocked execution.

***

### FAQ

##### Does it get blocked by 58.com?

No. The scraper natively routes through premium, rotating Residential Proxies. This makes the automated browser traffic look identical to regular domestic Chinese residential users, bypassing firewall checks cleanly.

##### Does it extract private phone numbers?

No. 58.com strictly protects landlord and broker phone numbers behind dynamic click-walls and SMS verification. To avoid verification blocks, the scraper retrieves full seller names, compound names, and listing details instead of phone numbers.

##### How fresh is the data?

Extremely fresh. The scraper executes live browser rendering on every query, retrieving the absolute latest properties posted on the 58.com marketplace in real-time.

##### Are all categories supported?

Yes. The scraper supports both major real estate categories: `ershoufang` (For-Sale / 二手房) and `chuzu` (Rentals / 租房).

***

### Target SEO Keywords

- 58.com API
- scrape 58.com
- China real estate scraper
- Chinese property data
- Beijing rental scraper
- Shanghai second-hand home data

***

### Disclaimers & Support

- **Disclaimer:** This Actor retrieves publicly available classified property listings on 58.com. Make sure your usage complies with 58.com's terms of service and applicable laws.
- **Support:** Open an issue from the Actor page in the Apify Console for bug reports or feature requests.

# Actor input Schema

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

Select the target city.

## `category` (type: `string`):

Select the vertical category to scrape.

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

Optional keyword to search for specific districts, compound names, or subways.

## `onlyLandlord` (type: `boolean`):

If enabled, we automatically filter out brokers and agencies to extract landlord-listed properties only.

## `decryptNumbers` (type: `boolean`):

If enabled, decodes obfuscated numeric prices and area sizes.

## `solveCaptcha` (type: `boolean`):

If enabled, automatically solves sliding puzzle checks locally with template matching.

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

The maximum number of listings to extract.

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

Proxy settings. Premium rotating residential proxies are recommended.

## Actor input object example

```json
{
  "city": "bj",
  "category": "ershoufang",
  "keyword": "望京",
  "onlyLandlord": false,
  "decryptNumbers": true,
  "solveCaptcha": true,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `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 = {
    "city": "bj",
    "category": "ershoufang",
    "keyword": "望京",
    "onlyLandlord": false,
    "decryptNumbers": true,
    "solveCaptcha": true,
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/58-classifieds-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": "bj",
    "category": "ershoufang",
    "keyword": "望京",
    "onlyLandlord": False,
    "decryptNumbers": True,
    "solveCaptcha": True,
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/58-classifieds-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": "bj",
  "category": "ershoufang",
  "keyword": "望京",
  "onlyLandlord": false,
  "decryptNumbers": true,
  "solveCaptcha": true,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call getascraper/58-classifieds-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=getascraper/58-classifieds-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "58.com Scraper: Extract China Real Estate",
        "description": "Scrape China's largest classifieds marketplace on 58.com. Extract property sale and rental listings with fully decrypted prices, area sizes, and community details directly to Excel or JSON. Safe residential proxy bypass. Only $1.99 per 1,000 results.",
        "version": "0.1",
        "x-build-id": "vhyndEVrILlrKe1yL"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/getascraper~58-classifieds-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-getascraper-58-classifieds-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/getascraper~58-classifieds-scraper/runs": {
            "post": {
                "operationId": "runs-sync-getascraper-58-classifieds-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/getascraper~58-classifieds-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-getascraper-58-classifieds-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",
                    "category"
                ],
                "properties": {
                    "city": {
                        "title": "City",
                        "enum": [
                            "bj",
                            "sh",
                            "sz",
                            "gz",
                            "hz",
                            "cd",
                            "wh",
                            "nj",
                            "xa",
                            "su",
                            "cq",
                            "tj",
                            "cs"
                        ],
                        "type": "string",
                        "description": "Select the target city.",
                        "default": "bj"
                    },
                    "category": {
                        "title": "Classified Category",
                        "enum": [
                            "ershoufang",
                            "chuzu"
                        ],
                        "type": "string",
                        "description": "Select the vertical category to scrape.",
                        "default": "ershoufang"
                    },
                    "keyword": {
                        "title": "Search Keyword",
                        "type": "string",
                        "description": "Optional keyword to search for specific districts, compound names, or subways.",
                        "default": "望京"
                    },
                    "onlyLandlord": {
                        "title": "Exclude Real Estate Brokers (Direct Sourcing)",
                        "type": "boolean",
                        "description": "If enabled, we automatically filter out brokers and agencies to extract landlord-listed properties only.",
                        "default": false
                    },
                    "decryptNumbers": {
                        "title": "Decode Obfuscated Web Fonts",
                        "type": "boolean",
                        "description": "If enabled, decodes obfuscated numeric prices and area sizes.",
                        "default": true
                    },
                    "solveCaptcha": {
                        "title": "Local Slide-CAPTCHA Solver",
                        "type": "boolean",
                        "description": "If enabled, automatically solves sliding puzzle checks locally with template matching.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Max Listings",
                        "minimum": 1,
                        "type": "integer",
                        "description": "The maximum number of listings to extract.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. Premium rotating residential proxies are recommended.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
