# Messe Düsseldorf Exhibitor List Scraper: MEDICA, K, ProWein (`rel8ble/messe-duesseldorf-exhibitors-scraper`) Actor

Messe Düsseldorf exhibitor list scraper for trade fair leads: MEDICA, COMPAMED, K, interpack, ProWein, wire, Tube, EuroShop, A+A, boot and more. One result = one exhibitor: company, e-mail, phone, website, address, country, hall and stand, categories. $0.95 per 1,000.

- **URL**: https://apify.com/rel8ble/messe-duesseldorf-exhibitors-scraper.md
- **Developed by:** [Giovanni Rich](https://apify.com/rel8ble) (community)
- **Categories:** Lead generation, Business
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.95 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Messe Düsseldorf Exhibitor List Scraper: MEDICA, K, ProWein

**Trade fair exhibitor list scraper** for sales teams, distributors, event marketers, sourcing agents and B2B lead-gen teams: pick a Messe Düsseldorf fair such as **MEDICA**, **COMPAMED**, **K**, **interpack**, **ProWein**, **wire**, **Tube**, **EuroShop**, **A+A**, **glasstec**, **REHACARE**, **Valve World Expo** or **boot**, and get its **exhibitor list** as clean JSON, CSV or Excel. Each row is one exhibitor with its **company name, e-mail, phone, website, street address, country, hall and stand**, product categories, company description and social links. Use it as a **MEDICA 2026 exhibitor list** download (the fair runs 16-19 November 2026 and its list is online now), a **trade show lead list** builder, a pre-show **booth visit planner**, or an unofficial **exhibitor directory API** from your own code, Make, Zapier or n8n.

It works over plain HTTP, with **no browser and no login**. 20 exhibitors with full contacts took 17 seconds in a cloud run; directory only, without profiles, Valve World Expo's 604 exhibitors took 6 seconds and MEDICA's 3,810 took 12 seconds in local runs (5 Nov 2026, no proxy, no cloud start-up).

### What you get

- **Contacts**: company name, **e-mail**, **phone**, fax (when listed), **website** and all website links, **street, postal code, city, country** and ISO country code. Contact-person names are not collected.
- **At the fair**: event edition (e.g. `MEDICA 2026`), **hall and stand** (`Hall 10 / E09`), every stand of the exhibitor, hall plan image, co-exhibitor and main-exhibitor links.
- **Company profile**: exhibitor type (Manufacturer, Distributor, Service, OEM ...), **product categories** from the fair catalogue with their parent category, keywords, description text, founding year, sales volume and employee bands (when listed), LinkedIn / Facebook / Instagram / YouTube / X / XING, logo, PDF brochures, premium flag.
- **IDs and links**: fair exhibitor ID, public profile URL, last profile update.

### Fairs covered

| Fair (input) | Industry | Typical exhibitors |
|---|---|---|
| `medica` | Medical technology, diagnostics, hospital supplies | 3,810 (read 5 Nov 2026) |
| `compamed` | Medical device components and suppliers | 769 (read 5 Nov 2026) |
| `k` | Plastics and rubber | about 1,700 |
| `interpack`, `components` | Packaging and processing | about 2,900 |
| `wire`, `tube` | Wire, cable, tube and pipe | about 2,600 together |
| `prowein` | Wines and spirits | 700+ |
| `euroshop`, `eurocis` | Retail technology and store design | about 1,900 / 200+ |
| `aplusa` | Safety, security and health at work (A+A) | about 2,300 |
| `glasstec` | Glass production and processing | about 1,200 |
| `rehacare` | Rehabilitation and care | about 1,000 |
| `valveworld` | Valves and flow control | about 600 |
| `boot`, `caravansalon`, `beauty` | Boats and water sports, caravanning, beauty | varies by edition |

Each fair shows its current or most recent edition. Any other fair website on the same Messe Düsseldorf exhibitor platform can be entered by its address.

### Sample output

Real rows from the cloud run with the default input (`medica`, 20 results, 17 seconds):

| Company | Country | E-mail | Phone | Website | Hall / stand |
|---|---|---|---|---|---|
| 3R LifeScience GmbH | Germany | info@3r-lifescience.com | +49 30 93628123 | 3r-lifescience.com | Hall 15 / E24 |
| A. Legrand SAS | France | info@a-legrand.com | +33 1 4357664 | a-legrand.com | Hall 7a / E04-7 |
| 3K LABORATUVAR MEDİKAL PLASTİK LTD.ŞTİ. | Türkiye | kerim@3klab.com.tr | +90 535 6248154 | 3klab.com.tr | Hall 1 / E34 |
| 3DBioFibR Inc. | Canada | info@3dbiofibr.com | +1 519 7552304 | 3dbiofibr.com | Hall 1 / E33 |
| a.cure CO.,LTD | Korea, Republic | - | +82 2 21357485 | adotcure.com | Hall 16 / A50-3 |

Fill rates on those 20 rows: e-mail 95%, phone 100%, website 95%, street address 100%, hall / stand 100%, categories 85%. Fill rates on 121 rows across ProWein, K and wire: **e-mail 98%**, phone 99%, website 98%, street address 100%, hall / stand 100%, product categories 97%, description 64%, LinkedIn 19%, founding year 20%. On 240 REHACARE, wire and Tube rows: e-mail 97%, phone 100%, website 89%.

### Why this one

- **$0.95 per 1,000 exhibitors with e-mail, phone, website, address and stand included**, no start fee: the lowest price among the Messe Düsseldorf actors we found on the Store (5 Nov 2026). The others, with 30-day users in brackets: scrapersdelight (1) $1.00 per row + $2.00 per detail fetch, scrapestorm (0) $2.99 + $0.00005 start, delectable_incubator (0) $3.99 + $0.00005 start, getascraper (1) $4.39 + $0.00005 start, skython (11) $3.00 / $5.00 + $0.01 start. Multi-show actors that name MEDICA: tacps126 (3) $2.00 + $0.00005 start.
- **17 fairs by name**, one input field: `medica`, `k`, `prowein` ... no URL hunting.
- **Sister fairs kept apart**: MEDICA and COMPAMED (or wire and Tube) share one directory; you get only the fair you asked for unless you set `includeSisterFairs`.
- **Search inside a fair**: a keyword such as `catheter`, `extrusion` or `riesling` returns only the exhibitors the fair's own search matches.
- **Filters before you pay**: country, exhibitor type, name, e-mail / phone / website present. Country and type filters run on the fair's side, so a narrow list is fast. Filtered rows are never charged.
- **Plain HTTP, no login**: 20 full rows in 17 seconds (cloud run).

### Use cases

- **Pre-show outreach**: e-mail exhibitors before MEDICA or K to book meetings at their stand.
- **B2B lead generation**: build country- and category-specific lists of manufacturers and distributors (for example every German manufacturer at A+A).
- **Distributor and supplier search**: find component suppliers at COMPAMED or wire manufacturers at wire.
- **Competitor and market mapping**: who exhibits, from which countries, in which product categories and halls.
- **Event marketing**: target exhibitors for stand services, logistics, translation or media offers.
- **AI agents**: an agent can call this actor with a fair name and read back exhibitor contacts (see the MCP note below).

### Pricing

**$0.95 per 1,000 results** (pay per result), with the full profile included. Apify platform usage is included in that price. Filtered rows, sister-fair rows, missing profiles and failed requests are never charged, and there is no start fee.

| Run | Results | Cost |
|---|---|---|
| Default input (`medica`, 20 rows) | 20 | $0.019 |
| Whole Valve World Expo list, directory only | about 600 | about $0.57 |
| Every MEDICA exhibitor with full contacts | 3,810 (5 Nov 2026) | about $3.62 |
| German manufacturers at A+A with e-mail | a few hundred | under $0.50 |

Apify's free plan ($5 of monthly credit) covers about 5,200 results.

### FAQ

**Which edition do I get?**
The one the fair website currently shows: the upcoming edition once its exhibitor list is online, otherwise the most recent one. The `event` field says which (e.g. `MEDICA 2026`, `K 2025`).

**Why do I get fewer rows than the fair's total?**
Filters, and sister fairs: the MEDICA site also lists COMPAMED exhibitors. Set `includeSisterFairs` to keep both.

**Where do the e-mails come from?**
They are the business contacts each exhibitor publishes on its public fair profile. Contact-person names are not collected.

**How long does a whole fair take?**
Directory only: under a minute for most fairs. With full profiles each exhibitor is one request; MEDICA's 3,810 profiles take about 15-25 minutes.

**Is there an official exhibitor API?**
The fair sites offer the exhibitor directory on their websites only. This actor reads the same public directory and profiles and returns them as JSON.

**For AI agents (MCP):** input is a list of fair names (e.g. `medica`, `k`, `prowein`) plus optional country / type filters; output is one JSON row per exhibitor with e-mail, phone, website, address, hall and stand; typical cost is $0.019 for 20 rows; use it when you need companies exhibiting at a Messe Düsseldorf trade fair.

### Example inputs for common jobs

First 20 MEDICA exhibitors with full contacts (default):

```json
{ "fairs": ["medica"], "maxResultsPerFair": 20 }
```

Every German and Austrian manufacturer at A+A, with an e-mail:

```json
{ "fairs": ["aplusa"], "maxResultsPerFair": 0, "countries": ["DE", "AT"], "tags": ["Manufacturer"], "withEmailOnly": true }
```

Whole exhibitor lists of three fairs, directory data only (name, country, city, hall / stand), fast:

```json
{ "fairs": ["k", "interpack", "prowein"], "maxResultsPerFair": 0, "includeDetails": false }
```

MEDICA and COMPAMED together, US and Korean exhibitors:

```json
{ "fairs": ["medica"], "maxResultsPerFair": 0, "includeSisterFairs": true, "countries": ["United States", "South Korea"] }
```

MEDICA exhibitors that offer catheters, with an e-mail:

```json
{ "fairs": ["medica"], "keyword": "catheter", "maxResultsPerFair": 0, "withEmailOnly": true }
```

One exhibitor by profile URL, German texts:

```json
{ "fairs": ["https://www.medica-tradefair.com/vis/v1/en/exhprofiles/ZOBsoNloSTy9e3gfCJLLEA"], "language": "de" }
```

### How to use

1. Open the actor and enter one or more fair names (`medica`, `k`, `prowein` ...), fair websites or exhibitor profile URLs in **Fairs**.
2. Set **Max exhibitors per fair** (default 20; 0 = the whole list).
3. Optionally add a keyword and filters: countries, exhibitor types, name text, e-mail / phone / website present. Turn off **Read full profiles** if you only need names, countries and stands.
4. Click **Start**. Download the dataset as JSON, CSV, Excel or HTML, or read it through the API.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `fairs` | array | `["medica"]` | Fair names, fair websites (`https://www.k-online.com`) or exhibitor profile URLs. |
| `maxResultsPerFair` | integer | 20 | Exhibitor rows per fair. 0 = all. |
| `keyword` | string | - | Only exhibitors the fair's search matches for this text (company, products, categories). |
| `includeDetails` | boolean | true | Read each profile for e-mail, phone, website, address, categories, description. false = directory only, about 10x faster. |
| `includeSisterFairs` | boolean | false | Also keep the sister fair on shared directories (MEDICA + COMPAMED, wire + Tube, interpack + components). |
| `language` | string | `en` | `en` or `de` for descriptions and categories. |
| `countries` | array | - | Country names or ISO codes (`Germany`, `US`, `KR`). Checked before profiles are read. |
| `tags` | array | - | Exhibitor types, e.g. `Manufacturer`, `Distributor`, `Service`, `OEM`. |
| `nameContains` | string | - | Only companies whose name contains this text. |
| `withEmailOnly` | boolean | false | Only exhibitors with an e-mail. |
| `withPhoneOnly` | boolean | false | Only exhibitors with a phone number. |
| `withWebsiteOnly` | boolean | false | Only exhibitors with a website. |
| `maxConcurrency` | integer | 20 | Parallel requests. |
| `maxRequestRetries` | integer | 6 | Retries per failed request. |
| `proxyConfiguration` | object | no proxy | The fair sites answer directly; failed requests automatically retry through Apify Proxy. |

Inputs that are not fair names, fair websites or profile URLs are skipped and listed in the `RUN_SUMMARY` record; they are never charged. A site without an exhibitor directory or a missing profile is reported in the log and costs nothing.

### Output example

One real row (description shortened):

```json
{
  "fair": "MEDICA",
  "event": "MEDICA 2026",
  "events": ["MEDICA 2026"],
  "companyName": "A-ZoneTech Co., LTD",
  "email": "jykim@a-zonetech.com",
  "phone": "+82 53 1095958510",
  "fax": null,
  "website": "https://www.a-zonetech.co.kr",
  "websites": ["https://www.a-zonetech.co.kr"],
  "street": "#906, 47, Gyeongdae-Ro 17-Gil, Buk-Gu, It Convergence Building",
  "postalCode": "41566",
  "city": "Daegu",
  "country": "Korea, Republic",
  "countryCode": "KR",
  "hallStand": "Hall 10 / E09",
  "hall": "Hall 10",
  "stand": "E09",
  "locations": [{ "hall": "Hall 10", "stand": "E09" }],
  "tags": ["Manufacturer", "Service", "OEM"],
  "categories": ["Healthcare Systems, Education & Global Health > Healthcare services & ecosystem"],
  "keywords": [],
  "description": "Since its establishment, it has carried out national strategic defense projects ...",
  "foundedYear": 2010,
  "businessData": { "Sales volume": "10-49 Mio US $", "Number of employees": "20-49" },
  "linkedin": null,
  "isPremium": false,
  "coExhibitorOf": null,
  "coExhibitors": [],
  "brochureUrls": ["https://www.medica.de/vis-content/event-medica2026/exh-medica2026.3077105/MEDICA-2026-A-ZoneTech-Co.-LTD-Paper-medica2026.3077105-g0Kly36NSLmZSayaYnm5QQ.pdf"],
  "hallMapUrl": "https://iahapla02.messe-duesseldorf.de/en/3dhallV2/medica2026/10/3077105.svg",
  "exhibitorId": "medica2026.3077105",
  "profileUrl": "https://www.medica-tradefair.com/vis/v1/en/exhprofiles/ZOBsoNloSTy9e3gfCJLLEA",
  "detailsScraped": true,
  "lastModified": "2026-10-26T14:11:20Z",
  "position": 2,
  "scrapedAt": "2026-11-01T18:46:31.813Z"
}
```

The dataset has three table views in the Apify console: **Exhibitor leads** (company, contacts, stand), **Full contact card** (address and social links) and **Company profile** (categories, description, founding year). A `RUN_SUMMARY` record lists per-fair counts, letters read, filtered rows and stop reasons.

### Integrations

Run it on an Apify schedule, through the Apify REST API, the JavaScript / Python clients, Make, Zapier, n8n, Google Sheets, or from AI agents via the Apify MCP server. Join runs on `exhibitorId` or `website` to track which companies return each edition.

This actor is not affiliated with Messe Düsseldorf or any fair. It reads the public exhibitor data the fair sites' own pages load, under `/vis-api/`. robots.txt on medica-tradefair.com and k-online.com (read 5 Nov 2026) disallows the `/vis/v1/en/search` page, which the actor does not open, and does not list `/vis-api/`.

Need a custom scraper or a ready dataset? Hire me on Fiverr: https://www.fiverr.com/rel8ble

# Actor input Schema

## `fairs` (type: `array`):

Provide at least one. Fair names: medica, compamed, interpack, components, k, wire, tube, prowein, euroshop, eurocis, aplusa (A+A), glasstec, rehacare, valveworld, boot, caravan-salon, beauty. Or a fair website (https://www.medica-tradefair.com), or one exhibitor profile URL (https://www.medica-tradefair.com/vis/v1/en/exhprofiles/...). Default \["medica"] (demo).

## `maxResultsPerFair` (type: `integer`):

Optional. Exhibitor rows saved per fair, integer >= 0. Default 20; 0 = the whole exhibitor list (MEDICA has about 3,700). You pay per row.

## `keyword` (type: `string`):

Optional. Only exhibitors matching this text in the fair search (company, products, categories), e.g. "catheter", "extrusion", "riesling". Empty = every exhibitor.

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

Default true: one extra request per exhibitor adds e-mail, phone, website, street address, categories, description and social links (same price). false = directory data only (name, country, city, hall / stand, type), about 10x faster.

## `includeSisterFairs` (type: `boolean`):

Some fair sites share one directory with a sister fair (MEDICA + COMPAMED, wire + Tube, interpack + components). Default false = only exhibitors of the fair you named. true = both.

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

Optional. Language of descriptions and categories. Default en.

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

Optional. Keep only exhibitors from these countries: names ("Germany", "United States", "South Korea") or ISO codes ("DE", "US", "KR"). Filtered before profiles are read, so it also saves time. Empty = all countries.

## `tags` (type: `array`):

Optional. Keep only exhibitors with one of these type tags, e.g. "Manufacturer", "Distributor", "Service", "OEM" (exact tag, case-insensitive). Empty = all.

## `nameContains` (type: `string`):

Optional. Keep only companies whose name contains this text, e.g. "GmbH" or "medical".

## `withEmailOnly` (type: `boolean`):

Optional. Skip exhibitors without a published e-mail (needs full profiles). Default false.

## `withPhoneOnly` (type: `boolean`):

Optional. Skip exhibitors without a phone number (needs full profiles). Default false.

## `withWebsiteOnly` (type: `boolean`):

Optional. Skip exhibitors without a website (needs full profiles). Default false.

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

Optional, advanced. Parallel requests, 1-30. Default 20.

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

Optional, advanced. Retries per failed request (each on a new proxy session), 0-20. Default 6.

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

Optional, advanced. Default: no proxy (the fair sites answer Apify servers directly), with automatic Apify datacenter / residential proxy fallback for any request that fails. Set {"useApifyProxy": true} to force a proxy on every request.

## Actor input object example

```json
{
  "fairs": [
    "medica"
  ],
  "maxResultsPerFair": 20,
  "includeDetails": true,
  "includeSisterFairs": false,
  "language": "en",
  "withEmailOnly": false,
  "withPhoneOnly": false,
  "withWebsiteOnly": false,
  "maxConcurrency": 20,
  "maxRequestRetries": 6,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

One row per exhibitor: company, e-mail, phone, website, address, hall and stand, categories and profile text.

## `summary` (type: `string`):

Per-fair counts, letters read, filtered rows, ignored inputs and stop reasons.

# 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 = {
    "fairs": [
        "medica"
    ],
    "maxResultsPerFair": 20,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rel8ble/messe-duesseldorf-exhibitors-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 = {
    "fairs": ["medica"],
    "maxResultsPerFair": 20,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("rel8ble/messe-duesseldorf-exhibitors-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 '{
  "fairs": [
    "medica"
  ],
  "maxResultsPerFair": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call rel8ble/messe-duesseldorf-exhibitors-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rel8ble/messe-duesseldorf-exhibitors-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/1oFmgDS2fxQrW8pWf/builds/t8jSXfdMELkaOWpnA/openapi.json
