591.com.tw Scraper - Taiwan Rentals, Sales & Presale
Pricing
from $0.70 / 1,000 rental searches
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Ü
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
591.com.tw Scraper - Taiwan Rentals, Sales & Presale 🚀
🎉 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.
| Operation | Returns | Rows per request | Notes |
|---|---|---|---|
rentSearch | Rental Search | ~30 | rentals by city, property type, rent band, bedrooms and keyword |
saleSearch | Resale Search | ~31 | second-hand sale listings by city, category, bedrooms and building age |
presaleSearch | Presale Project Search | ~10 | presale and new-build projects with developer and sales-office phone |
rentDetail | Rental Detail | 1 | one 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
| Field | Type | Required | Description |
|---|---|---|---|
operation | string | No | rentSearch (default), saleSearch, presaleSearch or rentDetail |
city | string | No | One of 591's 22 area ids; 1 = 台北市 Taipei City (default) |
maxResults | integer | No | Row budget for the whole run (default 100) |
keyword | string | No | 591's own search box, in Traditional Chinese — community, street or station names |
rentalType | string | No | Rental board only: 整層住家, 獨立套房, 分租套房, 雅房, 車位, 其他 |
saleCategory | string | No | Sale board only: 住宅, 套房, 店面, 辦公, 住辦, 土地, 廠房, 車位 |
bedrooms | string | No | 1 to 5+, matched against the 房 count in 591's layout string |
minRent / maxRent | integer | No | Rental board only: monthly rent band in NT$ |
buildingAge | string | No | Sale board only: 591's own bands — under 5, 5-10, 10-20, 20-30, 30-40 years |
landlordOnly | boolean | No | Rental board only: keep just the 屋主-posted listings |
sortBy | string | No | 591's default order, newest first, or rent low-to-high / high-to-low |
searchUrls | array | No | Paste 591 search addresses instead of using the form |
listingUrls | array | No | Rental 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:
| Field | Type | Description |
|---|---|---|
listingId | number | 591's own listing id |
propertyTitle | string | The listing title as 591 publishes it |
url | string | Direct link to the listing on 591 |
listingType | string | rent, sale or presale |
propertyType | string | 591's category — 整層住家, 住宅, 預售屋 … |
price | number | Monthly rent, or the asking price, in NT$ |
priceText | string | The price exactly as 591 shows it |
pricePerPing | number | NT$ per 坪, on sale listings |
areaPing | number | Floor area in 坪 |
layout | string | The 房/廳/衛 layout string |
bedrooms | number | Bedroom count parsed from the layout |
floorText | string | Floor and building height, e.g. 9F/14F |
city / district | string | 台北市 / 中山區 |
nearestStation | string | The station 591 names on the card |
nearestStationDistanceM | number | Distance to it, in metres |
listerName / listerRole | string | Who posted it, and whether they are 屋主 or 仲介 |
isLandlord | boolean | True when the owner posted it |
photos | array | Every photo URL on the listing |
listerPhone | string | On rental detail and presale rows |
latitude / longitude | number | On rental detail rows |
facilities | array | Appliances and fittings, on rental detail rows |
developer | string | On 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 ApifyClientclient = 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)
- Trigger: a daily schedule, or a webhook from your own app
- HTTP Request: call the Actor API with your search
- Process: filter the JSON on rent, ping area or district
- 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
PAID Tier (Production Ready)
- 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.
❓ 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.twfor Rental Search,sale.591.com.twfor Resale Search,newhouse.591.com.twfor Presale. - Or clear
searchUrlsentirely 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
listingIdcolumn and puthttps://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
layoutyourself.
⚖️ 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.
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
- For issues or questions, open an issue on the Actor page
- Check the SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools