Case Study

Automated Schedule Scrape → Website Sync

Keeping a public WordPress schedule in lockstep with a booking platform that has no API

Project Overview

The public website needed to mirror the live class schedule from a booking platform that offers no feed or API. This pipeline scrapes that calendar on a schedule, transforms it into clean rows, and pushes it to WordPress automatically — so the website always shows current, bookable sessions without anyone touching it.

The Challenge

Problem: With no API to pull from, keeping the public schedule current meant manually copying sessions out of the booking system every week. It was tedious and the site drifted out of date — risking customers booking sessions that had changed or filled up.

How it works

Scheduled runrecurring triggerGenerate date rangedates to scrapeScrape booking calendarBrowserless (no API)Transform to rowsstructured JSONRefresh staging sheetclear + repopulatePublish to WordPressWP All Import
TriggerProcessDataAIOutput

No API, no problem: the calendar is scraped via headless browser, staged in a sheet, and published to WordPress on a schedule.

Technical Implementation

Headless Scraping of a No-API Source

The booking platform exposes no schedule API, so a Browserless headless browser renders its calendar and the workflow scrapes the available sessions directly from the page — turning a closed system into structured data.

Date Generation & Batching

JavaScript generates the date range to check, and the workflow loops over it in batches so the calendar is scraped reliably without overloading the source.

Sheet as a Staging Layer

Results are transformed into clean rows; the staging Google Sheet is cleared and repopulated each run, giving a predictable, always-fresh dataset for downstream publishing.

Hands-Off WordPress Publishing

WP All Import reads the staging sheet and updates the live WordPress schedule, so the public site always reflects current availability with zero manual edits.

Key Features

  • Runs on a schedule — no manual trigger needed
  • Generates the date range to check automatically
  • Scrapes the booking calendar via headless browser
  • Transforms results into clean, structured rows
  • Refreshes a staging Google Sheet each run
  • Updates the live WordPress schedule via WP All Import
  • Keeps the public site accurate without human edits

Interested in similar automation?

Let's discuss how I can help automate your marketing workflows and analytics reporting.

Impact

~5 hrs
Manual updates removed / month
Always
Live schedule kept current

Technologies Used

n8nBrowserlessGoogle SheetsWP All ImportWordPress

Business Value

  • Public schedule is always accurate
  • No weekly copy-paste from the booking system
  • Fewer customer mix-ups over availability
  • Better try-out conversion from a trustworthy site