Lianjia Scraper: Resale Listings, Price, Community avatar

Lianjia Scraper: Resale Listings, Price, Community

Pricing

from $1.49 / 1,000 property listings

Go to Apify Store
Lianjia Scraper: Resale Listings, Price, Community

Lianjia Scraper: Resale Listings, Price, Community

Scrape Lianjia (链家) resale listings across 12 major Chinese cities. Get total price, price per sqm, community, area, and layout. Perfect for Excel, Google Sheets, or any BI tool. Skip manual copy-pasting or expensive broker fees. $2.50 per 1,000 results.

Pricing

from $1.49 / 1,000 property listings

Rating

5.0

(1)

Developer

GetAScraper

GetAScraper

Maintained by Community

Actor stats

0

Bookmarked

22

Total users

1

Monthly active users

4.3 hours

Issues response

2 days ago

Last modified

Share

🏠 Lianjia Scraper: Resale Listings, Price, Community

Two independent reads on China's property market. Lianjia Scraper and 58.com Scraper each track a different Chinese property portal, so you can cross-check coverage and pricing instead of relying on one source.
CHINA REAL ESTATE PORTALS   Two independent Chinese property portals, cross-checked side by side.
 Lianjia
➤ You are here
 58.com
Decrypted CNY prices and direct landlord contacts.
China property price data across 12 cities, ready for your spreadsheet in minutes
Pull public resale listings, community averages, and price-change events from Lianjia (链家) and Beike. Twelve major Chinese metros covered. No login, no API key.
🏙️ 12 Chinese cities
Beijing, Shanghai, Shenzhen, and 9 more metros in a single verified dropdown.
🔔 Change detection
Detect new listings, price changes, and removed properties across scheduled runs.
📐 Source-backed filters
Filter by district, price range, bedrooms, area, and listing age before results land.
🏘️ Three operations
Listing cards, full property detail, and community neighborhood stats in one actor.

Lianjia (链家) is China's leading real estate platform, operated by KE Holdings alongside Beike (贝壳找房). This actor pulls public resale housing (二手房) records and community market data for 12 major Chinese cities. No login, no API key required.

🔍 What does Lianjia Source Monitor do?

The actor fetches structured property data from the public Lianjia and Beike desktop pages and saves every record to the Apify dataset. Three operations cover the main research workflows:

  • Resale Housing List: walk paginated listing cards by city. 30 rows per page, up to 100 pages per run.
  • Resale Housing Detail: fetch one full property record by listing code or detail URL.
  • Community List: walk neighborhood cards with average unit prices and on-sale inventory counts.

Turn on change detection to compare each run against the previous one. The actor reports new listings, price changes, and removed records so you only review what actually moved.

👥 Who is this for

  • I am a China property market analyst building city-level and neighborhood-level price maps across Beijing, Shanghai, Shenzhen, and 9 other metros. I need clean per-㎡ prices, area, and bedroom counts delivered to my dashboard on schedule.
  • I am a cross-border real estate investor comparing China resale housing against my other property datasets. I need a consistent schema and a pay-per-result cost model that fits my research budget.
  • I am a proptech builder training an automated valuation model. I need average unit price per community plus on-sale inventory counts to feed my comps engine.
  • I am a real estate data operator pulling fresh listings every morning for brokerage or relocation outreach. I need a public mobile URL I can hand to my team with each record.

🚀 How to use

STEP 1
Pick your city and operation
Choose from 12 verified Chinese cities and select listing list, property detail, or community stats. Or paste a Beike URL directly.
STEP 2
Apply filters and set limits
Narrow by district, price, bedroom count, and floor area. Set max pages to control how many rows come back.
STEP 3
Export or schedule
Download JSON, CSV, or Excel from the dataset tab, or schedule repeat runs to track what changed.

For the Detail operation, paste a detail URL as a start URL or use the Listing House Code field with a numeric code, for example 101137699747.

📥 Input

