# Comexposium Exhibitor Directory Scraper (`getascraper/comexposium-exhibitor-directory-scraper`) Actor

Extract public exhibitors from supported Comexposium Expoplatform event directories. Filter by live country, category, or keyword, then export deduplicated company profiles, stands, descriptions, and optional public website and phone data.

- **URL**: https://apify.com/getascraper/comexposium-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 $3.30 / 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

## 🥂 Comexposium exhibitor directory scraper

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:24px 28px;background:#F5F3FF;border:1px solid #DDD6FE;border-top:4px solid #5B21B6;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Turn a Comexposium directory into a focused prospect list.</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Filter public exhibitors by company, country, or category. Keep profiles, stands, descriptions, websites, and phones when the directory publishes them.</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 #DDD6FE;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#4C1D95">🔎 Focused matching</span><br>
<span style="font-size:12px;color:#57534E">Search company and directory terms before you collect.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #DDD6FE;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#4C1D95">🌍 Event filters</span><br>
<span style="font-size:12px;color:#57534E">Use the country and category choices published for the event.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #DDD6FE;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#4C1D95">📞 Public enrichment</span><br>
<span style="font-size:12px;color:#57534E">Add websites and phones when exhibitor profiles publish them.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #DDD6FE;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#4C1D95">🧾 Clean records</span><br>
<span style="font-size:12px;color:#57534E">Deduplicate parent exhibitors before applying your result limit.</span>
</td>
</tr>
</table>

Use it for partner sourcing, pre-event outreach, and supplier research. Every result keeps the official profile and directory links for follow-up.

### 🔍 What does this actor do?

This Actor collects public exhibitor records from supported Comexposium Expoplatform directories. It keeps the event context and returns only information published by the source.

### 👥 Who uses it?

- **I am a business development manager** building a list of active exhibitors before outreach.
- **I am a sourcing researcher** comparing suppliers by country and event category.
- **I am an events team member** turning a public directory into a follow-up spreadsheet.

### 🚀 How to use it

Run a focused Comexposium directory search in three steps.

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#F5F3FF;border:1px solid #DDD6FE;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#5B21B6;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Choose an event</span><br>
<span style="font-size:12px;color:#57534E">Paste a supported public Comexposium exhibitor directory URL.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F5F3FF;border:1px solid #DDD6FE;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#5B21B6;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your match rules</span><br>
<span style="font-size:12px;color:#57534E">Add a company search, country choices, or category choices.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F5F3FF;border:1px solid #DDD6FE;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#5B21B6;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Use the shortlist</span><br>
<span style="font-size:12px;color:#57534E">Review public profiles, placement details, and contact fields in your dataset.</span>
</td>
</tr>
</table>

### 🧩 Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| startUrl | string | Yes | Official Comexposium event directory URL. The prefilled Wine Paris URL is a verified example. |
| searchQuery | string | No | Company or directory keyword used for the selected event. |
| countries | array of strings | No | Country labels from the selected event. Multiple values are alternatives. |
| categories | array of strings | No | Category labels from the selected event. Multiple values are alternatives. |
| allowPartialResults | boolean | No | Keep a directory record when its optional public profile cannot be read. |
| fetchDetails | boolean | No | Add public website and phone fields when available. |
| maxItems | integer | No | Maximum unique exhibitors returned after filtering and deduplication. |
| maxConcurrency | integer | No | Maximum public profile requests made at once. Lower values reduce source load. |

All supplied filter groups are combined. Multiple values within one group are alternatives.

### 📋 Data table

| Field | Type | Description |
| --- | --- | --- |
| id | integer | Official public exhibitor identifier. |
| ownerId | integer | Parent exhibitor identifier when the event groups records. |
| name | string | Public exhibitor name. |
| exhibitorUrl | URL | Public exhibitor detail URL. |
| country | string | Public country value. |
| city | string | Public city value. |
| region | string | Public region value. |
| logoUrl | URL | Public exhibitor logo URL. |
| description | string | Public exhibitor description. |
| stands | array of strings | Public stand values. |
| categoryId | integer | Public category identifier when supplied. |
| website | URL | External website published on the public profile. |
| phone | string | Phone number published on the public profile. |
| sourceDirectoryUrl | URL | Official event directory URL. |
| source | string | Source label for the record. |

### 💰 Pricing

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

### ⭐ Enjoying Comexposium exhibitor directory scraper?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#F5F3FF;border:1px solid #DDD6FE;border-left:5px solid #5B21B6;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px;color:#4C1D95">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Did this directory save time before your next event?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps sales and sourcing teams find this Actor. Your feedback guides future improvements.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#5B21B6;border:1px solid #DDD6FE;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/comexposium-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 directories are supported?

Use a public Comexposium directory that follows the supported Expoplatform format. The prefilled Wine Paris directory is a verified example.

##### Can I use any country or category label?

Use labels published by the selected event. Unknown labels fail clearly instead of silently changing your search.

##### Does it collect private contact details?

No. It returns public directory and public exhibitor-profile fields only. Missing fields remain empty.

##### Why might a website or phone be missing?

Those fields appear only when the public exhibitor profile publishes them.

### 🔗 Other actors

- [IME Events exhibitor directory scraper](https://apify.com/getascraper/ime-events-exhibitor-directory-scraper) for supported IME event directories.
- [ANDMORE exhibitor directory scraper](https://apify.com/getascraper/andmore-exhibitor-directory-scraper) for Atlanta Market and Las Vegas Market records.
- [LiveBuzz exhibitor directory scraper](https://apify.com/getascraper/livebuzz-exhibitor-directory-scraper) for public event exhibitor profiles.
- [GoShow exhibitor directory scraper](https://apify.com/getascraper/goeshow-exhibitor-directory-scraper) for event lists and exhibit maps.

# Actor input Schema

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

Public Expoplatform exhibitor directory URL. Wine Paris is the verified default event.

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

Optional keyword search sent to the selected event directory.

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

Optional country labels from the selected event's live public filters. Unknown labels fail clearly.

## `categories` (type: `array`):

Optional category labels from the selected event's live public filters. Unknown labels fail clearly.

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

Keep directory records when an individual public detail page fails. Directory or filter failures still stop the run.

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

Visit each selected public profile to add publicly published website and phone fields when available.

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

Maximum unique exhibitors returned after filtering and deduplication.

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

Maximum number of public detail requests made in parallel. Lower values reduce source load.

## Actor input object example

```json
{
  "startUrl": "https://wineparis.com/marketplace/exhibitors",
  "searchQuery": "",
  "countries": [],
  "categories": [],
  "allowPartialResults": true,
  "fetchDetails": true,
  "maxItems": 10,
  "maxConcurrency": 5
}
```

# Actor output Schema

## `exhibitors` (type: `string`):

No description

## `runSummary` (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://wineparis.com/marketplace/exhibitors",
    "searchQuery": "",
    "countries": [],
    "categories": [],
    "allowPartialResults": true,
    "fetchDetails": true,
    "maxItems": 10,
    "maxConcurrency": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/comexposium-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://wineparis.com/marketplace/exhibitors",
    "searchQuery": "",
    "countries": [],
    "categories": [],
    "allowPartialResults": True,
    "fetchDetails": True,
    "maxItems": 10,
    "maxConcurrency": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/comexposium-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://wineparis.com/marketplace/exhibitors",
  "searchQuery": "",
  "countries": [],
  "categories": [],
  "allowPartialResults": true,
  "fetchDetails": true,
  "maxItems": 10,
  "maxConcurrency": 5
}' |
apify call getascraper/comexposium-exhibitor-directory-scraper --silent --output-dataset

```

## MCP server setup

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