# Bazoš.sk Scraper (`lowlanddata/bazos-sk-scraper`) Actor

Extract Bazoš.sk listings as clean JSON with zero seller personal data - euro prices, descriptions, cities, view counts, postcode radius search. Newest-first monitoring, pay per result. Built for deal watching, market research and AI pipelines.

- **URL**: https://apify.com/lowlanddata/bazos-sk-scraper.md
- **Developed by:** [Lowland Data](https://apify.com/lowlanddata) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.69 / 1,000 results

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

## Bazoš.sk Scraper — GDPR-safe listings data

Extract listings from **Bazoš.sk** — Slovakia's most popular classifieds site — as clean, structured JSON. Prices, descriptions, cities and postcodes, posting dates, view counts and photos, ready for price monitoring, market research and data pipelines.

**No seller personal data, ever.** This scraper is built GDPR-first: seller names, user IDs and contact routes never appear in the output — not as an option you have to remember to switch off, but by design.

### Quick start (30 seconds)

1. Put what you'd type in the Bazoš search box into **searchQuery** — e.g. `kolo`.
2. Click **Start**. That's the whole minimum setup.
3. When the run finishes, open the dataset's **Overview** tab for a clean table, or **Export** it as CSV/Excel/JSON.

Optional knobs: a price band in EUR and a postcode + radius — and any input works on a daily Schedule.

### What you can build with it

- **Watch a niche for underpriced listings.** Run `searchQuery: "bicykel"` with `priceMax: 5000` hourly — Bazoš orders newest-first by default, and every listing arrives with `priceAmount` parsed and non-numeric prices ("Dohodou", "Zadarmo") honestly flagged in `priceDisplay`.
- **Search around a place.** `postcode: "811 01"` with `radiusKm: 25` uses the site's own location filter — local deals without scraping the whole country.
- **Spot demand with view counts.** `viewCount` comes with every listing — a 2,000-view listing that is still up tells you something about its price.
- **Feed an AI agent clean data.** Every field is structured, predictable and free of personal data, so an assistant or pipeline can consume it directly — no scrubbing, no compliance review before you store it.

### What you get

Each listing is one dataset item:

```json
{
  "listingId": "222830001",
  "url": "https://auto.bazos.sk/inzerat/222830001/horsky-bicykel.php",
  "title": "Horský bicykel 29\" ako nový",
  "description": "Predám pekný horský bicykel, málo jazdený, po servise, nové plášte.",
  "priceAmount": 350,
  "priceDisplay": "350 €",
  "city": "Žilina",
  "postcode": "010 01",
  "postedAt": "21.8.2026",
  "viewCount": 152,
  "promoted": false,
  "imageUrl": "https://www.bazos.sk/img/1t/001/222830001.jpg"
}
```

Field notes, so you know exactly what you are buying:

- `priceAmount` is in whole EUR; listings with a non-numeric price — "Dohodou" (negotiable), "Zadarmo" (free) and the like — carry `null`; `priceDisplay` always shows the site's exact wording.
- `postedAt` is the site's own display format (`d.m.yyyy`).
- `promoted` marks paid "TOP" placements — filter them out for organic-only analysis.
- `description` is the search-page snippet, not the full listing text.

### How much does it cost to scrape Bazoš?

$1.99 per 1,000 listings delivered, pay-as-you-go — no subscription, no charge for empty or failed runs. In plain dollars:

- **100 listings ≈ $0.20** — a daily niche watch.
- **500 listings ≈ $1.00** — a solid market snapshot.

The price is all-inclusive — your runs' platform usage is covered by it, with no separate compute or proxy charges. Datacenter proxies are sufficient — no residential proxy surcharge needed.

Free-plan runs are limited to a sample of 25 items, enough to evaluate the output format against your real query.

### Not technical? Let your AI assistant set it up

Copy this into ChatGPT, Claude or any AI assistant, fill in the one line, and follow the conversation:

```text
Help me set up the "Bazoš.sk Scraper" actor on Apify
(https://apify.com/lowlanddata/bazos-sk-scraper). Guide me one step at a time.

What I want to watch: [E.G. "mountain bikes under 5000 euros around Bratislava"]

Guide me to:
1. Propose my input values: searchQuery (what I'd type in the Bazoš search box),
   an optional priceMin/priceMax band in EUR, postcode + radiusKm, and maxItems.
2. Create a free Apify account (apify.com), open the actor page, paste the values
   into the Input form, and start a run.
3. Set up a daily Schedule in the Apify Console with the same input, plus an email
   or Slack integration so new results reach me automatically.
4. Show me how to export results as CSV/Excel, or read them from the API if I code.
5. If the results are what I wanted, remind me at the end to leave a quick rating on the actor page, and to report anything broken or missing on its Issues tab.
```

### Input

| Field                | Description                                           |
| -------------------- | ----------------------------------------------------- |
| `searchQuery`        | What you'd type in the Bazoš search box. Required.    |
| `priceMin`           | Only listings costing at least this many euros.       |
| `priceMax`           | Only listings costing at most this many euros.        |
| `postcode`           | Postcode to search around, e.g. "811 01".             |
| `radiusKm`           | Search radius around the postcode (needs `postcode`). |
| `maxItems`           | Stop after this many listings (default 500).          |
| `proxyConfiguration` | Proxy settings; keep Apify proxy enabled.             |

A run minimally needs a `searchQuery`; invalid combinations fail immediately with the reason in the run's status message.

### Use it from your code

Run the actor and get items straight back with one HTTP call (fine for scoped runs up to ~5 minutes):

```bash
curl "https://api.apify.com/v2/acts/lowlanddata~bazos-sk-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -X POST -H "Content-Type: application/json" \
  -d '{"searchQuery": "bicykel", "maxItems": 100}'
```

Node.js:

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('lowlanddata/bazos-sk-scraper').call({
  searchQuery: 'bicykel',
  maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("lowlanddata/bazos-sk-scraper").call(
    run_input={"searchQuery": "bicykel", "maxItems": 100})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

Schedules, webhooks and the Make/Zapier/n8n integrations all work out of the box — this is a standard Apify actor.

### Use it with AI agents (MCP)

Claude, Cursor and other MCP-capable agents can run this scraper as a tool through Apify's hosted MCP server: the agent fills in the search itself, starts the run and reads the results — no glue code.

Claude Code:

```bash
claude mcp add apify --transport http "https://mcp.apify.com?actors=lowlanddata/bazos-sk-scraper"
```

Cursor or Claude Desktop (add a custom connector / MCP server with this URL):

```text
https://mcp.apify.com?actors=lowlanddata/bazos-sk-scraper
```

Sign in with your Apify account when prompted — runs are billed to it. Setup details per client: [Apify MCP docs](https://docs.apify.com/platform/integrations/mcp).

Prompts that work once connected:

- "Search Bazoš for 'bicykel' under 500 € and summarize the price distribution."
- "Get the 100 newest 'iphone 15' listings from Bazoš and flag anything below the median price."
- "Watch Bazoš for 'kajak' around postcode 811 01 and tell me when something under 300 € appears."

### Is it legal to scrape Bazoš?

Public listing data — prices, descriptions, cities — is public commercial information, and this scraper is built so that the hard part of the question never arises: **no personal data enters your dataset in the first place.** The Slovak data-protection authority (ÚOOÚ SR) follows the same GDPR baseline as the rest of the EU; an output that carries none of the seller's personal data is the point of this actor, not an afterthought.

Structurally, the extractor maps a fixed whitelist of fields out of the listing rows. The action row — which carries seller first names and user identifiers — is never read into the output. Requests are paced, load on the site is kept negligible, and no anti-bot protection is bypassed.

One honest limit: titles and descriptions are the seller's own words, delivered as-is. If a seller chooses to type contact details into their listing text, that text is not rewritten — the guarantee covers the data fields, not the content sellers publish about themselves.

### Is there a Bazoš API alternative?

Bazoš publishes no API for listings. This actor is the practical alternative: the same listings as structured JSON through one HTTP call (`run-sync-get-dataset-items`), on a schedule, or as an MCP tool for AI agents — with the GDPR question already answered in the data itself.

### Does Bazoš block scrapers?

Bazoš serves its listings openly to ordinary requests — and this actor stays inside that welcome: paced requests, standard datacenter proxies, load kept negligible. No CAPTCHA fights, no bot-wall cat-and-mouse — which is also why runs are fast and reliable enough for daily schedules.

### How do I monitor Bazoš prices?

Bazoš orders newest-first by default: set your query, cap `maxItems` to a page or two, and add a daily (or hourly) Schedule in the Apify Console with an email/Slack integration on the runs — every new listing lands in your inbox with the price already parsed. The AI-assistant prompt above walks a non-technical user through exactly this setup.

### FAQ

**Can I get seller names or phone numbers?** No — by design. That is the product: data you can store, share and process without a GDPR review.

**What does "Dohodou" mean in priceDisplay?** "By agreement" — the seller wants offers. Those listings carry `priceAmount: null` so your numeric analysis stays clean.

**How fresh is the data?** Live at run time — every run queries Bazoš directly. For continuous freshness, schedule the actor.

**Can I export to Excel or CSV?** Yes — every dataset exports as CSV, Excel, JSON or XML from the Apify Console or API.

**Does it cover bazos.cz too?** The Czech Republic has its own actor — [Bazoš.cz Scraper](https://apify.com/lowlanddata/bazos-cz-scraper) — same clean output in CZK.

**Does it work with Make, Zapier or n8n?** Yes — it is a standard Apify actor; all platform integrations, webhooks and schedules apply.

**Does Bazoš.sk have a public API?** It does not publish one. This actor is the workaround: structured JSON from the same listings, reachable through a single API call, a Console schedule, or MCP for AI agents.

**Can I use this without writing code?** Yes. Fill in **searchQuery** on this page and hit Start; exports and daily schedules are all point-and-click in the Apify Console. The assistant prompt above covers every step.

**Is scraping Bazoš.sk GDPR-compliant?** The dataset you receive contains no seller names, user IDs or contact routes — the extractor whitelists commercial fields only. What lands in your storage never needs a privacy review.

**What does a run cost?** $1.99 per 1,000 delivered listings — so a 100-listing daily watch is around $0.20. Runs that fail or return nothing are free.

**How do I limit results to the Bratislava area?** Combine `postcode` (e.g. "811 01") with `radiusKm` — the actor passes both to the site's own distance filter. The radius can go up to 500 km.

**Can I set a price range in euros?** Yes: `priceMin` and `priceMax` are whole-EUR bounds handed to Bazoš itself, so out-of-band listings never reach your dataset.

**Is there a limit on listings per run?** `maxItems` decides (500 if you leave it alone). Free-plan runs stop at 25 items — a sample for judging the output.

**Can I test it for free?** Run it on the Apify free plan: you get up to 25 genuine results for your own query, no payment details needed.

**Do I get the whole ad text?** No — `description` carries the snippet Bazoš shows on search pages. The structured fields (price, city, postcode, date, views, photo) are complete.

**Why do some listings show promoted: true?** Sellers can pay for "TOP" placement; the flag lets you separate paid visibility from organic listings in your analysis.

**What is viewCount for?** It is the site's own view counter per listing — useful as a demand proxy when you compare asking prices.

**Do listings come with photos?** Yes, via `imageUrl` — a direct link to the listing photo hosted on Bazoš.

**How do I track new listings automatically?** Because the site lists newest first, a scheduled run each morning plus an email or Slack integration on the run results gives you a self-updating feed.

**Will Bazoš block the scraper?** In practice no: requests are paced, the load is negligible, and plain datacenter proxies suffice. Nothing anti-bot is bypassed, which is exactly why scheduled runs stay dependable.

### Related scrapers

Working the Central European second-hand market? The same GDPR-clean guarantee, same output discipline:

- [Bazoš.cz Scraper](https://apify.com/lowlanddata/bazos-cz-scraper) — the Czech classifieds staple.
- [OLX.pl Scraper](https://apify.com/lowlanddata/olx-pl-scraper) — Poland's largest marketplace.
- [Kleinanzeigen.de Scraper](https://apify.com/lowlanddata/kleinanzeigen-scraper) — Germany's biggest classifieds site.

### Troubleshooting

The actor fails fast with the reason in the run's status message:

- **"priceMin must not be higher than priceMax."** — swap the two values.
- **"radiusKm needs a postcode to measure from."** — add the postcode.
- **"The site blocked the run before any results could be fetched. This is usually temporary - retry in a few minutes."** — a temporary block on the first request; a retry usually lands on a clean proxy session.
- **Fewer items than requested on a free plan** — the 25-item free sample cap; run on a paid Apify plan for full results.

### Support

Found an issue or missing a field you need? Open an issue on the actor's **Issues tab** — reports get fixed, this actor is actively maintained.

Working well for you? A **rating on this page** takes ten seconds and helps other buyers find a GDPR-clean option among the lookalikes — it is also the clearest signal of what we should build next.

# Actor input Schema

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

What to search for on Bazoš, exactly as you would type it in the site's search box, e.g. "bicykel" or "iphone 15".

## `priceMin` (type: `integer`):

Only include listings costing at least this many euros.

## `priceMax` (type: `integer`):

Only include listings costing at most this many euros.

## `postcode` (type: `string`):

Postcode to search around, e.g. "110 00" (Prague). Needed for radiusKm.

## `radiusKm` (type: `integer`):

Search radius around the postcode, in kilometres.

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

Stop after this many listings. Free-plan runs are capped at 25 items.

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

Proxy settings. Keep Apify proxy enabled.

## Actor input object example

```json
{
  "searchQuery": "bicykel",
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `listings` (type: `string`):

Scraped Bazoš listings, one JSON object per listing.

# 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": "bicykel",
    "maxItems": 25,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("lowlanddata/bazos-sk-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": "bicykel",
    "maxItems": 25,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("lowlanddata/bazos-sk-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": "bicykel",
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call lowlanddata/bazos-sk-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lowlanddata/bazos-sk-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/Gg4h0Td6uzayG5Klm/builds/ZKbYzHOdFJYYRaGoM/openapi.json
