# AranyOldalak Scraper - Hungary Business Directory (`crawlerbros/aranyoldalak-scraper`) Actor

Scrape aranyoldalak.hu (Arany Oldalak), Hungary's leading business directory. Search by category and city/county to get business names, addresses, phone numbers, emails, websites, opening hours, and coordinates.

- **URL**: https://apify.com/crawlerbros/aranyoldalak-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## AranyOldalak Scraper - Hungary Business Directory

Scrape **aranyoldalak.hu** (Arany Oldalak / "Golden Pages") — Hungary's leading online business directory. Search any business category in any Hungarian city or county and get business names, addresses, phone numbers, emails, websites, opening hours, and GPS coordinates. Optionally follow through to each business's full profile page for a richer description, related category tags, fax number, extra phone numbers/websites, a price-range badge, payment methods, spoken languages, and a photo gallery. No login, no cookies, no API key required.

### What this actor does

- **Two modes:** `search` (category + city/county) and `detail` (direct business profile URLs)
- **70+ curated business categories** to pick from, or type any custom category in Hungarian
- **All 19 Hungarian counties (megye) + Budapest + 19 major cities** available as one-click location filters, in addition to free-text city/town search
- **Sort by** relevance, A-Z, or Z-A
- **Rich business profiles** — structured opening hours (per day of the week), business description, related category/location tags, precise GPS coordinates, logo, photo gallery, fax number, extra phone numbers/websites when a business lists more than one, price-range badge, accepted payment methods, and spoken languages (when the business provides them)
- **Full Hungarian character support** — á, é, í, ó, ö, ő, ú, ü, ű are handled correctly in both input and output
- **Empty fields are omitted** — you only ever see fields that were actually found for a business

### Output per business

