# Newfront Exhibitor Scraper: Event Leads as JSON (`getascraper/newfront-exhibitor-directory-scraper`) Actor

Scrape public Newfront and ExpoPlatform directories. Filter by country, hall, stand, or category, then export source-linked exhibitor records as flat or exploded JSON in an Apify dataset.

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

## Pricing

from $2.92 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🏢 Newfront Exhibitor Scraper: Event Leads as JSON

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:24px 28px;background:#F0FDFA;border:1px solid #99F6E4;border-top:4px solid #0F766E;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Build a focused exhibitor list from a public Newfront or ExpoPlatform event directory.</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Match exhibitors by company, country, hall, stand, or category. Keep an honest profile-detail status with every result.</span>
</td>
</tr>
</table>

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #99F6E4;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#115E59">Public directory data</span><br>
<span style="font-size:12px;color:#57534E">Collect published exhibitor records from supported event directories.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #99F6E4;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#115E59">Focused matching</span><br>
<span style="font-size:12px;color:#57534E">Find the companies, countries, locations, and categories that matter.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #99F6E4;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#115E59">Honest detail status</span><br>
<span style="font-size:12px;color:#57534E">See whether public profile details were fetched, skipped, or unavailable.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #99F6E4;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#115E59">Ready for analysis</span><br>
<span style="font-size:12px;color:#57534E">Choose compact rows or related child rows, with source and run evidence.</span>
</td>
</tr>
</table>

Newfront Exhibitor Directory Scraper collects public exhibitor data from Newfront and ExpoPlatform marketplace events. It is for event research, sales planning, lead generation, and data work. It processes one event directory per run and returns only information the directory publishes.

### 🔍 What does Newfront exhibitor directory scraper do?

The Actor directly enumerates public exhibitor directory listings, so you can collect a complete, focused list without gathering records by hand. Add a company keyword, country, hall or stand, and category to narrow the results. Every filter you provide must match.

Turn on profile details when you need published contacts, categories, products, addresses, or social links. If a public profile request is unavailable, the listing record can still be returned and `detailStatus` reports `failed`. Nothing is invented to fill gaps.

Choose flat output for one row per exhibitor. Choose exploded output to keep the parent exhibitor row and add separate stand, category, product, contact, and co-exhibitor rows. The exhibitor limit always applies to parent exhibitors.

### 🎯 Why teams use it

- **I am an event researcher** mapping an exhibitor landscape by country, hall, and category before deciding which events to track.
- **I am a sales operations manager** building a focused prospect list from the companies exhibiting at an event relevant to my territory.
- **I am a lead-generation specialist** matching public exhibitor companies and published contact details to a campaign list without guessing missing data.
- **I am a data team member** choosing flat or exploded rows for reporting, while retaining source URLs and run statistics for review.

### 🚀 How to use it

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#F0FDFA;border:1px solid #99F6E4;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#0F766E;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Choose an event directory</span><br>
<span style="font-size:12px;color:#57534E">Paste one public Newfront or ExpoPlatform exhibitor directory URL.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F0FDFA;border:1px solid #99F6E4;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#0F766E;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your match rules</span><br>
<span style="font-size:12px;color:#57534E">Filter by company, country, hall or stand, and category when needed.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F0FDFA;border:1px solid #99F6E4;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#0F766E;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Use the output with context</span><br>
<span style="font-size:12px;color:#57534E">Select flat or exploded rows, then review the source and run statistics.</span>
</td>
</tr>
</table>

### 🎛️ Input

#### Sources

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `startUrl` | string | No | Public Newfront or ExpoPlatform exhibitor directory to read. One event is processed in each run. |

#### Newfront exhibitor and search filters

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `searchQuery` | string | No | Matches published company names or descriptions. Combines with every other filter you set. |
| `country` | string | No | Keeps exhibitors whose published country matches your text. |
| `hallOrStand` | string | No | Keeps exhibitors with a matching published hall, stand, or booth value. |
| `categoryQuery` | string | No | Matches a public exhibitor category. Profile details must remain enabled when you use this filter. |

#### Data source and reliability

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `allowPartialResults` | boolean | No | Keeps an available listing record if its profile detail request fails. Enabled by default. |

#### Enrichment

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `fetchDetails` | boolean | No | Requests published addresses, contacts, categories, products, and social links when they are available. Enabled by default. |

