# Event Homepage to Exhibitors (`springlike_meadowland/event-homepage-exhibitors`) Actor

Extract exhibitor names, booth labels and source links from public Map Your Show directories. Start with an event homepage or directory URL. Tested on AAPEX 2026 and NACS 2026. Up to 100 exhibitors per event.

- **URL**: https://apify.com/springlike\_meadowland/event-homepage-exhibitors.md
- **Developed by:** [Akshay Aggarwal](https://apify.com/springlike_meadowland) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Event Homepage to Exhibitors

**Initial beta for public Map Your Show 8\_0 directories. Validated on AAPEX 2026 and NACS 2026; other events are unverified.**

Find a public Map Your Show 8\_0 exhibitor directory linked from an event homepage and export company names, booth labels and source links. Direct supported directory URLs also work. No login, paid scraper, LLM or contact enrichment is used.

### Pricing

$2 per 1,000 exhibitor rows saved ($0.002 per row), plus $0.00005 per Actor start at up to 1 GiB memory. Platform usage is included. At this memory level, five saved rows cost $0.01005 and 100 saved rows cost $0.20005. The Store pricing panel shows the effective prices for your account.

Rows already saved are billable even if an event later fails or the run returns partial results. Unsupported or empty events produce no result-row charges; a start charge can still apply. Set a maximum cost per run and a timeout before starting. When the row budget is exhausted, the Actor records the saved-row count and stops before processing further events. The summary marks `limit_reason: spending_limit` and lists `unprocessed_event_urls`. A platform abort or timeout can still interrupt summary saving; use the dataset to check which rows were actually saved.

### Input

```json
{"eventUrls": ["https://www.aapexshow.com/"], "maxExhibitors": 5}
```

Supply 1–10 public HTTPS URLs and a per-event limit of 1–100 records. Multiple event editions produce `ambiguous`; supply the intended directory URL to resolve it. The Actor follows homepage anchor links only. Other directory platforms, JavaScript-only homepage links, authentication and anti-bot challenges are unsupported.

### Output

The Output tab links to the **Exhibitors** table and **Event coverage** summary. The default dataset contains one row per exhibitor: `company_name`, `booths` (array), `exhibitor_id`, `event_url`, `directory_url`, `source_url` (listing data request), and `exhibitor_url`. Booth labels preserve leading zeroes. Company websites and contacts are not extracted or guessed. Deduplication is by exhibitor ID within an event.

The default key-value store's `OUTPUT` record contains event summaries: `status`, `total_available`, `records_returned`, `errors` and directory candidates where ambiguous. Status values:

- `complete`: all reported exhibitors returned.
- `limited`: the record cap or spending limit restricted saved output; more exhibitors may be available.
- `empty`: provider explicitly reported zero exhibitors.
- `partial`: some rows saved, followed by a failure or inconsistent pagination.
- `error`: blocked request, unsupported response or extraction failure.
- `ambiguous` / `not_found`: homepage discovery needs a more specific supported URL.

Any partial/error/ambiguous/not\_found event makes the run fail after saving available results and summaries. Check both run status and `OUTPUT`; a partial dataset is not a complete event list.

### Limits and requests

The Actor uses a fresh anonymous cookie session with the AJAX headers visible in the directory's own page source. It performs no login or challenge solving. Requests are HTTPS only and reject non-public IPs; redirects are revalidated. Each response is capped at 4 MiB, each event at 20 data pages, and total work at a 90-second soft deadline / 240 requests. Configure a platform timeout as an additional hard limit. Large multi-event inputs may produce partial results within these limits.

### Verified coverage — 2026-09-15

Private hosted tests successfully discovered directories from the AAPEX and NACS event homepages and exported 60 exhibitors from each event across two result pages. All 120 records were unique within their event. Thirteen sampled company names and booth labels matched their public exhibitor profiles, including records around the pagination boundary. A separate five-record AAPEX smoke test also passed. Twenty offline tests cover discovery, response handling and extraction edge cases.

The 120-record test took about 9 seconds and the provider reported $0.00084 in run usage, excluding builds. This is one observed test, not a price or performance guarantee. Website changes, blocking and input size can affect results and cost. No claim is made about complete-directory extraction beyond the configured 100-record per-event cap, all Map Your Show sites, or other directory providers.

### Example dataset row

```json
{"exhibitor_id":"26731","company_name":"360insights","booths":["V732"],"event_url":"https://www.aapexshow.com/","directory_url":"https://aapex2026.mapyourshow.com/8_0/explore/exhibitor-gallery.cfm?featured=false","source_url":"https://aapex2026.mapyourshow.com/8_0/ajax/remote-proxy.cfm?action=search&searchtype=exhibitorgallery&searchsize=5&start=0","exhibitor_url":"https://aapex2026.mapyourshow.com/8_0/exhibitor/exhibitor-details.cfm?exhid=26731"}
```

### Troubleshooting

If discovery returns `not_found`, provide the public Map Your Show directory URL directly. For `ambiguous`, choose the intended event edition explicitly. For `error` or `partial`, inspect the per-event errors in `OUTPUT`; an HTTP 403 indicates that the source denied the request. The Actor does not solve challenges. Please include the event URL and run ID when reporting an issue, without credentials or private data.

# Actor input Schema

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

1 to 10 public HTTPS event homepages or Map Your Show 8\_0 directory URLs. Login and JavaScript-only discovery are unsupported.

## `maxExhibitors` (type: `integer`):

Per-event record cap, from 1 to 100.

## Actor input object example

```json
{
  "eventUrls": [
    "https://www.aapexshow.com/"
  ],
  "maxExhibitors": 5
}
```

# Actor output Schema

## `results` (type: `string`):

Saved company names, booth labels and source links. Rows can be partial or limited.

## `summary` (type: `string`):

Per-event status, source totals, extraction counts and errors. May be absent if the run is interrupted; dataset rows are authoritative for saved output.

# 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://www.aapexshow.com/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("springlike_meadowland/event-homepage-exhibitors").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://www.aapexshow.com/"] }

# Run the Actor and wait for it to finish
run = client.actor("springlike_meadowland/event-homepage-exhibitors").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 '{
  "eventUrls": [
    "https://www.aapexshow.com/"
  ]
}' |
apify call springlike_meadowland/event-homepage-exhibitors --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,springlike_meadowland/event-homepage-exhibitors"
        }
    }
}
```

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/TY8FTkd8a1haWP0U8/builds/Q1EaQtHGK6hQGy5l6/openapi.json
