# Deutsche Messe Scraper: Ausstellerverzeichnis (`getascraper/deutsche-messe-exhibitor-directory-scraper`) Actor

Scrape public Deutsche Messe exhibitor indexes. Filter by company initial, country, hall, stand, category, brand, or product, then export source-linked German trade fair records as JSON in an Apify dataset.

- **URL**: https://apify.com/getascraper/deutsche-messe-exhibitor-directory-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Lead generation, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.92 / 1,000 exhibitor records

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 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

## 🧭 Deutsche Messe Scraper: Ausstellerverzeichnis

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed">
<tbody style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed">
<tr style="width:100%">
<td colspan="3" style="padding:14px 18px;background:#FFF4E8;border-top:3px solid #C75B12;border-left:1px solid #E8C39B;border-right:1px solid #E8C39B;border-radius:8px 8px 0 0">
<span style="font-size:16px;font-weight:700;color:#1C1917">German trade fair exhibitor directory tools.</span> <span style="font-size:15px;color:#57534E">Choose the right official fair directory for your research or lead list.</span>
</td>
</tr>
<tr style="width:100%">
<td colspan="3" style="padding:10px 14px;background:#C75B12;border-left:1px solid #E8C39B;border-right:1px solid #E8C39B">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">EXHIBITOR DIRECTORY COLLECTION</span>
<span style="color:#FFF4E8;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Structured public exhibitor records from German trade fair indexes</span>
</td>
</tr>
<tr style="width:100%">
<td width="33%" style="padding:10px 12px;border-left:1px solid #E8C39B;border-bottom:1px solid #E8C39B;vertical-align:top;width:33.333%;background:#FFF4E8;border-radius:0 0 0 8px">
<a href="https://apify.com/getascraper/deutsche-messe-exhibitor-directory-scraper" style="color:#9A4308;text-decoration:none;font-weight:700;font-size:13px">Deutsche Messe</a><br>
<span style="color:#9A4308;font-size:11px;font-weight:700">&#10148; You are here</span>
</td>
<td width="33%" style="padding:10px 12px;border-left:1px solid #E8C39B;border-bottom:1px solid #E8C39B;vertical-align:top;width:33.333%;background:#FFFFFF">
<a href="https://apify.com/getascraper/messe-frankfurt-exhibitor-directory-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Messe Frankfurt</a><br>
<span style="color:#57534E;font-size:11px">Fair exhibitor directories</span>
</td>
<td width="33%" style="padding:10px 12px;border-left:1px solid #E8C39B;border-right:1px solid #E8C39B;border-bottom:1px solid #E8C39B;vertical-align:top;width:33.333%;background:#FFFFFF;border-radius:0 0 8px 0">
<a href="https://apify.com/getascraper/messe-duesseldorf-exhibitor-directory-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Messe Düsseldorf</a><br>
<span style="color:#57534E;font-size:11px">Exhibitors across five fairs</span>
</td>
</tr>
</tbody>
</table>

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:24px 28px;background:#FFF4E8;border:1px solid #E8C39B;border-top:4px solid #C75B12;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Turn official Deutsche Messe exhibitor indexes into a filtered B2B dataset.</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Export company, stand, country, category, contact, and profile data from one official event directory at a time.</span>
</td>
</tr>
</table>

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #E8C39B;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A4308">📄 Official CSV first</span><br>
<span style="font-size:12px;color:#57534E">Start with the fair's published export for dependable enumeration.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #E8C39B;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A4308">🔎 Focus the list</span><br>
<span style="font-size:12px;color:#57534E">Narrow records by letter, company, country, hall, stand, or category.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #E8C39B;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A4308">📇 Enrich profiles</span><br>
<span style="font-size:12px;color:#57534E">Add public contact, product, brand, and category details when available.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #E8C39B;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A4308">🧾 Keep provenance</span><br>
<span style="font-size:12px;color:#57534E">Retain event, source, profile, collection, and run-status context.</span>
</td>
</tr>
</table>

Use the official Deutsche Messe exhibitor index as your source of truth. The Actor reads the published CSV first, including ISO-8859-1 and Windows-1252 exports, then uses the official HTML directory when no usable CSV is available. It preserves the official directory and profile links on every record.

### 🎯 What does this Actor do?

