Bazoš Czech Classifieds Scraper avatar

Bazoš Czech Classifieds Scraper

Pricing

Pay per event

Go to Apify Store
Bazoš Czech Classifieds Scraper

Bazoš Czech Classifieds Scraper

Search Czech Bazoš classifieds and export detailed public listings for inventory research and repeatable price-change monitoring.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Categories

Share

Search public Czech Bazoš classifieds and export complete, stable listing records for inventory research and price-change monitoring. The Actor follows every search result to its public detail page, so each dataset row contains the listing ID, URL, title, description, price, location, date, category, and full-size image links.

Use it for one-time market research or schedule the same input repeatedly and compare records by listingId. It only reads anonymous public pages on bazos.cz; it does not reveal phone numbers, message sellers, post ads, or use account workflows.

What does this Bazoš scraper do?

  1. Builds a Czech Bazoš search from a keyword and optional category, location, radius, or price filters.
  2. Paginates the server-rendered result pages up to maxItems.
  3. Follows each unique public listing URL.
  4. Extracts complete listing details and full-size image URLs.
  5. Saves typed JSON records to the run's default dataset.

You can also supply public Bazoš search, category, or individual /inzerat/ URLs. This makes the Actor useful both for discovery and for refreshing a known set of listing IDs.

Who is it for?

  • Marketplace analysts comparing supply and asking prices across Czech categories.
  • Dealers and resellers tracking public competing inventory.
  • Researchers building reproducible snapshots of public classifieds.
  • Data teams feeding Bazoš listing records into spreadsheets, warehouses, or dashboards.
  • Automation builders monitoring whether known listings are still available or have changed price.

The Actor is intentionally narrow: Czech bazos.cz public listings only. It does not claim coverage of Bazoš Slovakia, Poland, or Austria.

Why use this Actor?

  • Stable identity: every row includes the numeric Bazoš listingId for joins and change detection.
  • Detail-page data: descriptions and full-size image links come from each public listing, not only search snippets.
  • Useful filters: keyword, Bazoš category, location/radius, and CZK price range.
  • Two input routes: discover listings with search or refresh exact public URLs.
  • Source-friendly execution: bounded concurrency, result limits, and transient-only retries.
  • Integration ready: typed records in the default Apify dataset.

What Bazoš data can I extract?

FieldTypeMeaning
listingIdstringStable numeric Bazoš listing ID
urlstringCanonical public listing URL
titlestringPublic listing title
descriptionstringFull public listing description
pricenumber or nullNumeric price when shown
priceTextstring or nullPrice exactly as displayed
currencyCZK or nullCurrency for a Czech-koruna price
locationstring or nullPublic locality
postalCodestring or nullPublic Czech postal code
postedDatestring or nullDisplayed date in day.month.year format
categorystringCategory subdomain such as auto or mobil
imagesstring[]Full-size public listing image URLs
scrapedAtstringISO 8601 extraction timestamp

No phone reveal endpoint is called. Seller account actions and private data are outside the Actor's scope.

How to get started

  1. Open the Actor in Apify Console.
  2. Enter a searchQuery, such as iphone or skoda.
  3. Optionally choose a category and add location or price filters.
  4. Set maxItems to the maximum detailed listings you need.
  5. Click Start.
  6. Open the Dataset tab to preview, download, or integrate the records.
  7. To monitor changes, schedule the same input and compare rows by listingId.

The prefilled input searches the current mobile-phone category and is suitable for a first run.

Input parameters

InputTypeDefaultDescription
searchQuerystringiphone prefillKeyword used by Bazoš search
categorystringallOne supported Czech category or all categories
locationstringemptyCzech place or postal code accepted by Bazoš
radiusKminteger0Radius around the supplied location, up to 100 km
minPriceintegeremptyMinimum price in CZK
maxPriceintegeremptyMaximum price in CZK
startUrlsURL arrayemptyPublic Czech Bazoš search/category/listing URLs
maxItemsinteger20Maximum detailed records, from 1 to 1,000
maxConcurrencyinteger5Parallel detail requests, from 1 to 10

Provide either searchQuery or at least one startUrls entry. When both are supplied, results from both routes are deduplicated by URL before the limit is applied.

Example search input

{
"searchQuery": "skoda",
"category": "auto",
"minPrice": 50000,
"maxPrice": 500000,
"maxItems": 50
}

Example explicit URL input

{
"startUrls": [
{ "url": "https://mobil.bazos.cz/inzerat/221875490/iphone-17-pro-max-256gb-novy-se-s-plnou-zarukou-zarukou.php" }
],
"maxItems": 1
}

Only https://bazos.cz and https://*.bazos.cz URLs are accepted.

Output example

A current detail-page record has this shape:

{
"listingId": "221875490",
"url": "https://mobil.bazos.cz/inzerat/221875490/iphone-17-pro-max-256gb-novy-se-s-plnou-zarukou-zarukou.php",
"title": "iPhone 17 Pro MAX 256GB - Nový s plnou zárukou zárukou",
"description": "Dobrý den, nabízím k prodeji iPhone 17 Pro MAX 256GB...",
"price": 31800,
"priceText": "31 800 Kč",
"currency": "CZK",
"location": "Praha 10",
"postalCode": "100 00",
"postedDate": "31.7. 2026",
"category": "mobil",
"images": [
"https://www.bazos.cz/img/1/490/221875490.jpg?t=1785249322"
],
"scrapedAt": "2026-07-31T04:40:00.000Z"
}

