# MENA Companies Directory: Egypt, UAE, Saudi LEI Company Data (`alfhar/mena-companies-lei-directory`) Actor

Search registered companies, banks and funds in Egypt, UAE, Saudi Arabia and 19 more MENA countries with legal name, address, registration number and LEI. Input: countries, search words, status. Output: one row per legal entity. Official GLEIF open data (CC0), no login, no personal data.

- **URL**: https://apify.com/alfhar/mena-companies-lei-directory.md
- **Developed by:** [Alfhar Development](https://apify.com/alfhar) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## MENA Companies Directory: Egypt, UAE, Saudi Arabia and 19 more countries, from the official LEI register

Search **registered companies, banks, funds and holding companies in Egypt, the UAE, Saudi Arabia, Qatar, Kuwait, Jordan, Morocco and more** by country and name. You give **countries and optional search words**; you get **one row per legal entity** with the legal name (often in Arabic or English), registered address, city, legal form, **commercial registration number**, registration authority, creation date and the **LEI** code.

Use it to build B2B lead lists of real legal entities, check that a counterparty exists, enrich a customer list with registration numbers, or map banks and large corporates in the region. Data comes from the **official GLEIF Global LEI Index** (open CC0 data), with no login and no scraping of a website.

### What you get

- **22 countries:** Egypt, UAE, Saudi Arabia, Qatar, Kuwait, Bahrain, Oman, Jordan, Lebanon, Iraq, Morocco, Tunisia, Algeria, Libya, Yemen, Syria, Iran, Djibouti, Palestine, Sudan, Turkey, Israel.
- **Search words** in names and record fields (bank, cement, holding, pharma, telecom, Orascom...).
- **Filters** for active or inactive entities, LEI status (issued, lapsed...) and city.
- **Fields:** LEI, legal name, other names, address, postal code, city, headquarters address, legal form, category, registration authority and number, entity status, creation date, LEI renewal dates and a link to the official record.
- **No personal data.** Entities registered as individual sole proprietors are removed from the results.

### Input

| Field | Meaning | Example |
|---|---|---|
| `countries` | Country of the legal address | `["Egypt", "United Arab Emirates"]` |
| `searchTerms` | Words to search, each separately | `["bank", "cement"]` |
| `cities` | Optional city filter (name as registered) | `["Cairo", "Dubai"]` |
| `entityStatus` | `ACTIVE`, `INACTIVE` or `ANY` | `"ACTIVE"` |
| `leiStatuses` | Optional LEI statuses | `["ISSUED"]` |
| `maxCompanies` | Stop after this many companies | `100` |

Example input:

```json
{
  "countries": ["Egypt", "Saudi Arabia"],
  "searchTerms": ["bank", "cement"],
  "entityStatus": "ACTIVE",
  "maxCompanies": 200
}
```

### Output

Example rows (real output, trimmed):

| Company | Country | City | Legal form | Registration no. | LEI status |
|---|---|---|---|---|---|
| NATIONAL BANK OF EGYPT | Egypt | CAIRO | JOINT STOCK COMPANY | 200000462 | ISSUED |
| بنك اتش اس بى سى مصر شركة مساهمة مصرية | Egypt | CAIRO | SOCIETE ANONYME EGYPTIENNE | 218992 | ISSUED |

Full JSON item:

```json
{
  "lei": "2138001QZGOK42KGQM03",
  "legalName": "NATIONAL BANK OF EGYPT",
  "otherNames": [],
  "countryCode": "EG",
  "country": "Egypt",
  "city": "CAIRO",
  "region": "EG-C",
  "address": "NATIONAL BANK OF EGYPT TOWER, 1187 CORNICHE EL NIL, CAIRO PLAZA",
  "postalCode": "4311001",
  "headquartersCity": "CAIRO",
  "category": "GENERAL",
  "legalFormOther": "JOINT STOCK COMPANY",
  "entityStatus": "ACTIVE",
  "creationDate": "1965-01-01",
  "registrationAuthorityId": "RA000179",
  "registrationNumber": "200000462",
  "leiStatus": "ISSUED",
  "initialRegistrationDate": "2017-10-31",
  "nextRenewalDate": "2027-11-05",
  "leiUrl": "https://search.gleif.org/#/record/2138001QZGOK42KGQM03",
  "source": "GLEIF Global LEI Index (CC0 1.0)"
}
```

### Python example

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("alfhar/mena-companies-lei-directory").call(run_input={
    "countries": ["Egypt"],
    "searchTerms": ["bank"],
    "maxCompanies": 50,
})
for c in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(c["legalName"], c["city"], c["registrationNumber"], c["lei"])
```

### Use cases

- Lead lists of banks, funds and large corporates in a MENA country.
- KYC and supplier checks: confirm the legal name, address and registration number of a counterparty.
- Enriching a CRM with registration numbers and legal forms.
- Market maps of regulated and financial entities by country.

### Limitations

- The register covers entities that **hold an LEI**: banks, funds, listed and large companies, and firms that trade financial instruments or need an LEI for contracts. It is **not** a full commercial register, and most small Egyptian or Gulf businesses are not in it. Use it for corporates and financial entities, not for every shop.
- Names appear as the entity registered them, in Arabic, English or both, with inconsistent capitalisation.
- The source cannot filter by city, so the city filter is applied by this Actor after download. Combine it with search words for fast runs.
- No phone numbers, e-mail addresses or websites are available in this source.

### Data source and licence

Data: **GLEIF, the Global Legal Entity Identifier Foundation**, Global LEI Index, retrieved through the public GLEIF API (`api.gleif.org`). LEI data is published under **Creative Commons CC0 1.0** and may be reused and redistributed, including commercially. Credit is appreciated: *"Source: GLEIF (Global Legal Entity Identifier Foundation)"*. This Actor is not affiliated with or endorsed by GLEIF.

### Pricing

Pay per result, no API key needed. Billing is pay per event: a small fee when a run starts plus a fee for every company returned. Set a maximum cost per run and the Actor stops at your limit (the minimum allowed is $0.10). See the pricing panel on this page for the current rates.

### Support

Need another country, indicator or field? Use the **Issues** tab of this Actor.

# Actor input Schema

## `countries` (type: `array`):

Country of the legal address.

## `searchTerms` (type: `array`):

Words in the company name or other record fields, for example bank, cement, holding, pharma, Orascom. Each word is searched separately. Empty = all entities.

## `cities` (type: `array`):

Optional city filter applied to the legal or headquarters address (exact name as registered, for example Cairo, Dubai, Riyadh). The source cannot filter by city, so combine it with search words to keep runs short.

## `entityStatus` (type: `string`):

ACTIVE returns operating entities; ANY includes inactive ones.

## `leiStatuses` (type: `array`):

Leave empty for all. ISSUED means the identifier is current; LAPSED means the renewal is overdue.

## `maxCompanies` (type: `integer`):

Stop after this many companies.

## Actor input object example

```json
{
  "countries": [
    "Egypt",
    "United Arab Emirates"
  ],
  "entityStatus": "ACTIVE",
  "maxCompanies": 100
}
```

# Actor output Schema

## `results` (type: `string`):

All companies in the default dataset.

# 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 = {
    "countries": [
        "Egypt",
        "United Arab Emirates"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("alfhar/mena-companies-lei-directory").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 = { "countries": [
        "Egypt",
        "United Arab Emirates",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("alfhar/mena-companies-lei-directory").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 '{
  "countries": [
    "Egypt",
    "United Arab Emirates"
  ]
}' |
apify call alfhar/mena-companies-lei-directory --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,alfhar/mena-companies-lei-directory"
        }
    }
}
```

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/TwEHPPBGWaZv10qHu/builds/ZkR1bAb9r6ulCSoSa/openapi.json
