# Europages Scraper & API: B2B Supplier Leads & Emails (`s_actors/europages-scraper`) Actor

Scrape Europages without login: B2B suppliers and manufacturers by keyword, search link or company link. Phone, website, address, headcount, VAT ID, contact persons, certificates and emails from company websites. Country, supplier type and size filters.

- **URL**: https://apify.com/s_actors/europages-scraper.md
- **Developed by:** [Superior Actors](https://apify.com/s_actors) (community)
- **Categories:** Lead generation, E-commerce, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.89 / 1,000 companies

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Europages Scraper & API: B2B Supplier Leads & Emails

Export **European B2B suppliers and manufacturers** from Europages with **phone, website, address, headcount, founding year and supplier type** on every row. Then get what Europages itself does not show: **emails found on each company's own website** (mail server checked), plus the company page details: **VAT ID, contact persons with role and direct phone, certificates (ISO...), payment methods and incoterms**. Search by **keyword**, paste a **search link** or a **company link**. No login, no browser.

```json
{ "searchQueries": ["packaging"], "countries": ["DE", "PL"], "supplierTypes": ["Production"], "maxCompaniesPerQuery": 500 }
```

Filter by **country**, **supplier type** (manufacturer, distributor, wholesaler, service provider), **company size** and the **verified** badge. One Europages search shows at most 3 300 companies: past that, the Actor **splits the search by country and supplier type** on its own to reach more.

#### What you get

Real example, 26 October 2026: keyword **packaging**, the first rows:

| company | city | employees | phone | email (from website) | VAT ID | supplier type |
|---|---|---|---|---|---|---|
| ALYA PACKAGING | Istanbul, TR | 50-99 | +902126032466 | sales@alyapackaging.com | | Manufacturer / producer |
| CATTINI BOX MANUFACTURER | Cracow, PL | 1-4 | +48784564059 | biuro@cattini.com.pl | PL6762444543 | Manufacturer / producer |
| CDA | Narbonne, FR | 20-49 | +33468412529 | contact@cdafrance.com | FR22424761419 | Manufacturer / producer |
| INDUPLAST PLÁSTICOS DE INGENIERÍA | Barcelona, ES | 5-9 | +34934463711 | info@induplast.es | ESB63604904 | Manufacturer / producer |
| EKOPACK KAĞIT AMBALAJ | Istanbul, TR | 100-199 | +902128863461 | ekopack@ekopack.com.tr | | Manufacturer, Service provider |
| FORTIS M. BOROWY SP. J. | Zielona Góra, PL | 20-49 | +4848684772137 | info@fortis.net.pl | PL9291665506 | Manufacturer / producer |

Of these 30 companies: **30 with phone and website, 24 with an email** from their website, 22 with a VAT ID.

| Field | Description |
|---|---|
| `companyId`, `name`, `url` | The company and its Europages page |
| `website`, `phone` | Company website and main phone number (Europages profile) |
| `email`, `emails`, `emailMailServer`, `emailSourceUrl` | The best email found on the company's website (own domain and info@ / sales@ first), all emails found, whether the domain receives mail (MX), the page it was found on |
| `contactPageUrl`, `websiteReachable`, `linkedin`, `facebook`, `instagram`, `x`, `youtube` | The website's contact / imprint page and its social profiles |
| `street`, `postalCode`, `city`, `countryCode`, `latitude`, `longitude` | Address and map coordinates |
| `employees`, `foundingYear`, `supplierTypes`, `distributionArea` | Headcount range, year founded, manufacturer / distributor / wholesaler / service provider / custom manufacturer, where it sells (national, Europe, international) |
| `isVerified`, `responseRate`, `averageResponseTime` | Europages "verified" badge, share of inquiries answered and usual answer time |
| `description`, `products`, `productCount`, `logoUrl` | The company text, its showcased products, the number of products on Europages, the logo |
| `vatId`, `fax`, `acronym` | VAT number (company page details) |
| `contactPersons` | Named contacts: name, role (executive, sales, marketing...), direct phone and fax |
| `certificates`, `paymentMethods`, `incoterms`, `keywords`, `mainBusinessArea`, `documents`, `videos` | ISO and other certificates, accepted payment and delivery terms, the company's keywords, catalogs and PDFs |
| `hasDetails`, `searchQuery`, `scrapedAt` | Whether the company page was read, the keyword or link the row came from, run time |

#### How it works

1. Add **Keywords** (`packaging`, `steel pipes`, `industrial valves`, `web design`) or **Europages links**: a search page (`europages.co.uk/en/search?q=...&countries=DE_IT`) keeps its own filters, a company page (`europages.xx/en/company/...`) gives one row
2. Optionally pick **Countries** (DE, FR, IT, PL, ES, NL, TR...), **Supplier types**, **Company size** and **Verified companies only**
3. Keep **Company page details** and **Find emails on company websites** on (both default), or turn them off for a cheaper list with phone and website only. Speed: Europages allows only a calm pace, so with company page details a run reads about 20 companies a minute; without them, several hundred a minute
4. Set **Max companies per keyword** and run. Download as CSV, Excel, JSON or HTML. Three tabs: **Companies**, **Leads** (email, phone, VAT, contact persons, socials), **Company profile**

Turn on **Only companies with an email** for a mailing list: the others are left out and free.

#### Why this Actor

| | |
|---|---|
| 📧 **Emails Europages does not show** | Europages hides addresses behind a contact form. The Actor opens each company's own website, its contact and imprint pages, and returns the best address with a mail server check |
| 🧾 **VAT ID and named contacts** | From the company page: VAT number, contact persons with role and direct phone, certificates, payment methods, incoterms |
| 🌍 **Past the 3 300 limit** | A Europages search stops at 110 pages. Large keywords are split by country and supplier type automatically, so "packaging" (75 000 companies) is not cut at 3 300 |
| 🎯 **Filters** | Country, supplier type, headcount, verified badge; filtered-out companies are free |
| 🔔 **New supplier alerts** | **Only new companies** returns just the companies that joined since the previous run of the same search |
| 💰 **From $1.49 per 1,000 companies** | Pay only for what you turn on, no subscription |

#### Get new suppliers every week

1. Add your keywords and countries and turn on **Only new companies**
2. Save as a task and add a schedule, e.g. every Monday
3. The **first run** returns the current companies as a baseline. **Every later run** returns only companies not seen before: send them to [Google Sheets](https://apify.com/s_actors/google-sheets-import-export), your CRM or email with an integration

The memory is kept in your account (key-value store `europages-scraper-state`). Use a different **Monitor name** for each task.

#### Pricing

Pay per company in the results, no subscription needed. Apify Scale and Business plans pay less:

| Event | Free and Starter plans | Scale plan | Business plan |
|---|---|---|---|
| Run start | $0.001 | $0.001 | $0.001 |
| Company (one row: phone, website, address, size, type) | $0.00149 | $0.00099 | $0.00089 |
| Company page details (VAT ID, contact persons, certificates), when on | $0.00099 | $0.00089 | $0.00079 |
| Email found on the company website, when on | $0.00099 | $0.00089 | $0.00079 |

| Task | Cost |
|---|---|
| 30 companies with details and emails (the example) | ~$0.10 |
| 1,000 companies, phone and website only | ~$1.49 |
| 1,000 companies with details and emails (~80% with email) | ~$3.30 |
| Weekly alert of new suppliers for 3 keywords (~20 a week) | ~$0.29 per month |

Companies left out by your filters, by **Only new companies** or by **Only companies with an email** are not charged. The email event is charged only when an email was found.

#### FAQ

**Where does the data come from?** From europages.co.uk, the same data any visitor sees, without logging in. Emails come from the company's own public website (home, contact and imprint pages).

**Why are some emails missing?** Europages never shows email addresses. About 8 in 10 companies publish one on their website; the rest use only a contact form, or their site is down or closed to bots.

**How many companies can I get?** Up to 3 300 per search (Europages' limit). With a higher **Max companies per keyword**, a larger keyword is split into one search per country (and per supplier type for big countries), so you get far more.

**Does the company size filter cost anything?** No. Europages' search does not filter by headcount, so the Actor checks each row: companies outside your ranges (or without a headcount) are left out and free.

**Which countries work?** All Europages countries: EU, UK, Switzerland, Norway, Turkey and others. Use two-letter codes (DE, GB, CH, TR).

**Why is it slower with company page details?** Each company page is one more request, and Europages blocks visitors who send requests too fast. The Actor keeps a calm pace (about 20 pages a minute) instead of hiding behind many IP addresses. If Europages still asks for a captcha, the run stops reading new pages, returns everything it has and charges nothing for what it skipped.

**Do I need an account or an API key?** No.

#### Use with the API and AI agents

Run it via the [Apify API](https://docs.apify.com/api/v2) from Python, Node.js or any HTTP client as your Europages API, or connect it to Claude, ChatGPT and other AI agents through the [Apify MCP server](https://mcp.apify.com): "Find 50 German manufacturers of steel pipes with 20-99 employees on Europages and give me their emails and phone numbers."

#### Other B2B lead tools

| Tool | What it does |
|---|---|
| [Clutch.co Scraper](https://apify.com/s_actors/clutch-scraper) | Agencies from Clutch.co with website, phone, rates, client reviews and emails |
| [Google Maps Email Extractor](https://apify.com/s_actors/google-maps-email-extractor) | Local businesses from Google Maps with emails from their websites |
| [LinkedIn Company Scraper](https://apify.com/s_actors/linkedin-company-scraper) | Exact employee count, headcount growth and details of any company |
| [Facebook Email Scraper](https://apify.com/s_actors/facebook-email-scraper) | Emails, phones and addresses of Facebook business pages |
| [Google Sheets Import & Export](https://apify.com/s_actors/google-sheets-import-export) | Send the companies to a Google Sheet |

#### Is it legal?

The Actor reads only public pages: the Europages directory and the companies' own websites, without logging in. The data is business contact information that companies publish to be contacted. Follow the data protection and marketing rules of your country (such as GDPR and anti-spam laws) when you contact the companies, especially named contact persons.

# Actor input Schema

## `searchQueries` (type: `array`):

What the suppliers make or offer, like the Europages search box: "packaging", "steel pipes", "industrial valves", "web design". One search per keyword (filters below apply). Europages links work here too.

## `startUrls` (type: `array`):

Search links (europages.co.uk/en/search?q=...\&countries=DE_IT, /search/supplier-type/..., /companies/<country>/<keyword>.html) keep their own filters; company links (europages.xx/en/company/<name>-<id>) give one row each. Any Europages domain.

## `countries` (type: `array`):

Two-letter codes of the supplier countries: DE, FR, IT, ES, PL, NL, TR, GB... Empty = all countries.

## `supplierTypes` (type: `array`):

Only these kinds of supplier (a company can have several). Empty = all.

## `employees` (type: `array`):

Only companies with one of these headcount ranges. Companies without a headcount are left out when this is set (free).

## `verifiedOnly` (type: `boolean`):

Only companies with the Europages "verified" badge.

## `maxCompaniesPerQuery` (type: `integer`):

For each keyword and search link. Europages shows 3 300 companies per search: past that, the search is split by country and supplier type to reach more.

## `maxCompanies` (type: `integer`):

The run stops at this many companies.

## `includeDetails` (type: `boolean`):

Read each company page: VAT ID, fax, contact persons (name, role, direct phone), certificates (ISO...), payment methods, incoterms, keywords, catalogs. Charged per company page read. Europages allows a calm pace only: with details ~20 companies a minute, without them several hundred a minute.

## `findEmails` (type: `boolean`):

Europages does not show email addresses: open the company website (and its contact or imprint page) to find them, plus LinkedIn, Facebook, Instagram, X and YouTube links. Charged only for companies with an email found.

## `checkEmailDomains` (type: `boolean`):

Drop emails whose domain cannot receive mail (no MX record).

## `onlyWithEmail` (type: `boolean`):

Output only companies with an email found (the others are free).

## `language` (type: `string`):

Language of descriptions and the keyword search.

## `onlyNew` (type: `boolean`):

Output only companies not seen in the previous runs of the same search (and monitor name). Schedule it weekly to get new suppliers of a keyword.

## `monitorName` (type: `string`):

Keeps the memory of seen companies apart for different schedules.

## `debugLog` (type: `boolean`):

Log every request retry.

## Actor input object example

```json
{
  "searchQueries": [
    "packaging"
  ],
  "verifiedOnly": false,
  "maxCompaniesPerQuery": 30,
  "maxCompanies": 1000,
  "includeDetails": true,
  "findEmails": true,
  "checkEmailDomains": true,
  "onlyWithEmail": false,
  "language": "en",
  "onlyNew": false,
  "debugLog": false
}
```

# Actor output Schema

## `overview` (type: `string`):

Every company: name, website, phone, email, city, country, size, supplier type.

## `all` (type: `string`):

Every field, with contact persons, certificates and documents.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "packaging"
    ],
    "maxCompaniesPerQuery": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("s_actors/europages-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["packaging"],
    "maxCompaniesPerQuery": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("s_actors/europages-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "packaging"
  ],
  "maxCompaniesPerQuery": 30
}' |
apify call s_actors/europages-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,s_actors/europages-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Y0yPWWM877ucjDlPc/builds/JLPokrasLxXZ4dMx8/openapi.json
