Lead generation · Business directories
Business directory and company register scraping
Business directory scraping builds firmographic records (company name, registration number, status, address, sector, size) from public registers and trade directories. Use official APIs and bulk files where they exist, collect the rest per country, and keep personal data out unless you have a lawful basis for it.
Pay per GB · No subscription · Prices in EUR, excl. VAT
- €0.75
- per GB on ARC Basic, excl. VAT
- −21%
- at 1 TB (€0.59 / GB)
- 185+
- countries, city targeting
- Never
- expires — no subscription
Written for
- Sales operations teams
- B2B data vendors
- KYB and supplier onboarding teams
- Market sizing analysts
The short answer
- Check for an official source first. Under Implementing Regulation (EU) 2023/138, company and company ownership data is a high-value dataset that public bodies must make available for re-use free of charge, via APIs and, where specified, bulk download.
- Official APIs have limits: the UK Companies House API allows 600 requests in five minutes per application, then returns 429. Design around that rather than routing around it.
- Trade directories and listing sites are regional and paginated. Collect each country from an exit in it with a sticky session per search.
- Company data is mostly not personal data; director names, sole-trader details and named contacts are. The French regulator fined a contact-data company €240,000 in 2024 partly for scraping data users had restricted.
The problem
What goes wrong without the right IPs
Scraping what is already free
Many registers publish APIs and bulk downloads. Scraping their search pages is slower, heavier and more fragile than the official route, and it puts load on a public service for no reason.
The same company, ten spellings
Directories abbreviate legal forms, translate names and drop accents. Without a registration number to anchor on, entity resolution across sources produces duplicates and false merges.
Directories are filtered by country
Trade directories and listing sites rank and filter by the visitor's country and often show a different subset of companies per market. One collection point gives you one market's view.
Records go stale silently
Companies dissolve, move and change sector codes without telling your CRM. The refresh cycle is the product, which makes the cost per pass the cost that matters.
Personal data creeps in
Director names, sole traders' home addresses and named contacts on directory pages are personal data. Collecting them brings duties to inform, to limit retention and to honour objections.
What to collect
What you can collect
- Legal name and registration number
- The registration number is the anchor for every match and every refresh. Store the register it came from.
- Legal form and status
- Active, in liquidation, dissolved. Status is the field that decays fastest and matters most to sales and KYB.
- Registered address
- For territory assignment and deduplication. A sole trader's registered address can be a home address, which is personal data.
- Industry code (NACE, SIC or local)
- Sector filtering for market sizing and targeting. Registers use different code versions; store the version.
- Incorporation and filing dates
- Age and filing recency are proxies for activity and are widely used in scoring.
- Size indicators from filings
- Headcount bands, turnover or balance-sheet totals where filings are public. Note the financial year they refer to.
- Website and generic contact channels
- Company domain and generic addresses such as an info@ mailbox. Prefer these to named individuals.
- Source URL and fetch date
- Provenance for every field, so a correction or objection can be traced and applied.
How it runs
How a collection run works
- 01
Inventory official sources per country
For each country, check whether the business register offers an API or bulk download, its rate limits and its licence. Use those first; scrape only what has no official route.
- 02
Respect official API limits
Throttle to the documented limit per application and back off on 429. Rotating IPs to exceed an official API's per-key limit is not a workaround; it is a breach of the terms.
Token-bucket pacing for a register API (600 req / 5 min)14 linesimport timeimport httpxRATE, WINDOW = 600, 300 # requests, seconds; set to the register's documented limitdef paced(urls, client: httpx.Client): interval = WINDOW / RATE for url in urls: r = client.get(url) if r.status_code == 429: time.sleep(int(r.headers.get("Retry-After", WINDOW))) r = client.get(url) yield r time.sleep(interval) - 03
Collect trade directories per country
Partition directory searches by sector and region, run each partition on one sticky exit in the country, and stop at the directory's page cap by narrowing the partition.
Sticky exit per directory search partition10 linesimport httpxproxy = "http://USERNAME_pool-arcfast_country-de_session-k3f9a1x2_sesstime-10:PASSWORD@proxy.arcproxies.io:8000" # one handle per partitionwith httpx.Client(proxy=proxy, timeout=30) as client: for page in range(1, 21): r = client.get("https://directory.example.de/search", params={"sector": "2562", "region": "bayern", "page": page}) if r.status_code != 200: break - 04
Resolve entities on registration number
Join directory records to register records on registration number or VAT ID, then on normalised name plus address. Keep unmatched directory records separate rather than forcing a merge.
- 05
Minimise personal data and set retention
Drop personal fields you do not need, set a retention period per field, and keep a route for objections and deletion requests that propagates to every copy.
Setup
Recommended setup
Register pages and directory listings are light and plain. The cheapest pool carries almost all of it.
| Plan | Role | Session | Targeting | Price |
|---|---|---|---|---|
ARC Basic Rotating ISP | Default for directories and company websites Our lowest price per GB, and the right shape for small HTML pages at volume. Country targeting covers 185+ countries. | Rotating | Country, optional city | €0.75 / GB €0.59 at 1 TB (−21%) |
ARC Fast Rotating residential | For directories that need a consumer IP Residential exits where a directory treats hosting ranges differently, held per partition so pagination stays coherent. | Sticky, 10 minutes per search partition | Country + city | €2.00 / GB €1.12 at 1 TB (−44%) |
Prices are list prices in EUR, excl. VAT. Volume discounts apply automatically at checkout — full ladder on the pricing page.
Connect
One connection string per market
The country, city and sticky session are tokens in the username. Change the token, change the market; keep the session handle, keep the IP.
http://USERNAME_pool-arcfast_country-de_session-k3f9a1x2_sesstime-10:PASSWORD@proxy.arcproxies.io:8000Swap _country-de for any market you quote. The full grammar is on the residential proxies page.
Illustration
What one full pass over 250,000 companies costs
An illustration with round numbers — your pages, payloads and retry rate will differ. The arithmetic is the real price ladder.
Assumptions
- Companies
- 250,000
- Pages per company
- 2 (directory entry + company website imprint)
- Page weight
- 40 KB, assets blocked
- Register data
- from official API / bulk file, not counted
- Bandwidth per full pass
- ≈ 20 GB
On ARC Basic
€15.00per full pass, excl. VAT
20 GB bought in one purchase at €0.75 / GB (list price).
The same 20 GB on ARC Fast: €40.00 at €2.00 / GB. Route only the jobs that need it through the pricier pool.
Quarterly passes bought as one purchase land further down the volume ladder, and because bandwidth never expires, buying the year up front costs nothing in flexibility.
Bandwidth never expires, so a bigger single purchase is only ever cheaper per GB. See the ladder.
In depth
Business directories, in depth
Official company data first: APIs and bulk downloads
In the EU, Commission Implementing Regulation (EU) 2023/138 lists companies and company ownership among six categories of high-value datasets. Public sector bodies holding them must make them available for re-use free of charge, in machine-readable formats, via APIs and, where the annex says so, bulk download. The EU's open data portal describes the regulation as applying across all Member States since 2024, with implementation uneven between countries.
Outside the EU, many registers offer similar access. The UK's Companies House runs a public data API with a documented limit of 600 requests within a five-minute period per application; requests beyond that receive a 429 until the window resets.
That changes the shape of a directory pipeline. Register facts such as name, number, status, address and filings should come from the official route. Scraping is for what the registers do not publish: trade directory categories, product and service descriptions, and company website details.
Personal data in B2B records: where the line is
Data about a company is generally not personal data. Data about an identifiable person, such as a director, a sole trader or a named sales contact, is, even when it is professional and publicly visible. That is where most B2B data obligations come from.
The CNIL's 2024 decision against KASPR shows what regulators look at. The company's browser extension collected professional contact details from a networking site; its database held about 160 million contacts. The CNIL fined it €240,000 and found, among other things, that collecting details from users who had restricted their visibility went beyond what they could reasonably expect, that a five-year retention period renewed on every update was disproportionate, and that people were informed late and not comprehensibly.
- Keep to company-level fields where they serve the purpose.
- Do not collect what a person has restricted or what sits behind a login.
- Set a fixed retention period that does not silently renew.
- Inform the people whose data you hold, in their language, and tell them the source when they ask.
This is a summary of a regulator's published decision, not legal advice. Check specifics with counsel. The lead generation page covers the wider enrichment setup.
Which source, which route
| Source | Best route | Proxy needed? |
|---|---|---|
| Business register with API or bulk file | Official API / download, at the documented rate | Usually not; respect the per-key limit |
| Business register with web search only | Paced HTML collection | ARC Basic, country-targeted |
| Trade and industry directories | Partitioned searches, sticky per partition | ARC Basic; ARC Fast where hosting ranges fail |
| Company websites (imprint, about page) | One or two pages per company | ARC Basic, rotating |
| Professional networks behind a login | Do not collect | Not supported by our acceptable use policy |
Refresh cadence and change detection
A company record decays field by field. Status and address change rarely but matter most; website contacts change often and matter less. Refresh status from the register's change feed or a frequent API check, and refresh directory and website fields quarterly.
Directory pages are small, so a full pass is cheap in bandwidth; most of the cost is in being polite about rate. Spread a pass across a rotating proxy pool, keep each site's rate low, and back off on 429 as described in handling rate limits.
Works with anything that takes a proxy URL
- Python requests / httpx
- Scrapy
- n8n
- Node.js
- Docker
FAQ
Questions
Something not covered? Write to contact@arcproxies.io.
Is scraping business directories legal?
It depends on the jurisdiction, the site's terms and what you collect, and we cannot advise on it. Company-level data is generally not personal data; details of identifiable people such as directors, sole traders and named contacts are, under the GDPR. Use official register APIs where they exist and check specifics with counsel.
Is EU company register data free to use?
Implementing Regulation (EU) 2023/138 lists companies and company ownership as high-value datasets that public bodies must make available for re-use free of charge, via APIs and, where specified, bulk download. Coverage and implementation vary by country, so check each register's own terms.
Should I use a proxy for an official register API?
Usually not. Official APIs have per-key limits; the UK Companies House API, for example, allows 600 requests per five minutes per application. Throttle to the documented limit. Rotating IPs to exceed a per-key limit breaches the terms rather than solving anything.
Which plan suits business directory collection?
ARC Basic for most of it, since directory entries and company website pages are small HTML and it is our lowest price per GB. Move a specific directory to ARC Fast, with a sticky session per search, when it treats hosting ranges differently.
What did the CNIL fine KASPR for?
In December 2024 the CNIL fined KASPR €240,000. It found that collecting contact details from users of a professional network who had restricted their visibility was unlawful, that a five-year retention period renewed on every update was excessive, and that people were informed late and not comprehensibly.
Sources & review
Last reviewed by the ARC Proxies team. Prices are read from the live catalog at build time.
- [1]EUR-Lex: Commission Implementing Regulation (EU) 2023/138 on high-value datasets
- [2]data.europa.eu: High-value datasets: what has changed and what will come next
- [3]Companies House: Rate limiting – Companies House Public Data API
- [4]CNIL: Data scraping: KASPR fined €240,000
Get started
Buy a gigabyte and try it on your own targets.
No subscription, no sales call. Code WELCOME15 takes 15% off your first purchase, and whatever you do not use is still there next quarter.