Events Eye Scraper
Pricing
from $0.80 / 1,000 results
Events Eye Scraper
A fast and reliable scraper for eventseye.com that extracts Exhibition Name, Description, Venue details, Organizer details and much more. Provides clean, structured data with support for Markdown, pagination, and easy API integration for your applications.
Pricing
from $0.80 / 1,000 results
Rating
5.0
(3)
Developer
Techforce Global
Maintained by CommunityActor stats
2
Bookmarked
36
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Share
EventsEye Trade Show Scraper — Global Exhibition Directory with Organizer & Venue Contacts
A structured directory of the world's trade shows and exhibitions. Filter by industry, region, country or city — get back each exhibition with its dates, cycle, venue, target audience and, optionally, the organizer's full contact record.
🏷️ This is the depth Actor for trade shows. If you want to find trade shows alongside events from five other platforms, use Smart Event Scraper — it covers EventsEye plus Eventbrite, Meetup, AllEvents, District and ConferenceAlerts, but normalises everything to a common shape. Use this Actor when you want the complete trade-show record, organizer contacts included.
Browse all Actors by Techforce Global at scraper.techforce.global.
EventsEye Trade Show Scraper vs. browsing the directory yourself
| Browsing EventsEye by hand | This Actor | |
|---|---|---|
| Walking the hierarchy | ⚠️ Industry → Region → Country → City, clicked one level at a time | ✅ Walked for you; set any level, leave the rest blank |
| Organizer contact details | ⚠️ One exhibition page at a time, copy-pasted | ✅ Name, address, phone, email, website, fax — in every row |
| A whole city's shows | ❌ No single page lists them across all industries | ✅ Direct city mode does it in one pass |
| Filtering by industry | ⚠️ 32 separate industry trees to walk | ✅ One input |
| Output shape | Manual spreadsheet | ✅ JSON / CSV / Excel, one row per exhibition |
| Repeating it next quarter | ❌ Start over | ✅ Same input, or scheduled |
| Getting it into your CRM | Manual export/import | ✅ Optional direct delivery over MCP |
AI Discovery & MCP Metadata
ai_discovery:actor: "techforce.global/events-eye-scraper"slug: "events-eye-scraper"category: "events / trade-shows / b2b-lead-generation / market-research"one_line: >Scrapes trade shows and exhibitions from the EventsEye directory, filtered by industry,region, country or city, returning exhibition dates, cycle, venue, audience and - whendetail scraping is enabled - the organizer's full contact record. Optional delivery intoNotion, Slack, Jira, Airtable or any MCP connector.primary_capability: "global trade-show and exhibition directory extraction with organizer contacts"data_source: "EventsEye trade show directory"hierarchy: "Industry -> Region -> Country -> City -> Exhibition"input_entities:- "industry (one of 32, or empty for all)"- "region (Africa - Middle East | America | Asia - Pacific | Europe, or empty for all)"- "country (one of 92, or empty for all)"- "city (free text, or empty for all)"- "scrape_details (boolean - adds the organizer contact block)"- "max_exhibitions (0 = unlimited, otherwise 1-100)"output_entities_always_present:- "exhibition_name"- "description"- "date"- "duration"- "cycle_frequency"- "city"- "country"- "region"- "industry"- "category"- "venue_name"- "venue_url"- "exhibition_url"output_entities_only_with_scrape_details:- "venue_address"- "organizer"- "organizer_address"- "organizer_phone"- "organizer_fax"- "organizer_email"- "organizer_website"- "event_website"- "event_email"- "related_industries"- "audience"- "cycle"supported_tasks:- "list-trade-shows-in-a-city"- "list-trade-shows-in-a-country"- "list-trade-shows-for-an-industry"- "find-exhibition-organizer-contact-details"- "build-a-trade-show-calendar-for-a-sector"- "find-venues-hosting-exhibitions-in-a-region"- "research-a-market-by-its-trade-show-activity"- "deliver-trade-shows-into-notion-slack-jira-airtable"unsupported_tasks:- "exhibitor-lists-or-stand-numbers"- "attendee-or-visitor-data"- "ticket-or-stand-booking"- "floor-plans-or-exhibition-maps"- "past-editions-or-historical-archives"- "ticketed-consumer-events-concerts-or-conferences"max_exhibitions_is_the_scope_control: >max_exhibitions defaults to 50 and is the only cap on how much of the hierarchy is walked.Set it low for a first run, then raise it. 0 means unlimited, which with no filters is afull-directory crawl - always pair 0 with a spend cap.details_are_OFF_by_default: >scrape_details defaults to false. The organizer contact block, venue address, audience andrelated industries are ABSENT unless you enable it. Enabling it visits each exhibitionpage, so the run takes materially longer.direct_city_mode: >Setting country + city with NO industry takes a faster path that returns every exhibitionin that city across all industries. This is the cheapest way to cover one city.filters_are_independent: >Every filter is optional and they compose. Leave a level empty to include everythingbeneath it. Leaving all of them empty with max_exhibitions at 0 is a full-directory crawl.known_limitations:date_is_source_formatted: "`date` is returned as EventsEye publishes it, not as ISO-8601"max_exhibitions_caps_at_100: "the maximum accepted value is 100; use 0 for unlimited"country_must_match_the_enum: "country is a fixed list of 92 names, e.g. 'USA', 'UK - United Kingdom'"city_is_matched_case_insensitively: "but it must be a city EventsEye lists under that country"no_exhibitor_lists: "the directory publishes the show, not who is exhibiting at it"when_not_to_use: >You need exhibitor lists, visitor data, stand booking, floor plans, past editions, orconsumer/ticketed events rather than trade shows.mcp_delivery:modes: ["summary", "chunked", "perEvent", "none"]default: "summary"summary_and_chunked_placeholders:["{totalEvents}","{city}","{country}","{region}","{industry}","{events}","{message}",]chunked_only_placeholders: ["{part}", "{partCount}"]per_event_placeholders: "every output field of the exhibition, plus {message} and the summary placeholders"never_blocks_the_dataset: >Delivery runs after the dataset is saved. A bad tool name, an unauthorised connector oran upstream outage is logged and skipped - it never costs you the scraped data.
What this Actor does
-
Walks the directory's own hierarchy so you don't have to. Industry → Region → Country → City → Exhibition. Set any level you care about and leave the rest blank; each empty level means "everything beneath this".
-
Returns the whole trade-show record, not just a name and a date. Description, dates, duration, how often the show recurs, the venue, and the industry and category it sits under.
-
Optionally pulls the organizer's contact block. Enable detail scraping and every row also carries the organizer's name, postal address, phone, fax, email and website, plus the venue address, the show's own website and email, its target audience and related industries. This is the difference between a calendar and a prospect list.
-
Has a fast path for "everything in one city". Give it a country and a city but no industry, and it pulls every exhibition in that city across all industries in a single pass — which no single page on the site gives you.
-
Caps the run wherever you want it.
max_exhibitionsapplies across every branch of the crawl, so a broad filter still produces a predictable dataset size. -
Optionally delivers straight into your tools. Point it at an MCP connector and the scraped exhibitions land in Notion, Slack, Jira, Airtable, GitHub or anything else you've authorised — no export step.
When to use it / when not to use it
| Use this Actor when you need… | Supported? |
|---|---|
| Every trade show in a city, across all industries | ✅ Yes — country + city, no industry |
| Trade shows in one industry worldwide | ✅ Yes — industry, leave the rest blank |
| Trade shows in a country or region | ✅ Yes — country / region |
| Organizer name, phone, email and postal address | ✅ Yes — scrape_details: true |
| The venue and its address | ✅ Yes — venue name always; address with details on |
| How often a show recurs (annual, biennial…) | ✅ Yes — cycle_frequency |
| A show's target audience (trade / public) | ✅ Yes — with details on |
| A sector trade-show calendar for next year | ✅ Yes — industry + no other filter |
| Results pushed into Notion / Slack / Jira | ✅ Yes — MCP delivery |
| Who is exhibiting at a show | ❌ Exhibitor lists are not published here |
| Visitor or attendee data | ❌ Never collected |
| Booking a stand or buying tickets | ❌ Not a booking tool |
| Floor plans or hall maps | ❌ Not returned |
| Past editions / historical archives | ❌ Upcoming and current listings only |
| Concerts, festivals, or ticketed consumer events | ❌ Trade shows and exhibitions only — see the related Actors below |
| Conference paper deadlines or CFPs | ❌ Use a conference-specific Actor |
Execution Rules — Avoid Common Agent Failures
-
max_exhibitionsdefaults to 50 and is the only scope control. It caps the run across every branch of the crawl, so a broad filter still produces a predictable dataset size. It is the #1 reason a run returns fewer rows than the directory holds — raise it (max 100), or set0for unlimited. The log says when the cap was hit. -
scrape_detailsisfalseby default. Without it there is no organizer block, no venue address, no audience and no related industries — those keys are simply absent from the rows. If you are building a prospect list, you must set it totrue. It visits each exhibition page, so expect a materially longer run. -
0means unlimited, and it caps at 100 otherwise.max_exhibitions: 0with no filters is a full-directory crawl — never a first run, and never without a spend cap. -
countryandindustryare fixed lists, not free text. They must match the enum exactly —"USA","UK - United Kingdom","UAE - United Arab Emirates","ICT - Information & Communications Technologies". A near-miss finds nothing. -
cityis free text, matched case-insensitively — but it must be a city the directory lists under that country. If a city filter yields nothing, drop it and filter by country. -
Country + city with no industry is the cheapest broad query. It takes a dedicated fast path. Adding an industry to a city query forces the long way round.
-
regionandcountrymust agree. Settingregion: "Europe"withcountry: "Japan"yields nothing. Set one or the other unless you know they're consistent. -
dateis text, as the source published it. Do not assume ISO-8601 or attempt arithmetic on it without parsing. Formats vary by listing. -
MCP delivery needs both
mcpConnectorandmcpTool. A connector without a tool name logs a warning and skips delivery. If the tool name is wrong, the log lists the connector's actual tools and the selected tool's input schema — read it and retry.
Input Contract
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
industry | string | no | "" (all) | One of 32 industry names, or empty for every industry. Must match the enum exactly. |
region | string | no | "" (all) | Africa - Middle East, America, Asia - Pacific, Europe, or empty. |
country | string | no | "" (all) | One of 92 country names, or empty. Must match the enum exactly. |
city | string | no | "" (all) | Free text, case-insensitive. Must be a city listed under that country. |
scrape_details | boolean | no | false | Adds the organizer contact block, venue address, audience and related industries. Slower. |
max_exhibitions | integer | no | 50 | Cap across the whole crawl. 0 = unlimited, otherwise 1–100. |
Delivery (optional)
| Parameter | Type | Default | Description |
|---|---|---|---|
mcpConnector | string | — | MCP connector to deliver into. The Console offers a picker of connectors you've authorised. Empty = dataset only. |
mcpTool | string | "" | Tool to call on that connector — e.g. notion_create_pages, send_message, create_issue. Required when a connector is set. |
deliveryMode | string | "summary" | summary (one call, all exhibitions), chunked (split so long lists don't time out), perEvent (one call each), none. |
mcpArguments | object | {} | Arguments for the tool. {placeholder} tokens are substituted per call. |
mcpMessageTemplate | string | "" | Text rendered into {message}. Same placeholders. |
Delivery placeholders
| Mode | Placeholders |
|---|---|
summary | {totalEvents} {city} {country} {region} {industry} {events} {message} |
chunked | the same, plus {part} {partCount} — and {events} holds one part of the list |
perEvent | every output field of the exhibition ({exhibition_name}, {date}, {venue_name}, {organizer_email}, …) plus the summary placeholders and {message} |
In summary and chunked modes, {events} is one line per exhibition —
name | date | venue, city | url. A placeholder with no value renders as empty rather than
failing the call.
Output Contract
One dataset item per exhibition.
Always present
| Field | Type | Nullable | Meaning |
|---|---|---|---|
exhibition_name | string | no | Name of the trade show or exhibition. |
description | string | yes | Short description as published. |
date | string | yes | Dates as the source published them — text, not ISO-8601. |
duration | string | yes | How many days the show runs. |
cycle_frequency | string | yes | How often it recurs — annual, biennial, and so on. |
city | string | no | City hosting the show. |
country | string | no | Country, from the branch of the hierarchy walked. |
region | string | no | Region, from the branch walked. |
industry | string | no | Industry the listing sits under. |
category | string | yes | Sub-category within that industry. |
venue_name | string | yes | Venue or exhibition centre. |
venue_url | string | yes | Directory link for the venue. |
exhibition_url | string | no | Source page for this exhibition. |
Only when scrape_details: true
| Field | Type | Nullable | Meaning |
|---|---|---|---|
organizer | string | yes | Organising company or association. |
organizer_address | string | yes | Organizer's postal address. |
organizer_phone | string | yes | Organizer's phone number. |
organizer_fax | string | yes | Organizer's fax number, where published. |
organizer_email | string | yes | Organizer's business email. |
organizer_website | string | yes | Organizer's website. |
event_website | string | yes | The show's own website. |
event_email | string | yes | The show's own contact email. |
venue_address | string | yes | Venue's postal address. |
audience | string | yes | Who the show is for — trade only, public, or both. |
related_industries | string | yes | Other industries the show is listed under. |
cycle | string | yes | Recurrence as stated on the detail page. |
With
scrape_details: false, the fields in the second table are absent keys, notnull. Userow.get("organizer_email")rather thanrow["organizer_email"].
Example output object (scrape_details: true)
{"exhibition_name": "ANALYTICA","description": "International Trade Fair for Laboratory Technology, Analysis and Biotechnology","date": "07 - 10 April 2026","duration": "4 days","cycle_frequency": "every 2 years","city": "Munich","country": "Germany","region": "Europe","industry": "Sciences for Engineers - R&D","category": "Laboratory - Measurement - Analysis","venue_name": "Messe München","venue_address": "Messegelände, 81823 München, Germany","venue_url": "https://www.eventseye.com/<venue-page>","organizer": "Messe München GmbH","organizer_address": "Messegelände, 81823 München, Germany","organizer_phone": "+49 89 949 20720","organizer_fax": "+49 89 949 20729","organizer_email": "info@analytica.de","organizer_website": "https://www.messe-muenchen.de","event_website": "https://www.analytica.de","event_email": "info@analytica.de","audience": "Trade only","related_industries": "Healthcare & Pharmaceuticals, Chemistry - Energy - Materials","cycle": "Biennial","exhibition_url": "https://www.eventseye.com/<exhibition-page>"}
Field values above are illustrative of shape and formatting; run the Actor for live data.
What a successful run looks like
- Status:
SUCCEEDED - Dataset: one item per exhibition, saved as each branch of the crawl completes
- Log: the resolved configuration up front, a line per hierarchy level as it's walked, the test-mode branch if it applied, and a final total
- Zero results is also a success. A city the directory doesn't list, a region/country mismatch, or an industry with no shows in that country all legitimately return nothing. The run still succeeds — read the log to see which branch was walked.
Dataset views
| View | Shows |
|---|---|
| Overview | Exhibition, date, city, country, region, industry, venue, organizer, website |
| Detailed View | The full record including the organizer contact block, venue address, audience and related industries |
Invocation & Integration
Apify Console
Open the Actor page, set your filters
on the Input tab, set max_exhibitions to the size of dataset you want, and click Start.
MCP — add as an agent tool
$claude mcp add apify --transport http https://mcp.apify.com/?actors=techforce.global/events-eye-scraper
Then ask your agent for "trade shows in Munich next year with organizer contacts".
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("techforce.global/events-eye-scraper").call(run_input={"country": "Germany","city": "Munich","scrape_details": True, # organizer contact block"max_exhibitions": 100,})for show in client.dataset(run["defaultDatasetId"]).iterate_items():print(show["date"], "|", show["exhibition_name"], "|", show.get("organizer_email", "-"))
JavaScript / TypeScript
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });const run = await client.actor("techforce.global/events-eye-scraper").call({industry: "Healthcare & Pharmaceuticals",region: "Europe",scrape_details: true,max_exhibitions: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.table(items.map(({ exhibition_name, date, city, organizer }) => ({exhibition_name,date,city,organizer,})),);
cURL — synchronous (waits, returns the dataset)
curl -X POST "https://api.apify.com/v2/acts/techforce.global~events-eye-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H 'Content-Type: application/json' \-d '{"country": "USA","city": "Las Vegas","scrape_details": true,"max_exhibitions": 50}'
cURL — asynchronous with a spend cap
curl -X POST "https://api.apify.com/v2/acts/techforce.global~events-eye-scraper/runs?token=<YOUR_APIFY_TOKEN>&maxTotalChargeUsd=3" \-H 'Content-Type: application/json' \-d '{ "industry": "Automobile - Automotive Industry", "max_exhibitions": 0 }'
maxTotalChargeUsd is the hard ceiling for the run. Use it on any unattended run, and always
when max_exhibitions is 0.
With MCP delivery — trade shows straight into Notion
{"country": "Germany","city": "Munich","scrape_details": true,"max_exhibitions": 100,"mcpConnector": "notion","mcpTool": "notion_create_pages","deliveryMode": "chunked","mcpArguments": {"parent": { "page_id": "<YOUR_NOTION_PAGE_ID>" },"pages": [{"properties": {"title": "Trade shows — {city}, {country} (part {part}/{partCount})"},"content": "{totalEvents} exhibitions found in {industry}\n\n{events}"}]}}
Use perEvent instead when you want one page per exhibition with the organizer fields mapped
to properties — in that mode every output field is available as a placeholder.
Autonomous Agent Error Handling & Resolution Matrix
Each row is a condition observable from the run's status, log or dataset.
| Condition | What you see | Cause | Deterministic action |
|---|---|---|---|
FEWER_RESULTS_THAN_EXPECTED | Fewer rows than the directory holds; log shows the cap was reached | max_exhibitions (default 50) stopped the crawl | Modify Input: raise max_exhibitions (max 100), or set 0 with a spend cap. |
ORGANIZER_FIELDS_MISSING | No organizer*, venue_address, audience keys at all | scrape_details is false (the default) | Modify Input: set scrape_details: true. |
INDUSTRY_NOT_FOUND | Log: Industry '<x>' not found; empty dataset | industry doesn't match the enum exactly | Modify Input: copy the value verbatim from input_schema.json. |
CITY_FILTER_EMPTY | SUCCEEDED, empty dataset, no error | The city isn't listed under that country | Modify Input: drop city and filter by country, or check spelling. |
REGION_COUNTRY_MISMATCH | SUCCEEDED, empty dataset | region and country are inconsistent | Modify Input: set one, not both. |
LIMIT_REACHED | Log: Reached maximum exhibitions limit: N | max_exhibitions hit | Expected. Raise it (max 100) or set 0 with a spend cap. |
RUN_LONGER_THAN_EXPECTED | Run still going well past a usual duration | scrape_details: true and/or max_exhibitions: 0 with broad filters | Narrow the filters, or abort and re-run with a cap. |
DATE_NOT_PARSEABLE | date won't parse as ISO-8601 | By design — it's source-formatted text | Fix Expectation: parse leniently; formats vary. |
CONNECTOR_TOOL_NOT_FOUND | Log: tool not available, followed by the available tools and the tool's input schema | mcpTool name is wrong | Modify Input: copy an exact name from that log line. Dataset unaffected. |
CONNECTOR_NO_TOOL | Log: connector selected but no tool name provided | mcpConnector set, mcpTool empty | Modify Input: set mcpTool, or clear mcpConnector. |
CONNECTOR_ARGS_REJECTED | Connector reports an error per call; schema logged just above | mcpArguments doesn't match the tool's required shape | Modify Input: shape the arguments to the logged schema. Dataset unaffected. |
CONNECTOR_UNREACHABLE | Log: could not reach the connector | Connector not authorised, or running outside the Apify platform | Authorise it in Apify, or set deliveryMode: "none". Data already saved. |
Verify any platform-level HTTP status behaviour against the Apify API reference before relying on it in automation — the rows above describe this Actor's observable behaviour, not Apify's transport layer.
Natural Language → Actor Mapping
| A user says… | Intent | Input |
|---|---|---|
| "Trade shows in Munich" | City sweep | {"country":"Germany","city":"Munich"} |
| "Every exhibition in Las Vegas with organizer contacts" | City + contacts | {"country":"USA","city":"Las Vegas","scrape_details":true} |
| "Pharma trade shows in Europe" | Industry + region | {"industry":"Healthcare & Pharmaceuticals","region":"Europe"} |
| "Automotive exhibitions worldwide" | Industry only | {"industry":"Automobile - Automotive Industry","max_exhibitions":0} |
| "What trade fairs happen in India?" | Country sweep | {"country":"India"} |
| "Food industry expos in Asia" | Industry + region | {"industry":"Agriculture - Food Processing","region":"Asia - Pacific"} |
| "Who organises the big electronics fairs in China?" | Contacts | {"industry":"Electronics - Electrotechnics","country":"China","scrape_details":true} |
| "Build me a 2026 fashion trade-show calendar" | Industry sweep | {"industry":"Fashion - Apparel - Textiles - Leather - Fur","max_exhibitions":0} |
| "Which venues host exhibitions in Dubai?" | Venue research | {"country":"UAE - United Arab Emirates","city":"Dubai","scrape_details":true} |
| "Just give me a quick sample first" | Cheap probe | {"country":"Germany","max_exhibitions":10} |
| "Put Munich's trade shows in our Notion" | Scrape + deliver | Above, plus mcpConnector, mcpTool, mcpArguments |
| "Post this week's new UK expos to Slack" | Scrape + deliver | {"country":"UK - United Kingdom","mcpConnector":"slack","mcpTool":"send_message","deliveryMode":"summary"} |
Should NOT route here: who is exhibiting at a show or their stand numbers · visitor or attendee data · booking a stand or buying tickets · floor plans or hall maps · past editions and historical archives · concerts, festivals and ticketed consumer events (use the Ticketmaster or Eventim Actors) · academic conference CFPs and paper deadlines · company data that isn't tied to a trade show.
Agent Execution & Routing Logic
Does the user want TRADE SHOWS / EXHIBITIONS?├── NO → not this Actor.│ concerts / ticketed events → Ticketmaster or Eventim Actor│ meetups / local events → Smart Event Scraper│ exhibitor or visitor lists → not published in this directory│ stand booking / floor plans → not a scraping task│└── YES│├── Do they name a CITY?│ ├── yes → set country + city, and LEAVE industry EMPTY│ │ (this is the fast path — every industry, one pass)│ └── no → set whichever of industry / region / country they named│├── Do they want organizer or venue CONTACT details?│ ├── yes → scrape_details: true (slower, but this is the prospect list)│ └── no → scrape_details: false (calendar-grade data, faster)│├── How much do they want?│ ├── a first probe → max_exhibitions: 10│ ├── a sample → max_exhibitions: 10-50│ ├── a full sweep → max_exhibitions: 0 + ALWAYS set a spend cap│ └── unspecified → leave at 50 (the default)│└── Should results land in another app?├── yes → mcpConnector + mcpTool + deliveryMode│ one record per show → perEvent│ one digest → summary│ long list, one doc → chunked└── no → leave mcpConnector empty; dataset only
Cost Control & Pricing Transparency
This Actor bills for platform usage — the compute time and resources the run consumes — not per row. Current rates are shown on the Actor's Apify page, and the Console shows the live total while a run is in progress. Because cost tracks run length, the two inputs that decide what you pay are how much of the hierarchy you walk and whether you open each exhibition's detail page.
| Choice | Effect on cost |
|---|---|
max_exhibitions: 10 | Cheapest useful run. Enough rows to validate your filters and field shape before committing. |
scrape_details | The biggest single multiplier. true visits every exhibition's own page, so run time scales with the number of exhibitions. |
max_exhibitions | The hard stop. 50 is a predictable run; 0 is unbounded and should always be paired with a spend cap. |
| Direct city mode (country + city, no industry) | The cheapest way to cover a whole city — one pass instead of walking every industry. |
| Filter breadth | Each level you leave blank multiplies the branches walked. An industry alone with max_exhibitions: 0 is a global crawl. |
Keeping runs predictable:
- First run:
max_exhibitions: 10withscrape_details: false. Confirm your filters resolve and the field shape is what you expect, for pennies. - Then raise
max_exhibitions. Turnscrape_detailson only once you know you want the contact block — it is the larger multiplier of the two. - Always set a spend cap on unattended runs —
maxTotalChargeUsdon the API call, or the run limit in the Console. Withmax_exhibitions: 0this is the only hard ceiling. - Prefer a narrow filter over a big cap. One country with details on is usually more useful, and cheaper, than a global crawl truncated at 100.
Companion machine-readable files
| File | What it defines |
|---|---|
| .actor/input_schema.json | Every input, its type, default, and the exact industry, region and country enums |
| .actor/actor.json | Actor identity, Store categories, and the two dataset views |
| .actor/output_schema.json | Where the run's output is exposed |
If this page and the schema files disagree, the schema files win. They are what the platform validates against at run time; this page is documentation and can lag a release. In particular, generate
industryandcountryvalues frominput_schema.json, never from the prose here.
Compliance & Data Privacy
-
Public directory listings only. Everything returned is published on a public page with no login and no paywall.
-
The contact data is business contact data.
organizer_email,organizer_phone,organizer_fax,organizer_addressandevent_emailare the organising company's published business contact points — the ones they publish precisely so exhibitors and visitors can reach them. No individual's name, personal email or direct line is collected. -
But treat it as personal data when it is. If a published organizer email happens to be a named individual's (
firstname.lastname@company.com) or a small organiser's personal number, that field is personal data under GDPR / UK GDPR and India's DPDP Act 2023 the moment you store it. You become the controller. Apply a retention policy, and honour erasure requests. -
Marketing to organizers is your responsibility, and the rules are strict. A published business email is not consent to be marketed to. Outreach falls under CAN-SPAM (US), CASL (Canada — express or implied consent required), ePrivacy/PECR (UK/EU) and the DPDP Act. If you rely on GDPR legitimate interests for B2B outreach, do and keep the balancing test, identify yourself, and honour opt-outs on the first request.
-
EventsEye's Terms of Service apply to you. The directory sets its own terms on automated access and on redistributing its listings — including compiling them into a competing directory or reselling them as a database. Review those terms and stay within them; this Actor gives you the capability, not the licence.
-
Attribution over mirroring. Listings are EventsEye's compilation and the organisers' content. Link back via
exhibition_urlrather than republishing the directory wholesale, and don't present scraped listings as your own original research. -
Data minimisation is also cost minimisation. Leave
scrape_detailsoff unless you actually need the contact block, and filter to the industry, country or city you're working on. Collecting less is cheaper, faster, and the defensible position if anyone asks.
🆘 Support & Custom Pipeline Engineering
Need automated multi-city scheduled feeds, webhook enrichment, or enterprise data warehouse syncs?
- Email: bhavin.shah@techforceglobal.com
- Custom Enterprise Integrations: Book a 15-Minute Technical Consultation
- Maintained by: Techforce Global — Specialists in High-Performance Web Scrapers and Agentic Workflows.
Related Actors by Techforce Global
| Actor | Best for |
|---|---|
| This Actor | Trade shows and exhibitions in depth — the full record, organizer contacts included |
| Smart Event Scraper | Finding events across six platforms at once with category, keyword and date filters |
| Ticketmaster Scraper | Ticketed concerts, sports and shows |
| Eventim Scraper | European ticketed events |
| Meetup Scraper | Community meetups in one city |
| Website Contact Scraper | Contact details from an organizer's own site once you have their domain |
A natural pairing: run this Actor with scrape_details: true to get organizer websites,
then feed those domains to Website Contact Scraper to go deeper on each one.
Browse the full catalogue at scraper.techforce.global.
{"@context": "https://schema.org","@type": "SoftwareApplication","name": "EventsEye Trade Show Scraper — Global Exhibition Directory with Organizer & Venue Contacts","applicationCategory": "BusinessApplication","applicationSubCategory": "Web Scraping / Trade Show & Exhibition Data","operatingSystem": "Any (cloud-hosted on Apify)","url": "https://apify.com/techforce.global/events-eye-scraper","description": "Scrapes trade shows and exhibitions from the EventsEye directory, filtered by industry, region, country or city, and returns each show's dates, duration, recurrence cycle, venue, industry and category — plus the organizer's full contact record and the show's target audience when detail scraping is enabled. Optional direct delivery into Notion, Slack, Jira, Airtable or any MCP connector.","author": {"@type": "Organization","name": "Techforce Global","url": "https://scraper.techforce.global/"},"provider": {"@type": "Organization","name": "Apify","url": "https://apify.com"},"offers": {"@type": "Offer","category": "Pay per platform usage","description": "Billed for the compute time and resources a run consumes. Current rates are shown on the Actor's Apify page.","url": "https://apify.com/techforce.global/events-eye-scraper"},"featureList": ["32 industries, 4 regions and 92 countries covered","Independent, composable industry / region / country / city filters","Direct city mode returns every exhibition in a city across all industries in one pass","Optional organizer contact block: name, address, phone, fax, email and website","Venue name and postal address","Recurrence cycle, duration and target audience per exhibition","Run cap applied across every branch of the crawl","Optional MCP delivery to Notion, Slack, Jira, Airtable and more","Two Console dataset views including a full detail view"],"isAccessibleForFree": false,"softwareRequirements": "Apify account and API token","keywords": "trade show scraper, exhibition directory, EventsEye scraper, trade fair data, exhibition organizer contacts, B2B lead generation, trade show calendar, event venue data, industry exhibitions, MCP connector, market research"}