# Herold Business Listing Scraper (`powerai/herold-listing-scraper`) Actor

Scrape business listings from Herold.at (Austrian Yellow Pages) with automatic pagination and comprehensive company data extraction.

- **URL**: https://apify.com/powerai/herold-listing-scraper.md
- **Developed by:** [PowerAI](https://apify.com/powerai) (community)
- **Categories:** Lead generation, Other
- **Stats:** 9 total users, 1 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.99 / 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.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

## 📒 Herold Business Listing Scraper

This actor allows you to scrape business listings from Herold.at (Austrian Yellow Pages) by providing a search URL. It automatically handles pagination and extracts comprehensive company information including contact details, ratings, addresses, and more.

### Features

- **URL-based Scraping:** Extract business listings by providing a complete Herold.at search URL
- **Automatic Pagination:** Automatically navigates through pages and loads more listings until reaching the end or max items limit
- **Comprehensive Company Data:** Extract detailed information about each business including:
  - Company name and description
  - Contact information (phone, email, website)
  - Full address details (street, postal code, region)
  - Customer ratings and review counts
  - Business hours status (open/closed)
  - Company logo and branding
  - Verification status
- **Smart Deduplication:** Automatically removes duplicate listings
- **Proxy Support:** Optional proxy configuration for enhanced reliability

### Input Parameters

| Field                | Type    | Required | Description                                    |
|---------------------|---------|----------|------------------------------------------------|
| `searchUrl`         | string  | Yes      | Complete Herold.at search URL to scrape        |
| `maxItems`          | integer | No       | Maximum number of listings to fetch (default: unlimited) |
| `proxyConfiguration`| object  | No       | Proxy settings for the actor                   |

#### How to Get Search URL

1. Go to [Herold.at](https://www.herold.at)
2. Use the search filters to find businesses (category, location, etc.)
3. Copy the complete URL from your browser's address bar
4. Paste it into the `searchUrl` field

Example search URLs:

```
https://www.herold.at/gelbe-seiten/burgenland/elektriker/
https://www.herold.at/gelbe-seiten/wien/restaurant/
https://www.herold.at/gelbe-seiten/salzburg/hotel/
```

### Output

The output is a dataset of business listing objects, each containing:

- `searchUrl`: The original search URL used
- `position`: Position in search results
- `name`: Company name
- `identifier`: Unique company identifier on Herold
- `description`: Business description and services offered
- `companyUrl`: Direct link to the company page on Herold
- `logo`: URL of the company logo
- `ratingValue`: Average customer rating (e.g., "5.0")
- `ratingCount`: Number of customer reviews
- `bestRating`: Maximum possible rating (usually "5")
- `worstRating`: Minimum possible rating (usually "1")
- `openStatus`: Current business status (e.g., "Jetzt geöffnet" / "Currently open")
- `detailsUrl`: URL to detailed company information
- `phone`: Phone number
- `email`: Email address
- `website`: Company website URL
- `addressString`: Full address as a single string
- `streetAddress`: Street address
- `postalCode`: Postal code
- `addressRegion`: City/Region
- `addressCountry`: Country code (e.g., "AT" for Austria)
- `fullAddress`: Complete formatted address
- `verified`: Whether the business is verified by Herold
- `scrapedAt`: Timestamp of when the listing was scraped

Example output:

```json
[
  {
    "searchUrl": "https://www.herold.at/gelbe-seiten/burgenland/elektriker/",
    "position": "1",
    "name": "Ing. Franz Gartner",
    "identifier": "5NtMv",
    "description": "Elektroinstallationen, Infrarot- und Elektroheizungen, Klimaanlagen, Photovoltaik, Reparatur und Service, Fachgeschäft",
    "companyUrl": "https://www.herold.at/gelbe-seiten/illmitz/5NtMv/ing-franz-gartner/",
    "logo": "https://a.mktgcdn.com/p/J_M-Aa7zQQbJphjA80Sm_BtmzLk8Edb2YIoOJXFUMjE/300x300.png",
    "ratingValue": "5.0",
    "ratingCount": "3",
    "bestRating": "5",
    "worstRating": "1",
    "postal_text": null,
    "openStatus": "Jetzt geöffnet",
    "detailsUrl": "https://www.herold.at/gelbe-seiten/illmitz/5NtMv/ing-franz-gartner/",
    "phone": "+43 2175 2372",
    "email": "illmitz@elektro-gartner.at",
    "website": "http://www.elektro-gartner.at/",
    "addressString": "Apetlonerstraße 19 7142 Illmitz Neusiedl am See Burgenland",
    "streetAddress": "Apetlonerstraße 19",
    "postalCode": "7142",
    "addressRegion": "Illmitz",
    "addressCountry": "AT",
    "fullAddress": "Apetlonerstraße 19 7142 Illmitz Neusiedl am See Burgenland",
    "verified": true,
    "scrapedAt": "2025-11-05T08:46:43.715Z"
  },
  ...
]
```

### Use Cases

- **Lead Generation:** Find potential business clients in specific industries and regions
- **Market Research:** Analyze business density and competition in different areas
- **Contact Database Building:** Create comprehensive contact lists for B2B marketing
- **Competitor Analysis:** Track competitor locations and customer ratings
- **Local SEO Research:** Understand local business landscape and opportunities
- **Business Intelligence:** Gather insights about Austrian business ecosystem
- **Directory Building:** Create custom business directories and aggregators
- **Service Provider Discovery:** Find service providers across Austria

### Notes

- Works with Austrian businesses listed on Herold.at
- Results are saved incrementally as they are found
- All timestamps are in ISO 8601 format
- Supports all business categories available on Herold
- Handles both German language content and international businesses
- Verification status indicates businesses that have been verified by Herold

### Limitations

- Only works with Herold Austria (herold.at)
- Cannot scrape detailed information from individual company detail pages (only listing data)
- Some businesses may have incomplete contact information
- Rating information may not be available for all businesses
- Business hours details are limited to current open/closed status

### Tips for Best Results

- Use specific category and location filters for more targeted results
- Set a reasonable `maxItems` limit to avoid long scraping times
- Check the search results manually first to ensure the URL is correct
- For large datasets, consider splitting into multiple smaller scraping jobs by region or category
- Enable proxy configuration if you encounter rate limiting

***

**Start extracting Austrian business data from Herold today!**

# Actor input Schema

## `searchUrl` (type: `string`):

The complete Herold.at search URL to scrape (e.g., https://www.herold.at/gelbe-seiten/burgenland/elektriker/)

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

Maximum number of business listings to fetch

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

Proxy settings for the actor (optional, recommended for large scraping jobs)

## Actor input object example

```json
{
  "searchUrl": "https://www.herold.at/gelbe-seiten/burgenland/elektriker/",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": false,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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("powerai/herold-listing-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("powerai/herold-listing-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 '{}' |
apify call powerai/herold-listing-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,powerai/herold-listing-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/8YdUjLwTEcaQhAHwU/builds/K1mPPLQsR8FmYRnyu/openapi.json
