591.com.tw Scraper - Taiwan Rentals, Sales & Presale avatar

591.com.tw Scraper - Taiwan Rentals, Sales & Presale

Pricing

from $0.70 / 1,000 rental searches

Go to Apify Store
591.com.tw Scraper - Taiwan Rentals, Sales & Presale

591.com.tw Scraper - Taiwan Rentals, Sales & Presale

Scrape 591.com.tw across all 22 Taiwan cities: rent, resale and presale listings with price, ping area, layout, MRT distance, photos and lister.

Pricing

from $0.70 / 1,000 rental searches

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

591.com.tw Scraper - Taiwan Rentals, Sales & Presale 🚀

SIÁN Agency Store Store-SUUMO-1AE392 Store-Zigbang-1AE392 Store-PropertyGuru-1AE392

🎉 All three 591 boards — 租屋, 買屋 and 新建案 — in one Actor

For analysts pricing the Taiwanese market, agencies sourcing stock, and anyone tired of scrolling 591 at midnight

Scrape 591.com.tw across all 22 Taiwan cities and counties: rent, resale and presale listings with price, ping area, layout, MRT distance, photos and lister.

🔎 What is the 591.com.tw Taiwan Property Scraper — and when should you use it?

The 591.com.tw Taiwan Property Scraper turns public 591.com.tw property listings from anywhere in Taiwan into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

Use it when you need: Taiwanese rental, resale and presale listings as rows. Each carries the monthly rent or asking price in NT$, the floor area in ping, the 房/廳/衛 layout, the floor, the district, the full photo set and 591's own card tags. Rental rows also name the nearest MRT station and how many metres away it is, and say whether the landlord or an agency posted the listing. Rental Detail expands one listing into its GPS position, deposit, management fee, appliance list, complete description and the lister's phone. Presale rows carry the developer, the build stage and the sales office's phone.

Use something else when: the property is not in Taiwan. Use SUUMO Scraper for Japan, rentals and sale listings from the country's largest portal. Use Zigbang Scraper for South Korea — apartments, officetels and villas with jeonse and monthly-rent terms. Use PropertyGuru Scraper for Singapore and Malaysia, sale and rental, from the region's dominant portal. This actor reads the three public boards 591 publishes — 租屋 rentals, 買屋 second-hand sales and 新建案 presale and new-build projects — across all 22 Taiwanese cities and counties. Taiwan's 實價登錄 actual-transaction-price registry is out of scope: it is a government dataset of completed sales, and every price here is an asking price the lister set. Phone numbers appear where 591 publishes them — on rental detail records and on presale projects — and no row invents one it was not given.

🤖 Use with AI agents

Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/591-com-property-scraper

Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want Taiwanese property listings and asking prices from 591.com.tw using the Apify Actor `sian.agency/591-com-property-scraper`.
Use it when I need: Taiwanese rental, resale and presale listings as rows. Each carries the monthly rent or asking price in NT$, the floor area in ping, the 房/廳/衛 layout, the floor, the district, the full photo set and 591's own card tags. Rental rows also name the nearest MRT station and how many metres away it is, and say whether the landlord or an agency posted the listing. Rental Detail expands one listing into its GPS position, deposit, management fee, appliance list, complete description and the lister's phone. Presale rows carry the developer, the build stage and the sales office's phone.
Don't use it when: the property is not in Taiwan — use suumo-property-scraper or zigbang-property-scraper or propertyguru-property-scraper instead.
How to call it: pick an `operation` — `rentSearch` for the rental board, `saleSearch` for second-hand sales, `presaleSearch` for new-build projects, `rentDetail` to expand rentals you already have ids for. Set `city` to one of 591's 22 area ids (1 is 台北市 Taipei, 3 新北市 New Taipei, 8 台中市 Taichung, 17 高雄市 Kaohsiung) and `maxResults` to your row budget. Narrow with `rentalType` on the rental board (整層住家 whole unit, 獨立套房 self-contained suite, 分租套房, 雅房), `saleCategory` on the sale board (住宅, 套房, 店面, 辦公, 住辦, 土地), `bedrooms`, `minRent`/`maxRent` in NT$ a month, `buildingAge` for resale, and `landlordOnly` to keep only owner-posted rentals. `keyword` takes Traditional Chinese and searches community, street and station names inside the city you picked. For a single district, paste its 591 address into `searchUrls`.
Start with this input:
{
"operation": "rentSearch",
"city": "1",
"rentalType": "1",
"maxRent": 40000,
"maxResults": 200
}
Ask me which Taiwanese city to cover, whether they want rentals, resale listings or presale projects, and what rent or property type to narrow to, then run the Actor and summarise the results as a table.

