Get the exhibitor list of major trade shows as a clean, spreadsheet-ready lead list: company name, booth and hall, email, phone, website, full address, social profiles, product categories, description and logo. Covers 91 built-in trade shows in Europe, the USA, the Middle East and Asia, including MEDICA, Automechanika, SEMA Show, NAB Show, IMTS, World Travel Market, ISH, Light + Building, World Health Expo, ISC West, drupa and K, and any other show on a supported platform when you paste its exhibitor-list link. Export to JSON, CSV or Excel, send to Google Sheets or your CRM, or call it as an API.
Built for sales and business-development teams prospecting before and after a show, exhibitors researching who else is exhibiting, event marketers and agencies, and market researchers mapping an industry.
At a glance
- Price: $3 per 1,000 exhibitors. Free plan: up to 200 exhibitors per show in every run.
- First run: the prefilled input returns 50 embedded world exhibitors with booth, phone and website in about 5 seconds.
| name | booth | country | website |
|---|---|---|---|
| 221e Srl | 5-287 | Italy | www.221e.com |
| 2J Antennas, s.r.o. | 3-432 | Slovakia | www.2j-antennas.com |
| 3Rtablet | 1-632 | China | www.3rtablet.com |
Why this scraper
- Contacts, not just names. With Include contact details on (default), each exhibitor's profile is opened for email, phone, website, address and social links.
- Fast. Exhibitor lists come back quickly. In our tests: 120 exhibitors with full contacts in about 11 seconds.
- Paste any exhibitor-list link. The Actor reads the event id from the page you give it, so you get exactly that show and year, even when one organiser's site lists many events.
- One format for every show. Booth, contact, address and socials always land in the same fields, so several shows combine into one table.
- Watch a list fill up. Exhibitor lists grow for months before a show. Turn on Only new exhibitors and schedule the Actor: each run returns only companies added since the last run.
- Clean output, original kept. Normalized fields in one schema for every show, plus the organiser's untouched record on request, ready for n8n, Make, Zapier, your CRM or other Actors.
- Resilient. Rate limits are handled automatically, results are saved per exhibition, and a moved run resumes without charging twice.
Scrape any show by URL
Paste a link in Exhibitor list URLs instead of picking a show. It can be the exhibitor list, the exhibitor search page or the show's homepage. The Actor:
- opens the page and finds which directory platform runs it,
- reads the event the page itself embeds (for example
ISHon a Messe Frankfurt page, or the event and list ids of a Swapcard directory), - scrapes that event's list.
Because the event comes from the page, a site that hosts several shows, cities or years never mixes them up: each link returns the edition it shows. The run log says what each link was matched to, and every record carries the link in exhibitionUrl.
Supported platforms: Messe Frankfurt (all its shows worldwide, e.g. Automechanika, Ambiente, Formnext, Intersec), Messe Düsseldorf VIS (MEDICA, drupa, K, interpack...), RX / Reed Exhibitions (World Travel Market, ISC West, MIPIM, Batimat, FIBO...), Map Your Show (hundreds of US shows: SEMA, NAB, IMTS, AHR, IPPE...), a2z and A2Z Connect (FABTECH, SuperZoo, Coverings, CEDIA, AIMExpo, American Coatings Show... including any <event>.smallworldlabs.com/exhibitors link), Swapcard directories (World Health Expo and many others), Corussoft event clouds (INTERNORGA, FRUIT LOGISTICA, InnoTrans, ILA), Koelnmesse (Anuga, ISM, ORGATEC, IDS, didacta, imm cologne, interzum, Kind + Jugend, spoga+gafa, FSB... paste the show's homepage or its list of exhibitors), NürnbergMesse (Embedded World, BIOFACH, Interzoo, Chillventa, FACHPACK, GaLaBau, Enforce Tac, POWTECH...), Newfront / ExpoPlatform marketplaces (EuroTier, Agritechnica, IMEX, Wine Paris, Vinexpo... paste the show's homepage or exhibitor directory), plus every built-in show. If a link isn't recognised, the run says so and charges nothing for it; open an issue with the link and we'll add the platform.
{
"startUrls": [
{ "url": "https://cleanzone.messefrankfurt.com/frankfurt/en/exhibitor-search.html" },
{ "url": "https://www.worldhealthexpo.com/events/healthcare/miami/attend/exhibitor-list/" }
],
"maxResults": 500
}Not sure a link is supported? Turn on Only check the links (free). The run scrapes nothing and charges nothing; the URL_CHECK record in its key-value store says, for each link, whether it is supported and which show and edition it maps to.
How to use it
- Pick one or more shows in Exhibitions, or paste links in Exhibitor list URLs (both work together).
- Optionally set Max exhibitors (try 20 first) and turn Include contact details off for a quick names-and-booths list.
- Press Start. Download results from the Output tab, or connect an integration (Google Sheets, HubSpot, Slack, webhooks).
Example input
{
"exhibitionList": ["medica", "sema-show", "fabtech"],
"maxResults": 500,
"includeDetails": true
}maxResults applies per show. The older single-show field exhibitions ("exhibitions": "medica") still works and is combined with exhibitionList, so saved tasks and integrations keep running.
Contact details (Map Your Show)
Map Your Show lists only names and booths on its exhibitor pages; profile details sit one level deeper. With Include contact details on (the default), the Actor collects them inside your run:
- Exhibitors are written straight into your run's dataset, so you still get one dataset.
- You're billed once per exhibitor at the normal price, plus a small start fee for a second
exhibition-scraperrun you may see in your Runs list. It stops when your run stops.
Turn Include contact details off for a faster names-and-booths-only list.
Emails for every exhibitor
Many organisers list a company's website but not its email (Koelnmesse keeps it behind a login; Map Your Show, Newfront and NürnbergMesse often leave it out). Turn on Find emails on company websites and, for each exhibitor with a website but no email, the Actor reads the company's own site (home, contact and imprint pages) and adds the email, phone and social profiles it finds, marked contactSource: "company website". In a BIOFACH test, 11 of 20 exhibitors without an email got one. No extra charge; runs take longer.
Track changes before a show
Turn on Changes only and schedule the Actor (for example weekly in the months before a show). Each run returns only:
- new exhibitors (
changeType: "new"), - exhibitors whose booth, email, phone, website or address changed, with the old and new values:
"changes": {"booth": {"old": "B12", "new": "C40"}}, - exhibitors who dropped out of the list (
changeType: "removed"; only when the whole list was read, so leave Max results empty).
Unchanged exhibitors are skipped and not charged. The first run returns everyone as new and becomes the baseline.
Use it in n8n, Make, Zapier, Clay or with other Actors
n8n (HTTP Request node):
- Add an HTTP Request node. Set Method to
POSTand URL tohttps://api.apify.com/v2/acts/tacps126~exhibition-scraper/run-sync-get-dataset-items. - Set Authentication to Generic > Header Auth, with header
Authorizationand valueBearer YOUR_APIFY_TOKEN(Apify Console > Settings > API & Integrations). - Turn on Send Body (JSON) and paste your input, e.g.
{"startUrls": [{"url": "https://ish.messefrankfurt.com/frankfurt/en/exhibitor-search.html"}], "maxResults": 500}. - Set Options > Timeout to
330000. This endpoint waits up to 5 minutes; for bigger lists, start the run with/runsand read the dataset afterwards. - n8n turns each exhibitor into one item. Map
{{ $json.name }},{{ $json.booth }},{{ $json.contact.email }},{{ $json.contact.website }}and{{ $json.address.country }}into Google Sheets, HubSpot, Airtable or a database node. - Optional: add an IF node on
{{ $json.contact.email }}is empty, and send those rows' websites to Website Contact Details to find their emails.
n8n's Apify node, Make and Zapier work the same way: run tacps126/exhibition-scraper with your input, then read the run's dataset items. Ready-to-import n8n workflow (show > Google Sheet) and Make/Zapier steps: integrations guide.
Clay: Add data > Import from Apify > Actor run and pick a run of this Actor: each exhibitor becomes a row. Then enrich the rows with Clay's own providers, or with Run Apify Actor > tacps126/contact-details and input {"startUrls": [/Website]} for emails the show didn't publish.
Chain Actors in Apify Console:
- On this Actor's or task's Integrations tab, choose Connect Actor or task and pick Website Contact Details.
- Give it this run's dataset as
datasetId. - It reads
contact.websitefrom each exhibitor automatically, finds emails and phones on the company site, and carriesname,boothandexhibitionso you can join the results back.
CSV and Excel: nested fields become columns such as contact/email and address/city. Use the Overview or Contacts view for a flat table.
Python: see the exhibitor leads recipe. It scrapes a show by URL, fills missing emails with Website Contact Details and writes one CSV.
Pricing
Pay per result: about $3 per 1,000 exhibitors, a fraction of a cent each. On Apify's free plan each run returns up to 200 exhibitors per exhibition, enough to evaluate; any paid Apify plan removes the limit.
Tips
- Test with
maxResults: 20before a full run. - Exhibitor lists are most complete in the weeks before and during a show; schedule Only new exhibitors weekly to catch late additions.
Legal
The Actor collects publicly listed exhibitor information. Contact details are business contacts published for the show; use them in line with GDPR, CAN-SPAM and other laws that apply to you.