- `name` — business name
- `category` — primary listed category (mode=detail, from the page's own breadcrumb)
- `categories[]` — related category + location tags the business is listed under (mode=detail)
- `description` — business "about" text (mode=detail) or short listing description (mode=search)
- `street`, `postalCode`, `city`
- `latitude`, `longitude` — GPS coordinates
- `phone`, `email`, `website`
- `additionalPhones[]` — extra phone numbers beyond the primary `phone`, when a business lists more than one (mode=detail)
- `fax` — fax number, when listed separately from the phone number(s) (mode=detail)
- `additionalWebsites[]` — extra website/booking/menu links beyond the primary `website`, when a business lists more than one (mode=detail)
- `priceRange` — price-tier badge (e.g. `$$`), when the business has one set (mode=detail, mostly hospitality listings)
- `paymentMethods[]` — accepted payment methods, when the business lists them (mode=detail)
- `languagesSpoken[]` — languages the business serves customers in, when listed (mode=detail)
- `images[]` — photo gallery image URLs (mode=detail)
- `logoUrl` — business logo image (mode=detail)
- `openingHours[]` — structured opening hours (`{day, hours}` per day of the week; mode=detail or `fetchDetails: true`)
- `searchCategory`, `searchLocation` — the search parameters used (mode=search)
- `sourceUrl` — canonical aranyoldalak.hu profile URL for the business
- `businessId` — aranyoldalak.hu's internal listing ID (mode=search)
- `recordType: "business"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string (select) | `search` | `search` (category + city/county) or `detail` (fetch by URL) |
| `category` | string (select) | `étterem` | Pick a common category, or `custom` to use `customCategory` (mode=search) |
| `customCategory` | string | – | Any free-text Hungarian business category, overrides `category` (mode=search) |
| `location` | string (select) | `Budapest` | Hungarian city or county to search in, or leave as "No location filter" for all of Hungary |
| `customLocation` | string | – | Any free-text Hungarian city/town, overrides `location` (mode=search) |
| `sortBy` | string (select) | `relevance` | `relevance` / `az` / `za` (server-side) / `name` (client-side re-sort of the fetched batch) |
| `fetchDetails` | boolean | `false` | Also visit each business's profile page for opening hours, description, tags, and logo (slower) |
| `businessUrls` | array | – | aranyoldalak.hu profile URLs to fetch directly (mode=detail) |
| `maxItems` | int | `20` | Hard cap on returned records (1-1000) |

#### Example: search restaurants in Budapest

```json
{
  "mode": "search",
  "category": "étterem",
  "location": "Budapest",
  "maxItems": 20
}
```

#### Example: accountants in Nógrád county, with full profiles

```json
{
  "mode": "search",
  "category": "könyvelő",
  "location": "Nógrád megye",
  "fetchDetails": true,
  "maxItems": 30
}
```

#### Example: car mechanics nationwide, A-Z

```json
{
  "mode": "search",
  "category": "autószerelő",
  "location": "",
  "sortBy": "az",
  "maxItems": 100
}
```

#### Example: custom category and city not in the curated lists

```json
{
  "mode": "search",
  "category": "custom",
  "customCategory": "kulcsmásolás",
  "location": "custom",
  "customLocation": "Siófok",
  "maxItems": 20
}
```

#### Example: fetch specific business profiles

```json
{
  "mode": "detail",
  "businessUrls": [
    { "url": "https://aranyoldalak.hu/merleg-kft6.htm" }
  ]
}
```

### Use cases

- **Local lead generation** — build a prospect list of Hungarian businesses by trade and city/county for B2B outreach
- **Market research** — measure business density for a category across Hungarian regions
- **Directory aggregation** — feed structured Hungarian business data into your own local-search product
- **Competitor mapping** — see who else operates in a category and area, with contact info
- **Franchise & site-selection analysis** — evaluate service-business coverage across counties and cities

### Limitations

- **Category/location matching is server-resolved, not URL-guessed.** aranyoldalak.hu's canonical pages live at slugged URLs (e.g. `/koenyvelo/nograd-megye/`) that sometimes carry numeric disambiguation suffixes not predictable from the category/location name alone. This actor always goes through aranyoldalak.hu's own free-text search (the same box a visitor uses), which resolves `category`/`location` to the correct canonical page server-side — the same reliable path a real user gets, with no slug-guessing. For best matching, use proper Hungarian diacritics in custom category/location text (e.g. `könyvelő`, not `konyvelo`) — the site's own search matching relies on them.
- **No star ratings.** aranyoldalak.hu does not publish a review/rating system on business listings, so no `rating`/`reviewCount` fields are produced.
- **Some categories may return listings from a broader area than requested.** aranyoldalak.hu occasionally cross-lists a business under a nearby county/city's category page (an upstream site behavior, not a client-side filtering gap in this actor).
- **`sortBy: "az"/"za"` are requested server-side**; aranyoldalak.hu applies them to its own full result set. `sortBy: "name"` instead re-sorts client-side the specific batch this run fetched (useful together with `fetchDetails`).

### FAQ

**What data source does this actor use?**
It reads the publicly available search and business-profile pages on aranyoldalak.hu, Hungary's leading business directory. No account or API key is needed.

**Is this affiliated with aranyoldalak.hu?**
No. This is an independent, third-party actor that reads publicly accessible pages.

**Why do some businesses have no phone, email, or website?**
aranyoldalak.hu only shows contact details a business itself provided when registering its listing. Fields with no data are simply omitted from the record rather than shown as empty or null.

**Can I search a whole county instead of a single city?**
Yes — set `location` to any of the 19 Hungarian counties (megye), e.g. `"Nógrád megye"`, or type any county name into `customLocation`.

**Can I search all of Hungary at once?**
Yes — set `location` to `""` (the default "No location filter" option) for a nationwide search.

**How accurate are the GPS coordinates?**
`latitude`/`longitude` come directly from the business's own aranyoldalak.hu listing, which sources them from the address the business registered.

**Why is `fetchDetails` off by default?**
Fetching each business's full profile page requires one extra request per result, which is slower. Turn it on when you need opening hours, a full description, related category tags, or the logo image.

**Does this actor need a proxy or login?**
No — aranyoldalak.hu's search and profile pages are served without any login wall, so this actor runs entirely on Apify's free plan with no credentials. It automatically uses Apify's free AUTO proxy group to keep requests reliable, at no extra cost to you.

**What does `categories[]` mean on a detail-mode record?**
aranyoldalak.hu lists each business under several related category+location tag pages (e.g. "Könyvelés - Hatvan", "Adóbevallás - Hatvan"). `categories[]` (only populated with `fetchDetails: true` or in `mode=detail`) reflects every tag the business's own profile page links to.

**Why do only some businesses have `priceRange`, `paymentMethods`, or `languagesSpoken`?**
These come from optional fields a business fills in on its own aranyoldalak.hu listing — mainly restaurants, cafés, and hotels. They're simply omitted when a business hasn't set them.

**Why do only some businesses have `fax`, `additionalPhones`, or `additionalWebsites`?**
Most businesses list a single phone number and website. These extra fields appear only when a business's own listing provides more than one contact number (e.g. Main/Alt/Mobile lines) or more than one link (e.g. a separate booking/reservation or menu page).

# Actor input Schema

## `mode` (type: `string`):

What to fetch: search a business category in a city/county, or fetch full business profiles from direct aranyoldalak.hu URLs.

## `category` (type: `string`):

Business category / type to search for. Pick a common category, or choose 'Custom category' and type your own below (mode=search). Values use proper Hungarian spelling/diacritics -- aranyoldalak.hu's own search matching relies on them.

## `customCategory` (type: `string`):

Free-text business category/type not in the curated list above, e.g. 'kulcsmásolás' or 'dohánybolt' (mode=search). Takes priority over 'Category' when set. aranyoldalak.hu resolves this like its own search box, so most Hungarian business-type terms work -- use proper Hungarian diacritics for best matching.

## `location` (type: `string`):

Hungarian city or county (megye) to search in. Pick one, or choose 'Custom location' and type your own below (mode=search). Leave as 'No location filter' to search all of Hungary.

## `customLocation` (type: `string`):

Free-text Hungarian city, town, or district not in the curated list above, e.g. 'Siófok' or 'Gödöllő' (mode=search). Takes priority over 'City or county' when set. Use proper Hungarian diacritics for best matching.

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

How to order search results (mode=search). 'az'/'za' request aranyoldalak.hu's own alphabetical sort server-side; 'name' re-sorts the fetched batch client-side A-Z (useful if you also want fetchDetails-enriched names).

## `fetchDetails` (type: `boolean`):

For each search result, also visit its business profile (.htm) page to collect opening hours, business description, related category tags, precise coordinates, and logo. Slower -- one extra request per result (mode=search).

## `businessUrls` (type: `array`):

Direct aranyoldalak.hu business profile URLs to fetch, e.g. https://aranyoldalak.hu/merleg-kft6.htm. Use the 'sourceUrl' field from search results.

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

Hard cap on the number of business records to return.

## Actor input object example

```json
{
  "mode": "search",
  "category": "étterem",
  "location": "Budapest",
  "sortBy": "relevance",
  "fetchDetails": false,
  "businessUrls": [],
  "maxItems": 20
}
```

# Actor output Schema

## `businesses` (type: `string`):

Dataset containing all scraped aranyoldalak.hu business listings.

# 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 = {
    "mode": "search",
    "category": "étterem",
    "location": "Budapest",
    "sortBy": "relevance",
    "fetchDetails": false,
    "businessUrls": [],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/aranyoldalak-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 = {
    "mode": "search",
    "category": "étterem",
    "location": "Budapest",
    "sortBy": "relevance",
    "fetchDetails": False,
    "businessUrls": [],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/aranyoldalak-scraper").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 '{
  "mode": "search",
  "category": "étterem",
  "location": "Budapest",
  "sortBy": "relevance",
  "fetchDetails": false,
  "businessUrls": [],
  "maxItems": 20
}' |
apify call crawlerbros/aranyoldalak-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/LairuL9rRbNyx1MW0/builds/nVjlW4vwY9kagbrCp/openapi.json