#### Output and limits

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `outputFormat` | enum | No | Select `flat` for one exhibitor row or `exploded` for parent and related child rows. Defaults to `flat`. |
| `maxItems` | integer | No | Maximum parent exhibitors to return. Defaults to 10. Set 0 only for a deliberate unlimited run. |

#### Advanced

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `maxConcurrency` | integer | No | Number of public profile requests made at once. Choose an integer from 1 to 20. Defaults to 5. |
| `proxyConfiguration` | object | No | Optional connection setting for public directory requests. Defaults to Apify Proxy. |

### 📦 Data table

Fields are included only when the public source provides a value. In exploded mode, the child-specific fields are populated on their matching child rows.

| Field | Type | Description |
| --- | --- | --- |
| `recordType` | string | Row kind in exploded output, such as the exhibitor parent or a related child row. |
| `platform` | string | Source platform identifier. |
| `eventId` | string | Published event identifier when available. |
| `eventName` | string | Event name found for the directory. |
| `eventEdition` | string | Event edition label found for the directory. |
| `eventUrl` | string | Public event directory URL used for the run. |
| `sourceUrl` | string | Public source URL for the record. |
| `scrapedAt` | string | Time when the record was collected. |
| `exhibitorId` | string | Published exhibitor identifier. |
| `parentExhibitorId` | string | Parent exhibitor identifier for an exploded child row. |
| `companyName` | string | Published exhibitor company name. |
| `profileUrl` | string | Public exhibitor profile page URL when available. |
| `companyDescription` | string | Published company or profile description. |
| `address` | object | Published address details, including available street, postal code, city, region, and country values. |
| `country` | string | Published exhibitor country. |
| `hall` | string | Published hall value or values. |
| `booth` | string | Published booth or stand value or values. |
| `stands` | array of objects | Published stand records with hall, stand, and available identifiers. |
| `website` | string | Published company website. |
| `email` | string | Published company email address. |
| `phone` | string | Published company phone number. |
| `socialLinks` | object | Published social profile links. |
| `contacts` | array of objects | Published contact records with available name, role, email, phone, and profile link values. |
| `categories` | array of strings | Published exhibitor category names. |
| `categoryPaths` | array of objects | Published category records with available identifier, parent identifier, and name values. |
| `products` | array of objects | Published product records with available identifier, name, description, and link values. |
| `brands` | array of strings | Published brand names. |
| `coExhibitors` | array of objects | Published child or co-exhibitor records. |
| `logoUrl` | string | Published exhibitor logo URL. |
| `detailStatus` | string | Whether profile details were `fetched`, `not_requested`, or `failed`. |
| `stand` | object | One published stand record on an exploded stand row. |
| `category` | object | One published category record on an exploded category row. |
| `product` | object | One published product record on an exploded product row. |
| `contact` | object | One published contact record on an exploded contact row. |
| `coExhibitor` | object | One published co-exhibitor record on an exploded co-exhibitor row. |

### 📊 Source and run statistics

Each run writes a `RUN_STATS` record alongside the dataset. It records `status`, `pagesFetched`, `listRequests`, `detailsRequested`, `detailsFetched`, `detailFailures`, `itemsDiscovered`, `parentItemsOutput`, `rowsOutput`, `filters`, and `errors`.

Use these statistics to confirm the source response, the filters used, parent-exhibitor limits, output row count, and any detail lookup failures. Run status can be `success`, `empty_valid`, `partial`, `blocked`, or `invalid`.

### 💰 Pricing

Pricing is pay per result. Empty runs cost nothing, and there are no subscriptions.

### ⭐ Enjoying Newfront Exhibitor Directory Scraper?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#F0FDFA;border:1px solid #99F6E4;border-left:5px solid #0F766E;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px;color:#1C1917">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Help other event researchers and sales teams find a clearer way to work with public exhibitor directories.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and tells us what to improve next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#0F766E;border:1px solid #99F6E4;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/newfront-exhibitor-directory-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>

### ❓ FAQ

##### Which Newfront and ExpoPlatform directories are supported?

Use a public Newfront or ExpoPlatform marketplace exhibitor directory URL. The Actor validates that the URL is a compatible public exhibitor directory before collecting records.

##### Can I filter exhibitors for a sales or research list?

Yes. Match published company text, country, hall or stand, and category. When you set more than one filter, an exhibitor must match all of them.

