# 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:** 2 total users, 0 monthly users, 100.0% 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Expocad Exhibitor List Scraper",
        "description": "Extract the full exhibitor directory — with booth numbers, websites and contacts — from any Expocad event floor plan.",
        "version": "0.1",
        "x-build-id": "nUQSbpFcn9TtMjkWS"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/halcyon_twine~expocad-exhibitor-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-halcyon_twine-expocad-exhibitor-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/halcyon_twine~expocad-exhibitor-scraper/runs": {
            "post": {
                "operationId": "runs-sync-halcyon_twine-expocad-exhibitor-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/halcyon_twine~expocad-exhibitor-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-halcyon_twine-expocad-exhibitor-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "directoryUrls"
                ],
                "properties": {
                    "directoryUrls": {
                        "title": "Expocad directory URLs",
                        "type": "array",
                        "description": "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.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "fetchDetails": {
                        "title": "Fetch full details (website, description, categories, contacts)",
                        "type": "boolean",
                        "description": "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).",
                        "default": true
                    },
                    "maxExhibitorsPerEvent": {
                        "title": "Max exhibitors per event",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap the number of exhibitors returned per event. Set to 0 for no limit (all exhibitors).",
                        "default": 0
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
