# Yellow Pages UAE Scraper: Business Listings | $1/1K (`one_dollar_store/yellowpages-uae-businesses-scraper`) Actor

UAE businesses from yellowpages-uae.com by category and emirate: phone, mobile, company email, website, address, coordinates, categories. $1 per 1,000 results, platform usage included.

- **URL**: https://apify.com/one_dollar_store/yellowpages-uae-businesses-scraper.md
- **Developed by:** [One Dollar Store](https://apify.com/one_dollar_store) (community)
- **Categories:** Lead generation, Business
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

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

## Yellow Pages UAE Scraper: business listings by category and emirate

**$1 per 1,000 businesses. Platform usage included. No rental, no minimum.**

Give it a category such as "restaurants" or "valves", optionally an emirate, and it returns one row for each business listed on yellowpages-uae.com: phone, mobile, the company's own email when it has one, website, address, map position, categories and more. There is one flat price, platform usage included, so there is no separate compute or proxy bill.

[Open it in Apify Console](https://console.apify.com/actors/zmgmAkwq2d20JYSv9/input)

### How much does Yellow Pages UAE Scraper cost?

| Businesses | Cost |
|---|---|
| 1,000 | $1.00 |
| 10,000 | $10.00 |
| 100,000 | $100.00 |

Plus $0.001 per run. A monthly pull of 8,000 listings across a few categories costs about $8.00. Platform usage is included, so the bill follows the number of businesses and nothing else.

### Why use it

- **Wide rows.** Up to 49 fields per business: ids, name, branch count, every phone and mobile with an international form, fax, company email with its domain, website with its domain, address, P.O. Box, city, emirate, map position, categories, brands, description, established year, social links, listing level and the search that found it. A free listing returns about 28 of them, a paid listing about 40.
- **Company emails only.** Most free listings carry a shared placeholder address of the directory. The actor drops it, so `email` is an address the company chose. In a test of 5,000 businesses, 602 rows (12 percent) had one; the placeholder was on 4,394 rows.
- **Filters that cost no extra request.** Keep only businesses with an email, a website, map coordinates or a paid listing, and choose the emirate. The listing page already carries what a filter needs.
- **Fast and light.** One request returns 20 businesses. All 1,330 restaurants of the UAE took 200 seconds in a test, and 5,000 businesses from six categories took 13 minutes, with no browser and no residential proxy.

### How to use Yellow Pages UAE Scraper

1. Open the actor, type a category, pick an emirate if you want one, press **Start**.
2. Or paste this input:

```json
{ "categories": ["restaurants", "hospitals"], "locations": ["dubai", "abu-dhabi"], "requireWebsite": true, "maxItems": 500 }
```

3. Download the results as JSON, CSV or Excel, or read them through the API.

### Use it from code

```bash
curl -X POST "https://api.apify.com/v2/acts/one_dollar_store~yellowpages-uae-businesses-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"categories": ["restaurants"], "locations": ["dubai"], "maxItems": 50}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("one_dollar_store/yellowpages-uae-businesses-scraper").call(
    run_input={"categories": ["valves"], "requireEmail": True, "maxItems": 100}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["name"], item.get("email"), item.get("phoneE164"), item.get("website"))
```

### Use it from an AI assistant

Claude, ChatGPT, Cursor and other assistants can call this actor through Apify's MCP server. Add it with this server address:

```
https://mcp.apify.com?tools=one_dollar_store/yellowpages-uae-businesses-scraper
```

Then ask, for example: "List 100 valve suppliers in the UAE from Yellow Pages UAE that have a company email, with phone and website."

### Switching from another Yellow Pages UAE actor

Most Yellow Pages UAE actors take search terms or listing addresses, an emirate list and a result limit. Here they are `categories` (a list), `locations` (emirates), `startUrls` (listing addresses) and `maxItems`. The core fields are `name`, `phone`, `email`, `website`, `city`, `address`, `listingId` and `listingUrl`. Business profile pages are not read, see Limits.

### Where the data comes from

For each category the actor opens the listing pages on yellowpages-uae.com (`/uae/<category>`, or `/uae/<emirate>/<category>` for a place), 20 businesses a page, and reads the business records that the page itself carries. A category the site has no page for is tried in its singular and plural form, then skipped and listed in the run summary. You can also paste listing page addresses.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `categories` | list of text | none | Category names, for example `restaurants`, `hospitals`, `valves`, `general trading`. |
| `locations` | list | whole UAE | `abu-dhabi`, `dubai`, `sharjah`, `ajman`, `umm-al-quwain`, `ras-al-khaimah`, `fujairah`, `al-ain`. Each category is searched in each place. |
| `startUrls` | list of text | none | Listing page addresses such as `https://www.yellowpages-uae.com/uae/dubai/restaurants`. `?page=3` starts at page 3. |
| `maxPagesPerSearch` | number | 100 | Pages per category and place (1 to 1,000). A page lists 20 businesses. |
| `requireEmail` | yes/no | no | Keep businesses with a company email. |
| `requireWebsite` | yes/no | no | Keep businesses with a website. |
| `requireCoordinates` | yes/no | no | Keep businesses with a latitude and longitude. |
| `paidListingsOnly` | yes/no | no | Keep businesses with a paid listing. |
| `maxItems` | number | 100 | Total businesses for the run. Minimum 10, maximum 100,000. |
| `proxyConfiguration` | object | off | The actor connects directly. After two refusals in a row it uses the Apify datacenter proxy by itself. |

Example with filters:

```json
{
  "categories": ["air conditioning engineers installation and maintenance", "building materials"],
  "locations": ["dubai", "sharjah"],
  "requireEmail": true,
  "requireCoordinates": true,
  "maxItems": 1000
}
```

### What data does Yellow Pages UAE Scraper return?

| Field | Meaning |
|---|---|
| `listingId`, `companyId`, `listingUrl`, `branchCount`, `branchName` | Directory ids, the directory address of the business and its branches. |
| `name`, `category`, `categories`, `categorySlugs`, `brands` | Business name, the category of the page it was found on, every category it is listed under and the brands it lists. |
| `phone`, `phoneE164`, `mobile`, `mobileE164`, `secondaryPhone`, `secondaryMobile`, `fax` | Numbers as listed, and the first two in international form. |
| `email`, `emailDomain`, `emailIsFreeMail` | The company's own email, its domain and whether it is on a free mail service. |
| `website`, `websiteDomain`, `facebookUrl`, `instagramUrl`, `linkedinUrl`, `twitterUrl`, `youtubeUrl` | Website and social links the business lists. |
| `address`, `poBox`, `poBoxCity`, `city`, `cityCode`, `emirate`, `countryCode`, `fullAddress`, `latitude`, `longitude` | Address parts and map position. |
| `description`, `establishedYear` | The text and founding year a business wrote for its listing (mostly paid listings). |
| `listingTier`, `adType`, `isHighlighted`, `hasLogo`, `photoCount`, `resultsInCategory` | Listing level and how big the category was when the page was read. |
| `searchCategory`, `searchLocation`, `sourceUrl`, `scrapedAt` | The search that found the row, the page it came from and when. |

Fields a listing does not have are left out of the row, never filled with guesses.

### Sample results

Real rows from test runs on 1 November 2026 (long lists shortened, some fields left out to fit).

```json
[
  {"listingId": "147330", "name": "18 Buffet", "category": "Restaurants", "phone": "04-2999115", "phoneE164": "+97142999115", "address": "Al Garhoud", "city": "Dubai", "emirate": "Dubai", "countryCode": "AE", "latitude": 25.15103, "longitude": 55.20274, "listingTier": "free", "searchCategory": "restaurants", "searchLocation": "Dubai"},
  {"listingId": "128203", "name": "Al Hallab Restaurant and Sweets LLC", "category": "Restaurants", "phone": "04-2823388", "phoneE164": "+97142823388", "email": "garhoud@alhallabrestaurant.com", "emailDomain": "alhallabrestaurant.com", "website": "https://www.alhallabrestaurant.com", "websiteDomain": "alhallabrestaurant.com", "address": "Al Garhoud", "poBox": "40350", "city": "Dubai", "emirate": "Dubai", "listingTier": "free"},
  {"listingId": "176226", "companyId": "323375", "name": "Al Asas Valves Trading LLC", "category": "Valves", "categories": ["Actuator Valves", "Air Valves", "Ball Valves"], "phone": "04-2549972", "phoneE164": "+97142549972", "mobileE164": "+971509383476", "email": "sales@alasasvalves.com", "emailDomain": "alasasvalves.com", "website": "https://alasasvalves.com", "address": "Office MD 279, Unique World Business Center, Hamsah-A Building (Ansar Gallery Building), Al Karama", "poBox": "90632", "city": "Dubai", "emirate": "Dubai", "latitude": 25.251281, "longitude": 55.308612, "listingTier": "paid", "branchCount": 2},
  {"listingId": "115633", "name": "Rajab Trading Co LLC", "category": "Valves", "email": "sales@rajabtradinguae.com", "website": "https://rajabonline.ae", "facebookUrl": "https://www.facebook.com/rajabtradingllc", "instagramUrl": "https://www.instagram.com/rajabtradingllc/", "linkedinUrl": "https://www.linkedin.com/company/rajab-trading-company-llc", "city": "Abu Dhabi", "latitude": 24.375124, "longitude": 54.507345, "listingTier": "paid", "photoCount": 1}
]
```

### Limits

- **Speed.** Requests go out one at a time, at least one second apart. A page of 20 businesses takes about 3 seconds, so a run delivers about 6 businesses a second (5,000 businesses in 13 minutes in a test).
- **Company emails are rare.** Most listings are free listings that carry the directory's shared placeholder address. That address is dropped, so about 1 business in 8 has an `email`. Phone and, for about a quarter, a website are the usual contact points.
- **Business profile pages are not read.** The site answers automated requests for individual profile pages with a block page (HTTP 403), so the actor reads only what the listing pages carry. Long descriptions, brands and social links appear for paid listings, which are a small share of most categories.
- **Map positions on about 1 business in 7.** Positions outside the UAE are dropped.
- **A category needs a page on the site.** The actor tries the name as you wrote it and its plural or singular form. A category with no page is skipped and listed in the run summary.
- **Narrow filters.** If 25 pages in a row hold no business that fits your filters, that search stops, so a very narrow filter on a big category returns what it found so far.
- **Refusals.** The site refused a connection now and then in tests. After two refusals in a row the actor switches to the Apify datacenter proxy, and after three in a row it stops with the rows it has. It does not try to solve a verification page.
- **Restarts.** If Apify moves a long run to another server, the actor carries on from a saved progress record and does not deliver a business twice.
- Public pages only, no login.

### FAQ

**How much does it cost to scrape 10,000 Yellow Pages UAE businesses?**
$10, plus $0.001 per run. Compute is included.

**Do I pay for compute or proxy on top?**
No. The price covers the run. There is no residential proxy and no browser.

**Can I get email addresses?**
Only the ones businesses list for themselves. The directory fills most free listings with a shared placeholder address, and the actor leaves that out. Expect an email on about 12 businesses in 100.

**Which categories can I use?**
The names the directory uses, such as `restaurants`, `hospitals`, `clinics`, `valves`, `general trading`, `real estate` or `car rental hire and leasing`. Paste a listing address from yellowpages-uae.com if you are not sure of a name.

**Is it legal?**
The actor reads public listing pages that any visitor can open, at a modest rate, one request at a time. The Yellow Pages UAE robots.txt blocks a list of named crawlers and allows all others; this actor is not one of the named ones. A single line there that disallows addresses with a question mark follows the group for one named crawler, and the actor reads `?page=` pages. The site's terms of use say its content may be used only for personal, non-commercial or educational use and may not otherwise be reproduced without written permission of the copyright holder. This actor does not change that: read the current terms and the laws that apply to you, such as data protection and email marketing rules, before you store or contact anyone from this data. You are responsible for lawful use. Business listings are collected, not private accounts; a few listings are sole traders, and their business phone and email appear as the business listed them.

**Is this an official Yellow Pages UAE product?**
No. It is an independent tool and is not affiliated with or endorsed by Yellow Pages UAE.

### Feedback and support

Found a problem or want a field added? Open an issue on the Issues tab of this actor and it gets read. If the actor saved you time, an honest rating on the Reviews tab helps other people find it.

**Do I need an Apify account?**
Yes. Actors run from an Apify account, and a free account is enough to start: it includes $5 of platform usage every month. You can [sign up here](https://www.apify.com?fpr=ymnoit). This is a referral link and it costs you nothing.

**Is there a limit on the free plan?**
Yes. A run started from a free plan account delivers the first 10 results, then ends with a message and a link to the plans. Any paid plan returns everything you ask for, up to your own limit. The price per result is the same on every plan.

### More from The One Dollar Store

Every actor here costs $1 per 1,000 results, platform usage included. See the whole store: https://apify.com/one_dollar_store

**Maps and local business**

- [2GIS Business Scraper](https://apify.com/one_dollar_store/2gis-business-scraper): Businesses in Russia, Central Asia and the UAE.
- [Yandex Maps Scraper](https://apify.com/one_dollar_store/yandex-maps-business-scraper): Businesses on Yandex Maps around any city.
- [IndiaMART Supplier Scraper](https://apify.com/one_dollar_store/indiamart-supplier-scraper): Indian suppliers for any product, with phones.
- [Golden Pages Ireland Scraper](https://apify.com/one_dollar_store/goldenpages-ireland-businesses-scraper): Irish businesses from goldenpages.ie with phone, email when listed, website, address and hours.
- [Telelistas Brazil Scraper](https://apify.com/one_dollar_store/telelistas-brazil-businesses-scraper): Brazilian businesses from Telelistas (BuscJa) with phone, website, address and coordinates.

### Changelog

- 1 November 2026: clearer description and headings, field details for AI tools. Price and output unchanged.
- 1 November 2026: first release.

# Actor input Schema

## `categories` (type: `array`):

What the businesses do, as Yellow Pages UAE names it, for example "restaurants", "hospitals", "valves" or "general trading". Each category opens its listing pages (yellowpages-uae.com/uae/<category>). A category the site has no page for is skipped and listed in the run summary.

## `locations` (type: `array`):

Keep businesses in these places. Leave empty to search the whole UAE. Each category is searched in each place you pick.

## `startUrls` (type: `array`):

Optional. Paste listing page addresses from yellowpages-uae.com, for example https://www.yellowpages-uae.com/uae/dubai/restaurants. A ?page=3 in the address starts at that page. Business profile pages are not read.

## `maxPagesPerSearch` (type: `integer`):

How many pages to read for each category and place. A page lists 20 businesses, so 100 pages is up to 2,000 businesses.

## `requireEmail` (type: `boolean`):

Keep businesses that list an e-mail address of their own. The directory's shared placeholder address on free listings never counts.

## `requireWebsite` (type: `boolean`):

Keep businesses that list a website.

## `requireCoordinates` (type: `boolean`):

Keep businesses that list a latitude and longitude.

## `paidListingsOnly` (type: `boolean`):

Keep businesses with a paid listing. They carry longer descriptions, brands and social links more often than free listings.

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

Stop after this many businesses. Minimum 10. The actor reads one page of 20 businesses a second.

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

Leave the proxy off: the actor connects directly, which is what it was tested with. After two refused requests in a row it switches to the Apify datacenter proxy by itself. It stops after three refusals in a row and does not try to get past a verification page.

## Actor input object example

```json
{
  "categories": [
    "restaurants"
  ],
  "locations": [
    "dubai"
  ],
  "maxPagesPerSearch": 100,
  "requireEmail": false,
  "requireWebsite": false,
  "requireCoordinates": false,
  "paidListingsOnly": false,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "categories": [
        "restaurants"
    ],
    "locations": [
        "dubai"
    ],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("one_dollar_store/yellowpages-uae-businesses-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 = {
    "categories": ["restaurants"],
    "locations": ["dubai"],
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("one_dollar_store/yellowpages-uae-businesses-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 '{
  "categories": [
    "restaurants"
  ],
  "locations": [
    "dubai"
  ],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call one_dollar_store/yellowpages-uae-businesses-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,one_dollar_store/yellowpages-uae-businesses-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/zmgmAkwq2d20JYSv9/builds/5bVhQ3urOQ7Yya6ao/openapi.json
