Skip to main content

Aggregate commercial property listings with ScrapeGraphAI, Baserow and Teams

Workflow preview

Workflow preview
100%
Aggregate commercial property listings with ScrapeGraphAI, Baserow and Teams preview
Open on n8n.io

Important notice

This workflow is provided as-is. Please review and test before using in production.

1. Workflow Overview

Property Listing Aggregator with Microsoft Teams and Baserow ️ COMMUNITY TEMPLATE DISCLAIMER: This is a community contributed template that uses ScrapeGraphAI (a community node). Please ensure you...

Best for

  • Market Research automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.stickynote, n8n-nodes-base.scheduletrigger, n8n-nodes-base.code, n8n-nodes-base.splitinbatches, n8n-nodes-scrapegraphai.scrapegraphai, n8n-nodes-base.merge, n8n-nodes-base.baserow, n8n-nodes-base.if

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by vinci-king-01.

Original n8n.io source

1.1 Workflow description

Title
Aggregate commercial property listings with ScrapeGraphAI, Baserow and Teams
Workflow name
Aggregate commercial property listings with ScrapeGraphAI, Baserow and Teams

Property Listing Aggregator with Microsoft Teams and Baserow

⚠️ COMMUNITY TEMPLATE DISCLAIMER: This is a community-contributed template that uses ScrapeGraphAI (a community node). Please ensure you have the ScrapeGraphAI community node installed in your n8n instance before using this template.

This workflow automatically aggregates commercial real-estate listings from multiple broker and marketplace websites, stores the fresh data in Baserow, and pushes weekly availability alerts to Microsoft Teams. Ideal for business owners searching for new retail or office space, it runs on a timetable, scrapes property details, de-duplicates existing entries, and notifies your team of only the newest opportunities.

Pre-conditions/Requirements

Prerequisites

  • An n8n instance (self-hosted or n8n.cloud)
  • ScrapeGraphAI community node installed
  • A Baserow workspace & table prepared to store property data
  • A Microsoft Teams channel with an incoming webhook URL
  • List of target real-estate URLs (CSV, JSON, or hard-coded array)

Required Credentials

  • ScrapeGraphAI API Key – Enables headless scraping of listing pages
  • Baserow Personal API Token – Grants create/read access to your property table
  • Microsoft Teams Webhook URL – Allows posting messages to your channel

Baserow Table Schema

Column Name Type Notes
listing_id Text Unique ID or URL slug (primary)
title Text Listing headline
price Number Monthly or annual rent
sq_ft Number Size in square feet
location Text City / neighborhood
url URL Original listing link
scraped Date Timestamp of last scrape

How it works

This workflow automatically aggregates commercial real-estate listings from multiple broker and marketplace websites, stores the fresh data in Baserow, and pushes weekly availability alerts to Microsoft Teams. Ideal for business owners searching for new retail or office space, it runs on a timetable, scrapes property details, de-duplicates existing entries, and notifies your team of only the newest opportunities.

Key Steps:

  • Schedule Trigger: Fires every week (or on demand) to start the aggregation cycle.
  • Load URL List (Code node): Returns an array of listing or search-result URLs to be scraped.
  • Split In Batches: Processes URLs in manageable groups to avoid rate-limits.
  • ScrapeGraphAI: Extracts title, price, size, and location from each page.
  • Merge: Reassembles batches into a single dataset.
  • IF Node: Checks each listing against Baserow to detect new vs. existing entries.
  • Baserow: Inserts only brand-new listings into the table.
  • Set Node: Formats a concise Teams message with key details.
  • Microsoft Teams: Sends the alert to your designated channel.

Set up steps

Setup Time: 15-20 minutes

  1. Install ScrapeGraphAI node:
    In n8n, go to “Settings → Community Nodes”, search for “@n8n-nodes/scrapegraphai” and install.
  2. Create Baserow table:
    Follow the schema above. Copy your Personal API Token from Baserow profile settings.
  3. Generate Teams webhook:
    In Microsoft Teams, open channel → “Connectors” → “Incoming Webhook”, name it, and copy the URL.
  4. Open the workflow in n8n and set the following credentials:
    • ScrapeGraphAI API Key
    • Baserow token (Baserow node)
    • Teams webhook (Microsoft Teams node)
  5. Define target URLs:
    Edit the “Load URL List” Code node and add your marketplace or broker URLs.
  6. Adjust schedule:
    Double-click the “Schedule Trigger” and set the cron expression (default: weekly Monday 08:00).
  7. Test-run the workflow manually to verify scraping and data insertion.
  8. Activate the workflow once results look correct.

Node Descriptions

