# GCC Trade Show Calendar: Abu Dhabi, Riyadh, Muscat (`maliksaid/gcc-trade-show-calendar`) Actor

Gulf trade shows and exhibitions calendar from official venue sites: ADNEC Abu Dhabi (UAE), Riyadh Front RFECC (Saudi Arabia) and OCEC Muscat (Oman). Arabic and English event names, dates, organiser, sector and event website. Change-only mode.

- **URL**: https://apify.com/maliksaid/gcc-trade-show-calendar.md
- **Developed by:** [Malik Said](https://apify.com/maliksaid) (community)
- **Categories:** Lead generation, Travel, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 events

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

## GCC Trade Show Calendar: Abu Dhabi, Riyadh, Muscat

GCC Trade Show Calendar collects upcoming trade shows, exhibitions and conferences in the Gulf from the official websites of the exhibition centres. It reads ADNEC Centre Abu Dhabi in the UAE, Riyadh Front Exhibition & Conference Center (RFECC) in Saudi Arabia and the Oman Convention & Exhibition Centre (OCEC) in Muscat. Every event comes in one format, with Arabic and English names where the venue publishes both.

Use it to plan which Middle East exhibitions to visit or exhibit at. Exhibitors, event agencies, logistics firms, hotels and sales teams use one feed in place of three venue calendars.

Schedule it weekly with change-only mode on. Each run then returns only events that are new or whose dates, organiser or website changed.

تقويم المعارض التجارية والمؤتمرات في الخليج من المواقع الرسمية لمراكز المعارض: مركز أدنيك أبوظبي، وواجهة الرياض للمعارض والمؤتمرات، ومركز عُمان للمؤتمرات والمعارض. أسماء الفعاليات بالعربية والإنجليزية، وتواريخ البدء والانتهاء، والشركة المنظمة، والقطاع، والموقع الرسمي للفعالية.

### GCC exhibition venues covered

| Venue | City | Country | Upcoming events (22 October 2026) | Names |
|---|---|---|---|---|
| ADNEC Centre Abu Dhabi | Abu Dhabi | UAE | 9 | English and Arabic |
| Oman Convention & Exhibition Centre (OCEC) | Muscat | Oman | 19 | English, Arabic for most |
| Riyadh Front Exhibition & Conference Center (RFECC) | Riyadh | Saudi Arabia | 3 | English, Arabic when published |

Counts include concerts and other public events. They change every week as venues add events.

Other venues were checked and left out. Their website terms forbid copying or commercial reuse of the content without written permission, so this Actor does not read them. This includes Dubai World Trade Centre, Expo Centre Sharjah, Qatar National Convention Centre and Exhibition World Bahrain.

### Trade show data you get

| Field | Meaning |
|---|---|
| `eventNameEn`, `eventNameAr` | Event name in English and Arabic, as the venue publishes it |
| `venue`, `venueAr` | Exhibition centre name |
| `city`, `cityAr`, `country`, `countryName`, `countryNameAr` | Location. `country` is AE, SA or OM |
| `startDate`, `endDate` | First and last day, yyyy-mm-dd |
| `status` | `upcoming`, `ongoing` or `past`, in local time |
| `daysUntilStart` | Days from today until the start |
| `organiser` | Organising company as the venue names it. Null when the venue names none |
| `eventType` | Venue's own label, such as Exhibition or Conference |
| `eventKind` | `trade` or `entertainment` |
| `sector`, `sectorAr` | Sector from the event name, such as `Energy and Utilities` |
| `hall` | Hall or space inside the venue, when published |
| `officialUrl` | The event's own website, when the venue links to it |
| `venueEventUrl` | Event page on the venue's website |
| `changeType`, `changedFields` | Change-only mode: `new` or `changed`, and which fields changed |

Sample record from a real run:

```json
{
  "id": "adnec:adipec-2026",
  "venueCode": "adnec",
  "eventNameEn": "ADIPEC 2026",
  "eventNameAr": "أديبك 2026",
  "venue": "ADNEC Centre Abu Dhabi",
  "venueAr": "مركز أدنيك أبوظبي",
  "city": "Abu Dhabi",
  "cityAr": "أبوظبي",
  "country": "AE",
  "countryName": "United Arab Emirates",
  "countryNameAr": "الإمارات العربية المتحدة",
  "startDate": "2026-11-02",
  "endDate": "2026-11-05",
  "status": "upcoming",
  "daysUntilStart": 11,
  "organiser": "dmg::events",
  "eventType": "Exhibition & Conference",
  "eventKind": "trade",
  "sector": "Energy and Utilities",
  "sectorAr": "الطاقة والمرافق",
  "hall": "Full Venue",
  "officialUrl": "https://www.adipec.com/",
  "venueEventUrl": "https://www.adnec.ae/en/eventlisting/adipec-2026",
  "changeType": null,
  "changedFields": [],
  "scrapedAt": "2026-10-22T09:56:00.251Z"
}
```

The Actor saves organiser companies only. It never saves contact people, emails or phone numbers.

### Trade show calendar tutorial

1. Open the Input tab.
2. Leave **Venues** empty to read all three venues, or pick some.
3. Set dates if you want a window. By default you get every event that has not ended yet.
4. Pick **Sectors** or add **Keywords**, such as `food`, `energy` or `معرض`.
5. Click Start. A full calendar takes about one to two minutes.
6. Download the results as JSON, CSV or Excel, or read them through the API.

#### Input example

```json
{
  "venues": ["adnec", "ocec"],
  "sectors": ["Energy and Utilities", "Food, Agriculture and Fisheries"],
  "startsWithinDays": 90,
  "changeOnly": false,
  "maxItems": 100
}
```

#### Input fields

| Field | Meaning |
|---|---|
| `venues` | `adnec`, `rfecc`, `ocec`. Empty means all |
| `fromDate` | Keep events ending on or after this date. Empty means today |
| `toDate` | Keep events starting on or before this date |
| `startsWithinDays` | Keep events starting within N days. 0 means no limit |
| `sectors` | Keep only these sectors |
| `includeEntertainment` | Also return concerts, sport, graduations and weddings. Off by default |
| `keywords` | Keep events whose name, organiser, type or sector contains a keyword |
| `changeOnly` | Return only new and changed events |
| `stateKey` | Name of the change-only memory |
| `maxItems` | Stop after this many events. 0 means no limit |

### Trade show change alerts

Turn on `changeOnly` and schedule the Actor once a week. The first run returns every event and remembers it. Later runs return an event only when it is new, or when its name, dates, organiser, type, hall or website changed. Changed events list the changed fields in `changedFields`. Use a different `stateKey` for each watch list.

Change-only mode does not report cancelled events. Venues remove them from their sites without notice.

### Sectors

The sector comes from keywords in the event name, in English and Arabic. It is a guide. The organiser may use a different category. Events with no match get `Other`. The 17 sectors are: Energy and Utilities, Water and Environment, Healthcare and Life Sciences, Food, Agriculture and Fisheries, Hospitality and Tourism, Construction and Real Estate, Technology and Telecom, Defence and Security, Transport and Logistics, Manufacturing and Industry, Finance and Investment, Education and Careers, Beauty, Fashion and Jewellery, Sport and Leisure, Government and Public Sector, Arts, Culture and Media, Other.

### Pricing

You pay a small start fee per run and a fee for each event saved to your dataset. Events skipped by your filters cost nothing. In change-only mode you pay only for new and changed events. See the price on the Pricing tab.

### Data sources and use

The Actor reads public pages and public APIs of the three venue websites. It sends a few requests per second at most and respects robots.txt. Dates, names and links are copied as the venue publishes them. Some venue entries have errors, such as an end date a year late. Check the event's own website before you book travel or space.

### Related Actor

[Gulf Tenders Radar](https://apify.com/maliksaid/gulf-tenders-radar) collects open government tenders from Oman, the UAE, Jordan and Lebanon. Use both to follow Gulf business opportunities.

### FAQ

#### Does it cover Dubai exhibitions?

No. Dubai World Trade Centre and Expo Centre Sharjah publish terms that forbid commercial reuse of their content. Abu Dhabi, Riyadh and Muscat are covered.

#### Can I search in Arabic?

Yes. Arabic keywords match anywhere in a word, so `معرض` finds `المعرض`. Arabic names are filled for most ADNEC and OCEC events.

#### Why is the organiser empty for some events?

The venue did not name one. RFECC and OCEC rarely publish the organiser. ADNEC usually does.

#### Can an AI agent use it?

Yes. The output is flat JSON with stable IDs and ISO dates.

#### How far back does it go?

Set `fromDate` to a past date to get past events. History goes back about one year.

### Support

Open an issue on the Issues tab. Tell us the venue and the event, and we will check it.

# Actor input Schema

## `venues` (type: `array`):

Exhibition centres to read. Leave empty to read all three: ADNEC Centre Abu Dhabi (UAE), Riyadh Front Exhibition & Conference Center (Saudi Arabia) and Oman Convention & Exhibition Centre (Oman).

## `fromDate` (type: `string`):

Keep events that end on or after this date (yyyy-mm-dd). Leave empty for today. Past events go back about one year.

## `toDate` (type: `string`):

Keep events that start on or before this date (yyyy-mm-dd). Leave empty for no end.

## `startsWithinDays` (type: `integer`):

Keep events that start within this many days from today. 0 means no limit.

## `sectors` (type: `array`):

Keep only events in these sectors. The sector comes from the event name. Leave empty for all sectors.

## `includeEntertainment` (type: `boolean`):

By default the Actor returns trade shows, exhibitions, conferences and forums only. Turn this on to also get concerts, comedy shows, sport events, graduations and weddings.

## `keywords` (type: `array`):

Keep only events whose name, organiser, type or sector contains at least one keyword. English keywords match whole words. Arabic keywords match anywhere in a word. Leave empty to keep every event.

## `changeOnly` (type: `boolean`):

Return only events that are new, or whose name, dates, organiser, type, hall or website changed since the last change-only run with the same state key. Schedule the Actor weekly with this on to get a feed of calendar changes.

## `stateKey` (type: `string`):

Name of the memory that change-only mode uses. Use a different key for each separate watch list.

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

Stop after saving this many events. Set 0 for no limit. A full calendar is about 60 to 100 events.

## Actor input object example

```json
{
  "venues": [],
  "fromDate": "",
  "toDate": "",
  "startsWithinDays": 0,
  "sectors": [],
  "includeEntertainment": false,
  "keywords": [],
  "changeOnly": false,
  "stateKey": "default",
  "maxItems": 100
}
```

# 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 = {
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("maliksaid/gcc-trade-show-calendar").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 = { "maxItems": 100 }

# Run the Actor and wait for it to finish
run = client.actor("maliksaid/gcc-trade-show-calendar").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 '{
  "maxItems": 100
}' |
apify call maliksaid/gcc-trade-show-calendar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maliksaid/gcc-trade-show-calendar"
        }
    }
}
```

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/IaLd6x8QnU4CiSkih/builds/mZzXXgedi46nJkMwh/openapi.json
