Every store.
The same price row.
Every row is a storefront that had to answer.
How Lenspricer compares the prices stores keep to themselves
Lenspricer helps consumers buy cheap contact lenses online, comparing prices across country domains from the UK to Brazil. Every price on it came from a storefront that had to be read first, and the ones worth the most were the ones that refused.
- Europe was straightforward
- Expanding across European stores worked with the methods they already had.
- The US and Canada were not
- Scaling there ran into stores that were far more heavily protected.
- Every method ran out
- Changing user agents, open-source tools and proxies stopped working on those sites.
- A missing store is a wrong answer
- A comparison that silently drops a storefront still looks complete, and recommends the wrong price.
- They compared, then chose
- Lenspricer tested several scraping services against the sites that were blocking them.
- An API, not a stack
- An API call replaced the agent rotation, the tooling and the proxy pool they had been maintaining.
- Support that answered
- Quick, useful replies while they were integrating, which is what a small team is buying.
- Reliability was the deciding test
- The thing that mattered: the data could actually be scraped.
-
Integrating the API
A scraping stack to maintain
The same morning
-
Where the site runs
Europe only, at that scale
From the UK to Brazil
The stores that refused
A price comparison is only worth the storefronts it can read. Lenspricer had already covered Europe with the usual toolkit: rotate the user agent, reach for an open-source scraper, put a proxy in front. Then it went to the US and Canada, where the stores defend themselves properly, and the toolkit stopped returning anything.
It took us just 5 minutes to integrate the API into our code, and it just worked.
The call that replaced the stack
They compared the options against the sites that were actually blocking them, and picked the one where the data came back. What replaced the stack was the request itself: no agent rotation to keep current, no proxy pool to manage, no scraper to repair when a store changes.
That matters more for a comparison site than for most. Every storefront it cannot read is not a gap in a report, it is a price a visitor is never shown.
From the UK to Brazil
Lenspricer runs on country domains from lenspricer.co.uk to lenspricer.com.br. On the US site, a lens is compared across every storefront that sells it, and the spread between the cheapest and the dearest is wide enough to be the whole reason a visitor came.
Every storefront, the same lens, the same day
- The floorWarby ParkerThe cheapest storefront on the row.
- Just aboveGlassesUSASame lens, a different storefront.
- A step up1800contactsWell above the floor, for the same box.
- The ceilingthe top of the rangeFar enough above the floor to be the whole reason to compare.
Miss a row and the answer changes. That is why every storefront has to be reachable, not most of them.
Conclusion
Lenspricer sells confidence: that the price it shows is the lowest there is. That holds only while every storefront answers, in every country it runs in, every day.