# Expocad Exhibitor List Scraper (`halcyon_twine/expocad-exhibitor-scraper`) Actor

Extract the full exhibitor directory — with booth numbers, websites and contacts — from any Expocad event floor plan.

- **URL**: https://apify.com/halcyon\_twine/expocad-exhibitor-scraper.md
- **Developed by:** [Jeff Rogers](https://apify.com/halcyon_twine) (community)
- **Categories:** Lead generation
- **Stats:** 1 total users, 0 monthly users, 85.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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/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

## Expocad Exhibitor List Scraper

Extract the **complete exhibitor list — with booth numbers — from any trade show that publishes its floor plan with Expocad** (ExpoCAD / "3e by EXPOCAD"). Give it an event's directory URL and get a clean, structured dataset of every exhibitor: company name, **booth number**, website, description, categories, location and contacts — ready for lead generation, prospecting, and on-site planning. Export to **CSV, Excel, or JSON**, or pull it from the API.

### What this Actor does

Many trade shows publish their interactive floor plan and exhibitor directory on Expocad (`<organizer>.expocad.com`). This scraper reads that public directory and returns it as structured data, so you don't have to click through a floor plan company by company.

Unlike most exhibitor scrapers, this one returns the **booth number** for every exhibitor — so it's useful for on-site sales routing and booth planning, not just a flat lead list.

### Who it's for

- **B2B sales & lead generation** — build a prospect list of every company exhibiting at a show, before the doors open.
- **On-site sales teams** — walk the floor efficiently with a booth-numbered target list.
- **Event marketers & sponsors** — size up an event and its exhibitor mix.
- **Market researchers** — track who exhibits in an industry over time.

### Input

| Field | Description |
|-------|-------------|
| **Expocad directory URLs** | One or more events. Paste `https://spie.expocad.com/dcs25/` or just `spie.expocad.com/dcs25`. |
| **Fetch full details** | On by default — adds website, full description, categories and extra contacts (one extra request per exhibitor). Turn off for a faster roster-only run. |
| **Max exhibitors per event** | Optional cap per event. `0` = all exhibitors. |

You'll find the Expocad URL on the event's website wherever the interactive floor plan or exhibitor directory is embedded ("Floor plan", "Exhibitor directory", "Interactive map").

### Output

One row per exhibitor:

| Field | Description |
|-------|-------------|
| `name` | Exhibitor / company name |
| `booth` / `booths` | Booth number(s) — joined string and array (multi-booth exhibitors supported) |
| `website` | Company website (with **Fetch full details** on) |
| `description` | Company description |
| `categories` | Product / sector categories |
| `city`, `state`, `postCode`, `country`, `address1`, `address2` | Company location |
| `email`, `phone`, `cell`, `fax`, `contactName` | Contacts, where the organizer publishes them |
| `linkedIn`, `facebook`, `twitter` | Social profiles, where present |
| `companyType` | Company type / role (with details on) |
| `logoUrl` | Hosted company logo URL, when available |
| `eventOrganizer`, `eventCode`, `eventName`, `eventUrl` | Event metadata |
| `companyId`, `customerId`, `dirEntryId`, `exhibitorId` | Stable identifiers for deduplication |

### How to export an Expocad exhibitor list to CSV or Excel

1. Find the event's Expocad directory URL (see "Is my event supported?" below).
2. Paste it into **Expocad directory URLs**. Add as many events as you like.
3. Click **Start**.
4. Open the **Dataset** tab and click **Export** → **CSV**, **Excel**, or **JSON** — or pull the results from the [Apify API](https://docs.apify.com/api/v2).

### Is my event supported?

This Actor works with any event powered by **Expocad**. To check: open the event's floor plan / exhibitor directory and look at the address — if it's on `<organizer>.expocad.com`, the Actor can scrape it. Events on other floor-plan providers (ExpoFP, Map Your Show, a2z) aren't covered by this Actor. *(Running a show on ExpoFP instead? See our ExpoFP Exhibitor List Scraper.)*

### Pricing

Billed **per exhibitor returned** (pay-per-result) — you only pay for the data you get. Events that return nothing (wrong URL, ended event) cost you nothing.

### Frequently asked questions

**Where do I find the Expocad directory URL?**
On the event's website, open the interactive floor plan or exhibitor list. If the embedded directory lives at `<organizer>.expocad.com/<event>/`, that's the URL to paste.

**Why turn "Fetch full details" off?**
The roster call returns company name, booth, location and social links quickly. Website, full description, categories and extra contacts live on each exhibitor's detail page, so getting them means one extra request per exhibitor. On (default) = complete lead data; off = faster and lighter.

**Why are some fields empty?**
The Actor returns exactly what the organizer published. Contact and website coverage varies by event — some fill in everything, others only list company names and booths.

**Does it handle exhibitors with multiple booths?**
Yes. `booths` is an array and `booth` is a joined string, so a company on two stands shows both numbers.

**Is the data live?**
Yes — each run reads the event's current published directory, so you always get the latest roster.

### Notes & limitations

- Only fields the event organizer publishes are available; coverage varies by event.
- This Actor reads the same public directory data your browser loads; it does not access any private or login-gated content.
- Use the resulting contact data in line with applicable marketing/privacy rules (e.g. GDPR, CAN-SPAM) for your outreach.

### Support

Have a question or an event that won't scrape? Open an issue and include the directory URL — responses are usually fast, and the URL lets the fix be verified against your exact event.

# Actor input Schema

## `directoryUrls` (type: `array`):

One or more Expocad-powered events. Paste the event's exhibitor directory URL (e.g. https://spie.expocad.com/dcs25/) or just the '<organizer>.expocad.com/<event>' part. Each event yields its full exhibitor directory.

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

When on (recommended), the Actor opens each exhibitor's detail page to add website, full description, product categories and extra contacts — the core lead-gen fields. Turn off for a faster, lighter run that returns just the roster (company name, booth number, location and social links).

## `maxExhibitorsPerEvent` (type: `integer`):

Cap the number of exhibitors returned per event. Set to 0 for no limit (all exhibitors).

## Actor input object example

```json
{
  "directoryUrls": [
    "https://spie.expocad.com/dcs25/",
    "https://informa.expocad.com/cpna25/"
  ],
  "fetchDetails": true,
  "maxExhibitorsPerEvent": 0
}
```

# 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 = {
    "directoryUrls": [
        "https://aad.expocad.com/ia24/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("halcyon_twine/expocad-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 = { "directoryUrls": ["https://aad.expocad.com/ia24/"] }

# Run the Actor and wait for it to finish
run = client.actor("halcyon_twine/expocad-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 '{
  "directoryUrls": [
    "https://aad.expocad.com/ia24/"
  ]
}' |
apify call halcyon_twine/expocad-exhibitor-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/S87hIoR8xZczVHmOK/builds/nUQSbpFcn9TtMjkWS/openapi.json
