# Slovenia B2B Company Leads Scraper (`lissome_santoor/bizi-si-scraper`) Actor

Extract public Slovenian B2B company leads from Bizi.si with emails, phone numbers, websites, addresses, tax numbers, employee filters, and source URLs.

- **URL**: https://apify.com/lissome\_santoor/bizi-si-scraper.md
- **Developed by:** [matej hernavs](https://apify.com/lissome_santoor) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 lead saveds

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

## Slovenia B2B Company Leads Scraper

Get public Slovenian B2B company leads from Bizi.si search result, category, and advanced-search pages. The Actor saves only useful leads: companies with an email address, or companies with either an email address or a phone number, depending on your selected contact type.

This Actor is unofficial and is not affiliated with Bizi.si, TSmedia, or any related company.

### What this Actor does

This Actor turns a public Bizi.si search URL into a structured lead list ready for sales, outreach, CRM enrichment, or market research. It visits company profiles from the search results, extracts company details, and skips companies that do not match your selected contact requirement.

You can use it to collect:

- Company names
- Email addresses
- Phone numbers
- Websites
- Addresses
- Registration numbers
- Tax numbers
- Activity data
- Employee count data
- Contact-person names, when OCR is enabled and available
- Source URLs
- Scrape timestamps

### Quick start

1. Open Bizi.si and create the search or category you want to scrape.
2. Copy the public search result, category, or advanced-search URL.
3. Paste it into **Bizi.si search URL**.
4. Set **Number of leads**.
5. Choose **Email only** or **Email or phone**.
6. Run the Actor and download the Dataset results.

The Actor automatically opens enough result pages to try to reach your requested number of matching leads. Companies without the selected contact type are skipped and do not count toward the requested lead count.

### Lead contact options

| Option           | Saved leads                                                            |
| ---------------- | ---------------------------------------------------------------------- |
| `Email only`     | Saves only companies with an email address.                            |
| `Email or phone` | Saves companies that have at least an email address or a phone number. |

Empty leads are never saved. If a company has neither an email address nor a phone number, it is skipped.

### Input

| Field               | Description                                                                      |
| ------------------- | -------------------------------------------------------------------------------- |
| `searchUrl`         | Public Bizi.si search results, category, or advanced-search URL.                 |
| `maxItems`          | Number of matching leads to save.                                                |
| `leadContactType`   | Choose whether saved leads must have email, or email or phone.                   |
| `enableOcr`         | Optionally extract a contact-person name from images. Requires `GEMINI_API_KEY`. |
| `employeeCountFrom` | Optional minimum employee-count filter.                                          |
| `employeeCountTo`   | Optional maximum employee-count filter.                                          |
| `companySize`       | Optional company-size filter.                                                    |

### Examples

Scrape Slovenian IT companies and save leads with either email or phone:

```json
{
    "searchUrl": "https://www.bizi.si/TSMEDIA/R/racunalnistvo-in-informatika-3520/",
    "maxItems": 100,
    "leadContactType": "emailOrPhone",
    "enableOcr": false
}
````

Scrape only companies with email addresses:

```json
{
    "searchUrl": "https://www.bizi.si/TSMEDIA/R/racunalnistvo-in-informatika-3520/",
    "maxItems": 100,
    "leadContactType": "email"
}
```

Add optional employee filters:

```json
{
    "searchUrl": "https://www.bizi.si/TSMEDIA/R/racunalnistvo-in-informatika-3520/",
    "maxItems": 100,
    "leadContactType": "emailOrPhone",
    "employeeCountFrom": "10",
    "employeeCountTo": "49"
}
```

### Output

Each saved lead is written to the default Apify Dataset.

```json
{
    "companyName": "Example d.o.o.",
    "address": "Example street 1, 1000 Ljubljana",
    "phone": "+386 1 123 45 67",
    "website": "https://www.example.si",
    "email": "info@example.si",
    "registrationNumber": "1234567000",
    "taxNumber": "12345678",
    "activity": "Computer programming",
    "employees": "10 to 19 employees",
    "contactPerson": "",
    "sourceUrl": "https://www.bizi.si/EXAMPLE-D-O-O/",
    "scrapedAt": "2026-06-12T12:00:00.000Z"
}
```

### Best practices

- Start with a small run, for example 25 to 100 leads, to confirm your search URL and filters.
- Use a more specific Bizi.si category or advanced search when you need a focused lead list.
- Choose **Email only** for email outreach workflows.
- Choose **Email or phone** for broader sales prospecting where phone-only leads are still useful.
- Keep OCR disabled unless you specifically need contact-person names.

### Pricing and limits

Only saved valid leads are considered results. Companies skipped because they do not have the selected contact type are not saved to the Dataset.

For pay-per-event pricing, the Actor uses the `lead-saved` event for each saved lead. For pay-per-result pricing, the Actor respects Apify's paid dataset item limit and stops before returning unpaid Dataset items.

### Troubleshooting

If you get fewer leads than expected, the most common reason is that many companies in the selected search results do not have the selected contact type. Switch from **Email only** to **Email or phone**, or use a broader Bizi.si search URL.

If a filter does not seem visible in the URL, that is normal for Bizi.si. Some filters are stored in the public search form state. When optional filters are selected in Actor input, the Actor applies them before scraping.

If OCR is enabled but `contactPerson` is empty, make sure `GEMINI_API_KEY` is configured as an Apify secret or environment variable. Without the key, the Actor continues normally and leaves `contactPerson` empty.

### Notes and limitations

- The Actor works with public Bizi.si pages only.
- It does not use Bizi.si login, paid exports, subscription data, or private functionality.
- Availability of email addresses, phone numbers, and profile fields depends on what is publicly visible on Bizi.si.
- Please use the exported data responsibly and follow applicable privacy, marketing, and data-protection rules.

### Local run

```powershell
npx apify-cli run --purge --input '{"searchUrl":"https://www.bizi.si/TSMEDIA/R/racunalnistvo-in-informatika-3520/","maxItems":5}'
```

### Deploy

```powershell
npx apify-cli push --wait-for-finish=300
```

Do not commit `.env`, local `storage/`, crawl output, or secrets.

# Actor input Schema

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

Paste a public Bizi.si search results, category, or advanced search URL.

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

How many matching leads to save. Only companies with the selected contact type are counted.

## `leadContactType` (type: `string`):

Choose which contact details a company must have before it is saved.

## `enableOcr` (type: `boolean`):

Optionally reads contact-person names from images. Requires GEMINI\_API\_KEY.

## `employeeCountFrom` (type: `string`):

Leave as Any to avoid filtering by minimum employee count.

## `employeeCountTo` (type: `string`):

Leave as Any to avoid filtering by maximum employee count.

## `companySize` (type: `string`):

Leave as Any to avoid filtering by company size.

## Actor input object example

```json
{
  "searchUrl": "https://www.bizi.si/TSMEDIA/R/racunalnistvo-in-informatika-3520/",
  "maxItems": 50,
  "leadContactType": "email",
  "enableOcr": false,
  "employeeCountFrom": "",
  "employeeCountTo": "",
  "companySize": ""
}
```

# Actor output Schema

## `summary` (type: `string`):

No description

## `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 = {
    "searchUrl": "https://www.bizi.si/TSMEDIA/R/racunalnistvo-in-informatika-3520/"
};

// Run the Actor and wait for it to finish
const run = await client.actor("lissome_santoor/bizi-si-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 = { "searchUrl": "https://www.bizi.si/TSMEDIA/R/racunalnistvo-in-informatika-3520/" }

# Run the Actor and wait for it to finish
run = client.actor("lissome_santoor/bizi-si-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 '{
  "searchUrl": "https://www.bizi.si/TSMEDIA/R/racunalnistvo-in-informatika-3520/"
}' |
apify call lissome_santoor/bizi-si-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Slovenia B2B Company Leads Scraper",
        "description": "Extract public Slovenian B2B company leads from Bizi.si with emails, phone numbers, websites, addresses, tax numbers, employee filters, and source URLs.",
        "version": "0.0",
        "x-build-id": "ao1vX5CuRhTllJob8"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lissome_santoor~bizi-si-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lissome_santoor-bizi-si-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/lissome_santoor~bizi-si-scraper/runs": {
            "post": {
                "operationId": "runs-sync-lissome_santoor-bizi-si-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/lissome_santoor~bizi-si-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-lissome_santoor-bizi-si-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": [
                    "searchUrl"
                ],
                "properties": {
                    "searchUrl": {
                        "title": "Bizi.si search URL",
                        "type": "string",
                        "description": "Paste a public Bizi.si search results, category, or advanced search URL."
                    },
                    "maxItems": {
                        "title": "Number of leads",
                        "minimum": 1,
                        "maximum": 50000,
                        "type": "integer",
                        "description": "How many matching leads to save. Only companies with the selected contact type are counted.",
                        "default": 50
                    },
                    "leadContactType": {
                        "title": "Lead contact type",
                        "enum": [
                            "email",
                            "emailOrPhone"
                        ],
                        "type": "string",
                        "description": "Choose which contact details a company must have before it is saved.",
                        "default": "email"
                    },
                    "enableOcr": {
                        "title": "Extract contact person (OCR)",
                        "type": "boolean",
                        "description": "Optionally reads contact-person names from images. Requires GEMINI_API_KEY.",
                        "default": false
                    },
                    "employeeCountFrom": {
                        "title": "Employees from",
                        "enum": [
                            "",
                            "0",
                            "1",
                            "2",
                            "3",
                            "5",
                            "10",
                            "20",
                            "50",
                            "100",
                            "150",
                            "200",
                            "250",
                            "500",
                            "1000"
                        ],
                        "type": "string",
                        "description": "Leave as Any to avoid filtering by minimum employee count.",
                        "default": ""
                    },
                    "employeeCountTo": {
                        "title": "Employees to",
                        "enum": [
                            "",
                            "0",
                            "1",
                            "2",
                            "4",
                            "9",
                            "19",
                            "49",
                            "99",
                            "149",
                            "199",
                            "249",
                            "499",
                            "999",
                            "99999"
                        ],
                        "type": "string",
                        "description": "Leave as Any to avoid filtering by maximum employee count.",
                        "default": ""
                    },
                    "companySize": {
                        "title": "Company size",
                        "enum": [
                            "",
                            "micro",
                            "small",
                            "medium",
                            "large"
                        ],
                        "type": "string",
                        "description": "Leave as Any to avoid filtering by company size.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
