# Exhibitor List Scraper: Trade Show & Messe Aussteller Leads (`getascraper/exhibitor-list-scraper`) Actor

Scrape trade show and messe exhibitor lists from 30 fair platforms, or pick from 148 named shows. Get company, website, email, phone, booth, hall, categories and contact persons in one format. Filter by country or category, watch for new exhibitors. No login needed. Export to Excel, CSV or JSON.

- **URL**: https://apify.com/getascraper/exhibitor-list-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.70 / 1,000 exhibitor records

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

## 🎪 Exhibitor List Scraper: Trade Show & Messe Aussteller Leads

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#FFF7ED;color:#1C1917;border:1px solid #FED7AA;border-top:4px solid #C2410C;border-radius:10px 10px 0 0">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Paste a fair's exhibitor list link. Get a clean lead list back.</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Company, website, email, phone, stand, categories and contact persons for every exhibitor, in one consistent format, from many fairs in a single run.</span>
</td>
</tr>
</table>
<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;color:#1C1917;border:1px solid #FED7AA;border-top:none;border-radius:0 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A3412">🗂️ Tick your shows</span><br>
<span style="font-size:12px;color:#57534E">Pick from 148 named fairs. No hunting for list links.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;color:#1C1917;border:1px solid #FED7AA;border-left:none;border-top:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A3412">🧹 One clean format</span><br>
<span style="font-size:12px;color:#57534E">Same columns for every fair, ready for a spreadsheet or CRM.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;color:#1C1917;border:1px solid #FED7AA;border-left:none;border-top:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A3412">🔔 Only what is new</span><br>
<span style="font-size:12px;color:#57534E">Schedule it and get just the exhibitors added since last time.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;color:#1C1917;border:1px solid #FED7AA;border-left:none;border-top:none;border-radius:0 0 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A3412">✉️ A person, not just info@</span><br>
<span style="font-size:12px;color:#57534E">A named person's email when the exhibitor's website shows one, plus the general inbox.</span>
</td>
</tr>
</table>

Trade show exhibitor lists (Ausstellerverzeichnis, liste des exposants) are the warmest lead lists in B2B, but every fair publishes them differently. **Exhibitor List Scraper** turns them into one clean spreadsheet, whether you need one fair or twenty.

