# Polish B2B Lead Finder (`inhabitable_wheat/polish-smb-lead-scraper`) Actor

Find Polish B2B leads from Panorama Firm and Aleo by category and city. Outputs NIP, address, phone, website, email status, source, and deduplication confidence for sales and agency prospecting.

- **URL**: https://apify.com/inhabitable\_wheat/polish-smb-lead-scraper.md
- **Developed by:** [dobrawww](https://apify.com/inhabitable_wheat) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.00 / 1,000 lead scrapeds

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/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

## Polish B2B Lead Finder — Panorama Firm & Aleo

Verified Polish SME leads with NIP, email & phone — ready for outreach.

### Description

Find Polish B2B leads from two major business directories: Panorama Firm and Aleo. Each output record can include company name, NIP tax ID, city, address, phone, website, email, email verification status, source, and cross-source deduplication confidence.

This Actor is built for Polish web agencies, B2B sales teams, consultants, and market researchers who need targeted SME prospecting lists by city and industry. Results are delivered to the Apify Dataset and can be exported as CSV or JSON.

### When to Use

- Web agencies prospecting new clients by city and industry.
- B2B outbound sales building targeted lead lists.
- Market research, such as SME density per category or region.
- Internal case study for AI and automation courses.

### Input Parameters

| Parameter | Type | Default | Description |
|---|---:|---:|---|
| `categories` | `string[]` | required | Business categories to search for, e.g. `restauracja`, `agencja reklamowa`, `gabinet fizjoterapii`. |
| `locations` | `string[]` | required | Polish cities or regions, e.g. `Warszawa`, `Kraków`, `Trójmiasto`. |
| `maxResults` | `integer` | `50` | Maximum number of leads to publish in one run. Range: 1-1000. |
| `sources` | `string[]` | `["panorama_firm", "aleo"]` | Sources to scrape. Supported values: `panorama_firm`, `aleo`. |
| `verifyEmails` | `boolean` | `true` | Whether to verify discovered emails. |
| `emailVerificationMode` | `string` | `dns_only` | `full`, `dns_only`, or `none`. `full` currently falls back to DNS-only. |
| `contactEnrich` | `boolean` | `true` | Visit discovered websites to find business email addresses. |
| `suppressionList` | `string[]` | `[]` | Opt-out list. Use `nip:1234567890` or `domain:example.pl`. |

Example input:

```json
{
  "categories": ["restauracja"],
  "locations": ["Warszawa"],
  "maxResults": 50,
  "sources": ["panorama_firm", "aleo"],
  "verifyEmails": true,
  "emailVerificationMode": "dns_only",
  "contactEnrich": true,
  "suppressionList": []
}
````

### Output Record

Sample anonymized output item:

```json
{
  "name": "Gabinet Fizjoterapii Przykład",
  "nip": "9552179326",
  "city": "Kraków",
  "address": "ul. Śliwkowa 7a, 30-001 Kraków",
  "phone": "+48 501 234 567",
  "website_url": "https://example-fizjo.pl",
  "email": "kontakt@example-fizjo.pl",
  "email_source": "website",
  "email_status": "dns_check_only",
  "source": "panorama_firm,aleo",
  "dedup_confidence": "high",
  "duplicate_candidate": "",
  "lawful_basis": "Art. 6(1)(f) RODO - legitimate interest, B2B public data",
  "scraped_at": "2026-05-14T12:00:00Z"
}
```

### Pricing

This Actor uses Pay Per Event pricing:

- `$0.015` per lead output record.
- `$0.005` per verified email (`email_status != unknown/unverified`).

No subscription required. You pay only for results.

### RODO/GDPR Notice

⚠️ RODO/GDPR Notice: This Actor collects publicly available B2B business data (registered companies, business emails, office addresses). Lawful basis: Art. 6(1)(f) legitimate interest for B2B marketing. Users are responsible for their own data retention policies and opt-out handling. Not for use with personal/private individual data.

### FAQ

#### Is this legal?

Yes, for publicly available B2B data under Art. 6(1)(f) RODO/GDPR. Users remain responsible for their own outreach, retention, and opt-out handling.

#### Why did I get 0 results?

Check that `categories` and `locations` are non-empty and specific enough. Aleo may require residential proxy access, which is available when running on the Apify platform.

#### How do I export CSV?

Open the run's default Apify Dataset and export the results as CSV, JSON, XLSX, XML, or RSS from the platform dashboard.

#### What is `dedup_confidence`?

`high` means a strong NIP or domain match, `medium` means a phone match, and `none` means no deduplication signal was found.

#### What is `dns_check_only` email status?

The email domain has valid MX records and can receive mail at the server level, but the exact mailbox existence is not confirmed without full SMTP verification.

### Support

For support, contact: support@dobrawww.com

# Actor input Schema

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

Business categories to search for, e.g. restauracja, agencja reklamowa, gabinet fizjoterapii.

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

Polish cities or regions to search in, e.g. Warszawa, Krakow, Trojmiasto.

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

Maximum number of leads to return in one run.

## `sources` (type: `array`):

Data sources to scrape.

## `verifyEmails` (type: `boolean`):

Verify discovered emails using the selected verification mode.

## `emailVerificationMode` (type: `string`):

Email verification strategy. Full currently falls back to DNS-only until Apify add-on integration is added.

## `contactEnrich` (type: `boolean`):

Visit company websites to find business email addresses.

## `suppressionList` (type: `array`):

Opt-out entries to exclude from output. Use items in format nip:XXXXXXXXXX or domain:example.pl.

## Actor input object example

```json
{
  "categories": [
    "restauracja"
  ],
  "locations": [
    "Warszawa"
  ],
  "maxResults": 50,
  "sources": [
    "panorama_firm",
    "aleo"
  ],
  "verifyEmails": true,
  "emailVerificationMode": "dns_only",
  "contactEnrich": true,
  "suppressionList": []
}
```

# 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": [
        "restauracja"
    ],
    "locations": [
        "Warszawa"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("inhabitable_wheat/polish-smb-lead-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": ["restauracja"],
    "locations": ["Warszawa"],
}

# Run the Actor and wait for it to finish
run = client.actor("inhabitable_wheat/polish-smb-lead-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 '{
  "categories": [
    "restauracja"
  ],
  "locations": [
    "Warszawa"
  ]
}' |
apify call inhabitable_wheat/polish-smb-lead-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Polish B2B Lead Finder",
        "description": "Find Polish B2B leads from Panorama Firm and Aleo by category and city. Outputs NIP, address, phone, website, email status, source, and deduplication confidence for sales and agency prospecting.",
        "version": "0.1",
        "x-build-id": "WSnGNFilXADRdUjyL"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/inhabitable_wheat~polish-smb-lead-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-inhabitable_wheat-polish-smb-lead-scraper",
                "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/inhabitable_wheat~polish-smb-lead-scraper/runs": {
            "post": {
                "operationId": "runs-sync-inhabitable_wheat-polish-smb-lead-scraper",
                "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/inhabitable_wheat~polish-smb-lead-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-inhabitable_wheat-polish-smb-lead-scraper",
                "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": [
                    "categories",
                    "locations"
                ],
                "properties": {
                    "categories": {
                        "title": "Categories",
                        "minItems": 1,
                        "type": "array",
                        "description": "Business categories to search for, e.g. restauracja, agencja reklamowa, gabinet fizjoterapii.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "locations": {
                        "title": "Locations",
                        "minItems": 1,
                        "type": "array",
                        "description": "Polish cities or regions to search in, e.g. Warszawa, Krakow, Trojmiasto.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of leads to return in one run.",
                        "default": 50
                    },
                    "sources": {
                        "title": "Sources",
                        "type": "array",
                        "description": "Data sources to scrape.",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "panorama_firm",
                            "aleo"
                        ]
                    },
                    "verifyEmails": {
                        "title": "Verify emails",
                        "type": "boolean",
                        "description": "Verify discovered emails using the selected verification mode.",
                        "default": true
                    },
                    "emailVerificationMode": {
                        "title": "Email verification mode",
                        "enum": [
                            "full",
                            "dns_only",
                            "none"
                        ],
                        "type": "string",
                        "description": "Email verification strategy. Full currently falls back to DNS-only until Apify add-on integration is added.",
                        "default": "dns_only"
                    },
                    "contactEnrich": {
                        "title": "Contact enrichment",
                        "type": "boolean",
                        "description": "Visit company websites to find business email addresses.",
                        "default": true
                    },
                    "suppressionList": {
                        "title": "Suppression list",
                        "type": "array",
                        "description": "Opt-out entries to exclude from output. Use items in format nip:XXXXXXXXXX or domain:example.pl.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
