591.com.tw Scraper | Rentals, Sales, Land & Commercial Listings avatar

591.com.tw Scraper | Rentals, Sales, Land & Commercial Listings

Pricing

from $1.00 / 1,000 results

Go to Apify Store
591.com.tw Scraper | Rentals, Sales, Land & Commercial Listings

591.com.tw Scraper | Rentals, Sales, Land & Commercial Listings

Extract property listings from 591房屋交易網 591.com.tw, Taiwan’s largest real estate marketplace. Search by city or use 591 URLs. Covers rentals, sales, land, and commercial properties. Returns 50–60 fields, including price, area, GPS coordinates, nearby transit, and agent/owner contact details.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

3 days ago

Last modified

Share

591.com.tw Taiwan Property Scraper

Collect structured property listings from 591.com.tw, Taiwan's largest property marketplace, across four sections: Rent (租屋), Sale (買屋, resale and new homes), Land (土地), and Commercial (店面, 辦公, 廠房). Search by city and county with price, area, and rental type filters, or paste any 591 list URL. Every record is a clean, flat JSON object with 50 to 60 populated fields, including agent and owner contact details, GPS coordinates, and nearby transit with walking distances.

Why this scraper

  • Four sections in one actor: Rent, Sale, Land, and Commercial, each with the section's native fields.
  • 50 to 60 fields per listing, more than any comparable 591 actor, including contact name, mobile, phone, LINE and email, plus full GPS, nearby bus and metro stops with distances, lease rules, deposit, fees, and the full high resolution photo gallery.
  • Two ways to run: pick a section, regions, and filters, or paste 591 list URLs straight from your browser.
  • Forward auto pagination that walks the whole result set by default (no artificial page cap), bounded only by the maxListings total cap so runs stay predictable.
  • Low cost: runs on the cheapest datacenter connection by default. A residential tier with Taiwan first rotation and a backup pool engages automatically only if datacenter is ever throttled, and a request budget keeps residential spend under control.
  • Fast and reliable: lightweight requests, no heavy page rendering, concurrent detail fetching with per record output so partial runs still keep their data.

Data you get

Sample shape: values are illustrative placeholders, not from a live listing.

FieldExample
id21000001
sectionrent
listingTyperent
urlhttps://rent.591.com.tw/21000001
titleSample Listing Title
price18000
priceText18,000
priceUnit元/月
kindName獨立套房
room2房
area18
floor5F
regionNameTaipei City
sectionName中山區
address中山區 Sample Road
latitude25.0000
longitude121.5000
communityNameSample Community
deposit押金二個月
leaseMinTerm最短租期一年
rule此房屋男女皆可租住
facilities["冰箱","洗衣機","冷氣","網路"]
nearbyTransit[{"type":"subway","name":"Sample Station","distance":300}]
tags["新上架","可開伙"]
photoCount12
coverPhotohttps://img1.591.com.tw/house/0000/000000000.jpg
photos["https://img1.591.com.tw/house/0000/000000001.jpg"]
browseCount120
postedAt此房屋在3天前發佈
contactNameAgent Name
contactRole仲介
contactMobile0900000000
contactPhone0200000000
contactEmailagent@example.com
contactLinesample-line-id
isAgenttrue
scrapedAt2026-01-01T00:00:00.000Z

Sale, Land, and Commercial records add section specific fields such as unitPrice, mainArea, shape, houseAge, direction, roomCount, hallCount, bathroomCount, and balconyCount where the section publishes them.

How to use

Pick a section, regions, and filters:

{
"mode": "search",
"section": "rent",
"regions": ["taipei-city", "new-taipei-city"],
"minPrice": 10000,
"maxPrice": 25000,
"fetchDetails": true,
"maxPages": 5,
"maxListings": 200
}

Search resale and new homes for sale:

{
"mode": "search",
"section": "sale",
"regions": ["taichung-city"],
"minArea": 20,
"maxPages": 10,
"maxListings": 300
}

Filter rentals by type (whole home, suite, shared suite, single room, parking):

{
"mode": "search",
"section": "rent",
"regions": ["kaohsiung-city"],
"rentKind": "whole",
"fetchDetails": true,
"maxPages": 3
}

Paste 591 list URLs (multi URL supported, filters above are ignored):

