# Europages Suppliers Scraper (`fetch_cat/europages-suppliers-scraper`) Actor

Extract public supplier company records from Europages search/category pages for lead generation, sourcing, and market research.

- **URL**: https://apify.com/fetch\_cat/europages-suppliers-scraper.md
- **Developed by:** [Hanna Nosova](https://apify.com/fetch_cat) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.78 / 1,000 supplier company saveds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Europages Suppliers Scraper

Extract public supplier company records from Europages search and category pages for lead generation, sourcing, procurement, and market research.

Use this Actor when you need structured Europages supplier lists that can be exported to CSV, JSON, Excel, API, or automation tools.

### At a glance

- **Primary job**: Turn public Europages supplier search/category pages into structured company lead records.
- **Input**: Paste Europages category/search URLs or enter a query such as `machining`.
- **Output**: One dataset row per unique supplier company with profile URL, location, employee range, and optional public contacts.
- **Best for**: B2B sourcing, supplier discovery, CRM imports, market mapping, and recurring lead monitoring.

### Common workflows

- **Supplier sourcing**: Collect companies from a product or service category such as machining, packaging, plastics, or textiles.
- **Lead generation**: Export company names, public profile URLs, websites, phones, and emails when visible for CRM enrichment.
- **Market research**: Compare suppliers by country, city, employee range, and area served.
- **Monitoring**: Schedule repeated bounded runs for important supplier categories and compare new results over time.
- **Automation**: Use Apify API, webhooks, MCP, or dataset exports to feed sales, procurement, or BI workflows.

### Input recipes

- **Machining supplier smoke test**: `startUrls: [{"url":"https://www.europages.co.uk/companies/machining.html"}]`, `maxItems: 10`, `includeDetails: false`.
- **Query-based category run**: `query: "packaging"`, `maxItems: 30`, `includeDetails: false`.
- **Contact enrichment sample**: Use a focused category URL with `maxItems: 15` and `includeDetails: true` to visit public company profiles.

### What data can you extract?

| Field | Description |
| --- | --- |
| `source` | Fixed source label, `europages`. |
| `sourceId` | Stable ID parsed from the Europages profile URL when available. |
| `searchUrl` | Listing/search page where the company was found. |
| `profileUrl` | Public Europages company profile URL. |
| `companyName` | Supplier company name. |
| `description` | Public listing/profile description when available. |
| `city` | Company city/locality when available. |
| `country` | Company country or country code as exposed by Europages. |
| `addressText` | Combined public address text when available. |
| `website` | Public company website when visible. |
| `phones` | Public phone numbers found in structured data or profile links. |
| `emails` | Public email addresses found on the public profile page when available. |
| `employeeRange` | Public employee range from Europages structured data. |
| `areaServed` | Public area served, such as international. |
| `products` | Public product/service tags when exposed. |
| `certifications` | Reserved for public certifications/badges when stable. |
| `position` | Position in the source Europages result list. |
| `detailStatus` | Whether profile detail enrichment was not requested, succeeded, not found, or failed. |
| `scrapedAt` | ISO timestamp when the record was saved. |

### Input configuration

| Setting | JSON key | Use it for | Example |
| --- | --- | --- | --- |
| Start URLs | `startUrls` | Public Europages company/category/search URLs to scrape. | `https://www.europages.co.uk/companies/machining.html` |
| Search query | `query` | Build a category-style Europages URL from a keyword when no URL is supplied. | `machining` |
| Country code | `countryCode` | Optional country filter appended to query searches when supported. | `DE` |
| Maximum company records | `maxItems` | Cap saved rows and control spend. | `50` |
| Visit company profile pages | `includeDetails` | Enrich public websites, phones, and emails from profiles. | `false` |
| Maximum concurrency | `maxConcurrency` | Compatibility/concurrency limit for future parallel detail fetches. | `3` |
| Proxy configuration | `proxyConfiguration` | Optional Apify Proxy settings. | `{ "useApifyProxy": true }` |

### Example input

```json
{
  "startUrls": [
    { "url": "https://www.europages.co.uk/companies/machining.html" }
  ],
  "maxItems": 30,
  "includeDetails": false
}
````

### Example output

```json
{
  "source": "europages",
  "sourceId": "00000005519114-001",
  "searchUrl": "https://www.europages.co.uk/companies/machining.html",
  "profileUrl": "https://www.europages.co.uk/ILK-IHRACAT-AS/00000005519114-001.html",
  "companyName": "ILK IHRACAT AS.",
  "description": null,
  "city": "Izmir",
  "country": "TR",
  "addressText": "Izmir, TR",
  "website": null,
  "phones": [],
  "emails": [],
  "employeeRange": "50-99",
  "areaServed": "international",
  "products": [],
  "certifications": [],
  "position": 1,
  "detailStatus": "not_requested",
  "scrapedAt": "2026-07-18T08:00:00.000Z"
}
```

### Pricing

| Event | Price | Charged when |
| --- | --- | --- |
| Run start | `$0.005` per run | Once when the Actor starts. |
| Item processed | Tiered pay-per-event pricing | Each unique supplier company record saved to the dataset. |

Store discount tiers for saved supplier records:

| Tier | Price per saved supplier record |
| --- | --- |
| Free | `$0.0015` |
| Bronze | `$0.001305` |
| Silver | `$0.00102` |
| Gold | `$0.00078` |
| Platinum | `$0.00052` |
| Diamond | `$0.00036` |

Keep README pricing synchronized with `.actor/actor.json`.

### Tips for best results

- **Start small**: Use `maxItems: 10` until output quality and pricing are verified.
- **Prefer precise categories**: Europages category URLs usually produce cleaner supplier lists than broad keywords.
- **Use detail enrichment selectively**: `includeDetails` can add public contacts but makes runs slower because profile pages are visited.
- **Expect optional blanks**: Europages does not expose every phone, email, website, or certification publicly.

### API usage

Node.js:

```js
import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("fetch_cat/europages-suppliers-scraper").call({
  startUrls: [{ url: "https://www.europages.co.uk/companies/machining.html" }],
  maxItems: 30,
  includeDetails: false
});
console.log(run.defaultDatasetId);
```

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/europages-suppliers-scraper").call(run_input={
    "startUrls": [{ "url": "https://www.europages.co.uk/companies/machining.html" }],
    "maxItems": 30,
    "includeDetails": False,
})
print(run["defaultDatasetId"])
```

cURL:

```bash
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~europages-suppliers-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":[{"url":"https://www.europages.co.uk/companies/machining.html"}],"maxItems":30,"includeDetails":false}'
```

### MCP and AI agents

Use this Actor from MCP-compatible tools through the official Apify MCP Server.

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/europages-suppliers-scraper"
```

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/europages-suppliers-scraper"
    }
  }
}
```

Example prompt: "Run Europages Suppliers Scraper for machining suppliers and summarize countries represented in the dataset."

### Limits and caveats

- **Public data only**: The Actor does not log in, submit forms, reveal private contacts, or access private messages.
- **Coverage**: Results depend on Europages public pages and category availability.
- **Freshness**: Supplier details can change after a run finishes.
- **Rate limits**: Public endpoints may throttle very large or frequent runs; keep concurrency conservative.

### Legality and responsible use

Process only data that you are allowed to access. Follow Europages terms, Apify's terms, and applicable laws. Use contact data responsibly and comply with outreach, privacy, and anti-spam rules in your jurisdiction.

### Related actors

- [Website Contact Finder](https://apify.com/fetch_cat/website-contact-finder)
- [Google Maps Lead Finder](https://apify.com/fetch_cat/google-maps-lead-finder)
- [Bing Search Results Scraper](https://apify.com/fetch_cat/bing-search-results-scraper)

### FAQ

#### Can I export results?

Yes. Apify datasets support JSON, CSV, Excel, XML, RSS, and API access.

#### Why are some fields empty?

Some Europages profiles do not expose every contact or company detail publicly. The Actor leaves unavailable fields empty instead of guessing.

#### Does this submit Europages contact forms?

No. It only extracts information visible on public listing and company profile pages.

### Support

Open an issue from the Actor page if a run fails or output looks wrong. Include the run ID or run URL, input JSON, expected output, actual output, and a reproducible public URL such as a Europages category or profile page.

# Actor input Schema

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

Europages company/category/search URLs to scrape. Example: https://www.europages.co.uk/companies/machining.html

## `query` (type: `string`):

Optional keyword/category query. Used when you do not provide a start URL.

## `countryCode` (type: `string`):

Optional ISO country code to append to query searches when supported by Europages.

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

Maximum number of unique supplier company records to save.

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

Open each public company profile to enrich contacts when visible. Slower but can add website, phone, or email fields.

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

Reserved for compatibility; this HTTP-first version uses conservative sequential pagination.

## `proxyConfiguration` (type: `object`):

Optional Apify Proxy configuration.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.europages.co.uk/companies/machining.html"
    }
  ],
  "query": "machining",
  "maxItems": 20,
  "includeDetails": false,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrls": [
        {
            "url": "https://www.europages.co.uk/companies/machining.html"
        }
    ],
    "query": "machining",
    "countryCode": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/europages-suppliers-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 = {
    "startUrls": [{ "url": "https://www.europages.co.uk/companies/machining.html" }],
    "query": "machining",
    "countryCode": "",
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.europages.co.uk/companies/machining.html"
    }
  ],
  "query": "machining",
  "countryCode": ""
}' |
apify call fetch_cat/europages-suppliers-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=fetch_cat/europages-suppliers-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Europages Suppliers Scraper",
        "description": "Extract public supplier company records from Europages search/category pages for lead generation, sourcing, and market research.",
        "version": "0.1",
        "x-build-id": "o1lcUdBhvaPr7Sn2V"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fetch_cat~europages-suppliers-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fetch_cat-europages-suppliers-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/fetch_cat~europages-suppliers-scraper/runs": {
            "post": {
                "operationId": "runs-sync-fetch_cat-europages-suppliers-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/fetch_cat~europages-suppliers-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-fetch_cat-europages-suppliers-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Europages company/category/search URLs to scrape. Example: https://www.europages.co.uk/companies/machining.html",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Optional keyword/category query. Used when you do not provide a start URL."
                    },
                    "countryCode": {
                        "title": "Country code",
                        "type": "string",
                        "description": "Optional ISO country code to append to query searches when supported by Europages."
                    },
                    "maxItems": {
                        "title": "Maximum company records",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of unique supplier company records to save.",
                        "default": 20
                    },
                    "includeDetails": {
                        "title": "Visit company profile pages",
                        "type": "boolean",
                        "description": "Open each public company profile to enrich contacts when visible. Slower but can add website, phone, or email fields.",
                        "default": false
                    },
                    "maxConcurrency": {
                        "title": "Maximum concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Reserved for compatibility; this HTTP-first version uses conservative sequential pagination.",
                        "default": 3
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional Apify Proxy configuration.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