Things you can ask your agent for:

  • Pull every whole-unit rental in Taipei under NT$40,000 posted by the landlord, and rank the districts by rent per ping.
  • Find Kaohsiung resale homes under 20 years old with three bedrooms, and give me the price per ping for each district.
  • List every presale project in Taichung with its developer and sales-office phone number, ready to paste into a sheet.

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/591-com-property-scraper.md.

📋 Overview

591房屋交易網 is where Taiwan looks for property. It is the country's number-one portal by a wide margin, and its rental board alone draws 301,000 searches a month. This Actor reads the three boards 591 publishes: 租屋 rentals, 買屋 second-hand sales, 新建案 presale projects. Each comes back as typed rows. The rent is a number in NT$, the floor area is a number in 坪, the district arrives as a name and an id, and the nearest MRT station carries its distance in metres.

Why professionals pick this one:

  • Three boards, not one: rentals, resale listings and presale projects each get their own operation and their own row shape, because 591 keeps them apart and so does the market.
  • 30 listings per request: the rental board answers a whole page at a time. A 1,000-row Taipei sweep is 34 requests and about a minute.
  • 🎯 Every filter is a real filter: each one was tested against the live board and kept only if it moved the result count. Nothing here bills you for narrowing that never happened.
  • 💰 $0.80 per 1,000 rental listings: 11% under the field leader, on a richer row, with no minimum charge per run.
  • 💎 The MRT distance 591 already publishes: the nearest station and how many metres away it is, read from the card, not guessed from a geocode.
  • Owner-direct as a checkbox: Taiwan's rental board runs heavy on landlord listings, and one toggle keeps only those.
OperationReturnsRows per requestNotes
rentSearchRental Search~30rentals by city, property type, rent band, bedrooms and keyword
saleSearchResale Search~31second-hand sale listings by city, category, bedrooms and building age
presaleSearchPresale Project Search~10presale and new-build projects with developer and sales-office phone
rentDetailRental Detail1one rental expanded — GPS, deposit, appliances, full text, phone

✨ Features

  • 🔑 Rental board (租屋): whole units (整層住家), self-contained suites (獨立套房), shared-flat suites (分租套房), rooms (雅房), parking and more.
  • 🏠 Resale board (買屋): homes, studios, storefronts, offices, mixed residential-office units, land, factories and parking spaces.
  • 🏗️ Presale board (新建案): new-build and presale projects with the developer, the build stage and the sales office's own phone number.
  • 📄 Rental Detail: GPS coordinates, deposit terms, management fee, the appliance list, the whole description and the lister's phone.
  • 🚇 Transit context: the nearest station and its distance in metres, straight from 591's own card.
  • 📐 Numbers as numbers: rent in NT$, sale prices converted from 萬, area in 坪, price per ping, bedrooms parsed from the 房/廳/衛 layout.
  • 👤 Owner-direct filter: keep only rentals 591 marks as posted by the 屋主.
  • 🗺️ All 22 cities and counties: from 台北市 down to 連江縣, using 591's own area ids.
  • 🔗 Paste-a-URL mode: build any search on 591, copy the address, and the Actor reads the board, city, district and filters off it.
  • 📊 Honest coverage: the run log prints the total 591 reports for your search before it starts paging.

