# Swapcard Exhibitor List Scraper: Trade Show Leads (`epicscrapers/swapcard-exhibitors-scraper`) Actor

Export the exhibitor list of any public Swapcard event: company, booth, categories, sponsor tier, website, email, phone, address, LinkedIn and other social links, products and documents. Paste event URLs, filter by keyword or category. No login. From $1.90 per 1,000 exhibitors.

- **URL**: https://apify.com/epicscrapers/swapcard-exhibitors-scraper.md
- **Developed by:** [Epic Scrapers](https://apify.com/epicscrapers) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 55.6% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.90 / 1,000 exhibitor saveds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

### Swapcard Exhibitor List Scraper: export trade show exhibitors with booth, website, email and LinkedIn

Swapcard Exhibitor List Scraper exports the exhibitor list of any public Swapcard event to a spreadsheet. Paste the event's Swapcard URL and get one row per exhibiting company: name, booth number, categories, sponsor tier, website, email, phone, full address, LinkedIn, X, Facebook and Instagram links, logo, products and documents.

Swapcard runs the event apps of thousands of trade shows, conferences and expos. Their exhibitor lists are among the best B2B lead sources there are: every company on them has a budget and is actively selling. This Actor turns that list into clean, ready-to-import rows in minutes instead of clicking through hundreds of exhibitor pages.

- **Every exhibitor, in one run.** The full list of a 300-company show takes a few seconds. No page limit.
- **Contact data organizers publish.** Website, email and phone, plus the street address, city, state, postal code and country. Many shows put the address and email in their own custom fields, which are read and filled in automatically.
- **Social links as real URLs.** LinkedIn company pages, X, Facebook, Instagram and YouTube, rebuilt from the handles Swapcard stores.
- **Booth, categories and sponsor tier.** Find the platinum sponsors, everyone in hall B, or only the companies in your niche.
- **Filter at the source.** Filter by the event's own categories (for example "Environmental & Energy") or by keyword, so you pay only for the exhibitors you want.
- **Several events in one run.** Each row carries the event name, so you can merge shows into one prospect list.
- **No login, no API key, no proxy setup.** Export to CSV, Excel, JSON or Google Sheets, or use the API.

**Scope:** exhibitors (companies) of events whose exhibitor list is visible without logging in. It does not scrape attendees, speakers or people, and it never asks for a Swapcard account. See [Why exhibitors only?](#why-exhibitors-only-and-not-attendees).

### What can you do with it?

| Goal                                       | How                                                                                                   |
| ------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
| Build a lead list from a trade show        | Paste the event URL and export `exhibitorName`, `website`, `email`, `phone`, `linkedinUrl`.           |
| Prospect only your niche                   | Add the event's category names to **Categories**, for example `ANALYZERS`.                            |
| Book meetings before the show              | Sort by `booth` and plan a route; use `email` and `linkedinUrl` for outreach.                         |
| Find the biggest spenders                  | Keep rows with `sponsorCategories` (gold, platinum, headline sponsors) or `exhibitorType` "Featured". |
| Compare competitors' presence across shows | Run several events and pivot on `exhibitorName` and `eventName`.                                      |
| Enrich a CRM                               | Match on `website` domain; add `categories`, `country` and `products`.                                |
| Track who returns year after year          | Run this year's and last year's event and compare `exhibitorName`.                                    |

### Quick start

1. Click **Try for free** and sign in to Apify.
2. Open the event in Swapcard and copy its URL, for example `https://app.swapcard.com/event/evolve-the-virtual-event-for-planners`.
3. Paste it into **Swapcard events**. Add more events if you like.
4. Click **Start**. When the run finishes, open the **Output** tab and export the data.

```json
{
    "events": ["https://app.swapcard.com/event/evolve-the-virtual-event-for-planners"],
    "maxResultsPerEvent": 1000
}
```

#### Where do I find the event URL?

- In the event app: the address bar shows `https://app.swapcard.com/event/<event-slug>/...`. Any page of the event works; the exhibitor list page (`.../exhibitors/<id>`) limits the run to that list.
- On the organizer's website: an embedded Swapcard exhibitor list loads from `https://app.swapcard.com/widget/event/<event-slug>/exhibitors/...`. Paste that URL as it is.
- Organizers with their own app domain (for example `https://events.example.com/event/<event-slug>`) work too.

### What data do you get?

One row per exhibitor:

| Group           | Fields                                                                                                                   |
| --------------- | ------------------------------------------------------------------------------------------------------------------------ |
| Company         | `exhibitorName`, `exhibitorType`, `description`, `logoUrl`, `bannerUrl`, `exhibitorId`, `exhibitorUrl`                   |
| At the show     | `eventName`, `booth`, `booths`, `categories`, `sponsorCategories`, `exhibitorListName`, `eventStartDate`, `eventEndDate` |
| Contact         | `website`, `email`, `phone`, `phones`, `street`, `city`, `state`, `postalCode`, `country`, `place`                       |
| Social          | `linkedinUrl`, `twitterUrl`, `facebookUrl`, `instagramUrl`, `youtubeUrl`, `socialLinks` (all networks)                   |
| Offering        | `productCount`, `products`, `documents` (brochures and files the exhibitor uploaded)                                     |
| Everything else | `customFields`: every other field the organizer added to exhibitor profiles, by name                                     |

How full each field is depends on what the organizer and exhibitors filled in. In our test on Pittcon 2026 (308 exhibitors), 96% of rows had an email, 99% a street address and 79% a website.

### Input reference

| Field                | Type    | Description                                                                                                                                                                  |
| -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `events`             | array   | Event URLs, exhibitor list URLs, widget URLs, event slugs (`evolve-the-virtual-event-for-planners`) or event IDs. Required.                                                  |
| `maxResultsPerEvent` | integer | Maximum exhibitors per event. `0` = no limit. Default `1000`.                                                                                                                |
| `search`             | string  | Only exhibitors matching this keyword, using the event app's own search.                                                                                                     |
| `categories`         | array   | Only exhibitors in **any** of these categories. Use the names shown in the event's exhibitor filters (case-insensitive). The run log lists the names when one doesn't match. |

An event URL scrapes every exhibitor list the event has (some events have separate lists such as "Exhibitors", "Sponsors" or "Start-ups"); a company listed twice is saved once.

### Ready-to-run examples

#### All exhibitors of a show

```json
{ "events": ["https://app.swapcard.com/event/evolve-the-virtual-event-for-planners"] }
```

#### Only exhibitors in some categories

```json
{
    "events": ["https://app.swapcard.com/event/evolve-the-virtual-event-for-planners"],
    "categories": ["Event App", "Streaming Solution"]
}
```

#### Search for a company or product

```json
{
    "events": ["evolve-the-virtual-event-for-planners"],
    "search": "streaming"
}
```

### Output example

A real row from Pittcon 2026 (`customFields` shortened):

```json
{
    "eventName": "Pittcon 2026",
    "exhibitorName": "Confience",
    "exhibitorType": "Featured Exhibitor",
    "description": "Driven by the mission to provide automated lab management and data on which their customers can act to build trusted products and a thriving planet, Confience offers Laboratory Information Management System (LIMS) solutions…",
    "booth": "1224",
    "categories": ["Instrumentation & Nanoscience", "COMPUTER SOFTWARE", "LABORATORY INFORMATICS", "LIMS"],
    "sponsorCategories": [],
    "website": "https://www.confience.io",
    "email": "sales@confience.io",
    "phone": null,
    "street": "5540 Centerview Drive, Suite 204, PMB 98282",
    "city": "Raleigh",
    "state": "NC",
    "postalCode": "27606-8012",
    "country": "United States",
    "place": null,
    "linkedinUrl": null,
    "twitterUrl": "https://x.com/LIMS_Solutions",
    "facebookUrl": "https://www.facebook.com/leadersinLIMS",
    "instagramUrl": "https://www.instagram.com/confience.north.america",
    "youtubeUrl": null,
    "socialLinks": {
        "facebook": "https://www.facebook.com/leadersinLIMS",
        "twitter": "https://x.com/LIMS_Solutions",
        "instagram": "https://www.instagram.com/confience.north.america"
    },
    "logoUrl": "https://static.swapcard.com/public/images/feab9bc19c3f42f1b67ca105bacaee32.jpeg",
    "bannerUrl": null,
    "phones": [],
    "booths": [{ "name": "1224", "category": null }],
    "productCount": 0,
    "products": [],
    "documents": [],
    "customFields": {
        "Track": "Instrumentation & Nanoscience",
        "Email": "sales@confience.io",
        "Products and Services": ["COMPUTER SOFTWARE", "LABORATORY INFORMATICS", "LIMS"]
    },
    "exhibitorId": "RXhoaWJpdG9yXzIyOTMwNzI=",
    "exhibitorUrl": "https://app.swapcard.com/event/pittcon-2026/exhibitor/RXhoaWJpdG9yXzIyOTMwNzI=",
    "exhibitorListName": "Exhibitors",
    "eventId": "RXZlbnRfMjc0NDcwMA==",
    "eventSlug": "pittcon-2026",
    "eventStartDate": "2026-03-07T08:00:00-06:00",
    "eventEndDate": "2026-03-11T15:00:00-05:00",
    "eventUrl": "https://app.swapcard.com/event/pittcon-2026"
}
```

#### Notes on fields

- `categories` are the values of the fields the organizer offers as exhibitor filters (tracks, product groups, countries…). All other profile fields are in `customFields`.
- `sponsorCategories` are the sponsor sections the exhibitor appears in on the event page, for example "Gold Sponsors".
- `description`: when the main description is shorter than a description field the organizer added (some shows put "View full profile" in the main one), the longer text is used.
- `email`, `website`, `phone` and the address parts fall back to custom fields with matching names (for example "Email", "City", "Postal Code") when the standard field is empty.
- `products` lists up to 50 products per product category; `productCount` is the full number.
- `booth` joins several booths with a comma; `booths` keeps each with its hall or category.

### Pricing

You pay only for exhibitors saved: **$3 per 1,000** on the Free plan, $2.60 on Bronze, $2.20 on Silver and $1.90 on Gold and higher. Exhibitors with an email address or phone number add a contact details charge: $2 per 1,000 on Free, $1.70 on Bronze, $1.50 on Silver and $1.20 on Gold and higher, so a full lead costs $5 per 1,000 on the Free plan. Platform usage is included. Duplicate exhibitors, private events and events without a public exhibitor list cost nothing. A 300-exhibitor show where every exhibitor has contact details costs about $1.50 on the Free plan. You can set a spending limit on any run; the run stops fetching as soon as the limit is reached.

### FAQ

#### Why exhibitors only, and not attendees?

Exhibitor lists are business directories the organizer publishes to promote the companies at the show. Attendee and speaker lists are personal data, visible only to logged-in participants. Scraping them would require a participant's account and would break Swapcard's terms and data protection rules. This Actor reads only what any visitor can see without logging in.

#### Why did my event fail with "the event is private"?

Some organizers make the whole event app login-only (IAAPA Expo, for example). Swapcard then shows nothing to anonymous visitors, so there is no public exhibitor list to export. Check whether the organizer's own website embeds a public exhibitor list; if it does, paste that widget URL.

#### Why are some fields empty?

The Actor returns what the organizer and exhibitors entered. Many exhibitors skip social links or phone numbers, and some events don't show emails. Fields are never guessed.

#### How many exhibitors can I get?

All of them. Pages of 100 are read until the list ends; a 1,000-exhibitor show takes well under a minute.

#### Do I need a Swapcard account, API key or proxies?

No. The Actor uses the same public data the Swapcard event app shows to any visitor.

#### Is there an official Swapcard API?

Swapcard has an API for event organizers, which needs an organizer key for that event. This Actor works for any public event without one, so it is useful when you are an exhibitor, sales team or agency rather than the organizer.

#### Can I run it on a schedule?

Yes. Save your input as a task and schedule it daily or weekly before a show to catch exhibitors as they are added. Use the API or integrations (Google Sheets, Make, Zapier, HubSpot via webhook) to send new rows to your tools.

#### Is it legal?

The Actor reads only business information organizers publish openly to promote their exhibitors. Exhibitor contact details can still be personal data (for example a named email address), so use the results in line with the laws that apply to you, such as GDPR and CAN-SPAM, and with the event's terms.

### Support

Found an event that doesn't work, or need a field that isn't there? Open an issue on the **Issues** tab with the event URL and we'll look at it.

# Actor input Schema

## `events` (type: `array`):

Events to scrape. Each entry can be an event URL (https://app.swapcard.com/event/evolve-the-virtual-event-for-planners), an exhibitor list URL (https://app.swapcard.com/event/evolve-the-virtual-event-for-planners/exhibitors/RXZlbnRWaWV3XzMwNTk4), a widget URL from an organizer's website, an event slug (evolve-the-virtual-event-for-planners) or an event ID. An event URL scrapes every exhibitor list of the event; an exhibitor list URL scrapes only that list. Only events that show exhibitors without a login are supported.

## `maxResultsPerEvent` (type: `integer`):

Maximum exhibitors saved per event. Set to 0 for no limit.

## `search` (type: `string`):

Only return exhibitors that match this keyword, using the event app's own search (company name and profile text).

## `categories` (type: `array`):

Only return exhibitors in any of these categories. Use the category names from the event's exhibitor filters, for example "Event App" or "Streaming Solution" for Evolve Homecoming (case-insensitive, exact name). When a name doesn't match, the run log lists the categories the event offers.

## Actor input object example

```json
{
  "events": [
    "https://app.swapcard.com/event/evolve-the-virtual-event-for-planners"
  ],
  "maxResultsPerEvent": 1000
}
```

# Actor output Schema

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

No description

# 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 = {
    "events": [
        "https://app.swapcard.com/event/evolve-the-virtual-event-for-planners"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("epicscrapers/swapcard-exhibitors-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 = { "events": ["https://app.swapcard.com/event/evolve-the-virtual-event-for-planners"] }

# Run the Actor and wait for it to finish
run = client.actor("epicscrapers/swapcard-exhibitors-scraper").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 '{
  "events": [
    "https://app.swapcard.com/event/evolve-the-virtual-event-for-planners"
  ]
}' |
apify call epicscrapers/swapcard-exhibitors-scraper --silent --output-dataset

```

## MCP server setup

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

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/4JeDgfjK54ewQ2N3r/builds/WchZwIS6vQfc4PfSJ/openapi.json
