Skip to content
Calquer

Scrape Leads From Directories to CSV (No Code)

By M H TawfikUpdated 12 min read

scrape leads to csvb2b lead listbusiness directory

To scrape leads to CSV from a directory, open the listing page, let a pattern-detecting browser extension auto-detect the repeating cards, pick the columns you need (company, name, role, location, links), then export to CSV. Clean and dedupe the file, and import it into your CRM. Keep it legal: collect only public business data and follow consent rules before any outreach.

This guide walks the full workflow, the columns that matter, and the legal and deliverability rules that decide whether your list helps or hurts you.

What you can and cannot collect from a directory

You can usually collect the public business facts a directory shows on its listing pages: company name, category, address, phone, website, and public profile links. You generally should not collect data hidden behind a login, scraped against the site's terms, or personal data you have no lawful basis to process. The page being visible does not make every field fair to harvest.

A business directory is built from repeating listing cards, which is exactly what a no-code tool reads well. But "technically extractable" and "appropriate to use" are different questions. Before you build a B2B lead list, separate the two:

  • Generally safe to collect: publicly listed company name, business category, business address, public business phone, the company website URL, and a link to the public profile.
  • Handle with care: named individuals and their roles. This is personal data under GDPR and CCPA, even in a business context.
  • Avoid: anything behind authentication, content the site's terms forbid scraping, and bulk-harvested personal email addresses you plan to cold-email without a lawful basis.

"Public" is not the same as "free to use however you want." Public personal data is still personal data under GDPR and CCPA. Decide your lawful basis before you collect, not after.

Step-by-step: turn a directory listing into a lead CSV

Open the directory's listing page, run a pattern-detecting extension, confirm the repeating card it highlights, toggle the columns you want, then collect across scroll and pagination and export to CSV. The whole loop takes a couple of minutes per directory once you know the page. Here is the repeatable version.

1. Open the listing page, not a single profile

Navigate to the page that shows many listings at once — the search results or category index, not one company's profile. The repetition (the same card shown dozens of times) is what a detector learns from. A single profile page has nothing to repeat.

2. Let the tool auto-detect the repeating cards

Open the extension. A good detector scans the page and highlights the largest repeating group, which is almost always the list of businesses. With Calquer this is zero-configuration: it finds the loop on its own. If it locks onto the wrong group, click one listing to teach it the correct pattern.

3. Confirm columns and rename them in plain English

Review the proposed fields. The tool reads candidate columns from each card — name, category, location, phone, a website link. Toggle off the noise (ad slots, "sponsored" badges, share buttons) and rename columns to match your CRM's field names, like company, city, website.

4. Collect across scroll and pagination

Start the collection. Directories love infinite scroll and numbered pages, so let the tool auto-scroll and follow the "Next" control until the list stops growing. This is the step manual copy-paste fails at — you would only ever capture the first screen. (See scraping infinite scroll and pagination.)

5. Review and export

Open the results, scan for obvious junk rows, then export. CSV is the safe default for a CRM import; JSON or TSV are there if a tool prefers them.

Pick the smallest set of columns your sales process actually uses, and name each one to match your CRM field. A lean, well-named file imports cleanly and avoids the "garbage in" problem. Over-collecting personal fields you will never use is both a data-quality risk and a compliance risk. Start with these and trim.

ColumnWhat it holdsCRM useNotes
companyBusiness nameAccount / company recordThe anchor for everything else
categoryIndustry or directory categorySegmentation, filteringGreat for targeting by vertical
city / regionLocationTerritory, routingSplit address into parts for filtering
websiteCompany URLEnrichment, researchBetter than a raw profile link
phonePublic business phoneCall-based outreachOften the most reliable contact field
profile_urlLink to the listingSource / provenanceKeep it; it proves where data came from
contact_nameNamed person (if shown)PersonalizationPersonal data — handle under GDPR/CCPA
roleJob title (if shown)Targeting decision-makersUseful, but verify it is current

A few rules that save hours later:

  • Keep a source column. A profile_url or source field records where each row came from. You will thank yourself during an audit or a data-subject request.
  • Split location early. One messy address column is harder to filter than separate city, region, and country columns.
  • Prefer the company website over the profile link for enrichment — it is the real destination your reps research.
  • Do not invent emails. If the directory does not publish an email, do not guess patterns like [email protected]. We cover why under deliverability below.

Cleaning, deduping, and formatting for a CRM import

Raw directory exports always need a short cleanup pass: remove duplicate companies, trim stray whitespace, standardize phone and location formats, and map your columns to CRM field names before import. Budget five to fifteen minutes. A clean file imports without errors and stops you from creating duplicate accounts in your CRM.

Run through this checklist in your spreadsheet:

  1. Deduplicate. Directories repeat sponsored listings and pagination sometimes overlaps. Dedupe on company plus city, or on website, which is usually the most unique field.
  2. Trim and normalize. Strip leading/trailing spaces. Make phone numbers a consistent format. Normalize categories so "IT Services" and "I.T. services" become one value.
  3. Fix split fields. If a price-style field or address split across elements, merge or split it into clean columns.
  4. Drop empty columns. Remove fields the detector grabbed that you do not use.
  5. Map to CRM fields. Rename headers to match your CRM exactly (HubSpot, Salesforce, Pipedrive, and others let you map columns during import, but matching names up front is faster).
  6. Validate before bulk import. Import a small test batch of 10–20 rows first to confirm field mapping, then run the full file.

This is the same discipline you would apply when you export leads to a CRM from any source. A spreadsheet step between scrape and import is not optional — it is what separates a usable list from a mess.