{
"mode": "url",
"urls": [
"https://rent.591.com.tw/list?region=1&kind=2",
"https://land.591.com.tw/list?type=2&region=1&kind=11"
],
"maxPages": 5,
"maxListings": 150
}

Input parameters

ParameterTypeDefaultDescription
modestringsearch"search" (pick section, regions, filters) or "url" (paste list URLs).
sectionstringrentrent, sale, land, or commercial. Search mode only.
regionsarray["taipei-city"]One or more Taiwan cities or counties. Search mode only.
rentKindstringanyRental type: whole, suite, shared-suite, single-room, parking. Rent section only.
minPrice / maxPriceintegernonePrice bounds. Rent is TWD per month; Sale, Land, Commercial are in 萬 total.
minArea / maxAreaintegernoneFloor area bounds in 坪 (ping).
urlsarraynone591 list URLs. URL mode only. Pagination starts at the page in the URL and walks forward.
fetchDetailsbooleantrueVisit each listing's detail page for the full field set. Turn off for a faster, cheaper list level run.
maxListingsinteger20The sole soft cap on the run, applied across the whole run (not per page). 0 means unlimited.
maxPagesinteger0Safety bound on result pages walked per region or URL (about 30 listings per page). 0 (default) means unlimited: the walk stops on its own once a page comes back empty or keeps repeating listings already collected, or sooner once maxListings is reached. Set a number only for an explicit page cap below that natural stop.
resumeFromRunIdstringnonePaste a previous run ID or dataset ID to continue a large walk-all pull: listings already saved by that run are loaded before scraping starts and skipped, so this run only appends new listings.
proxyobjectApify DatacenterConnection configuration. Datacenter is the low cost default.
maxResidentialRequestsinteger200Caps requests on the residential fallback tier. 0 disables residential entirely.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape — the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record — not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Output example

Sample shape: values are illustrative placeholders, not from a live listing.

{
"id": 21000001,
"section": "rent",
"listingType": "rent",
"url": "https://rent.591.com.tw/21000001",
"title": "Sample Listing Title",
"description": "Full listing description appears here when fetchDetails is on.",
"price": 18000,
"priceUnit": "元/月",
"deposit": "押金二個月",
"kindName": "獨立套房",
"room": "2房",
"area": 18,
"floor": "5F",
"regionName": "Taipei City",
"sectionName": "中山區",
"address": "中山區 Sample Road",
"latitude": 25.0000,
"longitude": 121.5000,
"leaseMinTerm": "最短租期一年",
"rule": "此房屋男女皆可租住",
"facilities": ["冰箱", "洗衣機", "冷氣", "網路"],
"nearbyTransit": [{ "type": "subway", "name": "Sample Station", "distance": 300 }],
"photoCount": 12,
"coverPhoto": "https://img1.591.com.tw/house/0000/000000000.jpg",
"contactName": "Agent Name",
"contactRole": "仲介",
"contactMobile": "0900000000",
"contactEmail": "agent@example.com",
"isAgent": true,
"scrapedAt": "2026-01-01T00:00:00.000Z"
}

Walking the whole catalogue

By default maxPages is 0 (unlimited): a search or URL entry walks every result page until the storefront naturally runs out — an empty page, or a page that keeps repeating listings already collected — or until maxListings (the run's only soft cap, default 20, set 0 for unlimited) is reached, whichever comes first. Set maxPages to a number only when you want an explicit page cap below that natural stop.

For a very large walk-all pull, use resumeFromRunId in a follow-up run instead of starting over: paste the ID of a previous run (or its dataset) and this run loads the listings it already saved, skips them, and appends only new listings to a fresh dataset. Leave it empty for a normal run.

The actor also checkpoints its own progress internally, so if a run is interrupted by a platform migration it picks back up without re-saving (and re-charging for) listings it already wrote.

Plan requirement

This actor runs on any Apify plan, including the free plan, because it defaults to the datacenter connection. For the highest reliability on large runs, a paid plan with residential proxy is recommended; the actor uses it only as an automatic fallback (Taiwan first), capped by the residential request budget, and switches back to datacenter once the connection is healthy again. If a run returns zero results on the free plan, enable residential proxy and try again.