# ExpoFP Exhibitor List Scraper (`halcyon_twine/expofp-exhibitor-scraper`) Actor

Extract the full exhibitor list from any ExpoFP trade show floor plan: company names, websites, categories and logos. Export to CSV, Excel, JSON or API.

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

## Pricing

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

## ExpoFP Exhibitor List Scraper

Extract the **complete exhibitor list** from any trade show or conference that publishes its floor plan with **ExpoFP**. Give it an event URL and get a clean, structured dataset of every exhibitor — company name, description, website, categories, and logo — ready for lead generation, prospecting, and market research. Export to **CSV, Excel, or JSON**, or pull it straight from the API.

### What this Actor does

Thousands of trade shows publish their interactive floor plan on ExpoFP (`your-event.expofp.com`). This scraper reads the event's public exhibitor directory and returns it as structured data so your sales team doesn't have to copy company names off a floor plan by hand.

### Who it's for

- **B2B sales & lead generation** — build a prospect list of every company exhibiting at a show, before the doors open.
- **Event marketers & sponsors** — size up an event and its exhibitor mix.
- **Market researchers** — track who exhibits in an industry, season over season.
- **Recruiters & partnership teams** — find every company in a vertical, in one place.

### Input

| Field | Description |
|-------|-------------|
| **ExpoFP event URLs or slugs** | One or more events. Paste `https://big5global2025.expofp.com/` or just `big5global2025`. |
| **Max exhibitors per event** | Optional cap per event. `0` = all exhibitors. |

You can find the ExpoFP URL on an event's website wherever the interactive floor plan is embedded ("Floor plan", "Exhibitor directory", "Explore the show").

### Output

One row per exhibitor:

| Field | Description |
|-------|-------------|
| `name` | Exhibitor / company name |
| `description` | Company description as shown on the floor plan |
| `website` | Company website (when the organizer provides it) |
| `linkTitle` / `linkUrl` | Custom profile link (when present) |
| `categories` | Product / sector categories, resolved to names |
| `logoUrl` | Company logo image URL |
| `eventTitle`, `eventInfo`, `eventStartDate`, `eventEndDate`, `eventUrl` | Event metadata |
| `exhibitorId`, `externalId` | Stable identifiers for deduplication |

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

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

That's the whole workflow to turn a trade-show floor plan into a spreadsheet of leads.

### Is my event supported?

This Actor works with any event powered by **ExpoFP**. To check in five seconds: open `https://<event-slug>.expofp.com/` in your browser — if the interactive floor plan loads, the Actor can scrape it. If the event uses a different floor-plan provider (Map Your Show, Swapcard, a2z, etc.), this particular Actor won't find it.

### Pricing

This Actor is billed **per exhibitor returned** (pay-per-result) — you only pay for the data you actually get. Run it on a handful of events or thousands; the cost scales with results. Events that return nothing (wrong slug, ended event) cost you nothing.

### Frequently asked questions

**How do I find an event's ExpoFP URL or slug?**
On the event's website, look for the interactive floor plan or exhibitor directory ("Floor plan", "Explore the show", "Exhibitor list"). The embedded map lives at `something.expofp.com` — that `something` is your slug.

**The run returned zero exhibitors or failed — why?**
Almost always one of: (a) the slug is wrong or misspelled, (b) the event isn't hosted on ExpoFP, or (c) the event has ended and been taken down. Confirm `https://<slug>.expofp.com/` loads a floor plan in your browser, then re-run. You are not charged for events that return nothing.

**Why are `website` or `categories` empty for some exhibitors?**
The Actor returns exactly what the event organizer published on the floor plan. Website and category coverage varies from event to event — some organizers fill in every field, others only list company names. Missing fields mean the organizer didn't publish them, not that the Actor missed them.

**Where are the booth numbers?**
ExpoFP's public floor-plan data does not expose a clean booth-to-exhibitor mapping, so booth numbers are not currently included. Every other published field is.

**How do I remove duplicate companies?**
Large multi-hall events occasionally list a company more than once. Deduplicate on the `exhibitorId` or `externalId` field — both are stable identifiers.

**Can I scrape several events at once?**
Yes. Add multiple URLs/slugs to the input; each event contributes its full exhibitor directory to the same dataset, tagged with `eventSlug` and `eventTitle`.

**Is the data live?**
Yes — each run reads the event's current public floor-plan data at run time, so you always get the latest published roster.

### Notes & limitations

- Only fields the event organizer publishes are available. Website and category coverage varies by event.
- This Actor reads the same public floor-plan data your browser loads; it does not access any private or attendee-gated content.
- Booth-number mapping is not currently exposed by ExpoFP's public data and is therefore not included.

### Support

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

# Actor input Schema

## `eventUrls` (type: `array`):

One or more ExpoFP-powered events. Paste the full floor-plan URL (e.g. https://big5global2025.expofp.com/) or just the slug (e.g. big5global2025). Each event yields its full exhibitor directory.

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

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

## Actor input object example

```json
{
  "eventUrls": [
    "big5global2025",
    "https://busworld2025.expofp.com/"
  ],
  "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 = {
    "eventUrls": [
        "capacityeurope2025"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("halcyon_twine/expofp-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 = { "eventUrls": ["capacityeurope2025"] }

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

```

## MCP server setup

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

```

## OpenAPI specification

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