##### What happens when a public exhibitor profile is unavailable?

With partial results enabled, the Actor keeps the available listing record and sets `detailStatus` to `failed`. If profile details are turned off, it sets the status to `not_requested`.

##### Does it return private or missing contact information?

No. Newfront Exhibitor Directory Scraper returns only data published by the public directory. Missing values are omitted, rather than replaced with placeholders.

### 🔗 Other actors

- [a2z Events exhibitor directory scraper: contacts, booths & categories](https://apify.com/getascraper/a2z-events-exhibitor-directory-scraper) ↗: Collect public exhibitor contacts, booths, and categories from a2z Events directories.
- [Koelnmesse exhibitor directory scraper: contacts, stands & brands](https://apify.com/getascraper/koelnmesse-exhibitor-directory-scraper) ↗: Research public Koelnmesse exhibitor, stand, contact, and brand data.
- [Map Your Show exhibitor directory scraper: all US expos](https://apify.com/getascraper/map-your-show-exhibitor-directory-scraper) ↗: Collect public exhibitor data from compatible Map Your Show events.
- [Informa Markets exhibitor directory scraper: Gulfood](https://apify.com/getascraper/informa-markets-exhibitor-directory-scraper) ↗: Collect public exhibitor data from compatible Informa Markets events.
- [Xporience exhibitor directory scraper: contacts, stands & categories](https://apify.com/getascraper/xporience-exhibitor-directory-scraper) ↗: Collect public exhibitor data from Xporience event directories.

# Actor input Schema

## `startUrl` (type: `string`):

One public Newfront or ExpoPlatform marketplace exhibitor directory URL.

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

Match company names or public descriptions. This combines with every other filter.

## `country` (type: `string`):

Match the country published for the exhibitor.

## `hallOrStand` (type: `string`):

Match a published hall, stand, or booth value.

## `categoryQuery` (type: `string`):

Match a public exhibitor category. This requires Fetch Profile Details to remain enabled.

## `allowPartialResults` (type: `boolean`):

Keep list records when an individual source request or profile detail request fails.

## `fetchDetails` (type: `boolean`):

Request public profile data such as addresses, contacts, categories, products, and social links.

## `outputFormat` (type: `string`):

Flat emits one row per exhibitor. Exploded also emits child rows for stands, categories, products, contacts, and co-exhibitors.

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

Maximum number of parent exhibitors. Set 0 only when you deliberately want an unlimited run.

## `maxConcurrency` (type: `integer`):

Number of public detail requests made in parallel. Higher values can increase source load.

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

Optional Apify Proxy configuration for direct public HTTP requests.

## Actor input object example

```json
{
  "startUrl": "https://digital.dlg-feldtage.de/marketplace/exhibitors",
  "searchQuery": "",
  "country": "",
  "hallOrStand": "",
  "categoryQuery": "",
  "allowPartialResults": true,
  "fetchDetails": true,
  "outputFormat": "flat",
  "maxItems": 10,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `runStats` (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 = {
    "startUrl": "https://digital.dlg-feldtage.de/marketplace/exhibitors",
    "searchQuery": "",
    "country": "",
    "hallOrStand": "",
    "categoryQuery": "",
    "allowPartialResults": true,
    "fetchDetails": true,
    "outputFormat": "flat",
    "maxItems": 10,
    "maxConcurrency": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/newfront-exhibitor-directory-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 = {
    "startUrl": "https://digital.dlg-feldtage.de/marketplace/exhibitors",
    "searchQuery": "",
    "country": "",
    "hallOrStand": "",
    "categoryQuery": "",
    "allowPartialResults": True,
    "fetchDetails": True,
    "outputFormat": "flat",
    "maxItems": 10,
    "maxConcurrency": 5,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/newfront-exhibitor-directory-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 '{
  "startUrl": "https://digital.dlg-feldtage.de/marketplace/exhibitors",
  "searchQuery": "",
  "country": "",
  "hallOrStand": "",
  "categoryQuery": "",
  "allowPartialResults": true,
  "fetchDetails": true,
  "outputFormat": "flat",
  "maxItems": 10,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/newfront-exhibitor-directory-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/newfront-exhibitor-directory-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/EjimvIUIRhuS58KUf/builds/5bH2iU8TUFwH6SGvn/openapi.json