🔎 **Missing your trade show?** [Send us its exhibitor list link](https://apify.com/getascraper/exhibitor-list-scraper/issues/open) and we'll add it, usually within a week.

### 🔍 What does Exhibitor List Scraper do?

- **Pick fairs by name** from 148 shows in 23 industries, or paste the exhibitor list link of any supported fair.
- **Get one row per exhibitor:** company, website, email, phone, stand, categories, social links and, where the fair lists them, contact persons.
- **Find more emails:** when the fair lists none, it reads the exhibitor's own website for a named person's email and the general inbox, and labels which is which.
- **Filter** by keyword, category, country, or only exhibitors with a website, email or contact person.
- **Track changes:** watchlist mode returns only new, changed or removed exhibitors, and a company at several fairs keeps one group id.

### 🚀 How to use it

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:16px 14px;width:33%;background:#FFF7ED;color:#1C1917;border:1px solid #FED7AA;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#C2410C;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick shows or paste links</span><br>
<span style="font-size:12px;color:#57534E">Tick shows from the list, or add any fair's exhibitor list link.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FFF7ED;color:#1C1917;border:1px solid #FED7AA;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#C2410C;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick your filters</span><br>
<span style="font-size:12px;color:#57534E">Keep only the countries, categories or exhibitors with an email you care about.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FFF7ED;color:#1C1917;border:1px solid #FED7AA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#C2410C;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Download your list</span><br>
<span style="font-size:12px;color:#57534E">Export to Excel, CSV or JSON, or send it straight to your CRM.</span>
</td>
</tr>
</table>

### 👥 Why use it?

- **Sales and business development:** "I need every exhibitor from this fair with a website and email before the show starts, so I can book meetings instead of copying names into a sheet."
- **Event sponsors and organisers:** "I want to see who exhibits at the fairs my competitors attend, and get told when a new company signs up."
- **Market researchers:** "I compare exhibitor lists across several fairs to see which companies show up everywhere and which are new this year."

### ⚙️ Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| Exhibitor list links | array of URLs | No | One or more trade show exhibitor list links. Each link is checked on its own. |
| Pick trade shows | array of enums | No | Tick fairs from the built-in list instead of pasting links. Combined with the links above. |
| Pick whole industries | array of enums | No | Adds every listed show of these industries, for example all medical fairs. |
| Search keywords | string | No | Keep only exhibitors that match these words. |
| Product categories | array of strings | No | Keep exhibitors whose categories, products or brands contain any of these words. |
| Exhibitor countries | array of strings | No | Keep exhibitors based in these countries. Use English names or two letter codes. |
| Only exhibitors with a website | boolean | No | Skip exhibitors that publish no website. |
| Only exhibitors with an email | boolean | No | Skip exhibitors without an email address. |
| Only exhibitors with contact persons | boolean | No | Skip exhibitors that publish no named contact person. |
| Include contact persons | boolean | No | Add the named contacts an exhibitor publishes, where the fair lists them. |
| Include booth sizes | boolean | No | Add stand width, height and area for fairs that publish them. |
| Find emails on exhibitor websites | boolean | No | When the fair lists no email, return addresses published on the exhibitor's own website: a named person's email when the site shows one, and the general inbox. Also checks that the email's domain can receive mail. |
| Which exhibitors to look up | enum | No | Missing email only, or also exhibitors whose fair listing shows only a general inbox such as info@, to find a named person. |
| Output shape | enum | No | One row per exhibitor, one row per contact person, or one short row per company across all fairs. |
| Maximum rows | integer | No | Stop after this many rows in total. Free plan runs are capped at 25. |
| Maximum rows per fair | integer | No | Optional cap for each link, so one big fair does not use up the whole total. |
| Companies listed at several fairs | enum | No | Keep all listings, mark duplicates, or keep one listing per company. |
| Watchlist mode | enum | No | Off, new exhibitors only, or new, changed and removed exhibitors. |
| Watchlist name | string | No | Name of your saved baseline. Use the same name on every scheduled run of one watchlist. |
| Proxy configuration | object | No | Optional. Force your own connection settings for every request. |

### 📊 Data table

| Field | Type | Description |
| --- | --- | --- |
| `companyName` | string | Exhibitor name. |
| `eventName` | string | Fair the exhibitor belongs to. |
| `platform` | string | Kind of fair directory the link was recognised as. |
| `showId`, `showName` | string | The picked show, on rows from the show list only. |
| `website` | string | Exhibitor website. |
| `email` | string | Published email. `emailSource` says whether it came from the fair or from the exhibitor's website. |
| `emailType` | string | `personal` for a named person's address, `role` for a general inbox such as info@ or sales@. |
| `personalEmail` | string | A named person's published email, with `personalEmailName` and `personalEmailTitle` when the fair lists that person. |
| `roleEmail` | string | The general inbox. |
| `emailDomainAcceptsMail` | boolean | Whether the email's domain is set up to receive mail (with website email lookup). |
| `phone` | string | Published phone number. |
| `address`, `city`, `country`, `countryCode` | string | Where the company is based. |
| `stand`, `hall`, `booths` | string, array | Stand and hall as the fair shows them. |
| `categories`, `products`, `brands` | array | What the exhibitor sells. |
| `linkedin`, `facebook`, `twitter`, `instagram`, `youtube`, `xing` | string | Social profiles when published. |
| `contactPersons` | array | Name, job title, email, phone and LinkedIn of published contacts. |
| `clusterId` | string | Same value for the same company across fairs. |
| `changeType` | string | NEW, UPDATED or REMOVED in watchlist mode. |
| `detailUrl` | string | Link to the exhibitor's page at the fair. |

Fields a fair does not publish are left out instead of being filled with placeholders.

#### Example output

```json
{
  "showName": "Ambiente",
  "eventName": "AMBIENTE",
  "companyName": "Example Glassworks GmbH",
  "country": "Germany",
  "website": "https://www.example-glassworks.de",
  "email": "info@example-glassworks.de",
  "emailType": "role",
  "personalEmail": "anna.weber@example-glassworks.de",
  "roleEmail": "info@example-glassworks.de",
  "stand": "Hall 9.0 B12",
  "categories": ["Crystal glasses", "Drinking glass sets"],
  "clusterId": "d_0a94b34c8491"
}
```

### 💰 Pricing

Pay per result: you are charged for each exhibitor row delivered, and every row costs the same whether or not it carries the fair's emails or contact persons. If you turn on website email lookup, there is one small extra charge for each exhibitor whose website gave you an email, and nothing when no email is found. Runs that return no rows cost nothing, and there are no subscriptions or start fees. Current prices for your plan are shown on the Pricing tab of this page.

Free plan accounts can read up to 25 rows per run and a small number of runs per day. Set a maximum charge per run in Apify to cap what a run can spend.

### ⭐ Enjoying Exhibitor List Scraper?

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:20px 24px 14px;background:#FFF7ED;color:#1C1917;border:1px solid #FED7AA;border-left:5px solid #C2410C;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Turned a fair's exhibitor page into a lead list in minutes?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other sales teams and researchers find it. Your feedback also tells us which fairs to add next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#C2410C;color:#FFFFFF;border:1px solid #C2410C;border-left:5px solid #C2410C;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/exhibitor-list-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 🗂️ Shows you can pick

Tick these under **Pick trade shows**, or add a whole industry at once. The Actor reads each show's current exhibitor list, and every row carries `showId` and `showName`. Some fairs run every two or three years; between editions you get the latest list the organiser has published.

| Industry | Shows (city, usual month) |
| --- | --- |
| Food and beverage | IFFA (Frankfurt, May), ProWein (Düsseldorf, Mar), BIOFACH (Nuremberg, Feb), Anuga (Cologne, Oct), Anuga FoodTec (Cologne, Mar), IFE International Food & Drink Event (London, Mar), IFE Manufacturing (London, Mar), Speciality & Fine Food Fair (London, Sep), Gulfood (Dubai, Jan), Gulfood Manufacturing (Dubai, Nov), Wine Paris (Paris, Feb), ISM (Cologne, Feb), FRUIT LOGISTICA (Berlin, Feb), Grüne Woche (Berlin, Jan) |
| Hospitality and foodservice | INTERGASTRA (Stuttgart, Feb), Independent Hotel Show (London, Oct), INTERNORGA (Hamburg, Mar) |
| Consumer goods, gifts and pets | Ambiente (Frankfurt, Jan), Christmasworld (Frankfurt, Jan), Creativeworld (Frankfurt, Jan), Nordstil (Hamburg, Jan), Beautyworld Middle East (Dubai, Oct), Paperworld Middle East (Dubai, Oct), Interzoo (Nuremberg, May), spoga+gafa (Cologne, Jun), Kind + Jugend (Cologne, Sep), JCK Las Vegas (Las Vegas, Jun), Hardlines Supplier Event (National Hardware Show) (Las Vegas, Mar), Autumn Fair (Birmingham, Sep), Spring Fair (Birmingham, Feb), Spirit of Christmas Fair (London, Nov) |
| Home, furniture and interiors | Heimtextil (Frankfurt, Jan), DOMOTEX (Hanover, Jan), ORGATEC (Cologne, Oct), Atlanta Market (Atlanta, Jan), Las Vegas Market (Las Vegas, Jan), interzum (Cologne, May) |
| Textiles and fashion | Techtextil (Frankfurt, Apr), Texprocess (Frankfurt, Apr), Texworld Paris (Paris, Aug), Source Fashion (London, Feb) |
| Medical, dental and healthcare | MEDICA (Düsseldorf, Nov), REHACARE (Düsseldorf, Sep), COMPAMED (Düsseldorf, Nov), Altenpflege (Nuremberg, Mar), WVC Vegas Conference (Las Vegas, Mar), RSNA Annual Meeting (Chicago, Nov) |
| Electronics and embedded | XPONENTIAL Europe (Düsseldorf, Mar), embedded world (Nuremberg, Mar), Microelectronics UK (London, Sep), DroneX (London, Sep), ISE Integrated Systems Europe (Barcelona, Feb), electronica (Munich, Nov), LASER World of PHOTONICS (Munich, Jun), productronica (Munich, Nov) |
| IT, cybersecurity and digital | it-sa Expo\&Congress (Nuremberg, Oct), Infosecurity Europe (London, Jun), Tech Show London (London, Mar), MWC Barcelona (Barcelona, Mar), MWC Kigali (Kigali, Oct) |
| Industrial machinery and manufacturing | Texcare International (Frankfurt, Nov), wire (Düsseldorf, Apr), Tube (Düsseldorf, Apr), glasstec (Düsseldorf, Oct), Valve World Expo (Düsseldorf, Dec), Chillventa (Nuremberg, Oct), POWTECH (Nuremberg, Sep), EUROGUSS (Nuremberg, Jan), HOLZ-HANDWERK (Nuremberg, Mar), LIGNA (Hanover, May), EISENWARENMESSE (Cologne, Mar), ALUMINIUM (Düsseldorf, Oct), Electra Mining Africa (Johannesburg, Sep), FABTECH Canada (Toronto, Jun) |
| Plastics, packaging and printing | K (Düsseldorf, Oct), drupa (Düsseldorf, May), interpack (Düsseldorf, May), FachPack (Nuremberg, Sep), PACK EXPO International (Chicago, Nov) |
| Construction, building and real estate | Light + Building (Frankfurt, Mar), ISH (Frankfurt, Mar), Light + Intelligent Building Middle East (Dubai, Jan), GaLaBau (Nuremberg, Sep), Kommunale (Nuremberg, Oct), FENSTERBAU FRONTALE (Nuremberg, Mar), R+T (Stuttgart, Feb), Big 5 Global (Dubai, Nov), Big 5 Construct Saudi (Riyadh, Feb), interlift (Augsburg, Oct), Stone+tec (Nuremberg, Jun), AHR Expo (Las Vegas, Feb), GET Nord (Hamburg, Nov) |
| Energy and environment | hy-fcell (Stuttgart, Oct), RWM (Birmingham, Sep), KEY Energy (Rimini, Mar), WindEnergy Hamburg (Hamburg, Sep) |
| Automotive and mobility | Automechanika Frankfurt (Frankfurt, Sep), Automechanika Dubai (Dubai, Nov), Automechanika Johannesburg (Johannesburg, Oct), Tire Technology Expo (Hanover, Feb), IVT Expo Europe (Cologne, Jun), AAPEX (Las Vegas, Nov) |
| Logistics and transport | InnoTrans (Berlin, Sep) |
| Agriculture and forestry | Low Carbon Agriculture Show (Stoneleigh, Mar), EuroTier (Hanover, Nov), AGRITECHNICA (Hanover, Nov), IPPE (Atlanta, Jan) |
| Security and safety | Intersec (Dubai, Jan), A+A (Düsseldorf, Nov), Enforce Tac (Nuremberg, Feb), Perimeter Protection (Nuremberg, Jan), INTERSCHUTZ (Hanover, Jun), ISC West (Las Vegas, Mar), ISC East (New York, Nov), International Security Expo (London, Sep) |
| Travel, tourism and events | CMT (Stuttgart, Jan), IBTM World (Barcelona, Nov), World Travel Market London (London, Nov), Arabian Travel Market (Dubai, May), WTM Latin America (São Paulo, Apr), Freizeit Messe Nürnberg (Nuremberg, Feb), ITB Berlin (Berlin, Mar) |
| Leisure, sports and outdoor | Caravan Salon (Düsseldorf, Aug), boot Düsseldorf (Düsseldorf, Jan), IWA OutdoorClassics (Nuremberg, Feb), FSB (Cologne, Oct), aquanale (Cologne, Oct), spoga horse (Cologne, Feb), FIBO (Cologne, Apr) |
| Education | didacta Stuttgart (Stuttgart, Feb), DIDACTA Hannover (Hanover, Feb), Bett UK (London, Jan), Learning Technologies (London, Apr) |
| Retail, ecommerce and marketing | EuroShop (Düsseldorf, Feb), EuroCIS (Düsseldorf, Feb), eCommerce Expo (London, Sep), Technology for Marketing (London, Sep), Going Global Live (London, Nov), The Business Show (London, Nov), Retail Technology Show (London, Apr) |
| Media, books and entertainment | Prolight + Sound (Frankfurt, Apr), The London Book Fair (London, Mar), MIP London (London, Feb), SIGGRAPH (Los Angeles, Jul), NAB Show (Las Vegas, Apr) |
| Lab, chemicals and materials | analytica (Munich, Mar) |
| Aerospace, maritime and defence | ILA Berlin (Berlin, Jun), SMM Hamburg (Hamburg, Sep) |

Not in the list? [Ask for your fair](https://apify.com/getascraper/exhibitor-list-scraper/issues/open) and we'll add it, usually within a week.

### 🏛️ Supported fair directories

Paste an exhibitor list link from any of these directory types. Other fairs on the same type often work too, and a link that is not supported gets a clear message without stopping the run.

| Directory type | Example fairs | Good to know |
| --- | --- | --- |
| Messe Frankfurt | Ambiente, Heimtextil, Light + Building, Automechanika, Texcare and 15 more | |
| Messe Duesseldorf | MEDICA, ProWein, K, boot, drupa and 12 more | Contact persons |
| Messe Muenchen | electronica, analytica, productronica, LASER World of PHOTONICS | About one exhibitor per second, so a full fair takes a while |
| Messe Stuttgart | Intergastra, didacta, R+T, CMT, hy-fcell | Contact persons |
| Messe Berlin | IFA Berlin | Name, stand, categories and press contacts only |
| Messe Essen | Security Essen, IPM Essen, Schweissen & Schneiden | |
| Deutsche Messe | INTERSCHUTZ, DOMOTEX, LIGNA, DIDACTA | |
| Nuernberg Messe | it-sa 365, embedded world, BIOFACH, Interzoo and 12 more | Contact persons |
| Koelnmesse | Anuga, ORGATEC, interzum, ISM and 7 more | Slower than most |
| AFAG Messe | interlift, stone+tec, Freizeitmesse, Akustika, Whiskey Messe | Contact persons |
| Schall Messen | Motek, Bondexpo, Fakuma, Control, Blechexpo | Contact persons |
| Easyfairs | all about automation (Berlin, Hamburg, Friedrichshafen, Chemnitz) | |
| The smarter E | The smarter E Europe, Intersolar Europe, ees Europe, Power2Drive Europe | Between editions you get the last published profiles, clearly marked |
| RX (Reed Exhibitions) | The London Book Fair, World Travel Market, ISC West, National Hardware Show and 9 more | |
| Corussoft guides (Messe Berlin, Hamburg Messe) | FRUIT LOGISTICA, ITB Berlin, InnoTrans, SMM Hamburg and 5 more | InnoTrans and ILA: last published guide |
| Map Your Show | NAB Show, ISE, InfoComm, RSNA, PACK EXPO International and 3 more | Slower, some profiles can be incomplete |
| ASP Events | eCommerce Expo, IFE, Bett UK, Spirit of Christmas, Electra Mining, DronExpo, ITEC and 17 more | No email, phone or contact persons published |
| Informa Markets | Gulfood, Gulfood Manufacturing | No email or phone published |
| A2Z Events | FABTECH, FABTECH Canada | No email published |
| Xporience | Big 5 Global, Big 5 Construct Saudi | No email or phone published |
| GoShow | SIGGRAPH, WVC Vegas, USITT | |
| GSMA | MWC Barcelona, MWC Kigali | |
| Atlanta and Las Vegas Market | Atlanta Market, Las Vegas Market | |
| Livebuzz | RWM, WWEM | |
| Comexposium | Wine Paris | |
| IEG | KEY Energy | Small catalogue |
| EIMA | EIMA International, EIMA Components | Contact persons. A rare keyword can take several minutes |
| Ungerboeck floor plans | SC26, SAFETY 2026 | Company and stand only |
| Newfront | DLG-Feldtage, EuroTier | Company, description, stand and categories only |
| IME Events | Foam Expo, Ceramics Expo USA, Space Tech Expo | These sites often refuse automated visits, so a run can come back empty |

### 💡 Tips

- Start with a small limit to check the columns, then raise it for the full list.
- Set a limit per fair when you mix big and small fairs.
- For a recurring job, turn on watchlist mode, give it a name and schedule it weekly.

### ❓ FAQ

**Can I scrape exhibitors from several fairs at once?**
Yes. Pick as many shows or add as many links as you like. Use the per-fair limit to keep the mix balanced.

**Where do the emails come from?**
From the fair's own directory. If you turn on website email lookup, addresses are also taken from the exhibitor's own website, only when they are published there. No address is ever guessed, and nothing comes from purchased lists.

**Do I get a person's email or just info@?**
Both when the website shows both. A named person's address goes in `personalEmail` and the general inbox in `roleEmail`. Many companies only publish a general inbox, so a personal email is not always available.

**Can I get only new exhibitors each week?**
Yes. Turn on watchlist mode, keep the same watchlist name and schedule the run. The first run saves a baseline, later runs return only what changed.

**Does it work for German trade fairs (Messe Aussteller)?**
Yes. Most large German fair organisers are supported, including Messe Frankfurt, Duesseldorf, Muenchen, Stuttgart, Berlin, Essen, Deutsche Messe, Nuernberg Messe, Koelnmesse, AFAG and Schall Messen. Paste the Ausstellerverzeichnis link or pick the show by name.

**My trade show is not supported. Can you add it?**
Yes. [Open a request](https://apify.com/getascraper/exhibitor-list-scraper/issues/open) with the fair's exhibitor list link. Fairs on a directory type we already read are usually added within a week.

**Do I need a login or account at the fair?**
No. Only public exhibitor pages are read.

### 🔗 Other actors

- [Proff Scandinavia Scraper: Company Financials, Owners & Boards](https://apify.com/getascraper/proff-scandinavia-scraper) ↗ - Nordic company records with financials, owners and boards.
- [Blue Book Contractor Scraper: US Leads by State, Trade and City](https://apify.com/getascraper/thebluebook-contractor-directory) ↗ - US contractor leads by state, trade and city.
- [Made-in-China Scraper 中国制造网: Products, Suppliers, Price Changes](https://apify.com/getascraper/made-in-china-catalog-scraper) ↗ - Chinese suppliers, products and price changes.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/exhibitor-list-scraper/changelog.md

# Actor input Schema

## `startUrls` (type: `array`):

One or more trade show exhibitor list links. Paste the fair's exhibitor directory or search page; for some fairs the event home page also works. Many fairs can be read in one run, and every link is checked on its own: a link that is not supported gets a clear message in the run summary and the other links still run. Fairs using the same platform (for example Messe Frankfurt, Messe Duesseldorf, RX or Map Your Show) are detected automatically.

## `shows` (type: `array`):

Tick the fairs you want from the built-in list instead of looking up their links. Each picked show is read from its current edition and its rows carry showId and showName. Picked shows and pasted links are combined in one run. When you pick shows, the example link that is pre-filled above is not read on top of them (Ambiente can be picked from this list). Use Maximum rows per fair below to share the row limit across several shows.

## `industries` (type: `array`):

Adds every show of these industries from the list above, for example all medical fairs. Combine it with Maximum rows per fair so each show gets its share of rows.

## `searchQuery` (type: `string`):

Keep only exhibitors that match these words. Where the fair's own search supports it the fair does the matching; for the other platforms every word must appear in the company name, description, categories, products or brands after the profile is read. Leave empty for all exhibitors.

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

Keep exhibitors whose categories, products or brands contain any of these words (not case sensitive). Applied after reading each exhibitor.

## `countries` (type: `array`):

Keep exhibitors based in these countries. Use English names or two letter codes, for example Germany or DE. Applied after reading each exhibitor.

## `hasWebsite` (type: `boolean`):

Skip exhibitors that publish no website.

## `hasEmail` (type: `boolean`):

Skip exhibitors without an email address. When website email lookup is on, an address found on the exhibitor's website also counts.

## `hasContacts` (type: `boolean`):

Skip exhibitors that publish no named contact person. Turns on contact person collection.

## `includeContactPersons` (type: `boolean`):

Add the named contacts an exhibitor publishes (name, job title, email, phone, LinkedIn) where the fair lists them. Some fairs need one extra request per exhibitor for this, so runs take longer.

## `includeBoothSizes` (type: `boolean`):

Add stand width, height and area for fairs that publish them. Fairs without booth size data return the row without it and say so in the run summary.

## `enrichEmails` (type: `boolean`):

When the fair lists no email for an exhibitor, open the exhibitor's own website (home, contact, team and imprint pages) and return addresses that are published there: a named person's email when the site shows one, and the general inbox. Each email is labelled personal or role, and the run checks that the email's domain can receive mail. Only publicly shown addresses are returned, never a guessed one or anything from a purchased database. Slows the run down.

## `emailLookupScope` (type: `string`):

Only used when website email lookup is on. Missing email only: visit the website when the fair lists no email (fastest). Also when only a general inbox is listed: visit the website too when the fair lists only addresses such as info@ or sales@, to find a named person.

## `outputShape` (type: `string`):

Single row: one row per exhibitor with all contacts inside. Flattened: one row per contact person, so you can load contacts straight into a spreadsheet or CRM (turns on contact person collection, each row counts toward the item limit). Compact: one short row per company across all fairs, with the same company kept once.

## `maxItems` (type: `integer`):

Stop after this many rows in total across all links. Free plan runs are capped at 25.

## `maxItemsPerEvent` (type: `integer`):

Optional cap for each link, useful in bulk runs so one big fair does not use up the whole total. Leave empty for no per-fair cap (the total above still applies).

## `duplicateHandling` (type: `string`):

Keep all: every listing is returned and carries a clusterId so you can group them. Mark duplicates: also adds clusterSize and isCanonical (the richest listing) to each row, held back until the end of the run for up to 5,000 rows. Keep one: only the first listing of each company is returned.

## `monitorMode` (type: `string`):

Off: every run returns everything. New only: after the first run (which returns all and saves the baseline) only exhibitors that were not listed before are returned. New and changed: also returns exhibitors whose listing changed (the changes field says what) and exhibitors that disappeared (changeType REMOVED, reported after two complete runs in a row without them). Rows that did not change are not returned.

## `watchlistName` (type: `string`):

Name that identifies your saved baseline. Use the same name on every scheduled run of one watchlist and a different name for each separate watchlist. Changing filters starts a fresh baseline. Leave empty to share one default baseline.

## `proxyConfiguration` (type: `object`):

Optional. By default the Actor connects directly and only switches to Apify Proxy when a fair refuses the connection. Set this to force your own proxy settings for every request.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://ambiente.messefrankfurt.com/frankfurt/en/exhibitor-search.html"
    }
  ],
  "shows": [],
  "industries": [],
  "hasWebsite": false,
  "hasEmail": false,
  "hasContacts": false,
  "includeContactPersons": false,
  "includeBoothSizes": false,
  "enrichEmails": false,
  "emailLookupScope": "missingOnly",
  "outputShape": "singleRow",
  "maxItems": 20,
  "duplicateHandling": "keep",
  "monitorMode": "off"
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://ambiente.messefrankfurt.com/frankfurt/en/exhibitor-search.html"
        }
    ],
    "shows": [],
    "industries": [],
    "hasWebsite": false,
    "hasEmail": false,
    "hasContacts": false,
    "includeContactPersons": false,
    "includeBoothSizes": false,
    "enrichEmails": false,
    "emailLookupScope": "missingOnly",
    "outputShape": "singleRow",
    "maxItems": 20,
    "duplicateHandling": "keep",
    "monitorMode": "off"
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/exhibitor-list-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 = {
    "startUrls": [{ "url": "https://ambiente.messefrankfurt.com/frankfurt/en/exhibitor-search.html" }],
    "shows": [],
    "industries": [],
    "hasWebsite": False,
    "hasEmail": False,
    "hasContacts": False,
    "includeContactPersons": False,
    "includeBoothSizes": False,
    "enrichEmails": False,
    "emailLookupScope": "missingOnly",
    "outputShape": "singleRow",
    "maxItems": 20,
    "duplicateHandling": "keep",
    "monitorMode": "off",
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/exhibitor-list-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 '{
  "startUrls": [
    {
      "url": "https://ambiente.messefrankfurt.com/frankfurt/en/exhibitor-search.html"
    }
  ],
  "shows": [],
  "industries": [],
  "hasWebsite": false,
  "hasEmail": false,
  "hasContacts": false,
  "includeContactPersons": false,
  "includeBoothSizes": false,
  "enrichEmails": false,
  "emailLookupScope": "missingOnly",
  "outputShape": "singleRow",
  "maxItems": 20,
  "duplicateHandling": "keep",
  "monitorMode": "off"
}' |
apify call getascraper/exhibitor-list-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/exhibitor-list-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/23YwaXS1a0jB6fBlL/builds/2FJxszx6Yk3coMXbi/openapi.json