This Actor exports public exhibitor records from supported Deutsche Messe event directories. It supports a flat table with one row per exhibitor or exploded output with separate child rows for contacts, categories, products, and co-exhibitors.

Details are optional. When enabled, the Actor reads each public profile for richer fields, then keeps only source-published values. It never substitutes missing company facts.

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:12px 18px;background:#FFF4E8;border-left:4px solid #C75B12">
<span style="font-size:15px;color:#1C1917">&#9889; <strong style="color:#1C1917">Choose CSV-first enumeration for a reliable event list.</strong> Use the official HTML directory as a fallback, with the source used recorded in the run statistics.</span>
</td>
</tr>
</table>

### 👥 Who uses this Actor?

- **I am an event researcher** building a source-linked exhibitor dataset to compare participants, halls, and categories across a fair.
- **I am a B2B sales representative** identifying relevant companies by country, stand, and public profile details before the event.
- **I am a lead generation specialist** turning an official exhibitor index into a focused prospect list without copying records by hand.
- **I am on a data team** loading structured company and provenance fields into a research, reporting, or enrichment workflow.

### 🚀 How to use it

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#FFF4E8;border:1px solid #E8C39B;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#C75B12;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Choose an official index</span><br>
<span style="font-size:12px;color:#57534E">Enter one supported Deutsche Messe exhibitor directory URL.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FFF4E8;border:1px solid #E8C39B;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#C75B12;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your filters</span><br>
<span style="font-size:12px;color:#57534E">Focus on the companies, locations, stands, or categories you need.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FFF4E8;border:1px solid #E8C39B;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#C75B12;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export the right row shape</span><br>
<span style="font-size:12px;color:#57534E">Choose flat or exploded output, then use the dataset and run statistics.</span>
</td>
</tr>
</table>

### 🎛️ Input

#### Sources

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `startUrl` | string | No | Official Deutsche Messe exhibitor-index URL to read. Defaults to the INTERSCHUTZ directory and processes one event per run. |

#### Deutsche Messe exhibitor and search filters

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `letter` | enum | No | Limit results to one company-name initial, numbers, other characters, or all companies. Defaults to all companies. |
| `searchQuery` | string | No | Match a company name, description, category, or product. Leave empty to avoid this filter. |
| `country` | string | No | Match the country published for an exhibitor. Leave empty to include all countries. |
| `hallOrStand` | string | No | Match a published hall, booth, or stand value. Leave empty to include all locations. |
| `categoryQuery` | string | No | Match a public exhibitor category. This requires `fetchDetails` to remain enabled. |

#### Data source and reliability

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `allowPartialResults` | boolean | No | Keep a directory row when its individual official profile cannot be read. Defaults to enabled, while a directory-enumeration failure still fails the run. |

#### Enrichment

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `fetchDetails` | boolean | No | Read public exhibitor profiles for contacts, categories, products, social links, and richer location data. Defaults to enabled. |

#### Output and limits

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `outputFormat` | enum | No | Choose `flat` for one exhibitor row or `exploded` for parent and child rows. Defaults to `flat`. |
| `maxItems` | integer | No | Cap the number of parent exhibitors. Defaults to 10, and `0` deliberately allows an unlimited run. |

#### Advanced

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `maxConcurrency` | integer | No | Set the number of official profile requests made at once. Defaults to 5 and accepts values from 1 to 20. |
| `proxyConfiguration` | object | No | Optional Apify Proxy settings for official source requests. Defaults to the Apify Proxy configuration. |

### 📦 Data table

Every dataset record keeps only fields published by the official source. Unavailable values are omitted rather than filled with placeholders.

