# AJPES Slovenia Business Register Scraper — PRS Company Data (`studio-amba/ajpes-scraper`) Actor

Look up Slovenian company data from AJPES's official Poslovni register Slovenije (PRS). Search by company name or matična številka and get legal form, registration authority, and registered address. Reads AJPES's own open-data export — no login, no anti-bot.

- **URL**: https://apify.com/studio-amba/ajpes-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.00 / 1,000 result scrapeds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

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

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## AJPES Slovenia Business Register Scraper — PRS Company Data

Look up Slovenian company data from **AJPES** (Agencija Republike Slovenije za javnopravne evidence
in storitve), the government agency that runs **PRS** (Poslovni register Slovenije — the Business
Register of Slovenia). **Search by company name or matična številka** (registration number) and get
the legal form, registration authority, and registered address — the same core facts
[ajpes.si](https://www.ajpes.si) itself publishes, structured for bulk export. Run it on demand via
the Apify Console or API, schedule it to refresh a watchlist, or chain it into a larger KYB pipeline.

### Why use AJPES Slovenia Business Register Scraper?

- **Verify a Slovenian counterparty before signing a contract** — confirm a company's registered
  name, matična številka, legal form, and registered address in seconds.
- **Build B2B prospecting lists** for Slovenia, filtered by name keyword.
- **Complement other national company registers** — pair with Studio AMBA's Polish (CRBR/KRZ),
  German (Handelsregister), French (Infogreffe), Slovak (ORSR), Finnish (YTJ), and North Data actors
  for wider European KYB coverage.
- **Cross-check an address or legal form** against the official register rather than a third-party
  business directory that may be stale.

### How to scrape ajpes.si data

This actor does not scrape AJPES's website HTML, and it does not use the login-gated PRS search at
[ajpes.si/prs](https://www.ajpes.si/prs/) — that live search requires a registered AJPES account for
every result page, even an exact match, so it isn't something a public scraper can use. Instead, this
actor reads **AJPES's own official open-data export** of the full PRS register, published on
Slovenia's national open-data portal (podatki.gov.si) under a CC BY 4.0 license and refreshed twice a
month by AJPES itself. That's the same underlying register, published specifically for reuse — no
anti-bot defenses to work around, no login wall, no proxy required.

#### Search by company name

Enter a company name or keyword (e.g. `Krka`, `Petrol`, `Mercator`) in **Company Name**. The search is
case-insensitive and diacritic-insensitive, so typing `trzic` also matches names containing `Tržič`.

#### Look up an exact registration number (matična številka)

Enter a Slovenian registration number in **Registration Number**. A full 10-digit number (e.g.
`5043611000`) returns an exact match. A 7-digit base number (e.g. `5043611`) returns the main entity
plus any registered parts or branches sharing that base — the main entity (ending in `000`, when
present) is always returned first.

#### Result limit

**Max Results** caps how many company records the actor returns per run (default 20, maximum 500).

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|--------------|
| **Company Name** | String | `Krka` | Company name keyword, diacritic-insensitive, partial match |
| **Registration Number** | String | — | Exact 10-digit matična številka, or a 7-digit base number for a prefix match |
| **Max Results** | Integer | `20` | Maximum companies to return (1–500) |
| **Proxy Configuration** | Object | Ignored | Not used — see Limitations |

### What data does AJPES Slovenia Business Register Scraper extract?

| Field | Type | Description |
|-------|------|--------------|
| **companyName** | String | Full registered company name |
| **registrationNumber** | String | Matična številka (10-digit PRS registration number) |
| **ajpesInternalId** | String | 18-digit AJPES-internal record identifier (undocumented format, included for reference/joins) |
| **legalForm** | String | Legal form (e.g. "Družba z omejeno odgovornostjo d.o.o.", "Samostojni podjetnik posameznik s.p.", "Delniška družba d.d.") |
| **registrationAuthority** | String | Registering authority — a district court (`Okrožno sodišče ...`) for court-registered entities, or an AJPES regional office (`AJPES, izpostava ...`) for AJPES-registered ones |
| **street** | String | Street name |
| **houseNumber** | String | House number, including any letter suffix (e.g. "6A") |
| **settlement** | String | Settlement (naselje) |
| **postalCode** | String | Postal code |
| **city** | String | Post office / town |
| **address** | String | Full formatted registered address |
| **country** | String | Always "Slovenia" |
| **status** | String | Always "active" — see Limitations |
| **url** | String | Link to the open-data source |
| **scrapedAt** | String | ISO timestamp of extraction |

### Example output

```json
{
    "companyName": "KRKA, tovarna zdravil, d.d., Novo mesto",
    "registrationNumber": "5043611000",
    "ajpesInternalId": "100400000138816776",
    "legalForm": "Delniška družba d.d.",
    "registrationAuthority": "Okrožno sodišče Novo mesto",
    "street": "Šmarješka cesta",
    "houseNumber": "6",
    "settlement": "Novo mesto",
    "postalCode": "8000",
    "city": "Novo mesto",
    "address": "Šmarješka cesta 6, 8000 Novo mesto",
    "country": "Slovenia",
    "status": "active",
    "url": "https://podatki.gov.si/dataset/poslovni-register-slovenije",
    "scrapedAt": "2026-08-22T14:52:20.974Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### How much does it cost to scrape ajpes.si data?

Pricing is pay per result. Each run makes a single request to download the official ~128MB open-data
export, then filters it in memory — no HTML parsing, no browser rendering, no per-result network
request. A typical run downloading, parsing, and returning matches completes in well under a minute.

Your run's usage cost only settles once the run reports **SUCCEEDED** — reading the dataset while a
run is still in progress will undercount what you'll actually be billed. A run that fails or is
aborted mid-way is billed only for the resources it actually used up to that point.

### Tips / Advanced options

- For an exact match on a known company, search by the full 10-digit registration number rather than
  name — it skips ambiguity entirely.
- If you only know the shorter, commonly-printed 7-digit registration number, use it anyway — the
  actor matches it as a prefix and returns the main entity first.
- Because this actor reads an open government data export rather than scraping a website, it stays
  reliable even if AJPES redesigns ajpes.si — the underlying data source doesn't change.

### Limitations

- **No active/dissolved status flag in the source data.** AJPES's open PRS export is a biweekly
  snapshot of currently-registered subjects — there is no explicit status field in the file. A
  dissolved company simply drops out of the next snapshot rather than being flagged, so every record
  this actor returns reflects a subject AJPES currently lists as registered; the `status` field is
  set to `"active"` accordingly rather than tracking a state AJPES doesn't publish in this export.
- **No registration date or legal representatives/officers in the source data.** Those fields exist
  in AJPES's data model but are only exposed through the login-gated live PRS portal, which requires
  a registered AJPES account for every result — not something this actor can access. If you need
  officer/representative data, AJPES's own portal (with a personal account) or a paid extract is the
  only route.
- **Proxy configuration is accepted but not used.** This actor always downloads the open-data CSV
  directly. Routing a single ~128MB file download through a proxy is unreliable for this kind of bulk
  transfer and unnecessary, since the source has no anti-bot protection.

### FAQ

**Is this actor affiliated with AJPES or the Slovenian government?** No. It is an independent tool
that reads AJPES's own published open-data export (podatki.gov.si), which is free and published for
public and commercial reuse under a CC BY 4.0 license.

**Does this actor need a proxy or API key?** No. The open-data export is free, unauthenticated, and
has no anti-bot protection — this actor downloads it directly.

**Why doesn't this actor scrape ajpes.si's own search page?** AJPES's live PRS search
(ajpes.si/prs) requires a logged-in AJPES account to display any result, even for an exact
registration-number match — verified live. That makes it unsuitable for a public scraper. The
open-data export published by AJPES itself is the legitimate, unauthenticated alternative.

Found an issue or need a custom field? Use the Issues tab on this actor's Apify Store page — Studio
AMBA also builds custom scrapers on request.

### Related scrapers

- **[KRZ Scraper](https://apify.com/studio-amba/krz-scraper)** — Polish court/business register data.
- **[CRBR Scraper](https://apify.com/studio-amba/crbr-scraper)** — Polish beneficial ownership registry data.
- **[Handelsregister Scraper](https://apify.com/studio-amba/handelsregister-scraper)** — German commercial register data.
- **[ORSR Scraper](https://apify.com/studio-amba/orsr-scraper)** — Slovak business register data.
- **[YTJ Scraper](https://apify.com/studio-amba/ytj-scraper)** — Finnish business register data.
- **[North Data Scraper](https://apify.com/studio-amba/northdata-scraper)** — European company data (Germany + 15 more countries).

### Data source and legality

This actor reads AJPES's own official open-data export, published specifically for public and
commercial reuse under a CC BY 4.0 license on Slovenia's national open-data portal. It does not
access any login-protected or paid area of ajpes.si. Use the data in line with the license terms and
applicable data-protection rules (in particular, take care with personal data of natural persons /
sole proprietors returned in some results, such as samostojni podjetnik entries).

# Actor input Schema

## `searchQuery` (type: `string`):

Search by Slovenian company name (e.g. 'Krka', 'Petrol', 'Mercator'). Case-insensitive, diacritic-insensitive (searching 'trzic' also matches names containing 'Tržič'), and matches partial names. Ignored when a Registration Number is provided. Defaults to 'Krka' if no search criteria provided.

## `registrationNumber` (type: `string`):

Look up a specific company by its matična številka. Accepts the full 10-digit number (e.g. '5043611000') for an exact match, or just the 7-digit base number (e.g. '5043611') to match the main entity and any registered parts/branches sharing that base.

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

Maximum number of company records to return.

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

Not used. This actor reads AJPES's own official open-data export (podatki.gov.si), a plain government CDN file with no anti-bot protection. It always fetches the file directly — routing this large single-file download through a proxy is unreliable and unnecessary.

## Actor input object example

```json
{
  "searchQuery": "Krka",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (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 = {
    "searchQuery": "Krka",
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/ajpes-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 = {
    "searchQuery": "Krka",
    "maxResults": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/ajpes-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 '{
  "searchQuery": "Krka",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call studio-amba/ajpes-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,studio-amba/ajpes-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/4k0PGnzvthQyohSPy/builds/c1nx6ul2zvupsgxUa/openapi.json
