# Dubai Business Signals (`dyalaalsharif/dubai-business-signals`) Actor

Verified Dubai mainland business registry intelligence from official DET data. Find activity expansions, license cancellations, and expiry extensions with bilingual company details, license history, confidence scoring, and buyer-ready filtering.

- **URL**: https://apify.com/dyalaalsharif/dubai-business-signals.md
- **Developed by:** [Dyala Alsharif](https://apify.com/dyalaalsharif) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$20.00 / 1,000 business signals

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

## Dubai Business Signals

Turn official Dubai mainland business registry data into structured, buyer-ready business change signals.

Dubai Business Signals helps sales teams, market researchers, suppliers, consultants, corporate service providers, data teams, and other B2B users identify meaningful changes in Dubai mainland businesses without manually reviewing large government datasets.

Instead of redistributing raw registry rows, the Actor transforms official data into structured business events such as:

- companies adding licensed business activities
- companies making broader multi-activity expansions
- licenses becoming cancelled
- active licenses receiving later expiry dates

Each returned row represents one buyer-ready `business-signal`.

***

### What this Actor currently detects

The current August–September 2026 edition includes four signal types.

#### `ACTIVITY_ADDED`

A company added one qualifying licensed business activity after its original license issue date.

This signal is derived from the available August 2026 License Business Activities snapshot.

***

#### `MULTI_ACTIVITY_EXPANSION`

A company added multiple qualifying licensed activities during the monitored period.

Activities belonging to the same detected company expansion are grouped into one signal instead of being returned as separate paid rows.

For example, if one company adds eight activities as part of the same detected expansion, the Actor returns one business signal containing all eight activities.

***

#### `LICENSE_CANCELLED`

A license existed in both compared License Master snapshots and changed from a non-cancelled status to:

`Cancelled`

The signal includes the previous status, current status, official cancellation date, license details, and matched company name.

***

#### `LICENSE_EXPIRY_EXTENDED`

An active license existed in both compared License Master snapshots and its expiry date moved forward while the license remained active.

For example:

`2026-10-09 → 2027-10-09`

This is reported as an expiry-extension signal.

The source snapshots do not provide the exact administrative transaction date of the extension. Therefore the signal uses the later snapshot date as the observation date and explicitly identifies the date basis as:

`snapshot_observed_date`

This avoids claiming an exact renewal transaction date that is not present in the source data.

***

### Current edition

Current data edition:

**August–September 2026 business change feed**

The current buyer-ready inventory contains:

- **694** August activity expansion events
- **5,068** September license cancellation signals with matched company names
- **29,950** September license expiry-extension signals with matched company names
- **35,712 total buyer-ready signals**

Coverage includes:

- Dubai mainland licenses
- Commercial, Professional, and Industrial license categories
- English company names where available
- Arabic company names where available
- English and Arabic activity descriptions for activity signals
- license issue and expiry dates
- previous and current license status where applicable
- previous and current expiry dates where applicable
- high-confidence signals after additional validation

This is a **snapshot-based intelligence product**.

It is not a live company registry.

***

### Source data

Signals are derived from official open datasets published through Data Dubai and supplied by the Dubai Department of Economy and Tourism (DET).

The current product uses information from:

- Trade License Master in Dubai's Mainland
- Trade Name
- License Business Activities

Relevant source snapshots include:

- License Master baseline: `2026-08-03`
- License Business Activities: `2026-08-04`
- Trade Name snapshot available for enrichment: `2026-08-20`
- License Master comparison snapshot: `2026-09-22`

The Actor transforms these datasets into business-change intelligence.

It does not simply redistribute the original raw source files.

***

### Why new September licenses are not currently published

The September License Master comparison identified date-certain newly issued licenses.

However, the available Trade Name snapshot used for company-name enrichment predates those September licenses.

As a result, the newly issued September license records could not currently be matched to reliable company names from the available Trade Name snapshot.

Rather than sell incomplete or misleading company-level records, `NEW_LICENSE` signals are excluded from the current buyer-ready public feed.

They may be added in a future edition when suitable official trade-name data becomes available.

***

### Understanding the signal date

The meaning of `event_date` depends on the signal type.

#### Activity signals

For:

- `ACTIVITY_ADDED`
- `MULTI_ACTIVITY_EXPANSION`

the signal date comes from the activity addition date in the official activity dataset.

The output identifies this as:

`activity_added_date`

***

#### License cancellation signals

For:

`LICENSE_CANCELLED`

the signal date is the official cancellation date available in the License Master dataset.

The output identifies this as:

`official_cancel_date`

***

#### License expiry-extension signals

For:

`LICENSE_EXPIRY_EXTENDED`

the official snapshots prove that the expiry date moved forward, but they do not provide the exact administrative transaction date.

The signal date therefore represents the later snapshot date on which the change was observed.

The output identifies this as:

`snapshot_observed_date`

***

### Example: activity expansion signal

```json
{
  "event_type": "MULTI_ACTIVITY_EXPANSION",
  "signal_confidence": "HIGH",
  "event_date": "2026-08-01",
  "event_date_basis": "activity_added_date",
  "company_name_en": "BETTER LIFE L.L.C",
  "company_name_ar": "بيتر لايف ش.ذ.م.م",
  "license_number": "513762",
  "license_category": "Commercial",
  "license_status": "Active",
  "license_issue_date": "1999-08-21",
  "license_expiry_date": "2027-08-20",
  "activities_added_count": 8,
  "activities_added": [
    {
      "activity_code": "725001",
      "activity_name_en": "Computer Repairing & Maintenance",
      "activity_name_ar": "اصلاح اجهزة الحاسب الآلي وصيانتها",
      "added_date": "2026-08-01"
    }
  ],
  "data_quality_flags": []
}
```

***

### Example: license cancellation signal

```json
{
  "event_type": "LICENSE_CANCELLED",
  "signal_confidence": "HIGH",
  "event_date": "2026-09-21",
  "event_date_basis": "official_cancel_date",
  "company_name_en": "VIVAAH MIDDLE EAST NOVELTIES TRADING L.L.C",
  "license_number": "739105",
  "license_category": "Commercial",
  "previous_license_status": "under admin cancellation",
  "current_license_status": "Cancelled",
  "cancel_date": "2026-09-21",
  "previous_expiry_date": "2025-07-26",
  "current_expiry_date": "2025-07-26"
}
```

***

### Example: license expiry-extension signal

```json
{
  "event_type": "LICENSE_EXPIRY_EXTENDED",
  "signal_confidence": "HIGH",
  "event_date": "2026-09-22",
  "event_date_basis": "snapshot_observed_date",
  "license_number": "1547449",
  "license_category": "Commercial",
  "previous_license_status": "Active",
  "current_license_status": "Active",
  "previous_expiry_date": "2026-10-09",
  "current_expiry_date": "2027-10-09"
}
```

***

## Input filters

The Actor can be queried directly from the Apify Console or API.

### Event types

Choose one or more:

- `ACTIVITY_ADDED`
- `MULTI_ACTIVITY_EXPANSION`
- `LICENSE_CANCELLED`
- `LICENSE_EXPIRY_EXTENDED`

All four are selected by default.

***

### Activity keywords

Optionally search for words or activity codes contained in:

- English activity names
- Arabic activity names
- activity codes

Example keywords:

- `technology`
- `repair`
- `restaurant`
- `marketing`
- `real estate`

This filter applies only to:

- `ACTIVITY_ADDED`
- `MULTI_ACTIVITY_EXPANSION`

It does **not** remove license cancellation or expiry-extension signals.

Leave the field empty to include all activities.

***

### Company name or license number

Search for a partial match against:

- English company name
- Arabic company name
- Dubai license number

This filter can be used across the available signal types.

***

### License categories

Filter by:

- Commercial
- Professional
- Industrial

***

### Signal date range

Use:

- `Signal date from`
- `Signal date to`

to restrict the result window.

Remember that the signal date has a different documented meaning depending on the event type.

***

### Minimum activities added

Use this filter to focus on larger activity expansions.

For example:

- `1` includes single-activity additions
- `2` focuses on businesses adding at least two activities
- `5` focuses on broader multi-activity expansions

This filter applies only to:

- `ACTIVITY_ADDED`
- `MULTI_ACTIVITY_EXPANSION`

It does not remove cancellation or expiry-extension signals.

***

### Sort results

Choose:

#### Newest signals first

Sort primarily by signal date.

#### Largest activity expansions first

Prioritize signals with the largest number of activities added.

This option is primarily useful for activity-expansion research.

***

### Pagination

Use:

`Start from result`

as a zero-based offset to retrieve later pages of matching results.

***

### Number of signals

Choose how many matched signals the run should return.

The current maximum is:

**100 signals per run**

***

## Example input: September cancellations

```json
{
  "eventTypes": [
    "LICENSE_CANCELLED"
  ],
  "activityKeywords": [],
  "companyNameQuery": "",
  "licenseCategories": [
    "Commercial",
    "Professional",
    "Industrial"
  ],
  "addedFrom": "2026-09-01",
  "addedTo": "2026-09-22",
  "minActivitiesAddedInWindow": 1,
  "sortBy": "latest",
  "offset": 0,
  "maxResults": 20
}
```

***

## Example input: large activity expansions

```json
{
  "eventTypes": [
    "MULTI_ACTIVITY_EXPANSION"
  ],
  "activityKeywords": [],
  "companyNameQuery": "",
  "licenseCategories": [
    "Commercial",
    "Professional",
    "Industrial"
  ],
  "addedFrom": "2026-07-06",
  "addedTo": "2026-08-04",
  "minActivitiesAddedInWindow": 2,
  "sortBy": "largest_expansion",
  "offset": 0,
  "maxResults": 20
}
```

***

## Output views

The Actor provides multiple dataset views.

### Business signals

A clean buyer-facing overview including fields such as:

- event type
- signal date
- company name
- license number
- license category
- license status
- previous license status
- current license status
- previous expiry date
- current expiry date
- number of activities added
- signal confidence

Fields that do not apply to a particular event type are left blank.

For example, a cancellation signal does not have added activities.

***

### Full details

The detailed view can include:

- event type
- confidence
- signal date
- signal date basis
- English company name
- Arabic company name
- license number
- license category
- license status
- license issue date
- current license expiry
- previous license status
- current license status
- previous expiry date
- current expiry date
- cancellation date
- activity expansion period
- activities added
- English and Arabic activity details
- quality flags
- verification information
- source snapshot metadata

***

### All fields

The complete Actor output is available for API, automation, export, and downstream processing.

***

## Example use cases

### B2B sales research

Identify businesses experiencing observable registry changes that may be useful for prospect research.

Examples include:

- new licensed activities
- broader registered activity footprints
- recent expiry extensions

***

### Market research

Study business change patterns across Dubai mainland licenses.

***

### Corporate services

Monitor license status changes, expiry extensions, and registered activity changes.

***

### Supplier and service-provider research

Identify companies entering or expanding into registered activity areas relevant to:

- equipment
- technology
- maintenance
- logistics
- professional services
- operational support

A registry signal is useful for research prioritization but is not proof that the business intends to buy anything.

***

### Competitive intelligence

Observe changes in:

- licensed activity scope
- license status
- expiry dates

within selected companies or sectors.

***

### CRM enrichment

Use license-number or company-name searches to enrich internal company research.

***

### Data and automation workflows

Use structured results in:

- internal dashboards
- CRM systems
- data pipelines
- market-monitoring workflows
- research systems
- scheduled Apify runs
- API-based applications

***

## Data-quality safeguards

Official registry datasets can contain duplicate records, delayed updates, historical rows, conflicting values, or records originating from different issuing authorities.

The underlying signal-generation process therefore applies additional validation rather than treating every source row as a buyer-ready event.

Quality controls used in the current product include:

- Dubai mainland authority filtering
- license-number deduplication
- latest source-record selection
- license-status transition comparison
- cancellation-date validation
- expiry-date comparison
- activity-status validation
- activity timing checks
- company-name matching
- trade-name authority validation
- grouping of multi-activity expansions
- removal of company-name matches that are ambiguous across authorities

September public signals are published only when a suitable company-name match is available from the current Trade Name source snapshot.

***

## Signal confidence

Current buyer-ready events are marked:

`HIGH`

This means the event satisfied the product's current validation rules.

`HIGH` confidence refers to confidence in the **detected registry change**.

It does not imply confidence about the company's commercial intentions, finances, strategy, or future behavior.

***

## Important limitations

A business signal means that a change was detected in official registry data.

It does **not** mean that the company:

- intends to purchase a product
- is actively searching for a supplier
- is hiring
- has increased revenue
- is profitable
- is financially healthy
- is opening a new physical location
- has confirmed a commercial expansion outside the registry
- has completed a specific administrative transaction on the observation date

For `LICENSE_EXPIRY_EXTENDED`, the source proves that the expiry date moved forward between snapshots. It does not expose the exact administrative transaction date that caused the change.

Users should independently verify information before making business, legal, financial, compliance, credit, or investment decisions.

***

## Billing

Dubai Business Signals uses Pay Per Event pricing.

Current price:

**$20 per 1,000 business signals**

Equivalent to:

**$0.02 per returned business signal**

The billable event is:

`business-signal`

You are charged for buyer-ready signal records returned by the Actor, subject to the run's configured spending limit.

A multi-activity company expansion is grouped into one business signal so users are not charged separately for every activity belonging to the same detected expansion.

***

## API and automation

The Actor can be run through:

- Apify Console
- Apify API
- scheduled Actor runs
- integrations
- automation workflows

Results are stored in the run's default dataset and can be exported using formats supported by Apify.

***

## Current roadmap

Potential future additions include:

- newly issued business licenses once suitable official name enrichment is available
- activity cancellations
- additional license-status transitions
- upcoming license-expiry windows
- trade-name changes
- address changes where suitable official data is available
- newer recurring Dubai business snapshots
- additional buyer-oriented filters and signal categories

Future signal types are not part of the current product unless they appear explicitly in the Actor input and output.

***

## Summary

The current Dubai Business Signals edition converts official Dubai mainland registry snapshots into **35,712 structured buyer-ready business signals** covering:

- activity additions
- multi-activity expansions
- license cancellations
- license expiry extensions

The product is designed to make large public registry datasets easier to search, filter, automate, and use for business research while preserving clear limitations around what registry changes do — and do not — prove.

# Actor input Schema

## `eventTypes` (type: `array`):

Choose one or more business signal types.

## `activityKeywords` (type: `array`):

Optional words or activity codes to match in English or Arabic. This filter applies only to Activity added and Multi-activity expansion signals. Leave empty for all activities.

## `companyNameQuery` (type: `string`):

Optional partial match against English company name, Arabic company name, or license number.

## `licenseCategories` (type: `array`):

Leave all selected to include Commercial, Professional, and Industrial licenses.

## `addedFrom` (type: `string`):

Start date for the signal window. Activity signals use the activity-added date, cancellations use the official cancellation date, and expiry extensions use the date the change was observed in the registry snapshot.

## `addedTo` (type: `string`):

End date for the signal window.

## `minActivitiesAddedInWindow` (type: `integer`):

Applies only to Activity added and Multi-activity expansion signals. Use 2 or more to focus on broader activity expansion events. This setting does not remove cancellation or expiry-extension signals.

## `sortBy` (type: `string`):

Sort all signals by newest event first, or prioritize the largest activity-expansion events.

## `offset` (type: `integer`):

Zero-based offset for pagination. Use this to retrieve later pages of matching signals.

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

Maximum paid business-signal records returned by this run.

## Actor input object example

```json
{
  "eventTypes": [
    "ACTIVITY_ADDED",
    "MULTI_ACTIVITY_EXPANSION",
    "LICENSE_CANCELLED",
    "LICENSE_EXPIRY_EXTENDED"
  ],
  "activityKeywords": [],
  "companyNameQuery": "",
  "licenseCategories": [
    "Commercial",
    "Professional",
    "Industrial"
  ],
  "addedFrom": "2026-07-06",
  "addedTo": "2026-09-22",
  "minActivitiesAddedInWindow": 1,
  "sortBy": "latest",
  "offset": 0,
  "maxResults": 20
}
```

# Actor output Schema

## `businessSignals` (type: `string`):

Clean overview of matched Dubai mainland business registry signals.

## `fullDetails` (type: `string`):

Expanded signal details including bilingual company names, license status transitions, expiry changes, activity additions, verification details, and source snapshots.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("dyalaalsharif/dubai-business-signals").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("dyalaalsharif/dubai-business-signals").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 '{}' |
apify call dyalaalsharif/dubai-business-signals --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dyalaalsharif/dubai-business-signals"
        }
    }
}
```

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/6PM2XfVZF40pus0QU/builds/LJC4fgswfZeyr9ic4/openapi.json