🎬 Quick Start

Pick an operation, pick a city, set a row budget. That is the whole setup — everything else narrows the result. A bare run returns 100 Taipei rentals.

curl -X POST "https://api.apify.com/v2/acts/sian.agency~591-com-property-scraper/runs?token=YOUR_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"operation": "rentSearch", "city": "1", "maxResults": 100}'

🚀 Getting Started (3 Simple Steps)

Step 1: Choose the board

Set operation to rentSearch, saleSearch, presaleSearch or rentDetail.

Step 2: Choose the city

Set city to one of 591's 22 area ids — 1 for 台北市, 3 for 新北市, 8 for 台中市, 17 for 高雄市.

Step 3: Narrow it and run

Add a rent band, a property type, a bedroom count or a Chinese keyword, set maxResults, and start the run.

That's it. In about a minute, you'll have:

  • Every matching listing as a typed row, in JSON, CSV or Excel
  • Prices, ping areas and MRT distances ready to chart
  • A run report with the links, the totals and exactly what you were charged

📥 Input Configuration

FieldTypeRequiredDescription
operationstringNorentSearch (default), saleSearch, presaleSearch or rentDetail
citystringNoOne of 591's 22 area ids; 1 = 台北市 Taipei City (default)
maxResultsintegerNoRow budget for the whole run (default 100)
keywordstringNo591's own search box, in Traditional Chinese — community, street or station names
rentalTypestringNoRental board only: 整層住家, 獨立套房, 分租套房, 雅房, 車位, 其他
saleCategorystringNoSale board only: 住宅, 套房, 店面, 辦公, 住辦, 土地, 廠房, 車位
bedroomsstringNo1 to 5+, matched against the 房 count in 591's layout string
minRent / maxRentintegerNoRental board only: monthly rent band in NT$
buildingAgestringNoSale board only: 591's own bands — under 5, 5-10, 10-20, 20-30, 30-40 years
landlordOnlybooleanNoRental board only: keep just the 屋主-posted listings
sortBystringNo591's default order, newest first, or rent low-to-high / high-to-low
searchUrlsarrayNoPaste 591 search addresses instead of using the form
listingUrlsarrayNoRental Detail: 591 rental addresses (full URLs)

Example — whole-unit rentals in Taipei under NT$40,000, landlord only:

{
"operation": "rentSearch",
"city": "1",
"rentalType": "1",
"maxRent": 40000,
"landlordOnly": true,
"maxResults": 300
}

Example — three-bedroom Kaohsiung resale homes under 20 years old:

{
"operation": "saleSearch",
"city": "17",
"saleCategory": "9",
"bedrooms": "3",
"buildingAge": "10_20",
"maxResults": 500
}

Example — expand rentals you already have ids for:

{
"operation": "rentDetail",
"listingUrls": [
{ "url": "https://rent.591.com.tw/21822748" },
{ "url": "https://rent.591.com.tw/21967232" }
]
}

📤 Output

Results are saved to the Apify dataset with 50+ fields. The most-used ones:

FieldTypeDescription
listingIdnumber591's own listing id
propertyTitlestringThe listing title as 591 publishes it
urlstringDirect link to the listing on 591
listingTypestringrent, sale or presale
propertyTypestring591's category — 整層住家, 住宅, 預售屋 …
pricenumberMonthly rent, or the asking price, in NT$
priceTextstringThe price exactly as 591 shows it
pricePerPingnumberNT$ per 坪, on sale listings
areaPingnumberFloor area in 坪
layoutstringThe 房/廳/衛 layout string
bedroomsnumberBedroom count parsed from the layout
floorTextstringFloor and building height, e.g. 9F/14F
city / districtstring台北市 / 中山區
nearestStationstringThe station 591 names on the card
nearestStationDistanceMnumberDistance to it, in metres
listerName / listerRolestringWho posted it, and whether they are 屋主 or 仲介
isLandlordbooleanTrue when the owner posted it
photosarrayEvery photo URL on the listing
listerPhonestringOn rental detail and presale rows
latitude / longitudenumberOn rental detail rows
facilitiesarrayAppliances and fittings, on rental detail rows
developerstringOn presale rows

