From c6159807e3c6f6ef059f600bba42a6436b6df69a Mon Sep 17 00:00:00 2001 From: nusquama Date: Tue, 10 Mar 2026 12:13:39 +0800 Subject: [PATCH] creation --- ...or-listings-and-export-csv-xlsx-with-mrscraper-and-gmail.webp | 1 + 1 file changed, 1 insertion(+) create mode 100644 workflows/Monitor Realtor listings and export CSV-XLSX with MrScraper and Gmail-13797/13797-monitor-realtor-listings-and-export-csv-xlsx-with-mrscraper-and-gmail.webp diff --git a/workflows/Monitor Realtor listings and export CSV-XLSX with MrScraper and Gmail-13797/13797-monitor-realtor-listings-and-export-csv-xlsx-with-mrscraper-and-gmail.webp b/workflows/Monitor Realtor listings and export CSV-XLSX with MrScraper and Gmail-13797/13797-monitor-realtor-listings-and-export-csv-xlsx-with-mrscraper-and-gmail.webp new file mode 100644 index 000000000..d27f1b661 --- /dev/null +++ b/workflows/Monitor Realtor listings and export CSV-XLSX with MrScraper and Gmail-13797/13797-monitor-realtor-listings-and-export-csv-xlsx-with-mrscraper-and-gmail.webp @@ -0,0 +1 @@ +{"id":"iOwtV1xQ6nF6sP82","meta":{"instanceId":"ff80ff7708e50014ab81fa837934b47761ca37bb76e027238bca430a67bf5090","templateCredsSetupCompleted":true},"name":"Real Estate Price Monitoring","tags":[],"nodes":[{"id":"d8474c1d-a889-4db1-8d23-89317d1a88cb","name":"When clicking ‘Execute workflow’","type":"n8n-nodes-base.manualTrigger","position":[-96,0],"parameters":{},"typeVersion":1},{"id":"0ddbfb32-faa7-4f39-b843-3ab37cee2a96","name":"Filtering Result","type":"n8n-nodes-base.code","position":[448,0],"parameters":{"jsCode":"const totalPages = Math.max(1, Number($input.first().json.data.data.result) || 1);\n\nconst output = [];\n\nfor (const item of $input.all()) {\n const url = item.json.data.url;\n\n output.push({ json: { url } });\n\n for (let p = 2; p <= totalPages; p++) {\n output.push({\n json: {\n url: `${url}/pg-${p}`,\n },\n });\n }\n}\n\nreturn output;"},"typeVersion":2},{"id":"e557d520-74a3-439e-92e7-4e1ff1ead330","name":"Loop Over Items","type":"n8n-nodes-base.splitInBatches","position":[720,0],"parameters":{"options":{},"batchSize":20},"typeVersion":3},{"id":"03d7f38a-7617-451d-9e78-b1b9899077c7","name":"Get Total Page","type":"n8n-nodes-mrscraper.mrscraper","position":[208,0],"parameters":{"url":"https://www.realtor.com/realestateandhomes-search/Germantown_TN/price-5+1234567890","scraperId":"0953fe53-aede-4d73-b282-4f62503f2020","requestOptions":{}},"credentials":{"mrscraperApi":{"id":"credential-id","name":"Rafli"}},"typeVersion":1.1},{"id":"0cfc10fe-8d81-43b9-b560-b34938c3f161","name":"Extract Data","type":"n8n-nodes-mrscraper.mrscraper","position":[1072,128],"parameters":{"url":"https://www.realtor.com/realestateandhomes-search/Germantown_TN/price-5+1234567890","scraperId":"a9cbb053-d808-4804-97cc-e49f703f20df","requestOptions":{}},"credentials":{"mrscraperApi":{"id":"credential-id","name":"Rafli"}},"typeVersion":1.1},{"id":"0cb98fcb-e358-4a13-9ffe-d527a3e8e42e","name":"Filter and Merge Result","type":"n8n-nodes-base.code","position":[1072,-16],"parameters":{"jsCode":"const output = [];\n\nfor (const item of $input.all()) {\n const results = item.json?.data?.data?.result || [];\n\n for (const r of results) {\n output.push({ json: r });\n }\n}\n\nreturn output;"},"typeVersion":2},{"id":"50740456-15a9-4ee0-9715-904cb23f9361","name":"Convert to File","type":"n8n-nodes-base.convertToFile","position":[1328,-16],"parameters":{"options":{"fileName":"=House_Germantown_TN_{{ $today.format(\"yyyy-MM-dd\")}}.xlsx"},"operation":"xlsx"},"typeVersion":1.1},{"id":"05631f2a-e45c-4d7b-920d-76ea5e237035","name":"Send a message","type":"n8n-nodes-base.gmail","disabled":true,"position":[1568,-16],"webhookId":"36aaac53-626a-4612-9c79-b4d80a7fc8e4","parameters":{"sendTo":"user@example.com","message":"This is the data you extracted.","options":{"attachmentsUi":{"attachmentsBinary":[{}]}},"subject":"Realtor House Data"},"credentials":{"gmailOAuth2":{"id":"credential-id","name":"Gmail account"}},"typeVersion":2.2},{"id":"b71df79d-4017-4916-8d5a-8eec52ce6a9d","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-96,176],"parameters":{"rule":{"interval":[{"field":"weeks"}]}},"typeVersion":1.3},{"id":"b222461a-2a77-4e38-90ed-2c494e0546d2","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[144,-80],"parameters":{"width":464,"height":224,"content":"## Phase 1 — Get All Page Url "},"typeVersion":1},{"id":"e59b4fab-b35e-491e-9b42-3b2c8a4526c1","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[640,-80],"parameters":{"color":5,"width":592,"height":416,"content":"## Phase 2 — Scrape and Extract Data\n"},"typeVersion":1},{"id":"336aead9-6c6b-4836-8903-5cc32f8d76db","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1264,-80],"parameters":{"color":4,"width":496,"height":400,"content":"## Phase 3 — Convert and Send The Result\n"},"typeVersion":1},{"id":"2c970a89-9861-4f02-889d-8772c1d87cbc","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[144,160],"parameters":{"width":464,"height":304,"content":"### Goal\nGenerate all pagination URLs and filter them for downstream processing..\n\n### What To Do\n1. Run **Manual Scraper** to retrieve the total number of pagination pages.\n2. Filter the results and transform the base URL into paginated URLs.\n\n### Output\nComplete list of pagination URLs."},"typeVersion":1},{"id":"5f70858f-f6d8-4eb6-a26c-dbc49cb06650","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[640,352],"parameters":{"color":5,"width":592,"height":352,"content":"### Goal\nScrape and extract property data from multiple real estate listings –Automatically collect real estate information from each URL and combine the results into a single dataset.\n\n### What To Do\n1. Loop through each listing page URL from Phase 1.\n2. For each URL, call **Manual Scraper (Rerun)** using the scraperId from the mrscraper platform that was previously created.\n3. Extract all relevant property details from each URL (e.g., price, title, location).\n4. Filter, clean, and merge the results into a consolidated dataset.\n\n### Output \nComplete property details from all listing URLs in a structured format."},"typeVersion":1},{"id":"f122b1c7-589b-45d8-a468-4bcef3342a8b","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[1264,336],"parameters":{"color":4,"width":496,"height":336,"content":"### Goal\nConvert the results into the desired format and send them to your email or upload it to your drive.\n\n### What To Do\n1. Choose the desired file format for the results (e.g., CSV, Excel).\n2. Send the formatted results to your Gmail account.\n3. Optionally, upload the results to your Google Drive for storage or sharing.\n\n### Output\nFormatted result file ready for download, analysis, or distribution."},"typeVersion":1},{"id":"ca2298e9-9a5a-4f3b-9d66-54778d82fb1f","name":"Upload file","type":"n8n-nodes-base.googleDrive","position":[1568,176],"parameters":{"driveId":{"__rl":true,"mode":"list","value":"My Drive"},"options":{},"folderId":{"__rl":true,"mode":"list","value":"root","cachedResultName":"/ (Root folder)"}},"credentials":{"googleDriveOAuth2Api":{"id":"credential-id","name":"Google Drive Maul"}},"typeVersion":3},{"id":"0a809608-6176-4eb6-a5b1-51c09305628c","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[-208,-80],"parameters":{"color":3,"width":320,"height":416,"content":"## Phase 1 — Config\n"},"typeVersion":1},{"id":"cdeabbc3-bdec-4cf9-b484-9272cf06aa0b","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[-208,352],"parameters":{"color":3,"width":320,"height":304,"content":"### Goal\nRun the workflow automatically on a scheduled basis.\n\n### What To Do\n1. Configure the workflow scheduler in n8n to run at your desired intervals.\n\n### Output\nThe workflow executes automatically according to the schedule, collecting and delivering the latest real estate data.\n"},"typeVersion":1},{"id":"cb8d610b-9715-4e67-8f72-592741cea617","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[-1104,-240],"parameters":{"color":4,"width":864,"height":1216,"content":"# Automated real estate monitoring with MrScraper\n\n## Who’s it for\nReal estate investors, agents, proptech teams, and business intelligence professionals who need continuous property price monitoring with automated data collection and AI-ready outputs for reporting and decision-making.\n\n## What it does\nThis workflow automatically collects real estate listing data from Realtor, including key fields such as property price, listing title, and location. It is designed to capture the full set of available real estate data for the selected search criteria.\n\nThe workflow consolidates the scraped data into a single structured dataset, removes inconsistencies, and formats the output into a clean CSV file. This makes it easy to import into spreadsheets, databases, or analytics tools for further analysis, reporting, or automation.\n\n## How it works\n- **Accepts a real estate search URL from the same domain**, allowing the workflow to be reused across different locations and filters.\n\n- **Collects and extracts configurable real estate fields** (such as price, title, location, and other listing details) based on your data requirements.\n\n- **Automatically navigates through all related real estate result pages** to ensure the extracted dataset is complete.\n\n- **Converts the final aggregated dataset into a clean CSV** file for easy use in analysis, reporting, or downstream automation.\n\n## How to set up\n### 1. Set up your scraper\n\nCreate two manual scrapers on the [MrScraper Platform](https://app.mrscraper.com/):\n\n- One scraper to collect the number of results page\n\n- One scraper to extract detailed data from each listing URL\n\nThis separation ensures the workflow can scale and be reused efficiently.\n\n### 2. Customize extracted data\n\nIn the data extraction scraper, customize the fields according to your needs (for example: price, title, location, etc.).\n\nIf you need help automating or configuring the extraction logic, you can contact the MrScraper team for assistance.\n\n### 3. Configure API credentials\n\n- MrScraper: Generate your API token from Manual API Access or your profile page. This token allows n8n to trigger and retrieve data from your scrapers.\n\n- Gmail OAuth2: Required to send the extracted CSV results via email.\n\n- Google Drive OAuth2 (optional): Used to automatically upload the CSV output to Google Drive for storage and sharing.\n"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"binaryMode":"separate","availableInMCP":false,"executionOrder":"v1"},"versionId":"28a3f29f-ac40-49e7-98b4-432a53e1624d","connections":{"Extract Data":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"Get Total Page":{"main":[[{"node":"Filtering Result","type":"main","index":0}]]},"Convert to File":{"main":[[{"node":"Send a message","type":"main","index":0},{"node":"Upload file","type":"main","index":0}]]},"Loop Over Items":{"main":[[{"node":"Filter and Merge Result","type":"main","index":0}],[{"node":"Extract Data","type":"main","index":0}]]},"Filtering Result":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Get Total Page","type":"main","index":0}]]},"Filter and Merge Result":{"main":[[{"node":"Convert to File","type":"main","index":0}]]},"When clicking ‘Execute workflow’":{"main":[[{"node":"Get Total Page","type":"main","index":0}]]}}} \ No newline at end of file