# Europages Company Scraper (`parsebird/europages-scraper`) Actor

Scrape Europages B2B companies by keyword or URL: names, phones, websites, addresses, VAT IDs, headcount, founding year, supplier types, certificates, incoterms and contact persons.

- **URL**: https://apify.com/parsebird/europages-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.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 Company Scraper

**Europages Company Scraper** extracts B2B supplier, manufacturer and wholesaler data from [Europages](https://www.europages.co.uk) by keyword or URL: company name, phone, website, address, coordinates, VAT ID, headcount, founding year, supplier types, certificates, incoterms, payment methods and named contact persons, as clean JSON, CSV or Excel.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Search Europages by keyword with its own country, verified-supplier, headcount and supplier-type filters, get past the 3,300-results-per-search limit automatically, and optionally collect email addresses from each company's own website.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
Apify Actor: parsebird/europages-scraper. Scrapes B2B company profiles from Europages (europages.co.uk / europages.fr / europages.de etc., European B2B supplier directory). Call via ApifyClient: client.actor("parsebird/europages-scraper").call(run_input={"searchQueries": ["packaging"], "countries": ["DE", "FR"], "verifiedOnly": false, "maxItems": 200, "enrichCompanyDetails": true, "enrichEmails": false}). Inputs: searchQueries (array of strings, product/service keywords, any language, one Europages search each), startUrls (array of {url}: Europages search URLs with ?q= or company profile URLs /{lang}/company/{slug}, any Europages domain; legacy /NAME/ID.html company URLs also work; category /bd/ pages, product pages and RFQ pages are not supported), countries (array of ISO-2 codes such as FR, DE, IT, GB; each runs as its own search; default all), verifiedOnly (boolean, default false), employeeCounts (array: From1To4 | From5To9 | From10To19 | From20To49 | From50To99 | From100To199 | From200To499 | From500To999 | MoreThan1000), supplierTypes (array: Production | CustomerSpecificManufacturing | Distribution | Service | Wholesaler), enrichCompanyDetails (boolean, default true; reads each company profile for VAT ID, fax, certificates, payment methods/terms, incoterms, contact persons, business area, product keywords; billed as an extra event), enrichEmails (boolean, default false; visits each company's website to collect emails, Europages itself does not publish emails), maxItems (integer, total companies, default 1000), maxConcurrency (integer, default 10), maxRequestRetries (integer, default 5), proxy (object, used only if Europages refuses direct requests). Output fields per company: type, source, companyId, uuid, slug, profileUrl, companyName, acronym, logoUrl, email, emailSource, websiteEmails, phoneNumber, faxNumber, website, websiteDomain, street, city, zipcode, countryCode, coordinates {latitude, longitude}, vatId, employeeCount, foundingYear, supplierTypes, distributionArea, mainBusinessArea, description, certificates, certificatesCount, paymentMethods, paymentTerms, incoterms, contacts [{name, firstName, lastName, title, department, phoneNumber, faxNumber}], productCount, portfolioProducts [{name, description, image, url}], keywords, pictures, videos, documents, isVerified, isQuickResponder, averageResponseTime, responseRate, canBeContacted, searchQuery, detailsScraped, scrapedAt. Pricing: pay per company saved, plus a details event per company when enrichCompanyDetails is on. Full API spec: https://apify.com/parsebird/europages-scraper/api. Get your token: https://console.apify.com/settings/integrations.
```

### What is Europages Company Scraper?

[Europages](https://www.europages.co.uk) is a European B2B directory where manufacturers, wholesalers, distributors and service providers list their companies and products. **Europages Company Scraper** turns Europages searches and company profiles into a structured dataset, so you can build supplier lists and B2B lead lists without copying profiles by hand. It works as a **Europages API alternative**: no Europages account, no API key and no code needed.

Type a product or service keyword such as `packaging`, press Start, and download the companies as JSON, CSV, Excel or HTML.

### What can Europages Company Scraper do?

- 🔎 **Search by keyword in any language.** `packaging`, `emballage` and `Verpackung` all work; Europages translates the keyword itself.
- 🧰 **Europages filters.** Country, verified suppliers only, number of employees and supplier type (manufacturer, subcontractor, distributor, service provider, wholesaler).
- 🔗 **Paste URLs.** Europages search URLs and company profile URLs from any Europages domain (europages.co.uk, .fr, .de, .it, .es and others), including old-style `/COMPANY-NAME/00000005424124-761159001.html` links.
- 📈 **More than 3,300 results per keyword.** Europages shows at most 110 pages of 30 companies per search. When a search has more, the scraper splits it by country, then headcount, then supplier type, and keeps going until it reaches your limit.
- 🏢 **Full company profiles.** With `enrichCompanyDetails` on (default), each row gets the VAT ID, fax, certificates, payment methods and terms, incoterms, named contact persons with department and phone, main business area, product keywords, videos and PDF catalogues.
- ✉️ **Emails from company websites.** Europages does not show company email addresses. Turn on `enrichEmails` to visit each company's own website (home page plus a contact or imprint page) and collect the addresses listed there.
- 🧹 **No duplicates and a stable layout.** Each company is saved once per run, and every row has the same columns. Missing values are `null` or `[]`.
- 📅 **Scheduling and monitoring.** Re-run searches weekly with [Apify Schedules](https://docs.apify.com/platform/schedules) to watch for new suppliers.
- 🔌 **API and integrations.** Use the [Apify API](https://docs.apify.com/api/v2), or send results to Google Sheets, Zapier, Make, HubSpot, Slack or webhooks with [Apify integrations](https://docs.apify.com/platform/integrations).

### What data can you extract from Europages?

| Field | Description | Needs details |
|-------|-------------|:---:|
| `companyName` / `acronym` / `logoUrl` | Company name, short name and logo | |
| `companyId` / `slug` / `profileUrl` | Europages company ID and profile URL (English market view) | |
| `phoneNumber` / `website` / `websiteDomain` | Main phone number and company website | |
| `street` / `city` / `zipcode` / `countryCode` / `coordinates` | Address and map position | |
| `employeeCount` / `foundingYear` | Headcount range (for example `20-49`) and year founded | |
| `supplierTypes` / `distributionArea` | Production, customer-specific manufacturing, distribution, service, wholesaler; local, national, European or international reach | |
| `description` | Company description from the profile | |
| `productCount` / `portfolioProducts` | Number of products listed and up to 5 showcased products (name, description, image, URL) | |
| `isVerified` / `averageResponseTime` / `responseRate` | Europages verified badge (for companies found through search) and response statistics, where shown | |
| `vatId` / `faxNumber` | VAT number and fax, when the company publishes them | ✅ |
| `certificates` | Certifications such as ISO 9001, BRC, FSC | ✅ |
| `paymentMethods` / `paymentTerms` / `incoterms` | Accepted payment methods and terms, and incoterms as standard codes (EXW, FOB, CIF, DAP…) | ✅ |
| `contacts` | Named contact persons with department and phone | ✅ |
| `mainBusinessArea` / `keywords` | Business area and the company's product keywords | ✅ |
| `videos` / `documents` / `pictures` | YouTube videos, PDF catalogues and photo gallery | ✅ |
| `isQuickResponder` / `canBeContacted` | Quick-responder badge and whether the contact form is open | ✅ |
| `email` / `websiteEmails` / `emailSource` | Best email and all emails found on the company's website | `enrichEmails` |

Fields marked ✅ are filled when **`enrichCompanyDetails`** is on (and always for pasted company URLs).

### How to scrape Europages

1. Open [Europages Company Scraper](https://apify.com/parsebird/europages-scraper) and click **Try for free**.
2. Enter one or more **search keywords**, such as `packaging` or `industrial valves`, or paste Europages URLs.
3. Optionally pick **countries**, **verified suppliers only**, **number of employees** and **supplier types**.
4. Keep **Add company profile details** on for VAT IDs, certificates and contact persons, and turn on **Find emails on company websites** if you need email addresses.
5. Set **Max companies** and click **Start**.
6. When the run finishes, download the companies from the **Output** tab as JSON, CSV, Excel or HTML.

### How much does it cost to scrape Europages?

Europages Company Scraper uses pay-per-event pricing. You pay for each company saved, and for profile details only when you turn them on. Compute and proxy costs are included in these prices; there's nothing else to pay.

| Event | Free | Bronze | Silver | Gold |
|-------|------|--------|--------|------|
| Company saved (`company-scraped`) | $2.99 / 1,000 | $2.49 / 1,000 | $2.19 / 1,000 | $1.89 / 1,000 |
| Company details added (`company-details`) | $3.99 / 1,000 | $3.89 / 1,000 | $3.79 / 1,000 | $3.69 / 1,000 |

For example, on the Free plan 1,000 companies from search results cost **$2.99**, and 1,000 companies with full profile details cost **$6.98** ($2.99 + $3.99). The details event is charged only for companies whose profile was actually read. The website email search has no extra charge. Apify's free plan includes monthly platform credit you can use to try the scraper. Set a maximum cost per run in the run options and the scraper stops when it reaches it.

### Input

Search by keyword, or paste Europages URLs. See the **Input** tab for every option.

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `searchQueries` | array | No\* | `[]` | Keywords to search, one Europages search each |
| `startUrls` | array | No\* | `[]` | Europages search URLs (`?q=`) and company profile URLs |
| `countries` | array | No | all | ISO-2 country codes (`FR`, `DE`, `IT`, `GB`…); each runs as its own search |
| `verifiedOnly` | boolean | No | `false` | Only suppliers with the Europages verified badge |
| `employeeCounts` | array | No | all | `From1To4`, `From5To9`, `From10To19`, `From20To49`, `From50To99`, `From100To199`, `From200To499`, `From500To999`, `MoreThan1000` |
| `supplierTypes` | array | No | all | `Production`, `CustomerSpecificManufacturing`, `Distribution`, `Service`, `Wholesaler` |
| `enrichCompanyDetails` | boolean | No | `true` | Read each company profile for VAT, fax, certificates, incoterms, contacts (extra event) |
| `enrichEmails` | boolean | No | `false` | Collect emails from each company's own website |
| `maxItems` | integer | No | `1000` | Maximum companies in total |
| `maxConcurrency` | integer | No | `10` | Companies processed in parallel |
| `maxRequestRetries` | integer | No | `5` | Retries per failed request |
| `proxy` | object | No | Apify Proxy (residential) | Used only if Europages refuses direct requests |

\* Add at least one keyword or URL.

When you search several keywords or countries, `maxItems` is shared evenly between them, and any share a search can't fill passes to the others.

**Example: verified packaging suppliers in Germany and France**

```json
{
    "searchQueries": ["packaging"],
    "countries": ["DE", "FR"],
    "verifiedOnly": true,
    "maxItems": 200
}
```

**Example: small wholesalers with emails**

```json
{
    "searchQueries": ["olive oil", "wine"],
    "employeeCounts": ["From1To4", "From5To9"],
    "supplierTypes": ["Wholesaler"],
    "enrichEmails": true,
    "maxItems": 100
}
```

**Example: Europages URLs**

```json
{
    "startUrls": [
        { "url": "https://www.europages.co.uk/en/search?q=solar panels" },
        { "url": "https://www.europages.co.uk/en/company/doruk-matbaa-ve-etiket-22336708" }
    ],
    "maxItems": 50
}
```

### Output example

One company with `enrichCompanyDetails` and `enrichEmails` on (description and lists shortened):

```json
{
    "type": "company",
    "source": "europages",
    "companyId": "1918455",
    "uuid": "00505682-f25b-1eea-b9f5-2f74208437ff",
    "slug": "betubed-packaging-gmbh-1918455",
    "profileUrl": "https://www.europages.co.uk/en/company/betubed-packaging-gmbh-1918455",
    "companyName": "betubed packaging GmbH",
    "acronym": "BP",
    "logoUrl": "https://wlw-1-company-facts-media20191122174836234900000006.s3.eu-central-1.amazonaws.com/ad7556fa-16d6-4c1a-ad03-37c9e6fe7360.png",
    "email": "info@betubed.de",
    "emailSource": "website",
    "websiteEmails": ["info@betubed.de"],
    "phoneNumber": "+494050693303",
    "faxNumber": null,
    "website": "http://www.betubed.de/",
    "websiteDomain": "betubed.de",
    "street": "Borsteler Chaussee 85-99a",
    "city": "Hamburg",
    "zipcode": "22453",
    "countryCode": "DE",
    "coordinates": { "latitude": 53.6054466, "longitude": 9.9798225 },
    "vatId": "DE323827758",
    "employeeCount": "1-4",
    "foundingYear": 2019,
    "supplierTypes": ["distribution", "wholesaler", "service", "production"],
    "distributionArea": "europe",
    "mainBusinessArea": "Packaging material",
    "description": "betubed is a specialist in sustainable, round cardboard tubes made from FSC®-certified paper...",
    "certificates": ["FSC COC", "GMP"],
    "certificatesCount": 2,
    "paymentMethods": ["paypal", "credit_card"],
    "paymentTerms": [],
    "incoterms": [],
    "contacts": [
        {
            "name": "Stefan Thiel",
            "firstName": "Stefan",
            "lastName": "Thiel",
            "title": null,
            "department": "executive",
            "phoneNumber": "+494050693303",
            "faxNumber": null
        }
    ],
    "productCount": 211,
    "portfolioProducts": [
        {
            "name": "Cardboard boxes rose gold | 315 x 87 mm – high-quality design packaging for cosmetics & food",
            "description": "Our cardboard cans in the color rose gold, measuring 315 x 87 mm, offer an elegant and modern packaging solution...",
            "image": "https://supplier-offers-media-production.s3.eu-central-1.amazonaws.com/6fc277ef-53a7-11f1-b4ac-0a58a9feac02.jpeg",
            "url": "https://www.europages.co.uk/en/company/betubed-packaging-gmbh-1918455/products/pappdosen-rose-gold-315-x-87-mm-hochwertige-designverpackung-fuer-kosmetik-food-36402378"
        }
    ],
    "keywords": ["Bottle Cartons", "Bottle Packaging", "Boxes", "Cardboard Boxes", "Cosmetic Packaging", "Shipping Tubes"],
    "pictures": [
        { "url": "https://wlw-1-company-facts-media20191122174836234900000006.s3.eu-central-1.amazonaws.com/d7cf2d95-c204-4bd6-8a4f-9a061ebbfad6.png", "title": null }
    ],
    "videos": [],
    "documents": [],
    "isVerified": true,
    "isQuickResponder": true,
    "averageResponseTime": "less_than_24h",
    "responseRate": 0.99,
    "canBeContacted": true,
    "searchQuery": "packaging",
    "detailsScraped": true,
    "scrapedAt": "2026-10-12T14:20:44.352Z"
}
```

Download the dataset in JSON, CSV, Excel, XML or HTML from the Output tab or through the API. The **Overview** and **Contacts** views in the Output tab show the most-used columns.

### Use the Europages Company Scraper API

Start a run and read the results with the [Apify API client for Python](https://docs.apify.com/api/client/python):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("parsebird/europages-scraper").call(run_input={
    "searchQueries": ["packaging"],
    "countries": ["DE"],
    "verifiedOnly": True,
    "maxItems": 100,
})
for company in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(company["companyName"], company["phoneNumber"], company["vatId"])
```

Or with the [Apify API client for JavaScript](https://docs.apify.com/api/client/js):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('parsebird/europages-scraper').call({
    searchQueries: ['industrial valves'],
    countries: ['IT', 'ES'],
    enrichEmails: true,
    maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((c) => console.log(c.companyName, c.email, c.website));
```

You can also call the scraper over plain HTTP; see the [API tab](https://apify.com/parsebird/europages-scraper/api) for endpoints and a ready-made `run-sync-get-dataset-items` URL.

### Use cases

- **Supplier sourcing.** Find manufacturers and subcontractors for a product across Europe, filtered by country, size and certification.
- **B2B lead generation.** Build lead lists with phone numbers, websites, VAT IDs, named contacts and website emails for sales outreach.
- **Distributor and wholesaler search.** List distributors and wholesalers in a target market before a product launch.
- **Market mapping.** Count and map competitors in a sector by country, headcount and founding year using coordinates and firmographics.
- **CRM enrichment.** Add VAT IDs, headcount, certificates and incoterms to company records you already have, by pasting their Europages profile URLs.
- **Monitoring.** Schedule weekly runs to spot new companies listed under your keywords.

### How it works

1. Each keyword runs as a Europages company search (30 companies per page), with your filters applied.
2. If a search has more than the 3,300 companies Europages will page through, the scraper splits it by country, then headcount, then supplier type, and reads each slice.
3. With `enrichCompanyDetails` on, it reads each company's Europages profile and product keywords and merges them into the row.
4. With `enrichEmails` on, it opens the company's website, and a contact or imprint page if needed, and collects the email addresses published there. The best match (same domain, generic inbox such as info@ or sales@) goes into `email`; all of them go into `websiteEmails`.
5. Each company is saved once. Output is always the English-market (europages.co.uk/en) view, whatever Europages domain you paste.

### FAQ

**Does the scraper return company emails?**
Europages does not publish company email addresses; its contact button opens a message form instead. The `email` field is filled only when you turn on `enrichEmails`, which collects addresses from the company's own website. In our tests, emails were found for about 8 in 10 companies that list a website. `emailSource` tells you where the email came from.

**How many companies can I get per keyword?**
Europages pages through at most 3,300 companies per search. The scraper splits bigger searches by country, headcount and supplier type to collect more. A broad keyword such as `packaging` lists over 70,000 companies on Europages.

**Why are some fields empty?**
Companies fill in their own Europages profile, and many leave out the fax, VAT ID, founding year or certificates. Empty values are `null` or `[]`, so the column layout stays the same in every run.

**Which Europages URLs are supported?**
Search URLs with a `?q=` keyword and company profile URLs (`/en/company/{slug}`, `/fr/company/{slug}` and so on) from any Europages domain, plus old-style company URLs ending in `.html`. Category landing pages (`/bd/...`), product pages and RFQ pages are skipped with a warning; paste a keyword or a company URL instead.

**Can I search in French, German or Italian?**
Yes. Europages translates search keywords, so `emballage` or `Verpackung` return the same companies as `packaging`. The output is always in English.

**What do the supplier types mean?**
`production` is a manufacturer, `customer_specific_manufacturing` a subcontractor making to order, `distribution` a distributor or reseller, `service` a service provider and `wholesaler` a wholesaler. A company can have several.

**Do I need a proxy?**
Usually not. The scraper sends requests directly and switches to the proxy from the input only if Europages starts refusing them.

**Can I integrate Europages data with other tools?**
Yes. Use [Apify integrations](https://docs.apify.com/platform/integrations) to send results to Google Sheets, Make, Zapier, Slack or a webhook, or call the scraper from your own code through the [API](https://apify.com/parsebird/europages-scraper/api).

**Something doesn't work. What should I do?**
Open an issue on the **Issues** tab with your input and run link, and we'll look into it.

### Is it legal to scrape Europages?

Europages Company Scraper collects only information that companies publish on their public Europages profiles and websites. It does not log in or access private data. Contact persons are business contacts, but they are still personal data under the GDPR and similar laws, so you need a lawful basis to store and use them, and you should follow the rules for B2B marketing in each country you contact. Check the [Europages terms of use](https://www.europages.co.uk/company/legal-notice/terms-of-use) and get legal advice if you're unsure. Read more in Apify's blog post on [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### Other B2B company scrapers

- [Made-in-China.com Scraper & API](https://apify.com/parsebird/made-in-china-scraper) – Chinese suppliers and products
- [Dun & Bradstreet Scraper](https://apify.com/parsebird/dnb-scraper) – company profiles from D\&B
- [UK Companies House Scraper](https://apify.com/parsebird/uk-companies-house-scraper) – UK company register data
- [KvK Handelsregister Scraper](https://apify.com/parsebird/kvk-handelsregister-scraper) – Dutch company register
- [Zefix.ch Scraper](https://apify.com/parsebird/zefix-ch-scraper) – Swiss commercial register
- [Allabolag Scraper](https://apify.com/parsebird/allabolag-company-scraper) – Swedish companies and leads
- [GoodFirms Company Scraper](https://apify.com/parsebird/goodfirms-scraper) – IT and agency directory
- [YellowPages USA Lead Generator](https://apify.com/parsebird/yellowpages-scraper) – US local business leads

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/europages-scraper/changelog.md

# Actor input Schema

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

Enter products, services or company names, one per line. Each keyword runs as its own Europages company search. Keywords in other languages (emballage, Verpackung) are translated by Europages.

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

Paste Europages search URLs (<code>https://www.europages.co.uk/en/search?q=solar panels</code>) or company profile URLs (<code>https://www.europages.co.uk/en/company/{slug}</code>). Any Europages domain works (europages.fr, .de, .it…). Category pages (/bd/…), product pages and RFQ pages are not supported.

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

Only companies based in these countries. Enter 2-letter ISO codes such as <code>FR</code>, <code>DE</code>, <code>IT</code>, <code>GB</code>. Each country runs as its own search. Leave empty for all countries.

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

Keep only companies with the Europages "verified" badge.

## `employeeCounts` (type: `array`):

Keep only companies in these headcount ranges. Leave empty for any size.

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

Keep only companies of these types. Leave empty for all types.

## `enrichCompanyDetails` (type: `boolean`):

Open each company's Europages profile to add VAT ID, fax, certificates, payment methods and terms, incoterms, named contact persons, business area, product keywords, videos and catalogues. Charged as an extra event per company.

## `enrichEmails` (type: `boolean`):

Europages does not publish company email addresses. Turn this on to visit each company's own website (home page plus a contact or imprint page) and collect the email addresses listed there. Slower; no extra charge.

## `maxItems` (type: `integer`):

Maximum number of companies to save across all keywords, URLs and countries.

## `maxConcurrency` (type: `integer`):

How many companies are processed in parallel.

## `maxRequestRetries` (type: `integer`):

How many times a failed request is retried before it is skipped.

## `proxy` (type: `object`):

Requests go out directly first. The proxy is used only if Europages starts refusing direct requests.

## Actor input object example

```json
{
  "searchQueries": [
    "packaging"
  ],
  "startUrls": [],
  "countries": [],
  "verifiedOnly": false,
  "employeeCounts": [],
  "supplierTypes": [],
  "enrichCompanyDetails": true,
  "enrichEmails": false,
  "maxItems": 50,
  "maxConcurrency": 10,
  "maxRequestRetries": 5,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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"
    ],
    "maxItems": 50,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/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"],
    "maxItems": 50,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/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"
  ],
  "maxItems": 50,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call parsebird/europages-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/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/AKJC4hu2hlZbUB4mY/builds/KlGBXNvMWjOkAJZ82/openapi.json