Example row (rental search):

{
"listingId": 21822748,
"propertyTitle": "南京復興生活圈|寓居專任・家具全配",
"url": "https://rent.591.com.tw/21822748",
"listingType": "rent",
"propertyType": "整層住家",
"price": 67000,
"priceText": "67,000 元/月",
"currency": "TWD",
"areaPing": 25,
"layout": "2房1廳",
"bedrooms": 2,
"floorText": "9F/14F",
"city": "台北市",
"district": "中山區",
"address": "中山區-長安東路二段",
"communityName": "朱崙街 龍江路 冠德君閱 建國北路一段",
"nearestStation": "距南京復興",
"nearestStationDistanceM": 511,
"tags": ["近捷運", "拎包入住", "近商圈", "有電梯"],
"photoCount": 13,
"listerName": "謝小姐",
"listerRole": "仲介",
"isLandlord": false,
"extraFeesText": "(額外費用 4,549元/月)"
}

💼 Use Cases & Examples

1. Taipei Rent Index by District

A property analyst wants rent per ping by district, updated monthly.

Input: rentSearch, city 台北市, maxResults 5000 Output: every rental with rent, ping area, district and layout as numbers Use: group by district, divide rent by ping, and you have the index no single 591 page shows.

2. Owner-Direct Rental Sourcing

A relocation agency wants listings with no agency fee attached.

Input: rentSearch with landlordOnly: true and a rent band Output: only the listings 591 marks as posted by the 屋主 Use: a shortlist of properties where the tenant deals with the owner directly.

3. Presale Pipeline and Developer Tracking

A construction supplier wants to know what is being built, and who to call.

Input: presaleSearch across six cities Output: project name, developer, build stage, asking range per ping, sales-office phone Use: a quarterly build pipeline with contacts attached, instead of a rumour mill.

4. Estate Agency Lead Generation

A proptech founder wants to know which agencies hold the stock in a city.

Input: saleSearch for a city, then rentDetail on the rentals that matter Output: the lister's name and role on every row; the phone and brokerage name on detail rows Use: rank agencies by listing count before approaching any of them.

5. Rental Yield Screening

An investor wants gross yield by district, not by rumour.

Input: two runs — rentSearch and saleSearch for the same city Output: monthly rent and asking price, both with ping area Use: match on area and layout, annualise the rent, divide by the price.

6. MRT Catchment Analysis

A researcher wants the rent premium inside 500 metres of a station.

Input: rentSearch for 台北市 or 高雄市 with a large maxResults Output: nearestStation and nearestStationDistanceM on every rental row Use: bucket by walking distance and the premium stops being folklore.

7. New Listing Monitoring

An agency wants today's new stock, and only today's.

Input: rentSearch with sortBy: "newest", on a daily schedule Output: rows carrying the posted timestamp and 591's own refresh note Use: keep the ids you have seen, and pay only for what appeared since yesterday.


🔗 Integration Examples

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/591-com-property-scraper').call({
operation: 'rentSearch',
city: '1',
rentalType: '1',
maxRent: 40000,
maxResults: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/591-com-property-scraper').call(
run_input={
'operation': 'saleSearch',
'city': '17',
'saleCategory': '9',
'bedrooms': '3',
'maxResults': 500,
}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item['propertyTitle'], item.get('price'), item.get('district'))

cURL

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~591-com-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "presaleSearch", "city": "8", "maxResults": 100}'