FieldTypeRequiredDescription
startUrlsarray of URLsNoOptional Lianjia or Beike URLs: a resale search, a detail page, or a community page. Unknown city subdomains return an explicit error row.
operationenumYesResale Housing List returns listing cards, Resale Housing Detail returns one property record, Community List returns neighborhood cards.
cityIdenumNoVerified city dropdown (12 cities). Ignored when startUrls is set. Unknown IDs are reported as UNSUPPORTED_CITY rather than silently mapped.
houseCodestringFor DetailNumeric listing ID (10-20 digits). Required for Detail when no detail start URL is supplied.
maxPagesintegerNoPages to fetch for list operations. 30 rows per page. Range 0-100, default 1.
maxItemsintegerNoMaximum records returned after filters. Range 1-10,000, default 10,000. When capped, removal detection is disabled for that run.
districtstringNoExact district label as shown on the source listing card. Records without a source district do not match this filter.
districtsarrayNoMultiple exact district labels. A record matches if its source district equals any value in the list.
minPriceTotalnumberNoMinimum total price in 万 (10,000 RMB).
maxPriceTotalnumberNoMaximum total price in 万 (10,000 RMB).
minUnitPricenumberNoMinimum price per ㎡ in yuan.
maxUnitPricenumberNoMaximum price per ㎡ in yuan.
minPricePerSqmnumberNoAlias for minimum price per ㎡. Interchangeable with minUnitPrice.
maxPricePerSqmnumberNoAlias for maximum price per ㎡. Interchangeable with maxUnitPrice.
roomsarrayNoExact bedroom counts to include, for example [2, 3]. Matches any value in the array.
minRoomsintegerNoMinimum bedroom count.
maxRoomsintegerNoMaximum bedroom count.
minAreanumberNoMinimum floor area in ㎡.
maxAreanumberNoMaximum floor area in ㎡.
minFreshnessDaysnumberNoMinimum listing age in days, read from explicit source labels such as 2天前.
maxFreshnessDaysnumberNoMaximum listing age in days. Only explicit source age labels apply; unknown freshness does not match.
sortByenumNoSort field: houseCode (default), communityId, priceTotal, unitPrice, area, bedroomNum, freshnessDays, avgUnitPrice, onSaleCount.
sortOrderenumNoSort direction: asc (default) or desc.
monitorModeenumNosnapshot (default) returns all current records each run. changes returns only records that differ from the previous run of the same scope.
monitorScopestringNoScope label for change tracking. Reuse the same label across scheduled runs to compare each run against the previous one.
includeUnchangedbooleanNoIn changes mode, also emit records classified as UNCHANGED. Default: false.
includeOpportunityScorebooleanNoAdd a relative opportunity score to each result. Only computed when source fields have a measurable range in the returned cohort. Default: false.
proxyConfigurationproxyNoResidential proxy is on by default. The source rate-limits repeated requests from the same IP.

Example: Beijing resale listing search

{
"operation": "resaleHousingList",
"cityId": "110000",
"maxPages": 5
}

Example: custom pre-filtered search

{
"startUrls": [
{ "url": "https://bj.ke.com/ershoufang/chaoyang/p3/" }
],
"maxPages": 5
}

Example: monitor for price changes

{
"operation": "resaleHousingList",
"cityId": "110000",
"monitorMode": "changes",
"monitorScope": "beijing-chaoyang-monitor"
}

📤 Output

Every resale row includes a public mobile URL pointing to the live m.ke.com listing so you can verify the data in one click.

Resale Housing List row

{
"_operation": "resaleHousingList",
"status": "success",
"houseCode": "101133627586",
"listingTitle": "此房是南北通透三居室,满五唯一",
"communityName": "加州水郡四期",
"districtName": "朝阳",
"priceTotal": 179,
"priceTotalDisplay": "179 万",
"unitPrice": 19551,
"unitPriceDisplay": "19,551元/平",
"area": 91.56,
"bedroomNum": 3,
"hallNum": 1,
"orientation": "南",
"yearBuilt": "2011年",
"decoration": "",
"followInfo": "225人关注 / 8月前发布",
"freshnessDays": 240,
"agentName": "",
"cityId": "110000",
"cityName": "北京",
"subdomain": "bj",
"listingUrl": "https://m.ke.com/bj/ershoufang/101133627586.html",
"scrapedAt": "2026-06-12T04:34:18.741Z"
}

Resale Housing Detail adds floorState, buildingType, elevator, ownership, publishTime, and tags[].

Community List row adds communityId, avgUnitPrice, avgUnitPriceDisplay, onSaleCount, and buildYear.

When monitorMode is changes, each row also carries changeType, changedFields, firstSeenAt, and lastSeenAt.

Download the dataset as JSON, HTML, CSV, or Excel from the Apify dataset tab.

📊 Data table