| Field | Type | Description |
| --- | --- | --- |
| `platform` | string | Source platform identifier: `deutsche-messe`. |
| `eventId` | string | Event identifier when published by the directory. |
| `eventName` | string | Event name published by the directory. |
| `eventEdition` | string | Event edition when published by the directory. |
| `eventUrl` | string | Official exhibitor index URL supplied for the run. |
| `sourceUrl` | string | Official listing or profile page that supplied the record. |
| `scrapedAt` | string | ISO 8601 time when the record was collected. |
| `exhibitorId` | string | Exhibitor identifier when published by the directory. |
| `companyName` | string | Published exhibitor company name. |
| `profileUrl` | string | Official exhibitor profile URL when available. |
| `companyDescription` | string | Company description from the official profile when published. |
| `address` | object | Published company address, with street, city, region, postal code, and country when available. |
| `country` | string | Published exhibitor country. |
| `hall` | string | Published hall value. |
| `booth` | string | Published booth or stand value. |
| `stands` | array of objects | Published stand values when listed separately, with hall and booth details. |
| `website` | string | Public company website linked from the official profile. |
| `email` | string | Public email address linked from the official profile. |
| `phone` | string | Public phone number linked from the official profile. |
| `socialLinks` | object | Public social-profile links from the official profile, such as LinkedIn or Facebook. |
| `contacts` | array of objects | Public profile contacts with `name`, `role`, `email`, and `phone` when published. |
| `categories` | array of strings | Published exhibitor categories. |
| `categoryPaths` | array of arrays | Published category paths when available. |
| `products` | array of objects | Published products with `name`, `url`, and `description` when available. |
| `brands` | array of strings | Published brands. |
| `coExhibitors` | array of objects | Published co-exhibitors with `name` and `profileUrl` when available. |
| `logoUrl` | string | Official profile logo URL when published. |
| `detailStatus` | enum | Detail retrieval status: `fetched`, `not_requested`, or `failed`. |
| `recordType` | enum | Row type in exploded output: `exhibitor`, `stand`, `contact`, `category`, `product`, or `coExhibitor`. |
| `parentExhibitorId` | string | Parent exhibitor identifier for an exploded child row. |
| `stand` | object | Single stand value on an exploded child row. |
| `category` | object | Single category value on an exploded child row. |
| `product` | object | Single product value on an exploded child row. |
| `contact` | object | Single contact value on an exploded child row. |
| `coExhibitor` | object | Single co-exhibitor value on an exploded child row. |

### 📊 Run statistics

The `RUN_STATS` record is written for completed, empty, partial, blocked, and invalid outcomes. It reports source and detail fields when the run reached those stages, together with output volume and status.

| Field | Type | Description |
| --- | --- | --- |
| `source` | enum | Enumeration source: `csv` or `html`. |
| `csvExportUrl` | string | Official CSV export URL when one was discovered. |
| `candidatesDiscovered` | integer | Exhibitor candidates found before filtering. |
| `candidatesAfterFilters` | integer | Exhibitor candidates remaining after the selected filters. |
| `detailsRequested` | integer | Official exhibitor profiles requested for enrichment. |
| `detailsFetched` | integer | Official exhibitor profiles read successfully. |
| `detailFailures` | integer | Official profile requests that did not succeed. |
| `nativeFiltersAttempted` | array of strings | Filters requested from the official directory when supported. |
| `status` | enum | Run result: `completed`, `partial`, `empty-valid`, `invalid`, or `blocked`. |
| `outputRecords` | integer | Total records saved to the dataset. |
| `parentExhibitors` | integer | Parent exhibitor records returned before any exploded child rows. |
| `startedAt` | string | ISO 8601 time when the run started. |
| `finishedAt` | string | ISO 8601 time when the run finished. |
| `message` | string | Failure message for invalid or blocked runs when available. |

### 💰 Pricing

Pricing is pay per result. Empty runs cost nothing, and there are no subscriptions.

### ⭐ Enjoying Deutsche Messe exhibitor directory scraper?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#FFF4E8;border:1px solid #E8C39B;border-left:5px solid #C75B12;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px;color:#1C1917">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">A review helps more event researchers find an official-directory workflow that fits their work.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other event researchers find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#C75B12;border:1px solid #E8C39B;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/deutsche-messe-exhibitor-directory-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ❓ FAQ

##### Which exhibitor directory URLs can I use?

Use an HTTPS exhibitor-index URL from a supported official Deutsche Messe event site. The Actor validates the directory URL before collecting records.

##### Does it use the official exhibitor list?

Yes. It first looks for the official CSV export, including ISO-8859-1 and Windows-1252 files. If that export is unavailable, it reads the official HTML directory instead.

##### Can I filter Deutsche Messe exhibitors by category?

Yes. Set `categoryQuery` and leave `fetchDetails` enabled. Categories come from public exhibitor profiles, so category filtering needs profile enrichment.

##### What happens if an exhibitor profile is unavailable?

With `allowPartialResults` enabled, the Actor retains the directory row and marks `detailStatus` as `failed`. The `RUN_STATS` record reports profile failures and the run status.