Automation Workflows (N8N / Zapier / Make)

  1. Trigger: a daily schedule, or a webhook from your own app
  2. HTTP Request: call the Actor API with your search
  3. Process: filter the JSON on rent, ping area or district
  4. Action: append to a sheet, write to a database, or alert on new listings

📊 Performance & Pricing

FREE Tier (Try It Now)

  • 25 listings per run — every field, every operation, same quality
  • No credit card required
  • Enough to check the data before you commit
  • Unlimited listings per run
  • Pay per listing returned — an empty search costs nothing
  • Failed inputs are never charged

💰 Rental listings are $0.80 per 1,000. That is under both Store rivals, on a row that also carries the MRT distance, the ping area and the owner flag.

🔗 View current pricing


❓ Frequently Asked Questions

Q: Do I need a proxy, a browser or a 591 account? A: No. There is no proxy setting to configure and no account to connect, which is why the price per listing is what it is.

Q: Is the data in Chinese or English? A: 591 publishes in Traditional Chinese and the rows carry its text exactly as written. Alongside it every row carries the numbers as numbers and the ids as ids, so you can group and filter without reading a word of Chinese. Every category in the input form is labelled with its English meaning too.

Q: What is a ping? A: The 坪, Taiwan's standard unit of floor area. It is about 3.31 square metres, or 35.6 square feet. Every price on 591 is quoted against it. Multiply by 3.30579 for square metres.

Q: How many listings can one search return? A: Taipei carries roughly 11,600 rentals and 24,700 sale listings at any moment. The run pages through the board until it hits your maxResults. To slice a big city, use a rent band, a bedroom count, a building-age band, or paste district-level 591 addresses into searchUrls.

Q: What does Rental Detail add over a search row? A: The search row is everything on the card — price, ping area, layout, floor, district, photos, tags, nearest station and who posted it. Rental Detail opens the advert and adds GPS coordinates, the deposit and management fee, the appliance list, the complete description, nearby transport with distances, and the lister's phone number.

Q: Why does a presale project have no single price? A: Because 591 does not publish one. A presale project is a whole building, so the board quotes a range per ping — 185~210 萬/坪. The row carries that range as text and leaves the numeric price empty rather than inventing a midpoint.

Q: Can I search a single district? A: Two ways. Put the district name in the keyword box, or open the district page on 591, copy the address and paste it into searchUrls.

Q: Does this cover 實價登錄, the actual-transaction-price registry? A: No. That is a government dataset of completed sales. Every price here is an asking price a lister set on 591.


🐛 Troubleshooting

A run returns no listings

  • Widen it: clear the keyword, set the rental type or sale category back to "any", or drop the rent band.
  • Check the board matches the operation. A sale category has no meaning on the rental board.

Search URLs are being skipped

  • Paste addresses from the board the operation reads: rent.591.com.tw for Rental Search, sale.591.com.tw for Resale Search, newhouse.591.com.tw for Presale.
  • Or clear searchUrls entirely and use the form instead.

"Items in input.listingUrls do not contain valid URLs"

  • Rental addresses have to be full URLs. Take the number from the listingId column and put https://rent.591.com.tw/ in front of it.

A rental id comes back as "no longer published"

  • 591 removes a listing the moment it is rented or withdrawn. Run a fresh Rental Search for live ids. That row is not charged.

Fewer rows than I set in maxResults

  • The board ran out. The run log prints the total 591 reports for your search before it starts paging, so you can see the ceiling.

Bedrooms filter removed studios I wanted

  • 591's layout string carries no 房 count on studios and open-plan units, so setting a bedroom count excludes them by design. Leave it on "any" and filter on layout yourself.

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.

591 and 591房屋交易網 are trademarks of Digital Technology (Addcn) Co., Ltd. This Actor is not affiliated with, endorsed by, or sponsored by 591 or Addcn.


🤝 Support

Join our active support community


Built by SIÁN Agency | More Tools