FieldTypeDescription
_operationstringWhich operation produced this row: resaleHousingList, resaleHousingDetail, or communityList.
statusstringsuccess for a clean row, error for an explicit failure row.
errorCodestringError code when status is error.
errorMessagestringHuman-readable error description when status is error.
sourceUrlstringThe source URL this row was fetched from.
inputIdstringIdentifies the input run that produced this row.
retrievedAtstringISO 8601 timestamp when the source page was fetched.
changeTypestringChange event in monitor mode: NEW, UPDATED, PRICE_CHANGED, REMOVED, REAPPEARED, or UNCHANGED.
changedFieldsarrayField names that changed since the previous run. Present in changes mode only.
firstSeenAtstringISO 8601 timestamp when this record was first seen by the monitor.
lastSeenAtstringISO 8601 timestamp when this record was last observed before a REMOVED event.
houseCodestringBeike listing ID, for example 101133627586.
listingTitlestringPublic listing title in Chinese.
communityNamestringCommunity or neighborhood name (小区).
districtNamestringDistrict name as shown on the source listing card.
priceTotalnumberTotal price in 万 (10,000 RMB). For example 179 means ¥1,790,000.
priceTotalDisplaystringFormatted total price string, for example 179 万.
unitPricenumberPrice per ㎡ in RMB.
unitPriceDisplaystringFormatted unit price string, for example 19,551元/平.
areanumberFloor area in ㎡.
bedroomNumnumberNumber of bedrooms.
hallNumnumberNumber of halls or living rooms.
orientationstringBuilding orientation, for example 南 or 西南.
yearBuiltstringYear built, for example 2011年.
decorationstringDecoration level, for example 毛坯, 简装, or 精装.
followInfostringRaw engagement and publication age string from the source listing.
freshnessDaysnumberListing age in days, parsed from explicit source age labels.
publishedAtstringPublication timestamp parsed from the source listing.
agentNamestringPublic listing agent name when shown on the source page.
cityIdstringBeike city ID, for example 110000.
cityNamestringCity name in Chinese, for example 北京.
subdomainstringBeike subdomain, for example bj or sh.
listingUrlstringPublic mobile URL on m.ke.com for this listing.
communityUrlstringPublic URL for the community page.
scrapedAtstringISO 8601 timestamp when the scrape ran.
floorStatestring(Detail only) Floor position and total floors, for example 中楼层/共23层.
buildingTypestring(Detail only) Building structure, for example 板楼 or 塔楼.
elevatorstring(Detail only) Elevator presence: 有电梯 or 无电梯.
ownershipstring(Detail only) Property ownership type.
publishTimestring(Detail only) Listing publication timestamp from the source.
tagsarray(Detail only) Highlight tags from the source listing page.
communityIdstring(Community only) Beike community ID.
avgUnitPricenumber(Community only) Average unit price per ㎡ in RMB.
avgUnitPriceDisplaystring(Community only) Formatted average unit price string.
onSaleCountnumber(Community only) Number of active listings in this community.
buildYearstring(Community only) Year the community was built.
opportunityScorenumberRelative opportunity score when includeOpportunityScore is enabled. Only present when the cohort has a measurable value range.
scoreBreakdownobjectScore component breakdown when includeOpportunityScore is enabled.

💰 Pricing

Pricing is pay per result. You are charged only for records successfully written to your dataset. Empty runs cost nothing. There are no monthly subscriptions or minimum commitments.

⭐ Enjoying Lianjia Source Monitor?

⭐ ⭐ ⭐ ⭐ ⭐
This actor turns a day of manual Lianjia browsing into a clean pricing dataset delivered in minutes.
A 5-star rating takes 10 seconds and helps other China property market analysts find it. Your feedback also tells us what to build next.
★  Rate this Actor on Apify

❓ FAQ

链家二手房数据怎么获取?

Point the actor at your target city using the city dropdown, choose Resale Housing List, set a page limit, and click Run. Results land in the Apify dataset within minutes, ready to export as JSON, CSV, or Excel. No login or API key needed.

链家支持哪些城市?

The actor covers 12 major cities: Beijing (北京), Shanghai (上海), Guangzhou (广州), Shenzhen (深圳), Hangzhou (杭州), Chengdu (成都), Nanjing (南京), Wuhan (武汉), Xi'an (西安), Tianjin (天津), Chongqing (重庆), and Shenyang (沈阳). Paste a Beike URL from any other city as a custom start URL to reach additional metros.

Does it get blocked?

The Lianjia and Beike desktop pages rate-limit repeated requests from the same IP. The actor routes every request through Apify Residential proxy by default, which rotates IPs per call and keeps pagination stable across full runs.

How fresh is the data?

Each row reflects a live scrape of the public listing page. There is no cached data layer between you and the source. Every row carries a scrapedAt ISO 8601 timestamp so you know exactly when it was pulled.

Does it extract agent phone numbers?

No. Phone reveal on Lianjia requires an authenticated session and is outside the scope of publicly visible data. The actor returns the agent's display name when it appears on the public listing page.

Which fields track price changes?

Turn on changes mode and set a monitorScope label. Each run after the first compares records against the previous run of the same scope. Changed records carry a changeType of NEW, PRICE_CHANGED, UPDATED, REMOVED, or REAPPEARED, plus a changedFields list showing exactly what moved.

💡 Tips

  • Schedule daily runs with the same monitorScope to track price movement and inventory depth over time.
  • Use the Detail operation for a short list of known listing codes to pull the full property record in one call each.
  • Dedupe by houseCode when stitching results across multiple runs. Fresh listing codes are guaranteed unique.
  • Filter early with district, minPriceTotal, and maxPriceTotal so you only pay for rows you actually need.
  • Combine List and Community runs to cross-reference per-property prices against neighborhood averages in the same dataset.

This actor extracts only data that is publicly visible on the public Lianjia and Beike desktop search and detail pages. Users must comply with Lianjia's terms of service, Chinese PIPL, GDPR, and CCPA where applicable. Beike and Lianjia are trademarks of KE Holdings Inc. This is an independent tool and is not affiliated with, endorsed by, or sponsored by KE Holdings.

🛟 Support

Open an issue on the Issues tab for bugs, feature requests, or city additions. We respond within 48 hours.

🔗 Other actors