# Beike & Lianjia Property Scraper — China Real Estate (`sian.agency/beike-property-scraper`) Actor

Scrape Beike & Lianjia (贝壳找房 / 链家) into clean datasets — China resale-housing listings by city, deep listing details (floor, area, year, decoration, agent), and community market data (avg price/㎡, on-sale counts, geo). Three operations, one actor. No account or API key.

- **URL**: https://apify.com/sian.agency/beike-property-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: 1.00 out of 5 stars

## Pricing

from $2.50 / 1,000 resale housing list results

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

## Beike & Lianjia Property Scraper — China Real Estate Data 🏘️

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Bayut Scraper](https://img.shields.io/badge/Store-Bayut%20Dubai%20Real%20Estate-93D500)](https://apify.com/sian.agency/bayut-property-scraper?fpr=sian) [![Taobao Scraper](https://img.shields.io/badge/Store-Taobao%20%26%20Tmall-FF4F00)](https://apify.com/sian.agency/taobao-tmall-product-scraper?fpr=sian) [![Realtor Scraper](https://img.shields.io/badge/Store-Realtor.com-D92228)](https://apify.com/sian.agency/realtor-property-scraper?fpr=sian)

#### 🎉 The only scraper on Apify for Beike & Lianjia (贝壳找房 / 链家) — China's #1 real-estate platform
##### City listings, deep listing details, and neighborhood market data (avg price/㎡, on-sale counts, geo) — clean datasets, no account, no API key.

---

### 📋 Overview

**Need structured data from China's largest real-estate platform?** Beike & Lianjia Property Scraper pulls resale-housing listings, deep per-property details, and community-level market data into clean datasets — built for China property researchers, real-estate analysts, proptech builders, and cross-border investors.

**Why professionals choose us:**
- ✅ **Only Beike/Lianjia scraper on Apify**: Zero competition for China's #1 real-estate platform (贝壳找房 / 链家, KE Holdings).
- ⚡ **Three scrapers in one**: City listings, deep listing detail, and community market data — pick one per run.
- 🎯 **Community comps no one else exposes**: Average price/㎡, on-sale listing counts, build year, and geo coordinates per neighborhood.
- 💰 **Pay only for successful rows**: Transparent per-result pricing, generous free tier, no credit card to test.
- 💎 **Real public listing URLs**: Every detail row links straight to the live `m.ke.com` listing page — verifiable and shareable.
- ✨ **No account, no API key**: Clean camelCase datasets out of the box, export to JSON / CSV / Excel.

---

### ✨ Features

- 🏘️ **Resale Housing List**: Scrape any Chinese city's resale-housing listings — total price, price/㎡, community, cover image, and tags (20 rows per page).
- 🏠 **Resale Housing Detail**: Deep per-listing extraction — floor, area, bedrooms, orientation, year built, decoration, elevator, usage, ownership, and the listing agent.
- 📍 **Community List**: Neighborhood-level market data — average unit price, on-sale listing count, building type, build year, and latitude/longitude.
- 🌏 **12 major cities built in**: Beijing, Shanghai, Guangzhou, Shenzhen, Hangzhou, Chengdu, and more — or type any Beike city ID.
- 🔗 **Live listing URLs**: Each row carries the public `m.ke.com` link.
- 🧹 **Clean structured output**: Curated camelCase fields with the raw upstream data spread alongside.
- 📄 **Built-in pagination**: Set max pages; the scraper walks the result set automatically.
- 📊 **HTML run report**: Every run saves a summary report with row counts, success rate, and duration.

---

### 🎬 Quick Start

Pick an operation, choose a city, and run. Start with **Resale Housing List** to pull a city's listings, then drill into any `houseCode` with **Resale Housing Detail**.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~beike-property-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"operation": "resaleHousingList", "cityId": "110000", "maxPages": 2}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose your operation

Pick `resaleHousingList`, `resaleHousingDetail`, or `communityList`.

#### Step 2: Set the city

Select a city from the dropdown (e.g. Beijing 110000, Shanghai 310000) or type any Beike city ID. For Resale Housing Detail, also paste a `houseCode`.

#### Step 3: Run

Hit **Start** and collect your dataset. Export to JSON, CSV, or Excel.

**That's it! In under a minute, you'll have:**

- A clean dataset of China resale-housing listings or communities
- Total price, price/㎡, area, and community for every row
- Live public listing URLs you can open or share

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| operation | string | Yes | `resaleHousingList`, `resaleHousingDetail`, or `communityList` |
| cityId | string | Yes | City to scrape — pick from the list or type any Beike city ID (e.g. `110000` Beijing) |
| houseCode | string | For Detail | Listing ID (from any list row's `houseCode`) |
| condition | string | No | Advanced raw filter string (region / price band / layout) |
| maxPages | integer | No | Max pages for paginated operations (20 rows/page). Default 5, range 1–50 |

**Example — list listings:**

```json
{
  "operation": "resaleHousingList",
  "cityId": "310000",
  "maxPages": 3
}
```

**Example — deep listing detail:**

```json
{
  "operation": "resaleHousingDetail",
  "cityId": "110000",
  "houseCode": "101137699747"
}
```

**Example — community market data:**

```json
{
  "operation": "communityList",
  "cityId": "110000",
  "maxPages": 5
}
```

***

### 📤 Output

Results are saved to the Apify dataset with **40+ fields** including:

| Field | Type | Description |
|-------|------|-------------|
| houseCode | string | Beike listing ID |
| listingTitle | string | Listing title |
| communityName | string | Community / neighborhood name |
| price | number | Total price (CNY) |
| unitPrice | number | Price per ㎡ (CNY) |
| area | number | Floor area (㎡) |
| bedroomNum | number | Bedrooms |
| orientation | string | Orientation (e.g. 西南) |
| yearBuilt | string | Year built |
| decoration | string | Decoration level |
| ownership | string | Ownership type |
| agentName | string | Listing agent |
| avgUnitPrice | number | Community average price/㎡ (Community List) |
| onSaleCount | number | Listings on sale in community |
| lat / lng | number | Community geo coordinates |
| listingUrl | string | Public `m.ke.com` listing URL |

**Example row (Resale Housing Detail):**

```json
{
  "_operation": "resaleHousingDetail",
  "houseCode": "101137699747",
  "listingTitle": "凯旋城 3室1厅 西南",
  "communityName": "凯旋城",
  "price": 11200000,
  "unitPrice": 77498,
  "area": 144.52,
  "bedroomNum": 3,
  "hallNum": 1,
  "orientation": "西南",
  "floorState": "中楼层/23层",
  "yearBuilt": "2004年建成",
  "decoration": "精装",
  "elevator": "有",
  "ownership": "商品房",
  "agentName": "申怀倩",
  "listingUrl": "https://m.ke.com/bj/ershoufang/101137699747.html",
  "currency": "CNY",
  "status": "success"
}
```

***

### 💼 Use Cases & Examples

#### 1. China Property Market Research

**For analysts mapping China's housing markets.**

**Input:** Resale Housing List + Community List for a target city.
**Output:** Listing prices, price/㎡, and neighborhood averages.
**Use:** Build city-level and neighborhood-level price maps across China's largest metros.

#### 2. Resale-Housing Price Tracking

**For data teams monitoring price movement.**

**Input:** Schedule a daily Resale Housing List run per city.
**Output:** Daily snapshots of total and per-㎡ prices.
**Use:** Track trends and valuations on China's #1 real-estate platform over time.

#### 3. Neighborhood / Community Comps

**For valuation and proptech builders.**

**Input:** Community List for a city.
**Output:** Average unit price, on-sale counts, build year, and geo coordinates per community.
**Use:** A ready-made comps dataset for automated valuation models and mapping.

#### 4. Real-Estate Lead Generation

**For brokerage, mortgage, and relocation teams.**

**Input:** Resale Housing Detail across target listings.
**Output:** Listing agents and full property context.
**Use:** Build prospect and outreach lists tied to live inventory.

#### 5. Cross-Border Investment Analysis

**For investors comparing global markets.**

**Input:** China listings alongside Western property data.
**Output:** Price/㎡, inventory depth, and yield inputs in one pipeline.
**Use:** Compare China resale housing against US, UK, and MENA markets side by side.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/beike-property-scraper').call({
  operation: 'resaleHousingList',
  cityId: '110000',
  maxPages: 2
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/beike-property-scraper').call(
    run_input={'operation': 'communityList', 'cityId': '110000', 'maxPages': 3}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~beike-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "resaleHousingDetail", "cityId": "110000", "houseCode": "101137699747"}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule or webhook
2. **HTTP Request**: Call the actor API
3. **Process**: Handle the JSON dataset
4. **Action**: Save to a sheet, database, or BI tool

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- Full feature access, same data quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- Unlimited rows per run
- Pay-per-result: only charged for successful rows
- Deep pagination for large markets

💰 **Transparent per-result pricing** — list and community rows are priced for bulk research; deep detail is priced per property.

🔗 [View current pricing](https://apify.com/sian.agency/beike-property-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: Which cities are supported?**
A: 12 major cities are built into the dropdown (Beijing, Shanghai, Guangzhou, Shenzhen, Hangzhou, Chengdu, Nanjing, Wuhan, Xi'an, Tianjin, Chongqing, Shenyang). You can also type any Beike city ID to scrape other cities.

**Q: How do I get a houseCode for the Detail operation?**
A: Run Resale Housing List first — every row has a `houseCode` field. Paste it into the Detail operation.

**Q: How many rows can I get per run?**
A: Each paginated operation returns 20 rows per page; set `maxPages` up to 50. Detail returns one property per run.

**Q: What output formats are available?**
A: JSON, CSV, and Excel — export directly from the Apify dataset.

**Q: Is the data public?**
A: Yes — this actor only collects publicly listed real-estate data. See the legal section below.

**Q: What currency are prices in?**
A: Chinese yuan (CNY). Total price and price/㎡ are exposed both as numbers and display strings.

***

### 🐛 Troubleshooting

**No rows returned**

- Verify the `cityId` is a valid Beike city ID (try a built-in one like `110000`).
- For Detail, confirm the `houseCode` came from a recent list run (listings can be delisted).

**Empty Detail result**

- The listing may have been removed. Pull a fresh `houseCode` from Resale Housing List and retry.

**Fewer pages than expected**

- The market may have fewer results than `maxPages × 20`. The scraper stops when the data source signals no more results.

**Run looks slow**

- China data sources can be rate-limited; the scraper retries transient errors automatically with backoff.

***

### ⚠️ Trademark Disclaimer

This is an **independent scraping tool**. It is not affiliated with, endorsed by, or sponsored by Beike (贝壳找房), Lianjia (链家), KE Holdings Inc., or any of their subsidiaries. The Beike®, Lianjia®, and 贝壳找房® names appear under nominative fair use to describe the public data this tool collects. All trademarks belong to their respective owners.

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's Issues tab
- Check [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `operation` (type: `string`):

Pick what you want to scrape. Each run does one operation.

## `cityId` (type: `string`):

Which Chinese city to scrape. Pick from the list, or type any Beike city ID (e.g. 110000) to override. Required for every operation.

## `houseCode` (type: `string`):

The Beike listing ID. Find it in the `houseCode` field of any Resale Housing List row, or in a listing URL. Required only for Resale Housing Detail.

## `condition` (type: `string`):

Advanced raw filter string passed straight to the data source (region, price band, layout). Leave empty for unfiltered results. Applies to Resale Housing List and Community List.

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

Max pages to scrape (20 rows per page). Applies only to paginated operations (Resale Housing List, Community List). Default 5. Range 1-50.

## Actor input object example

```json
{
  "operation": "resaleHousingList",
  "cityId": "110000",
  "houseCode": "101137699747",
  "maxPages": 5
}
```

# Actor output Schema

## `output` (type: `string`):

Listings, deep listing details, or community market data — one flat row per upstream item with curated camelCase aliases (houseCode, listingTitle, price, unitPrice, communityName, avgUnitPrice, lat, lng, agentName, listingUrl, ...) plus the raw upstream fields spread alongside.

## `report` (type: `string`):

HTML report with run status, success/error row counts, success rate, pages fetched, duration, and the inputs used — written even on fatal crash.

# 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("sian.agency/beike-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/beike-property-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 '{}' |
apify call sian.agency/beike-property-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Beike & Lianjia Property Scraper — China Real Estate",
        "description": "Scrape Beike & Lianjia (贝壳找房 / 链家) into clean datasets — China resale-housing listings by city, deep listing details (floor, area, year, decoration, agent), and community market data (avg price/㎡, on-sale counts, geo). Three operations, one actor. No account or API key.",
        "version": "1.0",
        "x-build-id": "BWMr3VFZSZ19tG7dh"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~beike-property-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-beike-property-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/sian.agency~beike-property-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-beike-property-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/sian.agency~beike-property-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-beike-property-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": [
                    "operation"
                ],
                "properties": {
                    "operation": {
                        "title": "Operation",
                        "enum": [
                            "resaleHousingList",
                            "resaleHousingDetail",
                            "communityList"
                        ],
                        "type": "string",
                        "description": "Pick what you want to scrape. Each run does one operation.",
                        "default": "resaleHousingList"
                    },
                    "cityId": {
                        "title": "City",
                        "enum": [
                            "110000",
                            "310000",
                            "440100",
                            "440300",
                            "330100",
                            "510100",
                            "320100",
                            "420100",
                            "610100",
                            "120000",
                            "500000",
                            "210100"
                        ],
                        "type": "string",
                        "description": "Which Chinese city to scrape. Pick from the list, or type any Beike city ID (e.g. 110000) to override. Required for every operation.",
                        "default": "110000"
                    },
                    "houseCode": {
                        "title": "House Code (for Resale Housing Detail)",
                        "type": "string",
                        "description": "The Beike listing ID. Find it in the `houseCode` field of any Resale Housing List row, or in a listing URL. Required only for Resale Housing Detail."
                    },
                    "condition": {
                        "title": "Filter condition (advanced, optional)",
                        "type": "string",
                        "description": "Advanced raw filter string passed straight to the data source (region, price band, layout). Leave empty for unfiltered results. Applies to Resale Housing List and Community List."
                    },
                    "maxPages": {
                        "title": "Max pages (for paginated operations)",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Max pages to scrape (20 rows per page). Applies only to paginated operations (Resale Housing List, Community List). Default 5. Range 1-50.",
                        "default": 5
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
