# ExpoFP Exhibitor List Scraper - Trade Show Floor Plan Data (`jamkon/expofp-exhibitor-scraper`) Actor

Extract complete exhibitor lists from any ExpoFP trade show floor plan: company names, booth numbers, categories, countries and websites. Pay per result.

- **URL**: https://apify.com/jamkon/expofp-exhibitor-scraper.md
- **Developed by:** [james correy](https://apify.com/jamkon) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 1 total users, 1 monthly users, 93.8% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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 - Trade Show Floor Plan Data

Extract the **complete exhibitor list** from any trade show or expo that hosts its interactive floor plan on **ExpoFP** — company names, booth numbers, product categories, countries, websites, and company social links — in one run, as clean structured data.

Works with any `yourshow.expofp.com` floor plan URL, a bare event slug, or an organiser website that embeds an ExpoFP floor plan (the actor finds the embedded plan automatically).

### Why use it

- **B2B lead lists**: every exhibitor at a show is a company actively spending money to sell. Pull the list before the show to plan outreach, or after to build your pipeline.
- **Event sales and sponsorship teams**: see who exhibits at competing or adjacent shows.
- **Market research**: track which companies exhibit where, by category and country.
- **AI agents**: use this actor as an MCP tool to fetch exhibitor data on demand.

### What you get

One record per exhibitor:

```json
{
  "companyName": "Actual Pet Foods",
  "boothNumbers": ["221"],
  "description": "Raw pet food manufacturing with 50 years of combined experience...",
  "productCategories": ["Dog Food"],
  "country": "Canada",
  "state": "Ontario",
  "city": null,
  "websiteUrl": "https://actualpetfoods.com/",
  "linkedinUrl": "https://www.linkedin.com/company/actual-pet-foods/",
  "facebookUrl": null,
  "instagramUrl": null,
  "logoUrl": "https://connect2026.expofp.com/exhibitors/11964190/media/actual-pet-foods.webp",
  "exhibitorSlug": "actual-pet-foods",
  "eventSlug": "connect2026",
  "eventName": "Connect 2026"
}
```

### Quick start

1. Paste your show's floor plan URL (e.g. `https://yourshow.expofp.com`) into **Event URLs**.
2. Run. That's it — the default settings work for every event.

Scrape several events in one run by adding more URLs. Turn on **Dedupe across events** to get each company once, with booth numbers and events merged.

### Pricing

Pay per result: a small actor-start fee plus a per-exhibitor-record fee. A typical 200-2,000 exhibitor show costs well under the price of a coffee. No subscription, no monthly minimum — you pay only for the records you actually receive.

### What this actor never collects

By design, this actor extracts **company-level business information only**:

- No email addresses of any kind (public or masked)
- No phone numbers
- No personal names, attendee data, speaker data, or networking profiles
- Social links are company pages only

This keeps your lead lists clean of personal data and your compliance story simple.

### Supported platforms

ExpoFP-hosted floor plans only (`*.expofp.com`, including plans embedded on organiser websites). If you need a different event platform, open an issue and tell me which one — fast support is the point of this actor.

### Troubleshooting

- **"No ExpoFP floor plan found"**: the event may not use ExpoFP. Check whether the floor plan page URL contains `expofp.com`.
- **"Could not locate exhibitor data"**: the organiser may have unpublished the plan or hidden the exhibitor list before the show opens. Try again closer to the event date.
- **Empty booth numbers**: some organisers publish exhibitors before assigning booths.

Found a problem? Open an issue on this actor's Issues tab — issues are answered fast, usually same day.

# Actor input Schema

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

One or more ExpoFP events. Accepts a full floor plan URL (https://yourshow.expofp.com), a bare slug (yourshow), or an organiser page that embeds an ExpoFP floor plan (the actor finds the embedded plan automatically).

## `includeCategories` (type: `boolean`):

Resolve each exhibitor's category IDs to human-readable category names.

## `dedupeAcrossEvents` (type: `boolean`):

When scraping multiple events, emit each company only once (matched on normalised company name + website). Booth numbers and events are merged onto the single record.

## Actor input object example

```json
{
  "eventUrls": [
    "https://connect2026.expofp.com"
  ],
  "includeCategories": true,
  "dedupeAcrossEvents": false
}
```

# 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": [
        "https://connect2026.expofp.com"
    ]
};

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

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

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/8kCzuIbuvWdo5tmw5/builds/qfo4vULjmCU7Ys4kY/openapi.json
