Professional

Product Web Crawler

· Pricesearcher

A sitemap branching into merchant web pages and product records.

Problem

Pricesearcher’s price comparison service used merchant websites as a source of product data. The crawl pipeline read sitemaps, found product pages and extracted structured data, with separate deployments for environments and AWS regions. Maintaining it meant handling differences between merchant sites and balancing crawl frequency against the cost of repeated requests.

Architecture

The Python crawler ran on AWS and tracked crawl state and cycles in DynamoDB. Sitemaps stored in S3 fed product-page crawling, while a management API behind Cognito and API Gateway managed merchants and ingestion sources. A companion crawler collected website metadata for the data platform.

What I built

  • Moved sitemap sources to S3 and added support for gzipped sitemaps.
  • Adjusted selected crawl schedules.
  • Worked on merchant and ingestion-source API endpoints, authentication, SQLAlchemy models and deployment-time database migrations.
  • Worked on the companion website-metadata crawler.

Engineering decisions

  • S3-hosted sitemap sources could be maintained without redeploying the crawler.
  • Less frequently changing pages were crawled less often, trading the interval between price updates against repeated-request cost.
  • Separate deployments supported different environments and AWS regions.

Technologies

Python, AWS Lambda, S3, DynamoDB, Cognito and API Gateway, SQLAlchemy, Docker, Terraform, Jenkins.

Results

The changes made sitemap sources easier to maintain and extended the crawler’s handling of compressed input. Alongside the scheduling work, the management API provided a way to manage merchants and ingestion sources around the crawl pipeline.

Have a Python, AI or automation problem?

Tell me what is slowing the business down, what you have tried, and what a successful outcome looks like. I'll help you identify the most sensible next step.