Core Workflow Nodes:

  • stickyNote – Provides inline documentation and reminders inside the canvas.
  • Schedule Trigger – Triggers the workflow on a weekly cron schedule.
  • Code – Holds an array of URLs and can implement dynamic logic (e.g., API calls to get URLs).
  • SplitInBatches – Splits URL list into configurable batch sizes (default: 5) to stay polite.
  • ScrapeGraphAI – Scrapes each URL and returns structured JSON for price, size, etc.
  • Merge – Combines batch outputs back into one array.
  • IF – Performs existence check against Baserow’s listing_id to prevent duplicates.
  • Baserow – Writes new records or updates existing ones.
  • Set – Builds a human-readable message string for Teams.
  • Microsoft Teams – Posts the summary into your channel.

Data Flow:

  1. Schedule Trigger → Code → Split In Batches → ScrapeGraphAI → Merge → IF → Baserow
  2. IF (new listings) → Set → Microsoft Teams

Customization Examples

Add additional data points (e.g., number of parking spaces)

// In ScrapeGraphAI "Selectors" field
{
  "title": ".listing-title",
  "price": ".price",
  "sq_ft": ".size",
  "parking": ".parking span"   // new selector
}

Change Teams message formatting

// In Set node
return items.map(item => {
  const l = item.json;
  item.json = {
    text: `🏢 *${l.title}* — ${l.price} USD\n📍 ${l.location} | ${l.sq_ft} ft²\n🔗 <${l.url}|View Listing>`
  };
  return item;
});

Data Output Format

The workflow outputs structured JSON data:

{
  "listing_id": "12345-main-street-suite-200",
  "title": "Downtown Office Space – Suite 200",
  "price": 4500,
  "sq_ft": 2300,
  "location": "Austin, TX",
  "url": "https://broker.com/listings/12345",
  "scraped": "2024-05-01T08:00:00.000Z"
}

Troubleshooting

Common Issues

  1. ScrapeGraphAI returns empty fields – Update CSS selectors or switch to XPath; run in headless:true mode.
  2. Duplicate records still appear – Ensure listing_id is truly unique (use URL slug) and that the IF node compares correctly.
  3. Teams message not delivered – Verify webhook URL and that the Teams connector is enabled for the channel.

Performance Tips

  • Reduce batch size if websites block rapid requests.
  • Cache previous URLs to skip unchanged search-result pages.

Pro Tips:

  • Rotate proxies in ScrapeGraphAI for larger scraping volumes.
  • Use environment variables for credentials to simplify migrations.
  • Add a second Schedule Trigger for daily “hot deal” checks by duplicating the workflow and narrowing the URL list.

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Workflow Overview

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 2 - Section – Trigger & URL Prep

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 3 - Section – Parallel Scraping

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 4 - Section – Normalisation & Flattening

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 5 - Section – Deduplication & Storage

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 6 - Section – Teams Notifications

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 7 - Weekly Trigger

Type / Role
n8n-nodes-base.scheduleTrigger - scheduleTrigger
Config choices
Version 1.1

Block 8 - Prepare URL List

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 9 - Split URLs

Type / Role
n8n-nodes-base.splitInBatches - splitInBatches
Config choices
Version 3

Block 10 - Scrape Listings

Type / Role
n8n-nodes-scrapegraphai.scrapegraphAi - scrapegraphAi
Config choices
Version 1

Block 11 - Collect Listings

Type / Role
n8n-nodes-base.merge - merge
Config choices
Version 2

Block 12 - Normalise Listings

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 13 - Loop Listings

Type / Role
n8n-nodes-base.splitInBatches - splitInBatches
Config choices
Version 3

Block 14 - Check Existing (Baserow List)

Type / Role
n8n-nodes-base.baserow - baserow
Config choices
Version 1

Block 15 - Merge Listing & Result

Type / Role
n8n-nodes-base.merge - merge
Config choices
Version 2

Block 16 - Determine Action

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 17 - Need Create?

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2

Block 18 - Create Row

Type / Role
n8n-nodes-base.baserow - baserow
Config choices
Version 1

Block 19 - Create Message

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3

Block 20 - Teams – New Listing

Type / Role
n8n-nodes-base.microsoftTeams - microsoftTeams
Config choices
Version 2

Block 21 - Need Update?

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2

Block 22 - Update Row

Type / Role
n8n-nodes-base.baserow - baserow
Config choices
Version 1

Block 23 - Update Message

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3

Block 24 - Teams – Update

Type / Role
n8n-nodes-base.microsoftTeams - microsoftTeams
Config choices
Version 2

3. Summary Table

Workflow Aggregate commercial property listings with ScrapeGraphAI, Baserow and Teams
Complexity advanced
Nodes 24
Categories Market Research
Author vinci-king-01
Published 28 Dec 2025

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/12233/12233.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Aggregate commercial property listings with ScrapeGraphAI, Baserow and Teams do?

Property Listing Aggregator with Microsoft Teams and Baserow ️ COMMUNITY TEMPLATE DISCLAIMER: This is a community contributed template that uses ScrapeGraphAI (a community node). Please ensure you...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your Market Research use case.