Ceneo Products Scraper — Poland Price Comparison
Pricing
from $1.50 / 1,000 products
Ceneo Products Scraper — Poland Price Comparison
Scrape Ceneo.pl Poland price comparison search: title, PLN lowest price, shop count, product URL and image. HTTP SSR cards (.cat-prod-row). Enable Apify RESIDENTIAL with country PL if antibot interstitial blocks your IP.
Pricing
from $1.50 / 1,000 products
Rating
0.0
(0)
Developer
Noah Adler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Ceneo.pl Poland price-comparison search: title, PLN lowest price, shop count, product URL and image — one clean Dataset row per listing.
HTTP-only (curl_cffi + Chrome TLS + BeautifulSoup). Parses SSR search cards (.cat-prod-row). Warms through Ceneo’s short meta-refresh interstitial when cookies are required.
Proxy: Prefer Apify RESIDENTIAL with country PL. Without it, bare IPs may soft-fail with a clear error row citing RESIDENTIAL PL — not fake empty success.
Why this Actor: Poland price niche · Thin Store gap · Clean PPE schema · Keyword or search URL · No Playwright · Honest antibot limits
What this Actor does
| Step | Action |
|---|---|
| 1 | Accept query and/or searchUrl, optional sort / maxItems |
| 2 | Build https://www.ceneo.pl/;szukaj-{query} (or reuse your URL + page suffix) |
| 3 | GET with curl_cffi impersonate chrome124 + Accept-Language: pl-PL |
| 4 | Warm interstitial if needed → parse .cat-prod-row cards |
| 5 | Normalize PLN price + shopCount → Dataset |
| 6 | Paginate via ;0020-30-0-0-N.htm until maxItems or empty page |
Input
| Field | Required | Description |
|---|---|---|
query | One of query/URL | Keyword (e.g. iphone, laptop gaming) |
searchUrl | One of query/URL | Full Ceneo search URL (keeps filters) |
sort | No | relevance, price_asc, price_desc (v0.1: default SSR ranking) |
maxItems | No | 1–200 (default 40) |
proxyConfiguration | No | Default RESIDENTIAL; Actor injects PL if country empty |
Example
{"query": "iphone","sort": "relevance","maxItems": 40,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "PL"}}
Example with search URL
{"searchUrl": "https://www.ceneo.pl/;szukaj-iphone","maxItems": 20}
Output example
{"productId": "157207959","title": "Apple iPhone 17 256GB Czarny","price": 3998.0,"currency": "PLN","shopCount": 30,"minPrice": 3998.0,"detailUrl": "https://www.ceneo.pl/157207959","imageUrl": "https://image.ceneostatic.pl/data/products/157207959/f-apple-iphone-17-256gb-czarny.jpg","query": "iphone","scrapedAt": "2026-09-22T00:00:00Z","error": false,"errorMessage": null}
Output fields
| Field | Notes |
|---|---|
productId | Numeric Ceneo id from /… or data-productid |
title | From data-productname / .cat-prod-row__name |
price, minPrice | PLN; search card lowest (“from”) price |
currency | Always PLN |
shopCount | Shops listing the product (w N sklepach) |
detailUrl, imageUrl | Absolute URLs |
query, scrapedAt, error, errorMessage | Run metadata |
Quick start (API)
from apify_client import ApifyClientclient = ApifyClient("<YOUR_TOKEN>")run = client.actor("noahadler/ceneo-products").call(run_input={"query": "iphone","maxItems": 20,"proxyConfiguration": {"useApifyProxy": True,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "PL",},})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item.get("title"), item.get("price"), item.get("detailUrl"))
Use cases
- Poland ecommerce lowest-price monitoring via Ceneo
- Catalog snapshots for PPE pipelines
- Competitor assortment coverage in PL
- Lead gen for brands visible on Ceneo search
Limitations
- Antibot: without RESIDENTIAL PL, some networks soft-fail with a clear
errorrow (meta-refresh interstitial). - Search cards only (v0.1): no deep shop-table enrichment per product.
- Respect Ceneo Terms of Service and applicable laws.
FAQ
Do I need both query and searchUrl?
No — provide either. If both are set, the Actor uses searchUrl for fetching and keeps query as metadata when present.
Why error on first run?
Often missing Poland residential proxy. Enable Apify Proxy → RESIDENTIAL → PL.
Does this use Playwright?
No. HTTP only (curl_cffi + Chrome TLS fingerprint + BeautifulSoup).
Keywords
ceneo scraper, ceneo.pl api, poland price comparison, PLN product search, poland ecommerce scraper, ceneo catalog dataset, PPE ceneo