# Tuttofood & Cibus Tec Exhibitor Scraper (`monkey.d.scraping/tuttofood-cibus-tec-exhibitor-scraper`) Actor

Export exhibitor records from Tuttofood 2026 and Cibus Tec 2026: company websites, stands, categories and source links. Filter Tuttofood by PRIVATE LABEL and BIO catalog declarations. Get structured data for supplier research, with up to 100 records per run.

- **URL**: https://apify.com/monkey.d.scraping/tuttofood-cibus-tec-exhibitor-scraper.md
- **Developed by:** [Monkey D. Scraping](https://apify.com/monkey.d.scraping) (community)
- **Categories:** Lead generation, E-commerce
- **Stats:** 1 total users, 1 monthly users, 96.6% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 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.

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

## Tuttofood & Cibus Tec Exhibitor Scraper

Export structured exhibitor records from the public Tuttofood 2026 and Cibus Tec 2026 catalogs for supplier research, trade fair planning and food industry market research. Get company names, websites, stands, source categories and catalog links. No login to the source catalogs is needed.

This Actor supports these two editions only and up to 100 records per run.

### Quick start

1. Choose **Tuttofood 2026** for food suppliers or **Cibus Tec 2026** for machinery and technology.
2. Start with **20 records** and **2 listing pages**.
3. For Tuttofood, optionally enable PRIVATE LABEL and BIO source filters. Leave them off for Cibus Tec.
4. Set the maximum charge in Apify Run options, start the run and inspect the results and collection metrics.
5. Export your dataset as JSON, CSV or Excel using Apify’s export controls.

### What can you use it for?

- Prepare a first supplier list for food sourcing or private label research.
- Review catalog participation and stand locations before a trade fair.
- Structure catalog data for spreadsheets and market research workflows.
- Give an AI agent a source-linked dataset to review. It must retain source provenance and check collection status.

For example, export Tuttofood entries declaring PRIVATE LABEL and BIO, then examine their categories for oil or vinegar. Product keyword filtering is a downstream analysis step; this Actor does not currently accept a product keyword input. Cibus Tec serves a different buyer: food processing machinery and technology procurement.

### Inputs

| Field | Purpose | Default when omitted through API |
| --- | --- | --- |
| `edition` | `tuttofood-2026` or `cibus-tec-2026` | Tuttofood 2026; field required by schema |
| `maxResults` | Maximum participation records, 1–100 | 100; form example 20 |
| `privateLabel` | PRIVATE LABEL source filter, Tuttofood only | false |
| `organic` | BIO source declaration filter, Tuttofood only | false |
| `includeBrands` | Include separate brand entries | false |
| `maxPages` | Maximum listing pages, 1–20 | 20; form example 2 |

The form examples keep the first run small; API defaults and existing saved task inputs are separate. No arbitrary start URLs, country filters, email enrichment or full catalog export are supported.

#### Tuttofood supplier research example

```json
{
  "edition": "tuttofood-2026",
  "maxResults": 20,
  "maxPages": 2,
  "privateLabel": true,
  "organic": true,
  "includeBrands": false
}
```

#### Cibus Tec machinery example

```json
{
  "edition": "cibus-tec-2026",
  "maxResults": 20,
  "maxPages": 2,
  "privateLabel": false,
  "organic": false,
  "includeBrands": false
}
```

### Output

Each dataset item represents one catalog participation record. The same business name may occur in several records. Core fields include:

| Field | Meaning |
| --- | --- |
| `name`, `edition` | Catalog name and selected edition |
| `entityType` | Exhibitor, co-exhibitor, represented company or brand |
| `websites`, `socialProfiles` | Company website and social links reported by the source |
| `positions` | Stand information |
| `classifications` | Source categories, declarations and classification groups |
| `sourceUrl` | Original catalog detail page |
| `hasEmail`, `hasTelephone` | Presence flags only; no email or phone values exported |

Additional provenance and quality fields remain available in the full JSON output. `BILLING_REPORT` contains SDK event counts and nominal amounts at the configured tariff; it is not a customer invoice or proof of revenue. See `METRICS` in the key-value store for `records`, `stopReason`, `catalogComplete` and `failedDetails`.

#### Real participation output excerpt

Reduced record from an owner verification run on 20 October 2026. Values are retained from that catalog observation; classifications, host details and other fields are omitted for readability.

```json
{
  "recordId": "acfa05257cfc96ec27a0a3ce",
  "edition": "tuttofood-2026",
  "name": "'NDUJA SALUMIFICIO MONTEPORO SRL",
  "entityType": "co_exhibitor",
  "sourceUrl": "https://catalogo.fiereparma.it/azienda/regione-calabria/salumificio-monteporo-srl/?f=tuttofood-2026",
  "websites": [
    "https://www.monteporo-spilinga.it/"
  ],
  "positions": [
    "Padiglione 10 - Stand K23"
  ],
  "hasEmail": true,
  "hasTelephone": true
}
```

This row represents one co-exhibitor participation in the named edition, not a deduplicated company across all fairs. The boolean contact flags report whether the catalog exposes those contact types; the Actor does not export the email address or phone number. The source may change. This sample run returned 19 participations and reached its page limit, so it did not establish complete catalog coverage.

### Pricing and limits

Configured tariff: **$0.02 per valid run start + $0.003 per saved record**. The platform usage cost is included in the tariff.

| Records saved | One run total |
| --- | ---: |
| 0 | $0.02 |
| 20 | $0.08 |
| 100 | $0.32 |

The record event bills a catalog participation record, not a guaranteed unique business. A valid run that later fails or returns no results may retain its start charge and any previously saved record charges. Invalid input is rejected before the start event. Budget checks run before detail fetching and saving; the run may stop with a partial dataset. Platform account eligibility and owner development runs affect actual billing; a private owner test is not proof of paying customer revenue.

Limits: 100 records, 20 listing pages, 240 seconds and 200 HTTP attempts. A limit reached is not a complete export. Some storage calls have SDK timeouts; the platform timeout is an additional guard.

### FAQ

#### Does this collect emails or telephone numbers?

No. It returns presence flags, company websites and source links. It does not visit company websites for enrichment.

#### Are BIO certifications or PRIVATE LABEL capabilities verified?

No. These are catalog declarations. Verify current certifications, manufacturing capability, minimum order quantities and terms directly with the supplier.

#### Will I get a complete catalog?

Not with the current version. Inspect collection metrics; result, page, budget and runtime limits can produce partial output.

#### Are repeated company names duplicates?

Not necessarily. A co-exhibitor or represented company can appear in multiple participation contexts. The Actor preserves separate source records and does not resolve legal entities.

#### Does it monitor changes between runs?

No. Historical comparison and new/changed/removed record classification are not implemented.

#### Can an AI agent use the output?

The output schema provides dataset and metrics links. Agents should check the selected edition, record type and collection status, preserve source URLs, and avoid inferring supplier qualification from catalog declarations. Actual agent integration still requires configuration in the consumer workflow.

### Sources and support

Data source: [Fiere Parma public catalogs](https://catalogo.fiereparma.it/). Tuttofood and Cibus Tec are source event names; this is an independent tool with no claimed affiliation or endorsement. Report issues with edition, input and run ID so the extraction can be reproduced.

Customer demand, paid-user revenue and ongoing profitability remain unverified.

# Actor input Schema

## `edition` (type: `string`):

Choose the edition to export. Only these two public catalogs are supported; they have different types of suppliers.

## `maxResults` (type: `integer`):

Enter 1–100 catalog participation records. Start with 20 ($0.08 at the configured tariff). This is a record limit, not a count of unique legal entities. The charge budget may stop the run sooner.

## `privateLabel` (type: `boolean`):

Enable to select catalog entries declaring PRIVATE LABEL. This does not verify current contract manufacturing capability.

## `organic` (type: `boolean`):

Enable to select entries declaring BIO in the source catalog. This is not an independent certification check. With PRIVATE LABEL enabled, both filters apply.

## `includeBrands` (type: `boolean`):

Enable to include separate brand entries. Companies and brands may share names; entries are not merged into unique businesses.

## `maxPages` (type: `integer`):

Enter 1–20 listing pages. Start with 2; increase only if needed. The run also stops at the record limit, charge budget or runtime limits. A partial export is not a complete catalog.

## Actor input object example

```json
{
  "edition": "tuttofood-2026",
  "maxResults": 20,
  "privateLabel": false,
  "organic": false,
  "includeBrands": false,
  "maxPages": 2
}
```

# Actor output Schema

## `exhibitors` (type: `string`):

Structured catalog records including name, edition, record type, company websites, social links, stands, categories, source URL and source timestamp. Email and telephone values are not exported.

## `collectionStatus` (type: `string`):

Record count, stop reason, catalog completeness and detail failures. Check before treating the export as complete.

# 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 = {
    "edition": "tuttofood-2026",
    "maxResults": 20,
    "maxPages": 2
};

// Run the Actor and wait for it to finish
const run = await client.actor("monkey.d.scraping/tuttofood-cibus-tec-exhibitor-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 = {
    "edition": "tuttofood-2026",
    "maxResults": 20,
    "maxPages": 2,
}

# Run the Actor and wait for it to finish
run = client.actor("monkey.d.scraping/tuttofood-cibus-tec-exhibitor-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 '{
  "edition": "tuttofood-2026",
  "maxResults": 20,
  "maxPages": 2
}' |
apify call monkey.d.scraping/tuttofood-cibus-tec-exhibitor-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,monkey.d.scraping/tuttofood-cibus-tec-exhibitor-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/ljZFNbzGO40ek1FP7/builds/aFragOjFhj8AnIWI5/openapi.json