Listings change and disappear, so values above are illustrative of real output shape rather than a promise that this ad remains available.

How much does it cost to extract Bazoš listings?

This Actor uses pay-per-event pricing: one small start charge per run plus an item charge only for each valid listing saved. The per-item price decreases through Apify's usage tiers. Failed, duplicate, or rejected records are not item-charged.

The start fee is $0.005. At the BRONZE tier, each saved listing is $0.002668; higher plans receive progressively lower item prices. Example BRONZE totals are about $0.0077 for 1 listing, $0.0317 for 10, and $0.2718 for 100. The active tier price is always shown in Apify Console before a run.

Batching more records into one run reduces the relative effect of the one-time start charge. Runtime and platform usage are covered by the pay-per-event price.

Monitor inventory and price changes

Apify schedules can run the same input hourly, daily, or weekly. For each snapshot:

  1. Use listingId as the durable listing key.
  2. Compare price, priceText, title, and description with the previous snapshot.
  3. Treat an absent ID as a possible removal, expiration, or changed query match.
  4. Keep scrapedAt to identify when each value was observed.
  5. Send changed rows to a webhook, database, or spreadsheet integration.

The Actor emits snapshots; it does not maintain a cross-run history table or send alerts by itself.

Export to spreadsheets and data pipelines

From the Dataset tab, download JSON, CSV, Excel, XML, or RSS. You can also:

  • connect Apify to Google Sheets through an integration;
  • trigger a webhook when a run finishes;
  • fetch dataset items from the Apify API;
  • load records into BigQuery, Snowflake, PostgreSQL, or your own warehouse;
  • use Make or Zapier to route new snapshots.

Keep listingId values as strings in spreadsheets so they are not reformatted.

Run with the Apify API

Set APIFY_TOKEN in your shell and start a synchronous run:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~bazos-czech-classifieds-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQuery":"iphone","category":"mobil","maxItems":10}'

For larger jobs, use the asynchronous /runs endpoint and retrieve the dataset after the run succeeds.

JavaScript integration

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/bazos-czech-classifieds-scraper').call({
searchQuery: 'skoda',
category: 'auto',
maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map(({ listingId, price }) => ({ listingId, price })));

Python integration

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/bazos-czech-classifieds-scraper').call(run_input={
'searchQuery': 'iphone',
'category': 'mobil',
'maxItems': 20,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print([(item['listingId'], item['price']) for item in items])

Use through Apify MCP

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/bazos-czech-classifieds-scraper"

Desktop and editor clients can use:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/bazos-czech-classifieds-scraper"
}
}
}

Example prompts:

  • “Search Czech Bazoš mobile listings for iPhone and return 20 prices with listing IDs.”

The same MCP URL works in Claude Desktop, Cursor, and VS Code when added as an HTTP MCP server using the JSON configuration above.

  • “Extract this public Bazoš listing URL and summarize its price, location, and images.”
  • “Run the Škoda inventory input and give me a CSV-ready table keyed by listing ID.”

Legality and responsible use

  • Only anonymous public Czech Bazoš pages are supported.
  • Listings can be edited, removed, promoted, or expire between runs.
  • Search ranking is controlled by Bazoš and may include promoted results.
  • The Actor does not bypass CAPTCHA, login, phone reveal, or access controls.
  • maxItems limits accepted detail records, not raw HTTP requests.
  • Public markup can change; a recognized-shape check fails the run rather than silently returning misleading empty data.
  • Keep concurrency conservative and follow Bazoš terms, robots guidance, privacy law, and your intended use's legal requirements.
  • Do not republish personal data or use results for harassment, spam, or discriminatory decisions.

Troubleshooting

Why did the run return no records?

The current query and filters may have no public matches. Try a broader keyword, choose all, remove price/location filters, or open the generated search directly on Bazoš. A legitimate zero-result search completes without fabricated rows.

Why did an explicit listing URL fail?

The ad may have expired, been removed, or no longer expose the expected public detail shape. Confirm that it opens anonymously and that the URL uses the Czech .cz domain and /inzerat/<id>/ path.

Why are records in a different order?

Detail requests run concurrently for efficiency, so dataset order is not guaranteed. Sort by listingId, postedDate, price, or scrapedAt in your downstream system.

Does the Actor reveal seller phone numbers?

No. Phone reveal and private/account workflows are deliberately excluded.

Frequently asked questions

Can I scrape Bazoš Auto?

Yes. Set category to auto and add a keyword such as skoda. The output schema is the same across categories.

Can I monitor a fixed set of listings?

Yes. Put their public detail URLs in startUrls, schedule the Task, and compare returned rows by listingId. Removed listings fail explicitly rather than being represented as current inventory.

Does it support Bazoš Slovakia or Poland?

No. This Actor is scoped to Czech bazos.cz. URLs from other Bazoš country domains are rejected.

Can I search without a category?

Yes. Keep category as all to use the Czech all-category search surface.

Is the dataset suitable for price comparison?

Yes. price is numeric when Bazoš displays a CZK amount, while priceText preserves the source representation. Some ads legitimately have no numeric price.

There is currently no other automation-lab scraper dedicated to Czech Bazoš classifieds. Browse automation-lab on Apify for other public-data tools; third-party competitors are intentionally not presented as related products.

Support

If a reproducible input stops working, open an issue from the Actor's Apify page and include the run URL and non-sensitive input. Do not paste API tokens or private data. Source pages change, and a concrete failed URL helps us distinguish an expired listing from a parser regression.