I work on ours, so treat everything here as informed rather than neutral. What follows is the list of things we got wrong first, which is a more useful genre than a feature comparison and considerably harder to fake.
What the category is for
You spend your working day walking past leads. A trade association member directory. A "top 30 agencies in the city" roundup. A marketplace category page. A conference exhibitor list. Every one of those is a curated, pre-filtered list of businesses that somebody else did the work of assembling.
A capture extension turns the page you are already looking at into structured records in your pipeline. That is the entire premise, and it is a good one, because those pages are consistently higher intent and lower competition than anything you can harvest from a map.
The premise is easy. The execution has four specific traps.
Failure one: silently dropping half the page
This is the worst one, because you cannot see it happening.
Every directory renders a list of businesses. The extension has to work out where one business record ends and the next begins. The naive approach is to look for a recognisable wrapper class, and the naive approach fails permanently the first time the site ships a redesign, because production class names are usually generated and meaningless.
The subtler failure is worse. If detection merges two businesses into one record, or treats a mention of a business inside another business's card as its own entry, you do not get an error. You get a shorter list, and a shorter list looks exactly like a page with fewer results on it.
We hit this on LinkedIn in a form that took a while to see: the boundary logic was treating "shared connections: Bob, Carla" as two people, which collapsed the cards containing them, and half a page of genuine results vanished quietly. Nobody reports a bug they cannot perceive.
What to check: count the businesses on the page yourself, once, and compare with what the extension imported. If it is short, it is short every time.
What good looks like: detection based on document structure rather than class names. The rule that survives redesigns is roughly "a record is the widest element that still contains exactly one business", which needs no knowledge of the site's styling at all.
Failure two: a stop button that does not stop
Any extension worth using can crawl pagination: point it at a forty page directory and let it walk through while you do something else.
The hard part is not the walking. It is stopping.
A crawl is a chain of asynchronous steps, several of which are already in flight when you press stop. If stopping is implemented as a message to the running loop, the loop that is mid-navigation does not receive it, and it will happily click "next" one more time after you thought you had stopped. Worse, a page that is navigating cannot answer anything, so an interface that asks the page whether it is still running gets silence, and silence looks identical to idle.
What to check: start a crawl, press stop mid-page, and watch the address bar for ten seconds. If it navigates again, the stop is advisory.
What good looks like: the session state lives in shared storage with a generation identifier, every step re-checks that its generation is still current before doing anything, and stopping is a write that every tab observes. Then a stop reaches loops nobody can message.
Failure three: uploading the page with every lead
This one is invisible until you look at the network tab, and it is the one I would ask a vendor about directly.
To infer things like a country or a phone format, an extension gathers context from the page. That is legitimate. What is not legitimate is carrying that context all the way to the server, attached to every lead.
Ours did, for a while. A single page's worth of text signals is around twenty kilobytes, and it was stamped onto every lead found on that page. A hundred and twenty six leads became a two and a half megabyte upload, and two and a half megabytes of page content in the database. Beyond the waste, it means the page you were reading is leaving your browser, which is a different privacy posture from the one on the marketing page.
What to check: the permissions requested at install, and whether the vendor will say plainly what fields are transmitted.
What good looks like: page context used locally to make a decision and dropped before anything is sent. If a field is not a business detail, it should not reach a server.
Failure four: guesses stamped as facts
An extension reading an arbitrary page is inferring, not reading a schema. Sometimes it is certain, sometimes it is guessing between two candidates on the same line.
If all of that arrives in your pipeline looking equally confident, you now have a list where some rows are wrong and none of them are marked. That is worse than a list with gaps, because gaps are visible and errors are not, and one of the wrong ones will end up in an email that begins with the wrong company name.
What good looks like: a confidence score per record that you can see and filter on, and an honest blank rather than a plausible invention when a field cannot be determined. Ours also treats extension-applied tags as provisional and replaces them once the platform has enriched the record properly, because a tag written from a directory listing is a first impression rather than a finding.
The seven things worth having
Beyond avoiding those four, this is the actual list.
- Works on any business directory, not a hard-coded handful. The value is in the pages you did not expect to find.
- Pagination crawling with a stop that works.
- Confidence scoring per record.
- Deduplication on sync, against everything already in your workspace rather than within the batch. This is the difference between a capture tool and a pipeline tool.
- Verification downstream, because a captured address is unverified by definition and sending to it unverified is how a domain gets filtered.
- Country and format normalisation for phone numbers, done properly, so a number written six different ways resolves to one canonical form.
- A visible record of what it did, so you can tell a quiet page from a broken run.
Numbers 4 and 5 are the ones that separate a browser toy from something you can run a business on, and they are the two that are hardest to evaluate in a demo.
Where it fits next to discovery
They answer different questions and most people use both.
Discovery answers "find me every HVAC contractor within twenty miles" without visiting anything. It is the volume channel, and lead discovery is our version of it.
Capture answers "I am looking at exactly the right forty businesses right now". It is the opportunist channel, and it produces better leads per record because a human already filtered the page.
The important thing is that both end in the same pipeline with the same deduplication, or you will contact the same business twice from two directions and discover the problem in the reply.
Ours is the Capture and Sync extension, published on Firefox and Microsoft Edge today with Chrome in review, free on every plan including the free one. If you are evaluating a different one, take the four failure modes above and test for them on a real forty page directory rather than on the vendor's demo site. All four only appear at volume, which is exactly why they survive so long.
Related reading: how to scrape Google Maps for leads for the volume channel, and how to build a B2B email list without buying one for what happens to a captured record before it earns an email.
