# Anuga & Koelnmesse Exhibitor Scraper with Contacts (`perceptr0n/anuga-ism-koelnmesse-exhibitor-scraper`) Actor

Export complete exhibitor lists from Koelnmesse trade fairs — company name, hall and stand, postal address, business e-mail, phone, website, brands and the full product-category hierarchy. Works for Anuga, ISM, imm cologne, interzum, IDS, Orgatec, spoga+gafa, Eisenwarenmesse and more.

- **URL**: https://apify.com/perceptr0n/anuga-ism-koelnmesse-exhibitor-scraper.md
- **Developed by:** [Thomas Ehrler](https://apify.com/perceptr0n) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.01 / actor start

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Koelnmesse Exhibitor Scraper (Anuga, ISM, imm cologne, interzum & more)

Export the **complete exhibitor list** of any Koelnmesse trade fair — with
**postal address, business e-mail, phone and website** for every company, plus
the full product-category hierarchy each exhibitor is listed under.

Point the actor at a fair's "list of exhibitors" page and get a clean table.

### Supported fairs

One actor covers every Koelnmesse fair, because they all share the same
exhibitor directory:

| Fair | Sector | Exhibitor directory |
|---|---|---|
| **Anuga** | Food & beverage | `https://www.anuga.com/anuga-exhibitors/list-of-exhibitors/` |
| **ISM** | Sweets & snacks | `https://www.ism-cologne.com/…/list-of-exhibitors/` |
| **imm cologne** | Interiors & furniture | `https://www.imm-cologne.com/…/list-of-exhibitors/` |
| **interzum** | Furniture production | `https://www.interzum.com/…/list-of-exhibitors/` |
| **IDS** | Dental | `https://www.english.ids-cologne.de/…/list-of-exhibitors/` |
| **Orgatec** | Office & workspace | `https://www.orgatec.com/…/list-of-exhibitors/` |
| **spoga+gafa** | Garden & outdoor living | `https://www.spogagafa.com/…/list-of-exhibitors/` |
| **Eisenwarenmesse** | Hardware & tools | `https://www.eisenwarenmesse.com/…/list-of-exhibitors/` |

Any other Koelnmesse fair works too — just paste its exhibitor-list URL.

### What you get per exhibitor

| Field | Example |
|---|---|
| `companyName` | Frischpack GmbH |
| `hallStand` / `booths[]` | Hall 10.1 | F050 |
| `street`, `postalCode`, `city`, `country` | Mailling 11, 83104 Mailling b. Schönau, Germany |
| `email` | info@frischpack.de |
| `phone`, `fax` | +49 80651890 |
| `website` | http://www.frischpack.de |
| `brands[]` | Frischpack |
| `productGroups[]` | `Dairy products > Cheese > Hard cheese` |
| `productSectors[]` | Dairy |
| `trendSubjects[]` | Clean Label, Convenience & Snacking, Organic products |
| `distributionChannels[]` | Products for food service and catering |
| `targetMarkets[]` | Germany, Middle East, Northern Europe, USA … |
| `logoUrl`, `isSponsored`, `profileUrl`, `fairName` | Source references |

### Why this actor

- 📇 **Contact data included** — postal address, business e-mail, phone and fax
  straight from each exhibitor's published profile
- 🌳 **Real category hierarchy** — the directory stores product categories as a
  nested tree; this actor flattens it into readable paths like
  `Dairy products > Cheese > Hard cheese` instead of dumping raw codes
- 🎯 **Trade-specific fields** — trend subjects, distribution channels and target
  markets tell you not just *who* exhibits but *who they sell to*
- 🏛 **Hall and stand for every exhibitor**, even in fast list-only mode
- 🧭 **One actor, every Koelnmesse fair** — no per-fair configuration

### Use cases

- **Lead generation** — exhibitors are companies with a marketing budget and a
  buying season, complete with e-mail and phone
- **Market research** — who exhibits in which category, which countries dominate
  a sector, how a fair's line-up shifts between editions
- **Distribution scouting** — filter by target markets and distribution channels
  to find manufacturers looking for exactly your channel
- **Event planning** — hall and stand assignments as a clean table
- **CRM enrichment** — match your accounts against a fair's exhibitor list
- **AI agents** — clean schema, callable via MCP

### Input example

```json
{
    "start_url": "https://www.anuga.com/anuga-exhibitors/list-of-exhibitors/",
    "scrape_details": true,
    "output_type": "single_row",
    "result_limit": 500
}
```

Use `output_type: "multi_row"` for one row per exhibitor × product category —
ideal for pivot tables. Set `scrape_details: false` for a fast overview run
(company, country, hall/stand).

### Output example

```json
{
    "companyName": "Frischpack GmbH",
    "country": "Germany",
    "hallStand": "Hall 10.1 | F050",
    "street": "Mailling 11",
    "postalCode": "83104",
    "city": "Mailling b. Schönau",
    "email": "info@frischpack.de",
    "phone": "+49 80651890",
    "website": "http://www.frischpack.de",
    "brands": ["Frischpack"],
    "productGroups": [
        "Dairy products > Cheese > Hard cheese",
        "Alternatives > Alternative milk and dairy products > Other cheese alternatives"
    ],
    "productSectors": ["Dairy"],
    "targetMarkets": ["Germany", "Middle East", "Northern Europe", "USA"],
    "profileUrl": "https://www.anuga.com/exhibitor/frischpack/",
    "fairName": "anuga"
}
```

### Notes

- Only **public company information** is collected — company address, business
  contact details and booth data as published by the exhibitors themselves. No
  named contact persons, no login-protected content.
- Requests are paced to keep load on the fair's website low.
- **Contact-data coverage:** roughly half of the exhibitors publish a full
  postal address with e-mail and phone in their profile; the rest publish only
  name, country and booth. Missing values are returned empty rather than
  guessed — company name, country and hall/stand are available for **every**
  exhibitor.
- Not affiliated with or endorsed by Koelnmesse GmbH.

### What does a run cost?

| Exhibitors | Cost |
|---|---|
| 100 | $0.51 |
| 1,000 | $5.01 |
| Anuga, complete (~4,000) | ~$20.01 |

$0.01 per run start plus $0.005 per exhibitor. `scrape_details: false` returns
company, country and hall/stand much faster at the same price.

### FAQ

**Which fairs work?**
All Koelnmesse fairs — Anuga, ISM, imm cologne, interzum, IDS, Orgatec,
spoga+gafa, Eisenwarenmesse and the rest — because they share one exhibitor
directory. Paste the fair's "list of exhibitors" URL.

**How complete is the contact data?**
Company name, country and hall/stand are available for every exhibitor. Roughly
half additionally publish a full postal address with e-mail and phone. Missing
values are returned empty rather than guessed.

**What is the product category tree?**
The directory stores each exhibitor's categories as a nested hierarchy. This
actor flattens it into readable paths such as
`Dairy products > Cheese > Hard cheese` instead of returning raw codes.

**Can I filter by target market or distribution channel?**
The directory does not support that as a search filter, but both fields are in
the output — filter them in your spreadsheet or pipeline after export.

**Can I get past editions?**
No. Only the current edition is served by the directory.

### Related actors

| Actor | What it does |
|---|---|
| [Messe München Exhibitors](https://apify.com/perceptr0n/messe-muenchen-exhibitor-list-scraper) | The same data for bauma, IFAT, BAU, automatica and ceramitec |
| [EU Public Tenders (TED)](https://apify.com/perceptr0n/eu-tenders-ted-scraper) | Public contracts across all 27 EU member states |
| [kununu Scraper](https://apify.com/perceptr0n/kununu-employer-data-scraper) | Employer ratings and salary data for German companies |

### Support

Missing a fair, field or export format? Open an issue in the **Issues** tab —
response within 1–2 business days.

# Actor input Schema

## `start_url` (type: `string`):

The 'list of exhibitors' page of a Koelnmesse fair. Works for Anuga, ISM, imm cologne, interzum, IDS, Orgatec, spoga+gafa, Eisenwarenmesse, gamescom and the other Koelnmesse fairs. Example: `https://www.anuga.com/anuga-exhibitors/list-of-exhibitors/`

## `scrape_details` (type: `boolean`):

ON: adds postal address, business e-mail, phone, fax, website, brands, product categories, product sector, trend subjects, distribution channels and target markets. OFF: fast list mode with company name, country and hall/stand only.

## `output_type` (type: `string`):

How product categories are laid out in the dataset.

## `result_limit` (type: `integer`):

Stop after this many exhibitors. Leave empty to scrape the whole fair.

## Actor input object example

```json
{
  "start_url": "https://www.anuga.com/anuga-exhibitors/list-of-exhibitors/",
  "scrape_details": true,
  "output_type": "single_row"
}
```

# 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 = {
    "start_url": "https://www.anuga.com/anuga-exhibitors/list-of-exhibitors/"
};

// Run the Actor and wait for it to finish
const run = await client.actor("perceptr0n/anuga-ism-koelnmesse-exhibitor-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 = { "start_url": "https://www.anuga.com/anuga-exhibitors/list-of-exhibitors/" }

# Run the Actor and wait for it to finish
run = client.actor("perceptr0n/anuga-ism-koelnmesse-exhibitor-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 '{
  "start_url": "https://www.anuga.com/anuga-exhibitors/list-of-exhibitors/"
}' |
apify call perceptr0n/anuga-ism-koelnmesse-exhibitor-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=perceptr0n/anuga-ism-koelnmesse-exhibitor-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/3CqlxBJu7duYftVHx/builds/jGe8R0vgr0bTlFHwj/openapi.json
