591.com.tw Scraper | Taiwan Real Estate Data
Pricing
from $0.70 / 1,000 property listings
591.com.tw Scraper | Taiwan Real Estate Data
Extract commercial and residential property listings across Taiwan from 591.com.tw with unlimited coverage, rich listing detail, contact data, media, pricing, and community context. Built for enterprise-grade Taiwan real estate intelligence, deal sourcing and automated analytics pipelines.
Pricing
from $0.70 / 1,000 property listings
Rating
0.0
(0)
Developer
Fatih Tahta
Maintained by CommunityActor stats
1
Bookmarked
4
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
591.com.tw Scraper | Taiwan Property Data
Slug: fatihtahta/591-taiwan-scraper
Overview
591.com.tw Scraper | Taiwan Property Data collects structured Taiwan property records from 591 search result pages, including sale, rental, commercial, land, and community-oriented property data. It captures listing identifiers, titles, public listing URLs, pricing, location details, property attributes, media, contact information, amenities, metrics, flags, and source context when available. 591.com.tw is one of Taiwan's major property marketplaces, making its public listing data useful for property research, market monitoring, lead review, and operational reporting. The actor turns repeatable 591 search URLs into consistent JSON records that can be used in analytics, enrichment, monitoring, and downstream data acquisition workflows. It is designed for dependable recurring collection patterns while reflecting the public data available at the time each run is executed.
Why Use This Actor
- Market research and analytics teams: build structured extraction workflows for pricing, availability, location coverage, property types, and market intelligence across Taiwan property segments.
- Product and content teams: maintain property catalogs, comparison experiences, local market pages, or internal review queues with normalized public listing records.
- Developers and data engineering teams: feed repeatable collection outputs into downstream systems, warehouses, search indexes, or enrichment pipelines with predictable JSON structure.
- Lead generation and enrichment teams: identify public listing opportunities, contact signals, location attributes, and property context for review and qualification workflows.
- Monitoring and competitive tracking teams: schedule recurring runs to observe listing movement, pricing changes, geographic coverage, and category-level activity over time.
Common Use Cases
- Market intelligence: monitor property supply, asking prices, unit prices, floor plans, districts, media volume, and listing availability across selected 591 result pages.
- Lead generation: build targeted prospect lists from public property listings that include contact names, contact methods, listing URLs, and location context when available.
- Competitive monitoring: track changes across sale, rental, commercial, land, or community result pages for recurring reporting.
- Catalog and directory building: populate internal databases with structured public property records, media references, pricing fields, and address metadata.
- Data enrichment: add current public listing attributes to CRM, BI, risk, underwriting, or analytics datasets.
- Recurring reporting: schedule periodic runs for dashboards, alerts, segment summaries, or operational reporting.
Quick Start
- Open 591.com.tw and create the search result page that matches your target segment, such as sale, rent, commercial, land, or community data.
- Copy the resulting 591 search URL and add it to
startUrls. - Set a small
limitfor the first validation run, such as 10 or 25 records per URL. - Choose whether
enrich_datashould collect richer listing details, contact context, amenities, photos, and related fields when available. - Run the actor in Apify Console and inspect the first dataset records to confirm the shape matches your workflow.
- Increase the limit, add additional URLs, or schedule the actor after the output is verified.
Input Parameters
The input schema accepts 591 search result URLs, an optional per-URL result limit, and an enrichment toggle.
| Parameter | Type | Description | Default |
|---|---|---|---|
startUrls | array of strings | Supported 591 result URLs to collect from. Add sale, rental, business, land, or community search pages as separate URLs. Use 591's public filters first, then paste the resulting search URLs here. | – |
limit | integer | Maximum number of records to save for each URL. Minimum value is 1. Leave empty to collect available results without a per-URL cap. | – |
enrich_data | boolean | When enabled, records may include richer public details such as descriptions, layout information, amenities, scores, transaction history, contact details, and additional photos. Disable it when search-level fields are enough. | true |
Choosing Inputs
Use startUrls as the primary way to define scope. Create the desired search on 591.com.tw first, including any public filters for location, segment, property category, price, area, or sort options, then add the resulting URL to the actor input. Narrower 591 search URLs produce more targeted datasets, while broader URLs improve discovery and may return a wider range of property records. For first runs, set a conservative limit so you can validate the output shape quickly before scaling collection. Use one segment or geography per URL when you need clean downstream segmentation; add multiple URLs when you want to collect several search scopes in one run.
Example Inputs
Sale Listing Validation Run
{"startUrls": ["https://sale.591.com.tw/?regionid=1&firstRow=0&shType=list"],"limit": 25,"enrich_data": true}
Rental Monitoring Run
{"startUrls": ["https://rent.591.com.tw/list?region=1§ion=5"],"limit": 100,"enrich_data": false}
Multi-Segment Discovery Run
{"startUrls": ["https://business.591.com.tw/list?type=1®ion=1&kind=5","https://land.591.com.tw/list?region=21&type=2&kind=11","https://market.591.com.tw/list?regionId=1§ionId=5&shopId=74"],"limit": 50,"enrich_data": true}
Output
9.1 Output Destination
The actor writes results to an Apify dataset as JSON records. The dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs with minimal post-processing.
When multiple entity types or record shapes exist, this README documents each shape separately based on the provided Example Output.
9.2 Record Envelope And Stable Identifiers
Each dataset item is a property listing record. The example record includes top-level identifiers, listing metadata, nested source context, pricing, location, property details, community details, media, contact information, metrics, amenities, flags, and listing attributes.
The recommended idempotency key is id. If your downstream system requires a numeric key, listing_id or identifiers.house_id can also be used for listing-level matching. For maximum traceability across repeated runs, keep source_context.fingerprint and url alongside the listing identifier. Deduplication and upserts should use id as the primary key, with url or source_context.fingerprint as supporting keys when reconciling historical records. Stable identifiers make records easier to merge, deduplicate, and sync across repeated runs.
9.3 Examples
Example: sale listing (listing_type = "sale")
{"id": "20059610","listing_id": 20059610,"listing_type": "sale","url": "https://sale.591.com.tw/home/house/detail/2/20059610.html","title": "全新/碧硯閣/24層SRC/大器落成/三房車位*<AGENT_NAME>","description": "1,台北市區稀有新屋聚落。 2,方正基地有1400多坪,四面鄰路。 3,近捷運站,8~10分鐘。 4,知名建設公司,社區代表作。 5,氣派/24層樓,全新交屋。 6,方正/三房,衛浴有窗,特別通風,也有坡平車位。 7,有24小時管理,有健身房,瑜伽教室,兒童遊戲區,媽媽教室,空中花園,公設種類多。 8,基地退縮4米,棟距寬。 9,街道綠樹林立。 <BROKERAGE_NAME> 經紀人:<AGENT_NAME> 證照號碼:<LICENSE_NUMBER>","source_context": {"seed_id": "1f94cb3feb36","seed_type": "url","seed_value": "https://sale.591.com.tw/?firstRow=0®ionid=1&shType=list","page_index": 1,"source_url": "https://bff-house.591.com.tw/v1/web/sale/list?category=1&firstRow=0®ionid=1&shType=list×tamp=1778688929809&type=2","detail_url": "https://bff-house.591.com.tw/v1/web/sale/detail?__v__=1&id=20059610×tamp=1778688939390","fingerprint": "6cfc674cd69b6a2d52f0"},"identifiers": {"house_id": 20059610},"pricing": {"first_payment": 1799.7,"first_payment_ratio": 20,"monthly_payment": 155725,"mortgage_ratio": 0.8,"price": 5999,"show_price": "5,999","taxes": 171.2,"unit_price": "127.58萬/坪"},"location": {"address": "<STREET_ADDRESS>","latitude": "25.0555866","longitude": "121.5638776","region_id": 1,"region_name": "台北市","section_id": 4,"section_name": "松山區"},"property": {"all_floors": 24,"area": 54.71,"balcony_area": 3.8,"balcony_count": 1,"bathroom_count": 2,"car_place": "10.51坪,平面式,已含售金內","current_use": "住宅","detail_info": {"layout": {"name": "格局","value": "3房2廳2衛1陽台"},"house_age": {"name": "屋齡","value": "10個月"},"area": {"name": "權狀坪數","value": "54.71坪(含車位)"},"floor": {"name": "樓層","value": "3F/24F"},"direction": {"name": "朝向","value": "坐南朝北"},"community": {"name": "社區","value": "鳴森大苑-碧硯閣"},"z_address": {"name": "地址","value": "<FULL_ADDRESS>"},"kind": {"name": "現況","value": "住宅"},"shape": {"name": "型態","value": "電梯大樓"},"fitment": {"name": "裝潢程度","value": "簡易裝潢"},"manage_price": {"name": "管理費","value": "5000元/月"},"is_renting": {"name": "帶租約","value": "否"},"purpose": {"name": "法定用途","value": "住家用"},"car_place": {"name": "車位","value": "10.51坪,平面式,已含售金內"},"ratio_rate": {"name": "公設比","value": "30%"}},"fitment_name": "簡易裝潢","floor": "3F/24F","floor_info": "3F/24F","ground_area": 5.78,"hall_count": 2,"house_age": 0,"kind": 9,"kind_name": "住宅","layout": "3房2廳2衛1陽台","main_area": 27.09,"public_area": 13.3,"room": "3房2廳2衛","room_count": 3,"shape_name": "電梯大樓","show_house_age": "10個月"},"community": {"community_link": "https://market.591.com.tw/5855864","community_name": "鳴森大苑-碧硯閣"},"media": {"avatar_url": "<AGENT_AVATAR_URL>","detail_photo_urls": ["https://img1.591.com.tw/video/cover/2026-04-19/3046253.png!1000x.water2.png","https://img1.591.com.tw/house/2026/04/19/177661006076395706.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659881801435607.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659881798892607.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659881798897709.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659881959479201.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659881801454100.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659881800106004.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659881932887808.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659881946718203.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659881945644705.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659881957983904.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659882061938409.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659882089665109.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659882091837802.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659882115431403.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659882120754102.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659882203290102.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659882211245208.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659882226858209.jpg!1000x.water2.jpg"],"photo_count": 19,"photo_url": "https://img2.591.com.tw/video/cover/2026-04-19/3046253.png!1000x.water2.png","photo_urls": ["https://img1.591.com.tw/video/cover/2026-04-19/3046253.png!1000x.water2.png","https://img1.591.com.tw/house/2026/04/19/177661006076395706.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659881801435607.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659881798892607.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659881798897709.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659881959479201.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659881801454100.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659881800106004.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659881932887808.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659881946718203.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659881945644705.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659881957983904.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659882061938409.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659882089665109.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659882091837802.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659882115431403.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659882120754102.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659882203290102.jpg!1000x.water2.jpg","https://img2.591.com.tw/house/2026/04/19/177659882211245208.jpg!1000x.water2.jpg","https://img1.591.com.tw/house/2026/04/19/177659882226858209.jpg!1000x.water2.jpg"],"picture_details": [{"url": "https://img1.591.com.tw/video/cover/2026-04-19/3046253.png!1000x.water2.png","small_url": "https://img1.591.com.tw/video/cover/2026-04-19/3046253.png!1000x.water2.png","medium_url": "https://img1.591.com.tw/video/cover/2026-04-19/3046253.png!1000x.water2.png","source_url": "https://img1.591.com.tw/video/cover/2026-04-19/3046253.png!1000x.water2.png"},{"id": 473989050,"url": "https://img1.591.com.tw/house/2026/04/19/177661006076395706.jpg!1000x.water2.jpg","small_url": "https://img2.591.com.tw/house/2026/04/19/177661006076395706.jpg!400x300.jpg","medium_url": "https://img1.591.com.tw/house/2026/04/19/177661006076395706.jpg!1000x.water2.jpg","source_url": "https://img2.591.com.tw/house/2026/04/19/177661006076395706.jpg!x.water2.jpg"},{"id": 473972414,"url": "https://img1.591.com.tw/house/2026/04/19/177659881801435607.jpg!1000x.water2.jpg","small_url": "https://img1.591.com.tw/house/2026/04/19/177659881801435607.jpg!400x300.jpg","medium_url": "https://img2.591.com.tw/house/2026/04/19/177659881801435607.jpg!1000x.water2.jpg","source_url": "https://img1.591.com.tw/house/2026/04/19/177659881801435607.jpg!x.water2.jpg"},{"id": 473972411,"url": "https://img2.591.com.tw/house/2026/04/19/177659881798892607.jpg!1000x.water2.jpg","small_url": "https://img2.591.com.tw/house/2026/04/19/177659881798892607.jpg!400x300.jpg","medium_url": "https://img2.591.com.tw/house/2026/04/19/177659881798892607.jpg!1000x.water2.jpg","source_url": "https://img2.591.com.tw/house/2026/04/19/177659881798892607.jpg!x.water2.jpg"},{"id": 473972413,"url": "https://img1.591.com.tw/house/2026/04/19/177659881798897709.jpg!1000x.water2.jpg","small_url": "https://img2.591.com.tw/house/2026/04/19/177659881798897709.jpg!400x300.jpg","medium_url": "https://img2.591.com.tw/house/2026/04/19/177659881798897709.jpg!1000x.water2.jpg","source_url": "https://img1.591.com.tw/house/2026/04/19/177659881798897709.jpg!x.water2.jpg"},{"id": 473972416,"url": "https://img2.591.com.tw/house/2026/04/19/177659881959479201.jpg!1000x.water2.jpg","small_url": "https://img2.591.com.tw/house/2026/04/19/177659881959479201.jpg!400x300.jpg","medium_url": "https://img1.591.com.tw/house/2026/04/19/177659881959479201.jpg!1000x.water2.jpg","source_url": "https://img1.591.com.tw/house/2026/04/19/177659881959479201.jpg!x.water2.jpg"},{"id": 473972412,"url": "https://img2.591.com.tw/house/2026/04/19/177659881801454100.jpg!1000x.water2.jpg","small_url": "https://img1.591.com.tw/house/2026/04/19/177659881801454100.jpg!400x300.jpg","medium_url": "https://img1.591.com.tw/house/2026/04/19/177659881801454100.jpg!1000x.water2.jpg","source_url": "https://img2.591.com.tw/house/2026/04/19/177659881801454100.jpg!x.water2.jpg"},{"id": 473972410,"url": "https://img2.591.com.tw/house/2026/04/19/177659881800106004.jpg!1000x.water2.jpg","small_url": "https://img2.591.com.tw/house/2026/04/19/177659881800106004.jpg!400x300.jpg","medium_url": "https://img2.591.com.tw/house/2026/04/19/177659881800106004.jpg!1000x.water2.jpg","source_url": "https://img1.591.com.tw/house/2026/04/19/177659881800106004.jpg!x.water2.jpg"},{"id": 473972415,"url": "https://img2.591.com.tw/house/2026/04/19/177659881932887808.jpg!1000x.water2.jpg","small_url": "https://img2.591.com.tw/house/2026/04/19/177659881932887808.jpg!400x300.jpg","medium_url": "https://img1.591.com.tw/house/2026/04/19/177659881932887808.jpg!1000x.water2.jpg","source_url": "https://img2.591.com.tw/house/2026/04/19/177659881932887808.jpg!x.water2.jpg"},{"id": 473972418,"url": "https://img1.591.com.tw/house/2026/04/19/177659881946718203.jpg!1000x.water2.jpg","small_url": "https://img1.591.com.tw/house/2026/04/19/177659881946718203.jpg!400x300.jpg","medium_url": "https://img2.591.com.tw/house/2026/04/19/177659881946718203.jpg!1000x.water2.jpg","source_url": "https://img1.591.com.tw/house/2026/04/19/177659881946718203.jpg!x.water2.jpg"},{"id": 473972419,"url": "https://img1.591.com.tw/house/2026/04/19/177659881945644705.jpg!1000x.water2.jpg","small_url": "https://img2.591.com.tw/house/2026/04/19/177659881945644705.jpg!400x300.jpg","medium_url": "https://img2.591.com.tw/house/2026/04/19/177659881945644705.jpg!1000x.water2.jpg","source_url": "https://img2.591.com.tw/house/2026/04/19/177659881945644705.jpg!x.water2.jpg"},{"id": 473972417,"url": "https://img2.591.com.tw/house/2026/04/19/177659881957983904.jpg!1000x.water2.jpg","small_url": "https://img1.591.com.tw/house/2026/04/19/177659881957983904.jpg!400x300.jpg","medium_url": "https://img1.591.com.tw/house/2026/04/19/177659881957983904.jpg!1000x.water2.jpg","source_url": "https://img2.591.com.tw/house/2026/04/19/177659881957983904.jpg!x.water2.jpg"},{"id": 473972421,"url": "https://img1.591.com.tw/house/2026/04/19/177659882061938409.jpg!1000x.water2.jpg","small_url": "https://img1.591.com.tw/house/2026/04/19/177659882061938409.jpg!400x300.jpg","medium_url": "https://img2.591.com.tw/house/2026/04/19/177659882061938409.jpg!1000x.water2.jpg","source_url": "https://img2.591.com.tw/house/2026/04/19/177659882061938409.jpg!x.water2.jpg"},{"id": 473972422,"url": "https://img2.591.com.tw/house/2026/04/19/177659882089665109.jpg!1000x.water2.jpg","small_url": "https://img1.591.com.tw/house/2026/04/19/177659882089665109.jpg!400x300.jpg","medium_url": "https://img1.591.com.tw/house/2026/04/19/177659882089665109.jpg!1000x.water2.jpg","source_url": "https://img2.591.com.tw/house/2026/04/19/177659882089665109.jpg!x.water2.jpg"},{"id": 473972423,"url": "https://img1.591.com.tw/house/2026/04/19/177659882091837802.jpg!1000x.water2.jpg","small_url": "https://img2.591.com.tw/house/2026/04/19/177659882091837802.jpg!400x300.jpg","medium_url": "https://img2.591.com.tw/house/2026/04/19/177659882091837802.jpg!1000x.water2.jpg","source_url": "https://img2.591.com.tw/house/2026/04/19/177659882091837802.jpg!x.water2.jpg"},{"id": 473972424,"url": "https://img1.591.com.tw/house/2026/04/19/177659882115431403.jpg!1000x.water2.jpg","small_url": "https://img1.591.com.tw/house/2026/04/19/177659882115431403.jpg!400x300.jpg","medium_url": "https://img2.591.com.tw/house/2026/04/19/177659882115431403.jpg!1000x.water2.jpg","source_url": "https://img2.591.com.tw/house/2026/04/19/177659882115431403.jpg!x.water2.jpg"},{"id": 473972425,"url": "https://img1.591.com.tw/house/2026/04/19/177659882120754102.jpg!1000x.water2.jpg","small_url": "https://img2.591.com.tw/house/2026/04/19/177659882120754102.jpg!400x300.jpg","medium_url": "https://img1.591.com.tw/house/2026/04/19/177659882120754102.jpg!1000x.water2.jpg","source_url": "https://img2.591.com.tw/house/2026/04/19/177659882120754102.jpg!x.water2.jpg"},{"id": 473972427,"url": "https://img1.591.com.tw/house/2026/04/19/177659882203290102.jpg!1000x.water2.jpg","small_url": "https://img1.591.com.tw/house/2026/04/19/177659882203290102.jpg!400x300.jpg","medium_url": "https://img1.591.com.tw/house/2026/04/19/177659882203290102.jpg!1000x.water2.jpg","source_url": "https://img2.591.com.tw/house/2026/04/19/177659882203290102.jpg!x.water2.jpg"},{"id": 473972426,"url": "https://img2.591.com.tw/house/2026/04/19/177659882211245208.jpg!1000x.water2.jpg","small_url": "https://img2.591.com.tw/house/2026/04/19/177659882211245208.jpg!400x300.jpg","medium_url": "https://img2.591.com.tw/house/2026/04/19/177659882211245208.jpg!1000x.water2.jpg","source_url": "https://img2.591.com.tw/house/2026/04/19/177659882211245208.jpg!x.water2.jpg"},{"id": 473972428,"url": "https://img1.591.com.tw/house/2026/04/19/177659882226858209.jpg!1000x.water2.jpg","small_url": "https://img2.591.com.tw/house/2026/04/19/177659882226858209.jpg!400x300.jpg","medium_url": "https://img1.591.com.tw/house/2026/04/19/177659882226858209.jpg!1000x.water2.jpg","source_url": "https://img2.591.com.tw/house/2026/04/19/177659882226858209.jpg!x.water2.jpg"}],"video_cover": "https://img2.591.com.tw/video/cover/2026-04-19/3046253.png!1000x.water2.png","video_play_count": 130,"video_url": "https://video.591.com.tw/online/target/house/hls/2026-04-19/3046253/master.m3u8"},"contact": {"contact_mobile": "<CONTACT_PHONE>","contact_name": "<CONTACT_NAME>","preferred_contact_method": "mobile"},"metrics": {"browse_breakdown": {"mobile": "1455","all": "1829","computer": 374},"browse_count": 1829,"community_sale_count": 67,"post_days": 24},"amenities": {"condition_ids": [1,11,29,51],"living_amenities": ["近便利商店","近傳統市場","近公園綠地","近學校","近醫療機構"],"tags": ["含車位","有陽台"]},"flags": {"has_carport": true,"is_down_price": false,"is_new": false,"is_renting": "否","is_vip": false},"attributes": {"refreshed_at": "25天前","posted_at": 1776562918,"house_type": 3,"sale_type": 1,"operation_tag": {"type": 1,"title": "松山區 住宅收藏排名第6名"}}}
Field Reference
Sale Listing Record
id (string, required): Stable listing identifier as a string.
listing_id (number, required): Numeric listing identifier.
listing_type (string, required): Listing segment, such as sale in the example record.
url (string, required): Public listing page URL.
title (string, optional): Listing title.
description (string, optional): Public listing description or remarks.
source_context.seed_id (string, optional): Identifier for the input source that produced the record.
source_context.seed_type (string, optional): Source input type, such as url.
source_context.seed_value (string, optional): Original input URL used for collection.
source_context.page_index (number, optional): Result page index associated with the record.
source_context.source_url (string, optional): Source URL captured for traceability.
source_context.detail_url (string, optional): Detail source reference captured for traceability when enriched details are available.
source_context.fingerprint (string, optional): Stable fingerprint useful for deduplication and audit trails.
identifiers.house_id (number, optional): Source-specific house identifier.
pricing.first_payment (number, optional): First payment amount when available.
pricing.first_payment_ratio (number, optional): First payment ratio as a percentage.
pricing.monthly_payment (number, optional): Estimated monthly payment.
pricing.mortgage_ratio (number, optional): Mortgage ratio as a decimal.
pricing.price (number, optional): Listing price. For Taiwan sale listings, values are commonly represented in ten-thousand New Taiwan dollar units.
pricing.show_price (string, optional): Display-formatted price.
pricing.taxes (number, optional): Tax amount when available.
pricing.unit_price (string, optional): Display-formatted unit price, commonly per ping.
location.address (string, optional): Public address or street-level address text.
location.latitude / location.longitude (string, optional): Geographic coordinates when available.
location.region_id / location.region_name (number/string, optional): Region identifier and display name.
location.section_id / location.section_name (number/string, optional): District or section identifier and display name.
property.all_floors (number, optional): Total floors in the building.
property.area (number, optional): Property area, commonly in ping.
property.balcony_area (number, optional): Balcony area, commonly in ping.
property.balcony_count (number, optional): Number of balconies.
property.bathroom_count (number, optional): Number of bathrooms.
property.car_place (string, optional): Parking space description.
property.current_use (string, optional): Current use of the property.
property.detail_info.layout.name / property.detail_info.layout.value (string, optional): Layout label and value.
property.detail_info.house_age.name / property.detail_info.house_age.value (string, optional): House age label and display value.
property.detail_info.area.name / property.detail_info.area.value (string, optional): Area label and display value.
property.detail_info.floor.name / property.detail_info.floor.value (string, optional): Floor label and display value.
property.detail_info.direction.name / property.detail_info.direction.value (string, optional): Orientation label and display value.
property.detail_info.community.name / property.detail_info.community.value (string, optional): Community label and display value.
property.detail_info.z_address.name / property.detail_info.z_address.value (string, optional): Address label and display value.
property.detail_info.kind.name / property.detail_info.kind.value (string, optional): Property status label and display value.
property.detail_info.shape.name / property.detail_info.shape.value (string, optional): Building type label and display value.
property.detail_info.fitment.name / property.detail_info.fitment.value (string, optional): Decoration or fit-out label and display value.
property.detail_info.manage_price.name / property.detail_info.manage_price.value (string, optional): Management fee label and display value.
property.detail_info.is_renting.name / property.detail_info.is_renting.value (string, optional): Rental-status label and display value.
property.detail_info.purpose.name / property.detail_info.purpose.value (string, optional): Legal-use label and display value.
property.detail_info.car_place.name / property.detail_info.car_place.value (string, optional): Parking label and display value.
property.detail_info.ratio_rate.name / property.detail_info.ratio_rate.value (string, optional): Shared-area ratio label and display value.
property.fitment_name (string, optional): Decoration or fit-out display name.
property.floor / property.floor_info (string, optional): Floor display text.
property.ground_area (number, optional): Land or ground area, commonly in ping.
property.hall_count (number, optional): Number of halls or living spaces.
property.house_age (number, optional): Numeric house age when available.
property.kind / property.kind_name (number/string, optional): Property kind identifier and display name.
property.layout (string, optional): Full layout text.
property.main_area (number, optional): Main area, commonly in ping.
property.public_area (number, optional): Shared or public area, commonly in ping.
property.room / property.room_count (string/number, optional): Room layout text and room count.
property.shape_name (string, optional): Building shape or type display name.
property.show_house_age (string, optional): Display-formatted house age.
community.community_link (string, optional): Public community page URL.
community.community_name (string, optional): Community or building name.
media.avatar_url (string, optional): Agent or account avatar image URL.
media.detail_photo_urls (array of strings, optional): Detail photo URLs.
media.photo_count (number, optional): Number of photos reported for the listing.
media.photo_url (string, optional): Primary photo URL.
media.photo_urls (array of strings, optional): Listing photo URLs.
media.picture_details[].id (number, optional): Image identifier when available.
media.picture_details[].url (string, optional): Image URL.
media.picture_details[].small_url (string, optional): Small image URL.
media.picture_details[].medium_url (string, optional): Medium image URL.
media.picture_details[].source_url (string, optional): Source image URL.
media.video_cover (string, optional): Video cover image URL.
media.video_play_count (number, optional): Public video play count.
media.video_url (string, optional): Public video URL when available.
contact.contact_mobile (string, optional): Public contact phone number when provided by the listing.
contact.contact_name (string, optional): Public contact name or account label.
contact.preferred_contact_method (string, optional): Preferred contact method when available.
metrics.browse_breakdown.mobile / metrics.browse_breakdown.computer / metrics.browse_breakdown.all (string/number, optional): Browse count breakdown by device or total display value.
metrics.browse_count (number, optional): Total browse count.
metrics.community_sale_count (number, optional): Number of sale listings associated with the community when available.
metrics.post_days (number, optional): Number of days since posting.
amenities.condition_ids (array of numbers, optional): Source-provided amenity or condition identifiers.
amenities.living_amenities (array of strings, optional): Nearby living amenity labels.
amenities.tags (array of strings, optional): Listing tags.
flags.has_carport (boolean, optional): Indicates whether parking is included or available.
flags.is_down_price (boolean, optional): Indicates whether the listing is marked as price-reduced.
flags.is_new (boolean, optional): Indicates whether the listing is marked as new.
flags.is_renting (string, optional): Display value for rental contract status.
flags.is_vip (boolean, optional): Indicates whether the listing is marked as VIP.
attributes.refreshed_at (string, optional): Display text for last refresh timing.
attributes.posted_at (number, optional): Posted timestamp when available.
attributes.house_type (number, optional): Source-provided house type identifier.
attributes.sale_type (number, optional): Source-provided sale type identifier.
attributes.operation_tag.type (number, optional): Source-provided operation tag type.
attributes.operation_tag.title (string, optional): Operation tag display text.
Data Quality, Guarantees, And Handling
- Structured records: results are normalized into predictable JSON objects for downstream use.
- Best-effort extraction: fields may vary by region, session, availability, listing type, account visibility, and 591.com.tw interface changes.
- Optional fields: null-check optional fields in downstream code, especially media, contact, community, metric, and enriched detail fields.
- Deduplication: use
idas the recommended stable key, withurlorsource_context.fingerprintas supporting keys when needed. - Freshness: results reflect the publicly available data at run time.
- Repeated runs: use the recommended idempotency key when syncing data into warehouses, CRMs, or search indexes.
Tips For Best Results
- Start with a small
limitto validate output shape before scaling up. - Use one geography, segment, or 591 search URL per run when you need cleaner segmentation.
- Leave the per-URL
limitempty only when you are ready to collect available records without a cap. - Create filters on 591.com.tw first, then paste the resulting URL into
startUrls. - Add additional URLs gradually so you can understand how each search scope changes coverage.
- Enable
enrich_datawhen you need detailed listing context; disable it when search-level fields are sufficient. - Use
idfor deduplication when storing results over time.
How to Run on Apify
- Open the Actor in Apify Console.
- Configure
startUrlswith the 591 result pages you want to collect. - Set the maximum number of outputs to collect per URL with
limit. - Choose whether to collect richer listing details with
enrich_data. - Click Start and wait for the run to finish.
- Download results in JSON, CSV, Excel, or other supported formats.
Scheduling & Automation
Scheduling
Automated Data Collection
Use Apify schedules to run the actor on a recurring basis and keep property datasets fresh for monitoring, reporting, and enrichment workflows. Scheduled runs are useful for recurring market snapshots, lead review queues, and listing-change analysis.
- Navigate to Schedules in Apify Console
- Create a new schedule, such as daily, weekly, or custom cron
- Configure input parameters
- Enable notifications for run completion
- Add webhooks for automated processing
Integration Options
- BI dashboards: monitor pricing, availability, geographic coverage, listing volume, and property attributes over time.
- Data warehouses: store normalized property records for historical analysis, modeling, and operational reporting.
- CRM enrichment: sync public listing, location, contact, and property attributes into account or lead records.
- Google Sheets or Airtable: review selected listings, maintain lightweight research queues, or share curated datasets with non-technical teams.
- Webhooks: trigger validation, ingestion, notification, or enrichment workflows after each completed run.
- Alerts and scheduled reports: notify teams when new records, pricing movement, or segment changes appear in recurring collections.
Export Formats And Downstream Use
Apify datasets can be exported from the run page or consumed by downstream systems. Use the format that matches your delivery and review workflow.
- JSON: for APIs, applications, and data pipelines
- CSV or Excel: for spreadsheet workflows and manual review
- API access: for automated ingestion into internal systems
- BI and warehouses: for reporting, dashboards, and historical analysis
Performance
Estimated execution times:
- Small runs (< 1,000 outputs): ~3-5 minutes
- Medium runs (1,000-5,000 outputs): ~5-15 minutes
- Large runs (5,000+ outputs): ~15-30 minutes
Execution time varies based on filters, result volume, and how much information is returned per record. Highly filtered runs can finish faster, while broad discovery or detail-rich records may take longer.
Limitations
- Availability depends on what https://591.com.tw publicly exposes at run time.
- Some optional fields may be missing on sparse records, older listings, or records without enriched public detail.
- Very broad searches may take longer or require higher limits.
- Target-side changes can affect field availability, naming, or visibility.
- Regional, account, listing type, or availability differences may change visible results.
- Contact, media, community, and metric fields should be treated as optional.
Troubleshooting
- No results returned: check that each
startUrlsvalue is a supported 591 search result URL and that the target page has matching public records. - Fewer results than expected: broaden the 591 filters, raise
limit, or verify that the target contains enough matching records. - Some fields are empty: optional fields depend on what each record publicly provides and whether enriched details are available.
- Run takes longer than expected: reduce scope, lower
limitfor validation, or split broad collection into smaller URL segments. - Output changed: compare the current output with the field reference and report a small sample if support is needed.
FAQ
What data does this actor collect?
It collects public 591.com.tw property records from supported search result URLs, including listing identifiers, titles, URLs, pricing, locations, property attributes, media, contacts, amenities, metrics, and enriched detail fields when available.
Can I filter by location, category, date, price, or other criteria?
Yes, when those filters are available on 591.com.tw. Apply the filters on 591 first, then paste the resulting search URL into startUrls.
Why did I receive fewer results than my limit?
The limit is a maximum per URL, not a guarantee. A run may return fewer records if the search page contains fewer matching public listings or if some records are unavailable at run time.
Can I schedule recurring runs?
Yes. Use Apify schedules to run the actor daily, weekly, or on a custom cron schedule for monitoring, reporting, and recurring enrichment workflows.
How do I avoid duplicates across runs?
Use id as the primary idempotency key. Keep url and source_context.fingerprint as supporting keys when syncing records into warehouses, CRMs, or search indexes.
Can I export the data to CSV, Excel, or JSON?
Yes. Apify datasets support exports in JSON, CSV, Excel, and other formats from the run page.
Does this actor collect private data?
The actor is intended to collect publicly available property listing information from 591.com.tw. Users are responsible for using collected data lawfully and responsibly.
Should I enable enrichment?
Enable enrich_data when you need richer property, media, contact, amenity, or community context. Disable it for faster runs when search-level fields are enough.
What should I include when reporting an issue?
Include the input used, the run ID, expected versus actual behavior, and a small output sample when relevant. Redact any sensitive workflow details before sharing.
Compliance & Ethics
Responsible Data Collection
This actor collects publicly available Taiwan property listing information from https://591.com.tw for legitimate business purposes, including:
- Real estate research and market analysis
- Property monitoring and operational reporting
- Lead review, enrichment, and data quality workflows
This section is informational and not legal advice. Users are responsible for ensuring their use of the actor and collected data complies with applicable laws, regulations, contractual obligations, and platform terms.
Best Practices
- Use collected data in accordance with applicable laws, regulations, and the target site's terms
- Respect individual privacy and personal information
- Use data responsibly and avoid disruptive or excessive collection
- Do not use this actor for spamming, harassment, or other harmful purposes
- Follow relevant data protection requirements where applicable, including GDPR and CCPA
Support
For help, use the actor page or Issues section. Include the input used with sensitive details redacted, the run ID, expected versus actual behavior, and a small output sample if it helps illustrate the issue.