Design a Web Crawler

hard
crawling
queues
politeness
dedup

Problem brief

A web crawler starts from a handful of seed URLs, downloads pages, pulls out the links on them, and keeps going until it has covered a large slice of the web, then keeps that copy fresh. Raw throughput is the easy part. The hard parts are deciding which URL to fetch next, never hammering a single website, not wasting work on the same page under a thousand different URLs, surviving sites that are effectively infinite, and revisiting pages at a rate that matches how often they actually change.

Practice workspace

Guided practice or a locally saved 45-minute mock.

Step 1 of 13

Functional Requirements

What does the crawler need to do, and what would you explicitly leave out of version one?

Reference solution hidden

Try answering in the workspace above first. Reveal the full worked solution — data model, architecture, and trade-offs — whenever you want to compare.

Open the full solution page →