Databuilder: capturing dynamic web data with serverless ETL

How we built Databuilder - a template-driven system that captures data from modern, JavaScript-heavy websites and feeds it through a schema-validated serverless ETL pipeline on AWS
Client
Distribute
What we built
In-browser capture & ETL
Technology
AWS Lambda, Amazon API Gateway, Amazon SQS, Amazon Kinesis, Amazon S3, Puppeteer, JSON Schema, Node.js
Published
A resort infinity pool overlooking the sea at golden hour
Distribute logo

Reading data from pages that build themselves

As part of our long-running work on Distribute's data platform, we built Databuilder - a system for reliably capturing data from modern travel websites and feeding it into Distribute's pipeline. It solves a problem that trips up conventional approaches: pages that assemble themselves in the browser, long after the server has finished responding.

The challenge of dynamic pages

Many modern websites are single-page applications. When you request the page, the server returns very little; the real content is assembled moments later by JavaScript running in the browser, often loading in stages as the user scrolls or interacts. A traditional server-side fetch sees an almost-empty page and misses the data entirely.

Capturing the page's own live state

Rather than fight the browser, Databuilder works with it. A lightweight, purpose-built script runs on the fully-rendered page and reads the data from the application's own in-memory state - not just the visible HTML. Depending on how a site is built, it reads directly from the page's live data store (subscribing to it so that results which stream in lazily, as the visitor scrolls, are captured as they arrive), from framework component instances, from web-component properties, or from state embedded in the page. It batches what it finds and submits it to a serverless ingest endpoint. Because the page has already done the rendering work, capture is fast, accurate, and adds virtually no compute cost of its own.

A serverless ETL pipeline

Captured data flows into an event-driven pipeline on AWS. There is no server, and no function, in the hot path: Amazon API Gateway hands each incoming batch straight to an Amazon SQS queue, which absorbs bursts and decouples capture from processing (with a dead-letter queue and bounded retries so a bad batch can never jam the flow). A commit AWS Lambda then drains the queue in batches, loads the appropriate parsing template, validates every extracted record against a strict JSON schema, enriches it with reference data, transforms it into the platform's standard format, and publishes it onto the same central streaming bus that powers the rest of Distribute's data platform. In other words, Databuilder is a drop-in alternative source of data for a pipeline we had already built - and if one record in a batch is bad, only that record is retried, never the whole batch.

Template-driven, with quality guaranteed

Databuilder is deliberately data-driven rather than hard-coded. Each page is described by a JSON parsing template, so once a site's underlying technology is supported, bringing on a new page means authoring a template - not writing and deploying new code. Two schemas keep it honest: one validates the template itself, and one validates every record the template produces, so nothing malformed can enter the pipeline. To make authoring easy, we built a Validator: a browser-based editor for writing and testing templates against real pages, backed by the very same parsing and validation code running server-side against a headless browser. An author sees exactly what production will see - the extracted, enriched, transformed result - before a template ever goes live.

Key AWS services

  • Amazon API Gateway: receives captured data batches and passes them straight to the queue, with no function in between.
  • Amazon SQS: absorbs bursts of incoming data and decouples capture from processing, with a dead-letter queue for safety.
  • AWS Lambda: validates, enriches, transforms and commits captured data, and renders pages headlessly for the Validator - entirely serverless.
  • Amazon Kinesis: the shared real-time streaming bus that carries data into the wider platform.
  • Amazon S3: hosts the parsing templates, reference data and the Validator tool.
  • Amazon CloudWatch: monitoring and metrics across the pipeline.
“The data we needed only existed once a page had rendered in the browser, so rather than fight it, Databuilder reads the page's own live state as it loads. It's exactly the sort of awkward problem we like, and the schema validation on the way in means what comes out the other end is genuinely dependable.”
Martin Hicks, Principal Consultant, Si Novi

Results: reliable capture, guaranteed quality

  • Reliable capture from JavaScript-heavy pages that defeat conventional scraping.
  • Guaranteed data quality: strict JSON-schema validation on every record entering the pipeline.
  • Fast onboarding: new pages on a supported site are added by writing a template, not deploying code.
  • Author with confidence: the Validator shows the real, production-identical result before anything goes live.
  • Elastic and resilient: a queue-backed serverless pipeline that handles bursts gracefully and isolates bad records.
  • Minimal running cost: capture happens in the browser and processing is pay-per-use.

About Si Novi: creative serverless engineering

We build cloud-native, serverless systems on AWS - and we relish the unusual problems, like capturing data that only exists once a page has rendered.

By pairing inventive data capture with a disciplined, schema-validated pipeline, we help businesses like Distribute turn hard-to-reach data into a dependable, high-quality feed.

Something similar?

Let's walk through how we'd approach it.

Work we have done for businesses like yours

Golf course
Insurance platform rebuild Published 2026

Rubber Ring

Rubber Ring's digital insurance business had outgrown its original platform.

Discover how we rebuilt it on a modern, event-sourced architecture on AWS - a single-table DynamoDB source of truth streamed into a PostgreSQL read model, with containerised React Router 7 and PHP applications on ECS Fargate - and migrated the entire live book in one cutover.

Rubber Ring logo
Read more: Rubber Ring
Duwio workspace interface
Cloud-native SaaS platform Published 2025

Duwio

Working with Spacesuit Media, we transformed years of experience in image delivery into Duwio - a new SaaS platform for creative professionals, re-engineered from the ground up on AWS.

Built on an AWS well-architected foundation, it enables photographers and agencies to store, tag, search and deliver images seamlessly from anywhere in the world.

Read more: Duwio
GT World racing cars in motion
React Native mobile app Published 2025

SRO Motorsports Group

Si Novi partnered with Whiteflame and SRO Motorsports Group to build a new GT World app, replacing a Europe-only version with one that covers every SRO championship worldwide.

It brings together live video, timing, schedules, team data and race reminders each fan can tune to the series they follow, on a single React Native codebase over a serverless AWS backend.

Read more: SRO Motorsports Group
A package-holiday beach with sun loungers at golden hour
Serverless API rebuild Published 2025

Distribute

Distribute serves package-holiday data to a range of downstream partners through a business-critical API.

Discover how we rebuilt that API as a modern, serverless service on AWS - introducing a clean HTTP/JSON interface while keeping every existing consumer working through a zero-downtime migration.

Distribute logo
Read more: Distribute
Jaguar Land Rover tooling and equipment
Distribution web platform Published 2024

Jaguar Land Rover

Discover how Si Novi partnered with Jaguar Land Rover to build a scalable, secure AWS-powered web application for global tooling distribution.

Learn about the innovative solution, including recent enhancements for electric vehicle tooling, that supports 13 languages and over 40 regions worldwide.

Read more: Jaguar Land Rover
All case studies

Trusted to build
the software businesses depend on

Alliance Bernstein Logo
Rubber Ring Insurance Logo
Ledgerscope Logo