### 🔗 Other actors

- [Messe Frankfurt exhibitor directory scraper: supported event codes](https://apify.com/getascraper/messe-frankfurt-exhibitor-directory-scraper) ↗ - exports public exhibitor records from supported Messe Frankfurt fairs.
- [Messe Düsseldorf exhibitor directory scraper: 5 fairs, full contacts](https://apify.com/getascraper/messe-duesseldorf-exhibitor-directory-scraper) ↗ - collects exhibitor directories across five Messe Düsseldorf fairs.
- [Messe Berlin exhibitor directory scraper: IFA Berlin exhibitors](https://apify.com/getascraper/messe-berlin-exhibitor-directory-scraper) ↗ - collects the IFA Berlin exhibitor directory with hall and stand data.
- [Messe Essen exhibitor directory scraper: Security Essen, IPM Essen & Schweissen & Schneiden](https://apify.com/getascraper/messe-essen-exhibitor-directory-scraper) ↗ - exports exhibitor lists from Messe Essen trade fairs.
- [NürnbergMesse exhibitor directory scraper: 12 fairs, named contacts](https://apify.com/getascraper/nuernberg-messe-exhibitor-directory-scraper) ↗ - collects exhibitor contacts and booths across NürnbergMesse trade fairs.

# Actor input Schema

## `startUrl` (type: `string`):

An official Deutsche Messe exhibitor-index URL. The INTERSCHUTZ directory is used by default.

## `letter` (type: `string`):

Limit exhibitors by the first character of their published company name.

## `searchQuery` (type: `string`):

Match company names, descriptions, categories, or products.

## `country` (type: `string`):

Match the country published for the exhibitor.

## `hallOrStand` (type: `string`):

Match a published hall, booth, or stand value.

## `categoryQuery` (type: `string`):

Match a public exhibitor category. This requires Fetch Exhibitor Details to remain enabled.

## `allowPartialResults` (type: `boolean`):

Keep directory rows if an individual official detail page fails. Enumeration failures still fail the run.

## `fetchDetails` (type: `boolean`):

Visit official detail pages for contacts, categories, products, social links, and richer location fields.

## `outputFormat` (type: `string`):

Flat emits one row per exhibitor. Exploded also emits child rows for stands, categories, products, contacts, and co-exhibitors.

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

Maximum number of parent exhibitors. Set 0 only when you deliberately want an unlimited run.

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

Number of official detail requests made in parallel. Higher values can increase source load.

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

Optional Apify Proxy configuration for direct official HTTP requests.

## Actor input object example

```json
{
  "startUrl": "https://www.interschutz.de/en/expo/exhibitor-index/",
  "letter": "all",
  "searchQuery": "",
  "country": "",
  "hallOrStand": "",
  "categoryQuery": "",
  "allowPartialResults": true,
  "fetchDetails": true,
  "outputFormat": "flat",
  "maxItems": 10,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `runStats` (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 = {
    "startUrl": "https://www.interschutz.de/en/expo/exhibitor-index/",
    "letter": "all",
    "searchQuery": "",
    "country": "",
    "hallOrStand": "",
    "categoryQuery": "",
    "allowPartialResults": true,
    "fetchDetails": true,
    "outputFormat": "flat",
    "maxItems": 10,
    "maxConcurrency": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/deutsche-messe-exhibitor-directory-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 = {
    "startUrl": "https://www.interschutz.de/en/expo/exhibitor-index/",
    "letter": "all",
    "searchQuery": "",
    "country": "",
    "hallOrStand": "",
    "categoryQuery": "",
    "allowPartialResults": True,
    "fetchDetails": True,
    "outputFormat": "flat",
    "maxItems": 10,
    "maxConcurrency": 5,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/deutsche-messe-exhibitor-directory-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 '{
  "startUrl": "https://www.interschutz.de/en/expo/exhibitor-index/",
  "letter": "all",
  "searchQuery": "",
  "country": "",
  "hallOrStand": "",
  "categoryQuery": "",
  "allowPartialResults": true,
  "fetchDetails": true,
  "outputFormat": "flat",
  "maxItems": 10,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/deutsche-messe-exhibitor-directory-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/deutsche-messe-exhibitor-directory-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/YlNxVNUV4nEAZuge2/builds/azBryAQt4XsepwseN/openapi.json
