# Golden Pages (goldenpages.be) Scraper (`thodor/goldenpages`) Actor

Scrape business listings from Golden Pages (goldenpages.be), the English edition of Belgium's largest yellow pages and business directory. Extract company names, addresses, phone numbers, emails, websites, opening hours, and categories.

- **URL**: https://apify.com/thodor/goldenpages.md
- **Developed by:** [Thodor](https://apify.com/thodor) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Golden Pages (Belgium) Scraper

Pull structured company data out of **[goldenpages.be](https://www.goldenpages.be)**, the English-language Belgian trade directory. One search request returns a spreadsheet-ready list of businesses with contact info, location, opening times, ratings, and category metadata.

This Actor is the English-language sibling of our Dutch [Gouden Gids Scraper](https://apify.com/thodor/goudengids) for `goudengids.be`. The two run on the same underlying platform (Imperva-protected, multilingual editions of one Belgian directory), so the schema is identical and the data overlaps; the difference is which language version you query.

> **Why pick the English edition?**
> Useful if you're outside Belgium, building B2B prospect lists for an English-speaking sales team, or simply prefer English category labels (`"Restaurants"`, `"Funeral directors"`) over the Dutch equivalents. If your team works in Dutch, the sibling [Gouden Gids Scraper](https://apify.com/thodor/goudengids) is the more natural fit.

> **Language note.**
> - **Type your search in English.** Examples: `restaurant`, `plumber`, `dentist`, `electrician`, `lawyer`, `funeral director`.
> - **Cities use English names** where the site provides them (`Antwerp`, `Ghent`, `Brussels`, `Bruges`). A handful stay in Dutch on the URL (`Ukkel`, `Mol`) — just use whatever appears in the goldenpages.be address bar.
> - **Most output is English.** Day names come back as `Monday..Sunday`, common labels as `"Active file"`, `"Verified company"`, etc. A small number of free-text fields (longer descriptions, individual review bodies) carry over verbatim from the listing owner, so they may contain Dutch or French text where the business only supplied it in those languages.
> - **Cross-language identifiers.** The `listing_id` is shared across NL/FR/EN editions — if you scrape `L11144012` here, the same ID points to the same business on Gouden Gids and Pagesdor. The `alternate_urls` field gives you the URLs for the other two editions if you want to pull the translated counterparts. For the Dutch edition, run the sibling [Gouden Gids Scraper](https://apify.com/thodor/goudengids) to get the same listings with Dutch category labels and descriptions.

### Step-by-step usage

1. Open the Actor (click **Try for free** on the listing page, or launch it from your Apify Console).
2. On the **Input** tab, type your **What** (English term) and an optional **Where** (city name). Leaving **Where** blank runs the query nationwide.
3. Choose a **Max results** ceiling — by default the run caps at 100 companies. Set it to `0` if you really want everything the search returns.
4. Press **Start**. The log streams progress; pushed rows appear under **Dataset** as they come in (no need to wait for the whole run to finish).
5. When you're done, head to **Dataset → Export** and pick **Excel** for spreadsheet-ready output, **CSV** for everything else, or **JSON** if you're plugging it into code.

### Common use cases

- **Reaching out to Belgian businesses in English** — sales sequences, partnership outreach, vendor scouting where the prospect's contact info is the deliverable.
- **Importing into a CRM** — most CRMs accept CSV/Excel with one row per company; this Actor's flat columns map directly onto Lead / Account objects.
- **Augmenting an existing list** — match by company name, postcode, or VAT/KBO number to fill blanks in your master sheet.
- **Local market mapping** — count how many businesses in a category exist per city, find clusters, spot underserved regions.

### Inputs

| Field | Type | Description |
| --- | --- | --- |
| `what` | `string` (required) | The English search term. Try generic category words first (`restaurant`, `dentist`) rather than brand names. |
| `where` | `string` (optional) | The city or municipality. Omit for a Belgium-wide search. |
| `maxResults` | `int` | How many companies to return before stopping. Default is `100`. `0` means no cap (the run will scrape every result the site returns). |

Minimal input JSON:

```json
{
  "what": "restaurant",
  "where": "antwerp",
  "maxResults": 100
}
````

### Outputs

Every dataset row is one company. The output schema is **fixed**: every record contains the same keys in the same order, populated with `null` / `[]` / `{ … null sub-fields }` when a value isn't available. That's intentional — non-dynamic consumers (Excel formula columns, typed languages like Java or Go, CRM import scripts) can rely on a single shape.

#### Exporting for spreadsheets

The Apify Console gives you three useful export formats on the **Dataset** tab:

- **Excel (`.xlsx`)** — opens straight into Excel, Google Sheets, or Apple Numbers. Pick this if you're building a sales list or sharing with a non-technical colleague.
- **CSV** — same flat layout, plain-text. Most CRM import wizards expect this.
- **JSON** — full nested structure preserved. Best when you'll feed the data into another script or database.

A handful of fields hold multiple values per company (`reviews`, `opening_hours`, `phones`, `images`, `categories`, `social_media`). In Excel/CSV they collapse into a single cell with values joined together — if you need each entry on its own row, export JSON and reshape, or use Apify's Console viewer to filter before exporting.

Datasets stay on Apify under your run history, so you can re-export later without re-scraping.

#### Example record

The output below is illustrative — it shows every key in the canonical order with realistic values for a sample listing. Real records may have slightly different values for the free-text fields (descriptions, reviews) depending on what each business has uploaded.

```json
{
  "url": "https://www.goldenpages.be/company/Ukkel/L11144012/...",
  "listing_id": "L11144012",
  "name": "VEYS - DEVOGHEL Funérarium / Funeral Director",
  "street": "Alsembergsesteenweg 368",
  "city": "Ukkel",
  "postal_code": "1180",
  "province": "Brussels",
  "country": "BE",
  "phone": "+32477196047",
  "phones": ["+32477196047"],
  "email": "pfveysdevoghel@hotmail.com",
  "website": "https://www.funerarium-veysdevoghel.be",
  "whatsapp": null,
  "logo": "https://i.fcrmedia.com/goldenpages.be/images/.../logo.webp",
  "rating": 4.83,
  "rating_count": 37,
  "reviews": [
    { "author": "Sylvain Renard", "rating": 5, "text": "Thank you for your professionalism.", "date": "March 9, 2026" }
  ],
  "ondernemingsnummer": "BE0873097889",
  "btw": null,
  "employees_raw": "0 or unknown",
  "employees_min": null,
  "employees_max": null,
  "founding_date": "2005-04-04",
  "kbo_status": "Active file",
  "kbo_url": "https://kbopub.economie.fgov.be/kbopub/toonondernemingps.html?lang=nl&ondernemingsnummer=0873097889",
  "verified": true,
  "description_markdown": "Funeral director VEYS DEVOGHEL in Uccle ...",
  "opening_hours": [
    { "day": "Monday", "hours": "0:00 - 24:00" },
    { "day": "Tuesday", "hours": "0:00 - 24:00" },
    { "day": "Wednesday", "hours": "0:00 - 24:00" },
    { "day": "Thursday", "hours": "0:00 - 24:00" },
    { "day": "Friday", "hours": "0:00 - 24:00" },
    { "day": "Saturday", "hours": "0:00 - 24:00" },
    { "day": "Sunday", "hours": "0:00 - 24:00" }
  ],
  "languages": [],
  "social_media": {
    "facebook": null, "instagram": null, "linkedin": null,
    "twitter": null, "youtube": null, "other": []
  },
  "parking": { "type": null, "hours": null, "rate": null, "max_duration": null },
  "category": "Funeral directors",
  "categories": ["Funeral directors", "Urns", "Coffins"],
  "images": [
    { "src": "https://i.fcrmedia.com/goldenpages.be/images/.../image.webp", "alt": "" }
  ],
  "alternate_urls": {
    "nl": "https://www.goudengids.be/bedrijf/Ukkel/L11144012/...",
    "fr": "https://www.pagesdor.be/entreprise/Uccle/L11144012/...",
    "en": "https://www.goldenpages.be/company/Ukkel/L11144012/..."
  }
}
```

### Field reference

| Field | What it holds |
| --- | --- |
| `url` | The listing's page on goldenpages.be — open it to see the original entry |
| `listing_id` | Internal `L<digits>` identifier; the same listing on the Dutch and French editions shares this ID |
| `name` | Trading name of the business |
| `phone` | Primary phone number (the one displayed most prominently) |
| `phones` | Every phone number on the page, deduplicated, primary first; always a list (length ≥ 1) when any phone exists |
| `whatsapp` | WhatsApp number when the listing exposes one, otherwise `null` |
| `email` | Public contact email (`null` when the listing hides it behind a click-to-reveal control) |
| `website` | The business's own website |
| `street`, `postal_code`, `city`, `province`, `country` | Postal address, broken into components |
| `category` | The primary category from the breadcrumb navigation |
| `categories` | Every category the listing is tagged with |
| `ondernemingsnummer` | The Belgian enterprise number (`BE` followed by 10 digits) — equivalent to a VAT / business registration ID |
| `btw` | Raw VAT marker line where present |
| `founding_date` | Date the company was registered with the Belgian KBO (ISO `YYYY-MM-DD`) |
| `kbo_status` | KBO record status, typically `"Active file"` |
| `kbo_url` | Direct link to the public KBO record |
| `employees_min`, `employees_max`, `employees_raw` | Headcount band as min/max integers plus the raw site text |
| `rating`, `rating_count` | Aggregate star rating and total review count |
| `reviews` | List of individual reviews, each with `{ author, rating, text, date }`. `text` / `date` may be `null` for older reviews the site no longer shows in full |
| `verified` | `true` when the business carries the "Verified company" badge |
| `description_markdown` | The "About this company" prose, converted to Markdown |
| `opening_hours` | Weekly schedule as a list of `{ day, hours }` entries |
| `languages` | Languages the staff speak (empty list when the listing omits this) |
| `social_media` | `{ facebook, instagram, linkedin, twitter, youtube, other }` — known platforms get their URL, unknown URLs land in `other`, missing platforms stay `null` |
| `parking` | `{ type, hours, rate, max_duration }` — parking metadata pulled in from Seety; all sub-fields `null` when the listing has no parking section |
| `images`, `logo` | URLs of the photos and logo published with the listing |
| `alternate_urls` | `{ nl, fr, en }` — sibling URLs on Gouden Gids and Pagesdor (use these to fetch the translated equivalents of the same listing; for the Dutch edition, see the [Gouden Gids Scraper](https://apify.com/thodor/goudengids)) |

# Actor input Schema

## `what` (type: `string`):

Search term in English, e.g. 'restaurant', 'plumber', 'dentist'.

## `where` (type: `string`):

Location, e.g. 'antwerp', 'ghent', 'brussels'. Leave empty for a Belgium-wide search.

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

Maximum number of companies to scrape (0 = unlimited).

## Actor input object example

```json
{
  "what": "restaurant",
  "where": "antwerp",
  "maxResults": 10
}
```

# 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 = {
    "what": "restaurant",
    "where": "antwerp",
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("thodor/goldenpages").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 = {
    "what": "restaurant",
    "where": "antwerp",
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("thodor/goldenpages").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "what": "restaurant",
  "where": "antwerp",
  "maxResults": 10
}' |
apify call thodor/goldenpages --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=thodor/goldenpages",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Golden Pages (goldenpages.be) Scraper",
        "description": "Scrape business listings from Golden Pages (goldenpages.be), the English edition of Belgium's largest yellow pages and business directory. Extract company names, addresses, phone numbers, emails, websites, opening hours, and categories.",
        "version": "0.1",
        "x-build-id": "OHdKlkxeXRRg04SBX"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/thodor~goldenpages/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-thodor-goldenpages",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/thodor~goldenpages/runs": {
            "post": {
                "operationId": "runs-sync-thodor-goldenpages",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/thodor~goldenpages/run-sync": {
            "post": {
                "operationId": "run-sync-thodor-goldenpages",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "what"
                ],
                "properties": {
                    "what": {
                        "title": "What",
                        "type": "string",
                        "description": "Search term in English, e.g. 'restaurant', 'plumber', 'dentist'."
                    },
                    "where": {
                        "title": "Where",
                        "type": "string",
                        "description": "Location, e.g. 'antwerp', 'ghent', 'brussels'. Leave empty for a Belgium-wide search.",
                        "default": "antwerp"
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of companies to scrape (0 = unlimited).",
                        "default": 10
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
