Europages Scraper - European B2B Companies & Emails avatar

Europages Scraper - European B2B Companies & Emails

Pricing

from $2.40 / 1,000 companies

Go to Apify Store
Europages Scraper - European B2B Companies & Emails

Europages Scraper - European B2B Companies & Emails

Scrape Europages B2B companies by keyword, country and company type: name, address, phone, website, employees, year founded, products; company emails from their own websites, certificates and VAT id on request. Splits searches past the 3,000 limit. New-companies monitoring. $3 per 1,000 on Bronze.

Pricing

from $2.40 / 1,000 companies

Rating

0.0

(0)

Developer

Amit Aviv

Amit Aviv

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

5 hours ago

Last modified

Categories

Share

Europages Company Scraper

Returns European B2B companies from the Europages directory (europages.co.uk, .fr, .de, .it, .es, .nl) for any keyword, optionally by country: name, full address, switchboard phone, website, company type, employees, year founded and products. On request it adds the company's email address from its own website, and certificates, VAT id and trade terms from its Europages page. Plain HTTP with no browser. Apart from the start fee you pay only for delivered companies, and a run that delivers nothing because of an error ends as Failed, never as a green empty run.

What you get

  • Company name, Europages page URL, website and website domain, switchboard phone number as published
  • Street, postcode, city, country code, latitude and longitude
  • Company type (manufacturer, custom manufacturer, distributor, wholesaler, service provider, retailer), employees band (e.g. 50-99), year founded, distribution area (regional, national, Europe, international)
  • Description, up to 20 product names, number of products, number of certificates, whether the company is a paying Europages customer, logo URL
  • With Find email addresses on company websites on: the company's email address(es), read from its own website, which Europages itself does not publish (see "Email addresses")
  • With Add details on, from each company's own Europages page: certificates (e.g. ISO 9001), VAT id, fax, main activity, product categories, keywords, payment methods, incoterms, catalogue PDF link, and the number of named contact persons
  • Searches above the site's 3,000-company limit are read country by country and region by region (see "Large searches")
  • New-companies monitoring for scheduled runs (see "Monitoring")
  • One record per company, as JSON, CSV or Excel, or through the API
  • A run summary (OUTPUT_SUMMARY in the run's key-value store): what was requested, delivered and charged; in monitoring runs how many known companies were skipped (knownBefore, and per search alreadySeen); per search how many companies Europages reports, how many were reached and which parts stayed above the limit; which inputs failed or were ignored; why the run stopped

What it does not return by default: personal data. Named contact persons and email addresses that look like a person's are only counted, unless you switch on the personal-data option (see "Legal and responsible use"). It never returns reviews or anything behind a login.

How to use

  1. Type the keywords you would type into Europages' search (for example packaging, cnc machining, olive oil) into Keywords or Europages URLs, or paste a Europages result-list, search or company URL.
  2. Optionally add Countries (DE, FR, ...) and Company types.
  3. Set Maximum companies per search, switch on Find email addresses if you need them, and press Start.
  4. Download the results from the Output tab, or read them from the API.

Input

FieldTypeDefaultWhat it does
keywordslist of textnone (a run without keywords fails at once with a message)Keywords, or Europages URLs: a result list (/companies/packaging.html, also with a country or region in it, and with the site's filters supplierTypes, employeeCounts, audits, countries, which are kept), a search page (/en/search?q=...) or a company page (returns that company with its details; see "Pricing"). URLs without https:// are accepted; duplicates and URLs of other sites are ignored and listed in the summary; other URL parameters (tracking and the like) are left out with a warning.
countrieslist of textallTwo-letter country codes (ISO; UK is read as GB). Each keyword is searched once per country, each with its own maximum. A code that is not a country (XX, EN) fails the run before any request.
companyTypeslistallDeliver only these types: manufacturer, customManufacturer, distributor, wholesaler, serviceProvider, retailer. Europages filters the search itself by type (all except retailer, which it has no filter for), so a narrow type is found across the whole search. Every delivered company is checked against the types; others are skipped and not charged.
sitechoiceenWhich Europages language site keywords are searched on (en, fr, de, it, es, nl). Type keywords in that language. Another value fails the run before any request.
maxItemsPerSearchnumber100Stop after this many companies for each keyword (and country).
splitLargeSearchesyes/noyesPast 3,000 companies (and only when the maximum is above 3,000), read the search by country and region.
includeDetailsyes/nonoRead each delivered company's Europages page for certificates, VAT id and trade data. One more request per company, so much slower (see "Limits"); charged as a separate event.
includeWebsiteEmailsyes/nonoRead each delivered company's own website for its email address. Charged as a separate event, only for companies where an address was found.
includePrivateSellerDatayes/nonoAlso return personal data: named contact persons (name, role, direct phone; needs details) and email addresses that look like a person's (needs website emails). See "Legal and responsible use".
onlyNewyes/nonoMonitoring: deliver and charge only companies earlier runs have not delivered for the same search. Each result page of already-known companies costs a small monitoring event (see "Pricing").
monitorKeytextemptyName of the monitor memory, to keep two schedules apart.
proxyConfigurationproxyoffNot needed for normal runs. Turning on Apify Proxy (datacenter) makes large runs faster (see "Limits"). Company websites are always read directly.
{
"keywords": ["packaging"],
"countries": ["IT"],
"maxItemsPerSearch": 300,
"includeWebsiteEmails": true
}

This input ran as duX7Hc04LPwPTunHO on 2026-10-14: 300 Italian packaging companies in 6 minutes, 209 of them with an email address.

Example result

From run JM6JnKQNfeVdHEZBU (2026-10-14, a company URL with Add details and Find email addresses on). The description, product, category and keyword lists are shortened here; nothing else is edited.

{
"id": "304108",
"name": "PEKU Folien GmbH",
"url": "https://www.europages.co.uk/en/company/peku-folien-gmbh-304108",
"website": "http://www.peku.com/",
"websiteDomain": "peku.com",
"phone": "+49918129600",
"street": "PEKU-Strasse 1",
"postalCode": "92318",
"city": "Neumarkt",
"countryCode": "DE",
"latitude": 49.276052,
"longitude": 11.424341,
"companyTypes": ["manufacturer"],
"employees": "100-199",
"foundingYear": 1962,
"distributionArea": "europe",
"description": "Own production! Film extrusion, printing in Europe's leading full HD quality up to 10 colours, confection of various bag designs - unique advice, support and kn …",
"products": ["Soil/Fertilizer Films", "sustainable films and bags, recycling films, recycling bags", "Side Seam Bags", "Half-tube film"],
"productCount": 17,
"certificatesCount": 8,
"europagesCustomer": false,
"logoUrl": "https://wlw-1-company-facts-media20191122174836234900000006.s3.eu-central-1.amazonaws.com/b9655f37-4991-46c8-90d8-e1fe81f9cea0.png",
"detailsFetched": true,
"certificates": ["DIN EN ISO 50001", "DIN EN ISO 9001", "BRC", "DIN EN ISO 9001:2015", "HACCP", "DIN EN ISO 50001:2011", "ISO 50001", "ISO 9001"],
"vatId": null,
"fax": null,
"mainActivity": "Packaging material",
"productCategories": ["Bags & Pouches (Other)", "Block Bottom Bags", "Foils", "Loading Aids (Other)", "Pharmaceutical Packaging", "Promotional Bags"],
"keywords": [],
"paymentMethods": [],
"incoterms": [],
"catalogUrl": "https://wlw-1-company-facts-media20191122174836234900000006.s3.eu-central-1.amazonaws.com/135b362a-7f71-45f5-af81-c402953fdb6d.pdf",
"contactPersons": null,
"contactPersonsCount": 3,
"websiteEmailsFetched": true,
"emails": ["peku@peku.com"],
"personalEmails": null,
"personalEmailsCount": 0,
"emailPages": ["http://www.peku.com/"],
"privateDataRedacted": true,
"searchKeyword": null,
"searchCountry": null,
"site": "europages.co.uk",
"scrapedAt": "2026-10-14T15:24:30.811Z"
}
FieldMeaning
idEuropages' company id; the same on every language site and between runs.
phoneThe company's main number as published on Europages.
companyTypesEuropages' supplier types; a company can have several.
employeesBand as published (1-4 ... 1000+).
europagesCustomertrue when the company pays Europages for its listing, as the site's data says.
certificatesCount, productCountCounts from the result list; the certificate names come with details.
detailsFetchedtrue when the company's Europages page was read (details on and the page answered).
contactPersonsCountHow many named contact persons the company lists on Europages (details only).
websiteEmailsFetchedtrue when the company's website answered (website emails on).
emailsCompany addresses found on the website: role mailboxes (info@, sales@, kontakt@, ...) and mailboxes named after the company, on its own or a related domain. At most 5.
personalEmailsCount, personalEmailsAddresses on the website that look like a person's (a first name luca@, an initial j.smith@, a first name with a surname lorenzolapis@): counted, and listed only with the personal-data option.
emailPagesThe website pages the addresses were found on.
privateDataRedactedtrue when personal data (contact persons or personal addresses) exist but were left out.
searchKeyword, searchCountryThe search that found the company (null for a company URL).

Fields the site does not provide for a company are null (or an empty list), never missing. When an option is off, its fields are null and its ...Fetched flag is false.

Pricing

Pay per event.

EventFreeBronzeSilverGold and above
Actor start (once per run at the default 256 MB)$0.0036$0.003$0.0027$0.0024
Company delivered$0.0036$0.003$0.0027$0.0024
Company email (only with Find email addresses, only when at least one address was found)$0.0024$0.002$0.0018$0.0016
Company details (only with Add details, only when the company's page was read)$0.0024$0.002$0.0018$0.0016
Monitoring page re-checked (only with Only new companies: a result page of up to 30 companies that holds companies an earlier run delivered)$0.00036$0.0003$0.00027$0.00024

Worked example on Bronze: 1,000 companies = $0.003 + 1,000 × $0.003 = $3.003. With email addresses found for 700 of them (the rate in run duX7Hc04LPwPTunHO was 209 of 300): $0.003 + 1,000 × $0.003 + 700 × $0.002 = $4.403. With details for all 1,000 as well: add 1,000 × $0.002 = $6.403. A monitoring run over a search of 394 companies (14 result pages) that finds nothing new costs $0.003 + 14 × $0.0003 = $0.0072; one that finds 4 new companies on those pages costs $0.0072 + 4 × $0.003 = $0.0192. A first monitoring run costs the same as a normal run.

  • A company found by two of your searches in one run is delivered and charged once.
  • Companies skipped by the company-type filter are not charged. A website without an address costs nothing extra.
  • A pasted company URL always comes with its details at no extra charge; the details event is charged for it only when Add details is on.
  • The maximum total charge you set for a run is respected: the actor stops before it would go over, keeps what was delivered, and says so. Run 8TsDfNoYwIf7OpBhs: a limit of $0.03 with email addresses on delivered 5 companies with 5 addresses ($0.003 + 5 × $0.003 + 5 × $0.002 = $0.028) and ended Succeeded. A limit below the price of one company with the extras you chose ends the run as Failed before any request. With Find email addresses or Add details on, the check reserves the extra price for every company, also those that end up without an address, so a run can stop a few companies short of what its limit would pay for (run ZIaXmGZSOoXdaGuQ0: a $0.04 limit stopped after 7 companies with 3 addresses, $0.030 on Bronze); it never charges more than the limit.

Email addresses

Europages shows no email addresses; it offers a contact form instead. With Find email addresses on company websites on, the actor reads each delivered company's website: its home page, and when that shows no company address, up to two contact or imprint pages it links to (about 30 seconds at most per company). It finds addresses in links and text, also when they are written with HTML entities or hidden by Cloudflare's email protection.

  • Delivered in emails: role mailboxes (info@, sales@, vertrieb@, biuro@, commerciale@, ... in many European languages) and mailboxes named after the company (peku@peku.com), on the website's domain or a related one (info@acme-group.de for acme.de).
  • Left out: other companies' addresses (web agency credits, a page listing distributors or agents), example addresses from forms (jean.dupont@gmail.com), tracking ids.
  • Only counted, unless you switch on the personal-data option: addresses that look like a person's. That is any mailbox with a common first name (anna.muster@, luca@lucabianchi.it, lorenzolapis@gmail.com), an initial (j.smith@, m.rossi@rossi.it), or a role word plus a name (marketing.anna@). The company's name does not make such an address a company one, because family firms carry the family name.
  • Website pages that are not web pages (a PDF or a video the company links as its website) or are larger than 3 MB are not read.

Measured on 2026-10-14 (share of delivered companies with at least one company address): Italian packaging 209 of 300 (duX7Hc04LPwPTunHO, before the stricter person rules, which turned about 2 to 3% of the addresses delivered in earlier test runs into counted personal ones), French industrial valves 53 of 90 (97pr9tPuj0iSa1Di6; most of the rest publish only a contact form), Polish injection moulding 38 of 67 (zTvcefRc6CsH0dk2Q), Italian olive oil 16 of 30 (dBMiCaFeg0fOjy32i). The rate depends on the country and the trade.

Reliability and failure behaviour

What happenedRun statusStatus message
Companies deliveredSucceededScraped 60 companies from 1 query
Europages has no companies for the keywordSucceeded0 results: Europages has no companies for this query — "xqzzvbnmw" matches nothing; the unrelated companies Europages suggests instead were not delivered
Some searches worked, some failedSucceededScraped 120 companies from 2 queries — 1 of 2 queries failed ("…": …)
Nothing delivered because of errors or blocking (tested in simulation; not produced live)FailedNo companies delivered: Europages blocked every attempt; try again later. No companies were charged (the start fee applies).
Input the actor cannot useFailed, within about a secondNothing to do: none of the 1 entries in the input is usable (first: "https://www.kompass.com/…": not a europages.co.uk / … URL). …
Maximum charge reachedSucceededScraped 5 companies from 1 query — stopped at the maximum charge set for this run
Run timeout closeSucceeded… — stopped just before the run timeout; raise the timeout to get the rest (with email addresses on, the page being read is delivered with the websites read so far; the rest get websiteEmailsFetched: false and no email charge)
  • For a keyword it does not know, Europages still shows up to a page of unrelated companies. When none of the companies on such a small first page matches the keyword at all, the actor delivers nothing and says so, instead of charging you for them.
  • A company website that is down or refuses the request is not an error: the company is delivered with websiteEmailsFetched: false and no email charge.
  • Results are saved page by page. A run that is aborted, times out or is resurrected keeps what was delivered and never delivers or charges the same company twice.
  • Europages refuses an address that sends too many requests in a short time (see "Limits"). The actor paces itself to stay below that, waits out a refusal (up to about 10 minutes) and then continues; a search that is still refused fails by name in the status message while the others are kept.

Large searches (past 3,000 companies)

Europages shows at most 100 pages of 30 companies for one search. With Split large searches on (the default) and a maximum above 3,000, a larger search is read country by country, largest first; a country above 3,000 is read region by region and then through its own 3,000 for companies without a region. Each company is delivered and charged once. When some part still holds more than the site shows, the status message says how many of the companies Europages reports were reached. With Company types set, the countries are read through Europages' type filter; a country with more than 3,000 companies of those types is then also read region by region without the filter, keeping only the types asked for. Run LYT2xp8BiYpUIkkjH: packaging machines, Germany, manufacturers only, maximum 900: Europages reports 4,616 such companies; 900 delivered in 110 seconds from 30 pages, all of them manufacturers.

Run UYMEIfmLChvMSYmWf (2026-10-14): packaging machines, all countries, maximum 4,000. Europages reports 15,667 companies for it and shows 3,000. The actor read it by country, Germany (6,686) by region, and delivered 4,000 different companies in 8 minutes 19 seconds without a single refusal.

Limits

  • Speed: Europages answered an Apify address with "Human Verification" (HTTP 405) after quick bursts in our tests (roughly 100 requests within 5 minutes). The actor therefore sends at most one request every 3.5 seconds to Europages. Measured: about 480 companies a minute from result lists (4,000 in 499 s), about 50 a minute with email addresses (300 in 368 s; slow websites set the pace), about 17 a minute with Add details (one Europages request per company). With Apify Proxy on, Europages requests go out once a second and move to another address when refused, which is faster but not measured at scale.
  • For more than about 1,000 companies with details, raise the run timeout above its default of one hour.
  • The order of results is Europages' relevance order and can differ slightly between page requests (29 repeats in the 136 pages of run UYMEIfmLChvMSYmWf). Repeats are delivered and charged once; the run summary counts them.
  • The language sites share one directory: a company has the same id on all of them, so the same keyword on two language sites returns mostly the same companies (each delivered and charged once per run).
  • Countries: whatever Europages lists (about 45, mostly European). Descriptions come as the company wrote them; category names follow the language site.
  • The keyword match is Europages' own: it includes companies related by meaning, not only by text.
  • Email addresses are whatever the company's website shows today; an address is not checked for delivery. A company whose website publishes only a contact form has none.

Monitoring: only new companies

  1. Turn on Only new companies, set the maximum to cover the whole search, and save the input as a task.
  2. Schedule the task (weekly is usually enough for a directory).
  3. The first run delivers what it finds. Every later run delivers and charges only companies it has not delivered before for the same search; a run with nothing new ends as Succeeded with 0 new companies….

Europages sorts results by relevance, not by date, so a new company can appear anywhere in the list and every monitoring run reads the whole search again. Each result page that holds companies delivered before is charged as one "monitoring page" event ($0.0003 on Bronze, about $0.01 per 1,000 companies checked). Monitor focused searches (a keyword and a country) rather than very broad ones.

Tested on 2026-10-14: run UrO1EbU011KhXSI58 delivered 67 Polish injection-moulding companies; the same input a minute later (zViCT91k4ynBSAffQ) delivered 0, ended Succeeded with 0 new companies in 2 monitored queries (no companies charged; 3 result pages re-checked at the monitoring price, and the start fee applies) and charged the start fee plus 3 monitoring pages. The run summary counts the known companies a monitoring run skipped: knownBefore (distinct companies) and, per search, alreadySeen.

The memory is a key-value store named europages-company-scraper-monitor in your own account (one record per search and monitor name, up to 100,000 ids each). A company delivered for one search is remembered for every search of the run that met it. Delete the store or change Monitor name to start over.

FAQ

Do I need a proxy? Usually not. With the actor's pacing, runs of up to 5,853 companies worked without one (one refusal, waited out). If a run of yours is refused, switch on Apify Proxy (datacenter).

Why fewer companies than Europages says? The site serves 3,000 per search; turn on splitting and raise the maximum. The summary shows what was reached.

Why does a company have no email? Its website shows none (many industrial companies offer only a contact form), the website did not answer, or the only addresses on it look like a person's (see personalEmailsCount).

Can I run it from code? Yes: the API, the Apify clients for JavaScript and Python, Make, Zapier, n8n.

What happens when Europages changes its pages? The actor reads the data the site embeds in its pages. If that disappears, runs fail with "a Europages page without company data" instead of returning empty results; report the run id under Issues.

This actor collects business directory data that Europages shows publicly without a login (company names, addresses, switchboard numbers, websites and company facts) and, on request, the company email addresses that companies publish on their own websites. By default it does not return personal data of individuals: named contact persons and person-like email addresses are only counted. The Include personal data option adds them; by switching it on you confirm that you have a lawful basis under the GDPR to process them, and you take responsibility for informing those people and for the direct-marketing rules of their country. Several EU countries require prior consent for cold email or calls, also between businesses, and that applies to role addresses such as info@ as well. Some sole traders trade under their own name: that name is the company name as published. Their mailbox is treated as personal when it has a first name or an initial in it; a mailbox that is only the company's domain name or surname (weber@hans-weber.de) is delivered as a company address.

Europages' terms of use forbid downloading its addresses to build a database and using its data to solicit its users; its operator, Visable, claims database rights in the directory. Use the output for research, sourcing and analysis, keep extracts proportionate, and do not re-publish the directory. You are responsible for respecting the site's terms, database rights and data-protection law in your country; if you are unsure, ask a lawyer before you build on the data.

  • Company Hiring Tracker: paste the websiteDomain values from this actor's output and see which of these companies are hiring, in which functions and countries, and what changed since your last run.
  • Welcome to the Jungle Scraper: headcount, tech tools and open jobs per company for firms that recruit on Welcome to the Jungle (mostly France), to qualify a company list.
  • Yandex Maps Scraper: local businesses with address, phones, website and opening hours from Yandex Maps (Russia, the CIS countries, Türkiye), when you need local suppliers and service firms that are not in a B2B directory.

Changelog

  • 2026-10-14 0.1: first version, with email addresses from company websites. Later the same day: the company-type filter runs on Europages itself; pasted result-list URLs keep their filters; country codes and the site are checked before the run; stricter rules for addresses that name a person; a run stopped by its timeout delivers the page it was reading; the monitoring-page event; the run summary counts the known companies a monitoring run skipped (knownBefore).

Support

Open an issue on the actor's Issues tab with the run id.