# FirmenABC.at Scraper (`parsebird/firmenabc-at-scraper`) Actor

Scrape Austrian company data from FirmenABC.at: address, phone, email, website, VAT ID, Firmenbuchnummer, managers, and balance-sheet figures. Export JSON, CSV, Excel.

- **URL**: https://apify.com/parsebird/firmenabc-at-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.09 / 1,000 company listings

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

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

### FirmenABC.at Scraper

Extract structured **Austrian company data** from [FirmenABC.at](https://www.firmenabc.at) — name, address, phone, email, website, **VAT ID (UID-Nummer)**, **Firmenbuchnummer**, legal form, managing directors, industry categories, GPS coordinates, and **balance-sheet figures**. Search by company name, browse a federal state, scrape specific URLs, or monitor a watchlist for changes.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Turn the FirmenABC.at business directory into a clean dataset — filter by company name or Austrian state, pull full company profiles with contact details, Firmenbuch data, managers, and published financials, and track new or changed companies across scheduled runs with incremental mode and Telegram / Slack / Discord alerts.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
FirmenABC.at Scraper (parsebird/firmenabc-at-scraper) extracts Austrian company data from firmenabc.at. Modes (priority): companyUrls (watchlist, tracked by stable id, 404s cached) > query (company-name keyword) > startUrls (direct company detail URLs) > location (Austrian federal state or city) > full directory (no input). Inputs: query (string), location (string), startUrls (array of https://www.firmenabc.at/<slug>_<key> URLs), companyUrls (array, same shape), maxResults (int, default 100, 0 = all), includeDetails (bool, default false — off returns listing fields only; on fetches each detail page for the full record and is billed extra), compact (bool — core fields only), excludeEmptyFields (bool), incrementalMode (bool), stateKey (string, auto-derived if empty), emitUnchanged (bool), emitExpired (bool), telegramToken, telegramChatId, slackWebhookUrl, discordWebhookUrl, whatsappPhoneNumberId, whatsappAccessToken, whatsappTo, webhookUrl, webhookHeaders (object), notificationLimit (1-20), notifyOnlyChanges (bool), proxyConfiguration (object, Apify Unblocker required). Output per company: listingId, listingKey, name, url, street, postalCode, city, region, country; with includeDetails also telephone, fax, email, website, latitude, longitude, logoUrl, categories[], vatId, rechtsform, foundingDate, firmenbuchnummer, activityDescription, managers[] ({name, role, profileUrl}), balanceYear, balanceTotalAssets, balanceNetIncome, balanceFixedAssets, balanceEquity, balanceCurrentAssets, balanceProvisions, balanceLiabilities, balanceReceivables, balancePrepaidExpenses. Incremental adds changeType (NEW/UPDATED/UNCHANGED/REAPPEARED/EXPIRED), firstSeenAt, lastSeenAt. Pricing: pay-per-event, $0.00149 per company + an extra $0.00399 per detail-enriched company (Free tier; lower on paid tiers). API: https://apify.com/parsebird/firmenabc-at-scraper/api - Token: https://console.apify.com/account/integrations
```

### What is FirmenABC.at Scraper?

**FirmenABC.at Scraper** is an Apify Actor that turns the [FirmenABC.at](https://www.firmenabc.at) business directory — a register of over 500,000 Austrian companies — into structured JSON, CSV, or Excel. FirmenABC sits behind an anti-bot wall that blocks ordinary scrapers; this Actor routes every request through the **Apify Unblocker**, so you get clean data without fighting the block yourself.

Give it a **company-name keyword** (e.g. `Bäckerei`, `Steuerberater`, `Müller`), an **Austrian federal state or city**, a list of **company URLs**, or nothing at all to walk the whole directory. Turn on **Include full company details** to fetch each company's profile page for phone, email, website, VAT ID, Firmenbuchnummer, managing directors, and published balance-sheet data.

### What can FirmenABC.at Scraper do?

- 🔎 **Name search** — find companies whose name contains every word you enter, across all of Austria.
- 📍 **Browse by location** — scrape every company in a federal state (`Wien`, `Oberösterreich`, `Steiermark`, …) or a city.
- 🔗 **Direct URLs** — paste FirmenABC company URLs straight from your browser.
- 👁️ **Watchlist monitoring** — track a fixed list of companies by stable id; removed or 404 companies are remembered and skipped on later runs.
- 🧾 **Full company profiles** — contact details, VAT ID (UID-Nummer), Firmenbuchnummer, legal form, founding date, industry categories, managing directors with their roles, and GPS coordinates.
- 💰 **Financials** — balance-sheet totals from published annual accounts: total assets, equity, liabilities, provisions, receivables, fixed and current assets, and net income, with the balance year.
- 🔁 **Incremental mode** — after the first run, emit (and pay for) only companies that are new or have changed, tagged `NEW` / `UPDATED` / `UNCHANGED` / `REAPPEARED` / `EXPIRED`.
- 🔔 **Notifications** — push run summaries to Telegram, Slack, Discord, WhatsApp, or any webhook (n8n, Make, Zapier).
- 🤖 **Compact mode** — a slim record for AI-agent and MCP pipelines.
- ⚡ Runs on Apify with scheduling, API access, and export to JSON, CSV, Excel, HTML, or XML.

### What data can you extract from FirmenABC.at?

#### Always present (listing level)

| Field | Description |
|-------|-------------|
| `listingId` | Stable content hash for the company |
| `listingKey` | Short stable id from the FirmenABC URL (e.g. `ocT`) |
| `name` | Company name |
| `url` | FirmenABC company-page URL |
| `street` / `postalCode` / `city` / `region` | Registered address |
| `country` | Always `AT` |

#### With `includeDetails: true`

| Field | Description |
|-------|-------------|
| `telephone` / `fax` / `email` / `website` | Contact channels |
| `latitude` / `longitude` | GPS coordinates |
| `logoUrl` | Company logo image URL |
| `vatId` | Austrian VAT number (UID-Nummer, `ATU…`) |
| `firmenbuchnummer` | Company-register number (`FN … x`) |
| `rechtsform` | Legal form (GmbH, AG, OG, KG, e.U., …) |
| `foundingDate` | Date the legal entity began |
| `categories` | Industry category slugs |
| `activityDescription` | Business-purpose text |
| `managers` | Array of `{ name, role, profileUrl }` — Geschäftsführer, Aufsichtsrat, etc. |
| `balanceYear` | Fiscal year of the balance-sheet figures |
| `balanceTotalAssets` / `balanceEquity` / `balanceLiabilities` / `balanceNetIncome` / `balanceFixedAssets` / `balanceCurrentAssets` / `balanceProvisions` / `balanceReceivables` / `balancePrepaidExpenses` | Balance-sheet figures in EUR |

#### With `incrementalMode: true`

| Field | Description |
|-------|-------------|
| `changeType` | `NEW`, `UPDATED`, `UNCHANGED`, `REAPPEARED`, or `EXPIRED` |
| `firstSeenAt` / `lastSeenAt` | ISO-8601 timestamps tracking the company across runs |

### How to scrape FirmenABC.at

1. Open [FirmenABC.at Scraper](https://apify.com/parsebird/firmenabc-at-scraper) on Apify Store and click **Try for free**.
2. Enter a **Company name keyword**, or a **Location**, or paste **Start URLs**.
3. Set **Max results** (default 100; use `0` for everything).
4. (Optional) Turn on **Include full company details** for phone, email, VAT ID, managers, and financials — note the extra per-record charge.
5. (Optional) Turn on **Incremental mode** and set a schedule so later runs return only new and changed companies.
6. Click **Start**, then open the **Dataset** tab. Export as JSON, CSV, Excel, HTML, or XML.

#### Input example — name search

```json
{
    "query": "Bäckerei",
    "maxResults": 50
}
```

#### Input example — full detail for a state

```json
{
    "location": "Oberösterreich",
    "maxResults": 200,
    "includeDetails": true
}
```

#### Input example — incremental watchlist

```json
{
    "companyUrls": [
        "https://www.firmenabc.at/wien-holding-gmbh_ocT"
    ],
    "incrementalMode": true,
    "stateKey": "my-watchlist",
    "telegramToken": "123456:ABC-DEF",
    "telegramChatId": "-1001234567890"
}
```

### Output example

```json
{
    "listingId": "a173e2fe588ab762b335313871d24f706d41f470df6f23f59f5100200b9c8d66",
    "listingKey": "ocT",
    "name": "Wien Holding GmbH",
    "url": "https://www.firmenabc.at/wien-holding-gmbh_ocT",
    "street": "Universitätsstr. 11",
    "postalCode": "1010",
    "city": "Wien",
    "region": "Wien",
    "country": "AT",
    "telephone": "01/4082569-0",
    "email": "office@wienholding.at",
    "website": "http://www.wienholding.at",
    "latitude": 48.2141682,
    "longitude": 16.3566291,
    "logoUrl": "https://media.firmenabc.at/logos/…jpg",
    "categories": ["finanzdienstleistungen-versicherungen", "holding-beteiligungsgesellschaft", "it-dienstleistungen"],
    "vatId": "ATU36779606",
    "rechtsform": "GmbH",
    "foundingDate": "2001-10-25T00:00:00+02:00",
    "firmenbuchnummer": "FN 39079 w",
    "managers": [
        { "name": "Frau Mag. Ramser Karin", "role": "Geschäftsführer", "profileUrl": "/person/ramser-karin_jifzna" },
        { "name": "Herr Mag. Stribl Oliver", "role": "Geschäftsführer", "profileUrl": "/person/stribl-oliver_jituaa" }
    ],
    "balanceYear": 2024,
    "balanceTotalAssets": 621204188.36,
    "balanceEquity": 285824719.48,
    "balanceNetIncome": -10119845.69,
    "portalUrl": "https://www.firmenabc.at",
    "sourceDomain": "firmenabc.at",
    "scrapedAt": "2026-09-04T09:14:20.052Z"
}
```

Download the dataset in JSON, CSV, Excel, HTML, or XML from the [Dataset tab](https://docs.apify.com/platform/storage/dataset).

### Use cases

- 🎯 **B2B lead generation** — build targeted lists of Austrian companies by industry keyword or region, with verified contact details.
- 🕵️ **Company due diligence** — pull Firmenbuch number, legal form, managing directors, and published financials for a counterparty.
- 📊 **Market research** — size an industry across Austria and analyse addresses, founding dates, and balance-sheet trends.
- 🔔 **Company monitoring** — watch specific companies or a keyword universe and get Telegram / Slack alerts when a new company appears or details change.
- 🤖 **AI & data pipelines** — feed compact company records into LLM agents through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) or your CRM.

### How it works

1. The Actor picks a mode from your input: watchlist, name keyword, Start URLs, location, or full directory.
2. Listing pages (name-search results or `/firmen/…` browse pages) are fetched through the Apify Unblocker and parsed for company stubs, following pagination up to your `maxResults` cap.
3. When **Include full company details** is on, each company's profile page is fetched and parsed for contact data, Firmenbuch data, managers, categories, coordinates, and balance-sheet figures.
4. In incremental mode, each company is compared against the stored state for your `stateKey`; only new and changed records are emitted (plus `UNCHANGED` / `EXPIRED` if you opt in).
5. Each company is billed as one `company-scraped` event, plus one `company-detail` event when it was detail-enriched.
6. Configured notification channels receive a summary of the run's results.

### How much does it cost to scrape FirmenABC.at?

FirmenABC.at Scraper uses **pay-per-event** pricing with two events.

| Event | When it fires | Free | Bronze | Silver | Gold |
|-------|---------------|------|--------|--------|------|
| `company-scraped` | Every company row | $1.49 / 1k | $1.29 / 1k | $1.19 / 1k | $1.09 / 1k |
| `company-detail` | Extra, per detail-enriched row | $3.99 / 1k | $3.49 / 1k | $2.99 / 1k | $2.49 / 1k |

A listing-only run of 1,000 companies costs about **$1.49** on the Free plan. The same run with **Include full company details** costs about **$5.48** per 1,000. Incremental mode keeps recurring runs cheap by emitting only what changed. Apify platform usage (compute and the Unblocker proxy) is billed separately — FirmenABC's anti-bot protection makes the Unblocker mandatory, so detail-heavy runs use noticeably more platform credit than a typical scraper. See the [Apify pricing page](https://apify.com/pricing).

### API usage examples

Run FirmenABC.at Scraper with the [Apify API](https://docs.apify.com/api/v2).

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run_input = {
    "query": "Steuerberater",
    "location": "",
    "maxResults": 100,
    "includeDetails": True,
}

run = client.actor("parsebird/firmenabc-at-scraper").call(run_input=run_input)

for company in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(company["name"], company.get("vatId"), company.get("city"))
```

#### JavaScript

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const run = await client.actor('parsebird/firmenabc-at-scraper').call({
    query: 'Bäckerei',
    maxResults: 50,
    compact: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((c) => `${c.name} — ${c.city}`));
```

Connect finished datasets to [Google Sheets](https://docs.apify.com/platform/integrations/google-sheets), [Slack](https://docs.apify.com/platform/integrations/slack), [Zapier](https://docs.apify.com/platform/integrations/zapier), [Make](https://docs.apify.com/platform/integrations/make), webhooks, or your own pipeline.

### Is it legal to scrape FirmenABC.at?

FirmenABC.at Scraper reads only publicly visible data — the same company pages any visitor sees on [firmenabc.at](https://www.firmenabc.at), much of which originates from the public Austrian company register (Firmenbuch) and published annual accounts. It does not log in or access private data. Personal data such as manager names is subject to the GDPR; you are responsible for having a lawful basis to process it and for complying with FirmenABC's Terms of Service in your jurisdiction. For background, read Apify's guide: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/).

### Related Actors

- [northdata Scraper](https://apify.com/parsebird/northdata-scraper) — Company register data for Germany, Austria, and more.
- [Pappers Scraper](https://apify.com/parsebird/pappers-scraper) — French company register data (SIREN, financials, officers).
- [UK Companies House Scraper](https://apify.com/parsebird/uk-companies-house-scraper) — Bulk UK company data.
- [Website Contact Finder](https://apify.com/parsebird/website-contact-finder) — Emails, phones, and socials from any list of websites.

### FAQ

**Why is this Actor slower than other scrapers?**
FirmenABC.at is protected by an anti-bot system that blocks datacenter and residential proxies outright. Every request goes through the Apify Unblocker, which is reliable but adds several seconds per page. Listing-only runs (the default) are much faster than runs with **Include full company details**.

**What does the default run return without `includeDetails`?**
Company name, FirmenABC URL, stable id, and registered address. Turn on **Include full company details** for phone, email, website, VAT ID, Firmenbuchnummer, legal form, managers, categories, coordinates, and balance-sheet data.

**Does `location` work together with `query`?**
No. FirmenABC applies a name search across all of Austria; the location filter is used only when no name keyword is set. To combine them, browse the location and filter the output by keyword, or use Start URLs.

**How does incremental mode save money?**
The first run with a given `stateKey` stores a snapshot. Later runs compare against it and emit — and charge for — only companies that are `NEW`, `UPDATED`, or `REAPPEARED`. Set `emitUnchanged` or `emitExpired` to include the rest.

**How is the watchlist (`companyUrls`) different from Start URLs?**
Both scrape specific companies, but `companyUrls` tracks each by a stable id across runs and remembers companies that were removed or return 404, skipping them on later runs. It also takes priority over every other mode. Use it for a recurring watchlist.

**Can I schedule recurring runs?**
Yes. Use Apify [schedules](https://docs.apify.com/platform/schedules) with incremental mode and a notification channel to get alerted when Austrian companies matching your search appear or change.

**Can I use this as a FirmenABC API?**
Yes. Call the Actor through the [Apify API](https://docs.apify.com/api/v2), use webhooks, or connect it to AI assistants with the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp).

**Something looks wrong or a field is missing.**
Report it on the [Issues tab](https://apify.com/parsebird/firmenabc-at-scraper/issues) and it will be looked at quickly.

# Actor input Schema

## `query` (type: `string`):

Keyword matched against the company name (e.g. "Bäckerei", "Steuerberater", "Müller"). Returns companies whose name contains every word you enter. Leave empty to browse by location or scrape the full directory.

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

Austrian federal state or city/district (e.g. "Wien", "Oberösterreich", "Graz"). Applied only when no name keyword is set.

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

Specific FirmenABC company detail URLs to scrape directly (e.g. https://www.firmenabc.at/wien-holding-gmbh\_ocT). Ignored if a name keyword is set.

## `companyUrls` (type: `array`):

A stable list of FirmenABC company detail URLs to monitor. Each company is tracked by a stable id; removed/404 companies are cached and skipped on later runs. Takes priority over every other mode.

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

Maximum number of companies to return. 0 = no limit. Use a small number for testing.

## `includeDetails` (type: `boolean`):

Fetch each company's detail page for phone, email, website, VAT ID, Firmenbuchnummer, managers, categories, coordinates, and balance-sheet figures. Off = listing-level fields only (name, URL, address). Detail records are billed at a higher rate — see Pricing.

## `compact` (type: `boolean`):

Return only core fields (name, url, address, telephone, vatId, rechtsform, changeType). Ideal for AI-agent and MCP workflows to reduce token usage.

## `excludeEmptyFields` (type: `boolean`):

Strip null values, empty strings, and empty arrays from each record.

## `incrementalMode` (type: `boolean`):

Only emit companies that are new or have changed since the last run with this state key. Saves cost on recurring runs.

## `stateKey` (type: `string`):

Stable identifier for the tracked search universe. Leave empty to auto-derive one from your search inputs — different keyword/location combinations get isolated state automatically.

## `emitUnchanged` (type: `boolean`):

When incremental mode is on, also emit companies with no detected changes (changeType = UNCHANGED).

## `emitExpired` (type: `boolean`):

When incremental mode is on, also emit companies that disappeared since the last run (changeType = EXPIRED).

## `telegramToken` (type: `string`):

Telegram bot token from @BotFather. Required for Telegram notifications.

## `telegramChatId` (type: `string`):

Telegram chat or channel ID where alerts are sent (e.g. "-100123456789" for a private group, or "@yourchannel").

## `slackWebhookUrl` (type: `string`):

Incoming-webhook URL from api.slack.com.

## `discordWebhookUrl` (type: `string`):

Webhook URL from a Discord channel's Integrations settings.

## `whatsappPhoneNumberId` (type: `string`):

Numeric phone-number ID from Meta Business Manager (not the phone number itself).

## `whatsappAccessToken` (type: `string`):

Meta Cloud API token with the messaging scope.

## `whatsappTo` (type: `string`):

Recipient phone number in E.164 format. Must have messaged your business within 24h.

## `webhookUrl` (type: `string`):

JSON POST endpoint for n8n / Make / Zapier / your own service. Receives { companies: \[...], meta: {...} }.

## `webhookHeaders` (type: `object`):

Optional headers for the generic webhook (e.g. an Authorization header).

## `notificationLimit` (type: `integer`):

Maximum companies listed in a single notification message (1–20).

## `notifyOnlyChanges` (type: `boolean`):

In incremental mode, send alerts only for NEW / UPDATED / REAPPEARED companies.

## `appConnector` (type: `string`):

Connected app (e.g. Notion) to deliver a run summary to. MCP support is evolving.

## `mcpIssueTeam` (type: `string`):

Team name for the connected issue tracker, if the app requires one.

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

FirmenABC blocks datacenter and residential proxies. The Apify Unblocker is required and used by default; changing this will likely break the run.

## Actor input object example

```json
{
  "query": "Bäckerei",
  "location": "",
  "startUrls": [],
  "companyUrls": [],
  "maxResults": 20,
  "includeDetails": false,
  "compact": false,
  "excludeEmptyFields": false,
  "incrementalMode": false,
  "stateKey": "",
  "emitUnchanged": false,
  "emitExpired": false,
  "telegramToken": "",
  "telegramChatId": "",
  "slackWebhookUrl": "",
  "discordWebhookUrl": "",
  "whatsappPhoneNumberId": "",
  "whatsappAccessToken": "",
  "whatsappTo": "",
  "webhookUrl": "",
  "webhookHeaders": {},
  "notificationLimit": 5,
  "notifyOnlyChanges": false,
  "appConnector": "",
  "mcpIssueTeam": "",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "query": "Bäckerei",
    "maxResults": 20,
    "includeDetails": false,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "UNBLOCKER"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/firmenabc-at-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 = {
    "query": "Bäckerei",
    "maxResults": 20,
    "includeDetails": False,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["UNBLOCKER"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/firmenabc-at-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 '{
  "query": "Bäckerei",
  "maxResults": 20,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}' |
apify call parsebird/firmenabc-at-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/firmenabc-at-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/DYvrxBaxNGlORyRQ7/builds/AUHXG5rNpPC9SArWd/openapi.json