Collecting public business data is often permissible, but using personal data for outreach is regulated. Under GDPR you need a lawful basis (commonly legitimate interest, with a balancing test and an opt-out) to process EU personal data. CCPA gives California consumers rights over their data. CAN-SPAM governs US commercial email. None of this is legal advice — confirm your situation with counsel.

Here is the plain-English version of the rules that matter for a lead list:

  • GDPR (EU/UK). A named person's contact details are personal data even on a business listing. You typically rely on "legitimate interest," which requires a documented balancing test, transparency about where you got the data, and an easy opt-out. Some EU jurisdictions effectively require prior consent for B2B email.
  • CCPA/CPRA (California). Consumers can ask what data you hold and request deletion. If you collected it, you must be able to honor those requests — another reason to keep a source column.
  • CAN-SPAM (US email). Commercial email must use accurate headers and subject lines, identify itself as an ad where required, include a valid physical postal address, and honor opt-outs promptly. It permits cold email but sets clear rules.
  • Site terms and robots.txt. A directory's terms of service may restrict scraping, and its robots.txt signals what automated agents should avoid. Respect both. The well-known hiQ Labs v. LinkedIn case touched on scraping public data and the US Computer Fraud and Abuse Act, but it did not give blanket permission to ignore terms or privacy law.

For a fuller plain-English overview, read is web scraping legal. The short version: collecting public business facts at a reasonable pace is usually defensible; mass-harvesting personal data for spam is where people get into trouble.

A good self-test before outreach: could you explain to the person you are emailing exactly where you got their address and why contacting them is relevant to their job? If not, fix the list before you fix the email.

Deliverability: why scraped emails hurt your domain if misused

Blasting cold email to scraped or guessed addresses damages your sending reputation, which is what mailbox providers use to decide if your mail reaches the inbox. Hitting dead addresses raises your bounce rate; getting marked as spam raises your complaint rate. Both signal Gmail and Outlook to filter or block your domain — including the legitimate mail your business depends on.

The mechanics are worth understanding before you send anything:

  • Hard bounces wreck reputation. Guessed-pattern emails ([email protected]) bounce often. A high bounce rate tells providers you are not maintaining your list, and they throttle you fast.
  • Spam complaints compound. People who never asked to hear from you click "report spam." A small complaint rate is enough to land future mail in the junk folder.
  • It is your whole domain at risk. Reputation attaches to your sending domain. A bad cold-email run can hurt invoices, password resets, and customer replies sent from the same domain.
  • Mitigations that actually help. Verify addresses before sending, warm up new sending domains slowly, keep volume reasonable, segment tightly so messages are relevant, and remove non-responders. Better still, prioritize the public business phone and the company website over scraped personal emails.

The takeaway: a directory is great for building an account list — companies, categories, locations, websites, phones. Turning that into a personal-email spam blast is the fastest way to burn the asset you just built.

A privacy-first workflow that keeps lead data on your device

Where the scraping happens decides who else sees your prospect list. A local browser extension reads the page in your own browser and writes the CSV to your device — no account, no server, no upload. Cloud scrapers and "paste this page into an AI" tools send the directory content, and your future lead list, to a third-party server you do not control.

For lead data this matters more than for most scraping. Your target list is competitive intelligence; you do not want it sitting on someone else's backend. A privacy-first tool like Calquer requests only activeTab, scripting, and storage permissions — no broad host access — and the collected rows stay local until you choose to export them. Read how Calquer keeps everything on-device for the specifics.

A clean, on-device workflow looks like this:

  1. Collect locally from the directory's public listing pages with a pattern-detecting extension.
  2. Clean and dedupe in your own spreadsheet, dropping personal fields you do not need.
  3. Document the source so you can answer GDPR/CCPA requests.
  4. Import to your CRM with mapped fields and a small test batch first.
  5. Outreach responsibly — relevant, consented where required, with easy opt-out, leaning on phone and website research over cold personal email.

You can apply the same on-device approach to other sources, like exporting search results to CSV for company research, or building lists from other directory-style pages.

FAQ

Collecting public business facts (company, category, address, public phone, website) is generally defensible if you respect the site's terms and robots.txt. Personal data such as named contacts is regulated under GDPR and CCPA, so you need a lawful basis before processing it. This is general guidance, not legal advice — confirm with counsel for your jurisdiction.

How do I import a scraped lead CSV into my CRM?

Clean and dedupe the CSV first, rename headers to match your CRM fields, then use the CRM's import wizard (HubSpot, Salesforce, and Pipedrive all map columns during import). Run a small test batch of 10–20 rows to confirm the mapping is correct, then import the full file. Keep a source column for compliance.

Should I cold-email addresses I scraped from a directory?

Be very careful. Guessed or unverified emails bounce and trigger spam complaints, which damage your sending domain's reputation across all your mail. If you do send, follow CAN-SPAM rules, verify addresses, keep volume low, and offer an easy opt-out. Often the public phone and company website are safer, higher-quality contact paths.

What columns should a B2B lead list have?

Start lean: company, category, city or region, website, public phone, and a source/profile URL. Add a contact name and role only if the directory shows them and you have a lawful basis to use them. Match every header to your CRM's field names so the import maps cleanly without manual fixing.

Does scraping a directory send my data to a server?

It depends on the tool. Cloud scrapers and AI-paste workflows upload the page to a third-party server. A local browser extension that runs entirely on your device does not — it reads the page in your browser and saves the CSV locally. For sensitive lead lists, on-device collection keeps your prospect data private.


Ready to build your list? Add Calquer to Chrome and turn the next directory you open into a clean, CRM-ready CSV — free, no code, 100% on your device.

Keep reading

← All articles