Filters are here: browse used cameras and lenses

For a long while I've been wanting to do something with the UsedLens database that felt obvious in hindsight but took a lot of groundwork to make possible. Up until now, a used camera listing was basically a name and a price. "Canon EOS R5 Body Excellent Condition - Boxed" sitting next to "Leica M10-P Silver Chrome Boxed with Strap 11ae." Each row in the database, a string of text and a number. Useful if you already knew what you were looking for. Not much help if you didn't.

Which meant UsedLens could only really do one thing well: text search. Type a model, get matches. That's fine for "Canon R5" but falls apart for "used full-frame mirrorless under £2,000" or "a 50mm prime for my Leica M-mount body." You had to already know the answer to find it.

The thing I'd wanted for ages was to turn every listing from a name into a set of data. "Canon EOS R5 Body" should become: type = camera, brand = Canon, format = digital, sensor = full frame, mount = Canon RF. "Leica 50mm f/1.4 Summilux" should become: type = lens, brand = Leica, focal length = 50mm, max aperture = f/1.4, lens type = prime, mount = Leica M. Every attribute, extracted and stored, ready to filter against.

The problem is that extracting structured data from 150,000+ product names across 40+ merchants is genuinely hard. Different retailers format listings differently. Brand names appear in dozens of variations. Model numbers get abbreviated, misspelled, or combined with other info. Mount compatibility isn't always in the title. A Canon lens might be Canon RF or Canon EF or Canon FD or Canon EF-M, and which one matters enormously to a buyer, but the listing might just say "Canon 50mm f/1.8."

Regex and keyword matching get you maybe 60% of the way, and the remaining 40% is edge cases that break every rule you try to write.

So I handed the job to Claude Haiku. Every unique product name in the database goes through a classification step that pulls out the structured data and stores it in a cache. Around 130,000 unique product names, classified over several days at a total cost of about £100. Now when a new listing arrives, if the name has been seen before it's instant. If it's new, it gets classified and joins the cache.

That's the unglamorous part done. The fun part comes next.

With all the data structured, filtering became possible. Not just price and merchant (which UsedLens has had for years) but format, sensor size, mount, focal length, aperture, lens type, brand, and more. And because every listing has real attributes now, the filters can talk to each other: when you pick one, the others update to show you only what's actually available.

Tap Leica as the brand and the mount filter collapses to just Leica M, Leica R, Leica L, and M39. The others disappear because they don't apply. Tap Sony E as the mount and the brand filter becomes Sony, Sigma, Tamron, Voigtlander, Zeiss, and the other actual makers of Sony E glass. The filters describe what's in the inventory, not what's theoretically possible.

The mobile experience got particular attention. I know most of my visitors are on phones, and typing on a phone is a pain. The new filter journey is tap-first: land on the homepage, tap Cameras or Lenses, tap your way through format and sensor and brand, see live counts update as you go. Bottom bar shows the current match count. Tap to commit to results. No typing required unless you want it.

A few example searches worth trying if you want to see it in action:


The filter URLs are all bookmarkable and shareable. Every combination becomes its own page.

There's more coming. I want to use the same structured data to group listings of the same product across merchants (so you see "Canon EOS R5, from £2,890 across 12 merchants" instead of 12 rows of the same camera). The enrichment data could also power proper alerts, letting you subscribe to "new full-frame Nikon bodies under £1,500" and get notified the moment one appears.

But that's for future weeks. For now the filters are live, and I'm genuinely pleased with how they turned out. Try them at usedlens.co.uk and let me know what you think, or where they fall over.

Leave a comment