Ceneo Scraper — Polish Prices, Shop Offers & Specs
Pricing
from $0.49 / 1,000 products
Ceneo Scraper — Polish Prices, Shop Offers & Specs
Scrape Ceneo.pl products by keyword, category or ID: lowest price in PLN, every shop offer with delivery and shop rating, full specs, manufacturer code, units bought, ratings, AI review summary and reviews. Price-change tracking. Pay per result.
Pricing
from $0.49 / 1,000 products
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Ceneo Scraper

Scrape products, prices and shop offers from Ceneo.pl, Poland's largest price comparison site. Search by keyword, crawl any category or filtered listing, or monitor a fixed list of products. Each product can include every shop offer with delivery terms, the full specification table, Ceneo's AI review summary and customer reviews. No API key or login required.
Why this scraper?
🏪 Shop-level offers, not only the lowest price
With product details on, every offer Ceneo lists for a product comes back as its own record: shop, price, delivery cost, shipping time, shop rating and review count, promo text and whether the placement is sponsored.
📋 Full specification table
All specification rows Ceneo publishes, grouped as on the site, plus the manufacturer code (MPN), the full category path, the complete description and every product image.
🔥 Demand signals
Units bought through Ceneo in the last 90 days, number of offers, number of shops with free delivery, variant count and Ceneo badges such as Bestseller. Useful for spotting what actually sells in Poland.
⭐ Reviews and AI summary
Average rating, review count, Ceneo's AI summary with the pros and cons users mention most, and individual reviews with rating, recommendation, verified-purchase flag, pros, cons, helpful votes and the shop where the product was bought. Reviewer names are never collected.
📈 Built for price monitoring
Every record carries changeStatus (NEW, UNCHANGED, PRICE_DROP, PRICE_INCREASE), the previous price and the difference. Turn on Only new or changed products for lean scheduled runs.
🧭 Past Ceneo's 50-page limit
Ceneo shows at most 50 pages per listing. When you ask for more, the scraper splits the listing into price bands so large categories can be collected in full.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | array of strings | ["iphone 17"] (prefill) | Keywords to search on Ceneo.pl. Each query is followed to the category result pages Ceneo sends it to. |
startUrls | array of URLs | (empty) | Ceneo category, category search, filtered listing or product URLs. |
productIds | array of strings | (empty) | Ceneo product IDs, e.g. 157207959 from https://www.ceneo.pl/157207959. Product IDs and product URLs always return the full record and are billed as a product with details. |
maxItems | integer | 100 | Maximum products across all inputs. 0 means no limit. |
sortBy | string | "recommended" | recommended, popularity, priceAsc, priceDesc or rating. |
minPrice | integer | (empty) | Minimum lowest price in PLN, applied through Ceneo's own price filter. |
maxPrice | integer | (empty) | Maximum lowest price in PLN, applied through Ceneo's own price filter. |
skipSponsored | boolean | false | Leave out paid listing positions. When off, they are kept and flagged with isSponsored. |
fetchDetails | boolean | false | Open each product page for offers, specifications, description, images, AI summary and reviews. |
includeAllOffers | boolean | true | With details: load the complete offer list, not only the first 15 offers on the product page. |
maxOffersPerProduct | integer | 0 | With details: keep at most this many offers per product. 0 keeps all. |
maxReviewsPerProduct | integer | 10 | With details: reviews to include per product, in Ceneo's default order (most helpful first). 0 skips reviews. |
splitLargeListings | boolean | true | Split listings above Ceneo's 50-page limit into price bands. |
onlyChanges | boolean | false | Return only products that are new or whose price changed since the previous run. |
Output schema
Every field below is present on every record. Values Ceneo does not publish for a product are returned as null.
Always present
| Field | Type | Description |
|---|---|---|
productId | string | Ceneo product ID |
name | string | Product name |
url | string | Ceneo product page URL |
brand | string | Brand (null if not listed) |
price | number | Lowest offer price in PLN |
currency | string | Always PLN |
offerCount | integer | Number of shop offers on Ceneo |
freeDeliveryOfferCount | integer | Offers with free delivery (listing pages only, null otherwise) |
rating | number | Average rating from 0 to 5 (null when the product has no reviews) |
reviewCount | integer | Number of reviews |
recentlyPurchased | integer | Units bought through Ceneo in the last 90 days |
recentlyPurchasedLabel | string | Ceneo's rounded label for the same figure, e.g. 500+ |
variantCount | integer | Number of variants (colours, capacities) of the product |
keySpecs | array | Key specifications shown on the listing: name, value |
badges | array | Ceneo badges such as Bestseller, Nowość |
isNew | boolean | Marked as a new product |
isSponsored | boolean | Paid listing position |
hasFreeDelivery | boolean | At least one offer ships free |
hasCeneoFree | boolean | Eligible for Ceneo Free delivery |
categoryId | string | Ceneo category ID |
categoryName | string | Category name |
imageUrl | string | Main product image URL |
listingType | string | row, box, grid, promoted-offer or product-page |
sponsoredShop | string | Shop behind a promoted-offer row (null otherwise) |
sponsoredShopId | string | Ceneo shop ID behind a promoted-offer row |
sponsoredOfferId | string | Offer ID of a promoted-offer row |
position | integer | Organic position in the listing (null for sponsored rows and product inputs) |
page | integer | Listing page the product was found on |
detailFetched | boolean | true when the product page was read |
sourceMode | string | search, category or product |
searchQuery | string | Query that found the product (null for URLs and IDs) |
sourceUrl | string | Input URL or search URL |
firstSeenAt | string | First time this scraper saw the product |
previousPrice | number | Price at the previous sighting (null on first sighting) |
priceChange | number | Difference from the previous price in PLN |
changeStatus | string | NEW, UNCHANGED, PRICE_DROP or PRICE_INCREASE |
contentHash | string | Stable hash of product ID and name |
source | string | Always ceneo.pl |
scrapedAt | string | ISO timestamp of collection |
With fetchDetails: true
These fields are null when details are off, except for product IDs and product URLs, which always include them.
| Field | Type | Description |
|---|---|---|
priceMax | number | Highest offer price in PLN |
availability | string | Availability, e.g. InStock |
condition | string | Condition, e.g. NewCondition |
categoryPath | array | Category breadcrumb (the most specific levels Ceneo shows on the product page) |
categoryUrl | string | Category page URL |
manufacturerCode | string | Manufacturer part code (null when not published) |
description | string | Product description as shown on the product page |
images | array | All product image URLs |
specifications | array | Full specification table |
specifications.group | string | Specification group, e.g. Dane podstawowe |
specifications.name | string | Attribute name |
specifications.value | string | Attribute value |
offers | array | Shop offers in Ceneo's display order |
offers.offerId | string | Ceneo offer ID |
offers.position | integer | Position on the product page |
offers.shopName | string | Shop name as shown on Ceneo |
offers.shopDomain | string | Shop domain, e.g. mediaexpert.pl (null for sellers that only sell through Ceneo's Kup Teraz) |
offers.shopId | string | Ceneo shop ID |
offers.price | number | Offer price in PLN |
offers.currency | string | Always PLN |
offers.offerTitle | string | Offer title as the shop lists it |
offers.isSponsored | boolean | Paid placement in the offer list |
offers.isBuyNow | boolean | Can be bought directly on Ceneo (Kup Teraz) |
offers.offerType | string | Ceneo offer type code |
offers.shopRating | number | Shop rating from 0 to 5 (null for shops new to Ceneo) |
offers.shopReviewCount | integer | Number of shop reviews |
offers.deliveryInfo | string | Delivery text, e.g. Darmowa wysyłka |
offers.deliveryCostFrom | number | Lowest delivery cost in PLN (0 for free delivery) |
offers.hasFreeDelivery | boolean | Ships free |
offers.shippingTime | string | Declared shipping time, e.g. Wysyłka w 1 dzień |
offers.promoText | string | Shop promo text |
offers.hasTrustedReviews | boolean | Shop carries Ceneo's trusted-reviews mark |
offers.isReliableSeller | boolean | Shop carries Ceneo's reliable-seller mark |
offers.shopOfferCount | integer | Offers from this shop for the product |
offers.isNewShop | boolean | Shop marked as new on Ceneo |
offers.variants | array | The shop's other listings for the same product, such as sizes or bundles: offerId, price, title |
offersReturned | integer | Number of offers in this record |
cheapestShop | string | Domain (or name) of the cheapest shop |
cheapestShopPrice | number | Price at the cheapest shop |
aiReviewSummary | object | Ceneo's AI review summary (null when Ceneo has none) |
aiReviewSummary.summary | string | Summary text |
aiReviewSummary.pros | array | Pros most users mention |
aiReviewSummary.cons | array | Cons some users mention |
aiReviewSummary.basedOnReviews | integer | Number of reviews the summary is based on |
reviews | array | Customer reviews in Ceneo's default order (most helpful first) |
reviews.reviewId | string | Ceneo review ID |
reviews.rating | number | Rating from 0 to 5 |
reviews.recommended | boolean | Reviewer recommends the product |
reviews.isVerifiedPurchase | boolean | Review confirmed by a purchase |
reviews.publishedAt | string | Publication date and time |
reviews.purchasedAt | string | Purchase date and time (null if not shown) |
reviews.text | string | Review text |
reviews.pros | array | Pros listed by the reviewer |
reviews.cons | array | Cons listed by the reviewer |
reviews.helpfulYes | integer | Helpful votes |
reviews.helpfulNo | integer | Not-helpful votes |
reviews.boughtAtShop | string | Shop where the reviewer bought the product |
reviews.boughtPrice | number | Price at that shop in PLN |
Example record
{"productId": "157207959","name": "Apple iPhone 17 256GB Czarny","url": "https://www.ceneo.pl/157207959","brand": "Apple","price": 4157,"currency": "PLN","offerCount": 26,"freeDeliveryOfferCount": 23,"rating": 4.84,"reviewCount": 499,"recentlyPurchased": 609,"recentlyPurchasedLabel": "500+","variantCount": 43,"keySpecs": [{"name": "Przekątna ekranu","value": "6,3 cala"},{"name": "Pamięć RAM","value": "8 GB"},{"name": "Pamięć wewnętrzna","value": "256 GB"},{"name": "Wbudowany aparat cyfrowy","value": "48 Mpix"},{"name": "System operacyjny","value": "iOS"}],"badges": ["Bestseller"],"isNew": false,"isSponsored": false,"hasFreeDelivery": true,"hasCeneoFree": true,"categoryId": "471","categoryName": "Smartfony","imageUrl": "https://image.ceneostatic.pl/data/products/157207959/i-apple-iphone-17-256gb-czarny.jpg","listingType": "row","sponsoredShop": null,"sponsoredShopId": null,"sponsoredOfferId": null,"position": 1,"page": 1,"priceMax": 5144,"availability": "InStock","condition": "NewCondition","categoryPath": ["Telefony i akcesoria","Smartfony"],"categoryUrl": "https://www.ceneo.pl/Smartfony","manufacturerCode": "MG6J4HXA","description": "Apple iPhone 17 Konstrukcja. Jeszcze bardziej cieszy. Jeszcze więcej wytrzyma. Oto nowy iPhone 17. Zaprojektowaliśmy go tak, żeby był niezmiernie i niezmiennie…","images": ["https://image.ceneostatic.pl/data/products/157207959/i-apple-iphone-17-256gb-czarny.jpg","https://image.ceneostatic.pl/data/products/157207959/c64d5a08-6c58-43d2-9a70-b017b5082d80_i-apple-iphone-17-256gb-czarny.jpg"],"specifications": [{"group": "Dane podstawowe","name": "Marka","value": "Apple"},{"group": "Dane podstawowe","name": "Model","value": "Apple iPhone 17"},{"group": "Dane podstawowe","name": "Kolor","value": "Czarne"},{"group": "Dane podstawowe","name": "Pamięć RAM","value": "8 GB"}],"offers": [{"offerId": "602179976","position": 1,"shopName": "avans.pl","shopDomain": "avans.pl","shopId": "18601","price": 4499,"currency": "PLN","offerTitle": "Smartfon APPLE iPhone 17 5G 256GB 6.3\" 120Hz Czarny | Głośniki lub słuchawki nawet 300 zł taniej","isSponsored": true,"isBuyNow": true,"offerType": "CPC_Bid_Basket","shopRating": 4.6,"shopReviewCount": 5987,"isNewShop": false,"deliveryInfo": "Darmowa wysyłka","deliveryCostFrom": 0,"hasFreeDelivery": true,"shippingTime": "Wysyłka w 1 dzień","promoText": "SZYBKA DOSTAWA! PROSTE RATY!","hasTrustedReviews": false,"isReliableSeller": false,"shopOfferCount": 1,"variants": []},{"offerId": "625705241","position": 2,"shopName": "mediaexpert.pl","shopDomain": "mediaexpert.pl","shopId": "10772","price": 4499,"currency": "PLN","offerTitle": "Smartfon APPLE iPhone 17 5G 256GB 6.3\" 120Hz Czarny | Nawet 1400 zł bonusu na nowy smartfon | Głośniki lub słuchawki nawet 300 zł taniej |Antywirus ta","isSponsored": true,"isBuyNow": false,"offerType": "CPC_Bid","shopRating": 4.7,"shopReviewCount": 3214,"isNewShop": false,"deliveryInfo": "Darmowa wysyłka","deliveryCostFrom": 0,"hasFreeDelivery": true,"shippingTime": "Wysyłka w 1 dzień","promoText": "nawet 10 rat 0%! RRSO 0%","hasTrustedReviews": false,"isReliableSeller": false,"shopOfferCount": 1,"variants": []}],"offersReturned": 28,"cheapestShop": "empik.com","cheapestShopPrice": 4157,"aiReviewSummary": {"summary": "Użytkownicy są bardzo zadowoleni z Apple iPhone 17 256GB, podkreślając jego wysoką jakość wykonania i intuicyjność działania. Chociaż niektórzy skrytykowali system iOS oraz użyteczność, ogólne wrażenia są bardziej pozytywne, a telefon uważany jest za niezawodny i długoterminowy. Wiele osób doceniło także wsparcie techniczne Apple.","pros": ["Jakość Wykonania","Intuicyjność Działania","Długi Czas Wsparcia","Sukcesja Zadowolenia Użytkowników"],"cons": ["Brak Personalizacji","Problemy z Bateriami","Nieintuicyjne Menu"],"basedOnReviews": 30},"reviews": [{"reviewId": "20303480","rating": 4.5,"recommended": true,"isVerifiedPurchase": true,"publishedAt": "2026-02-17T13:41:04","purchasedAt": "2026-02-11T14:14:57","text": "To jest mój pierwszy iPhone po wielu latach korzystania z Androida. Jestem bardzo zadowolony z działania, jakości wykonania i tego że po wyjęciu z pudełka wszystko po prostu działa. Niestety nie ma rzeczy idealnych i trochę doskwiera mi brak dopasowania systemu pod siebie. Android jest w tej kwestii lata do przodu względem iOS. Podsumowujac: warto rozważyć przesiadkę z Androida pod warunkiem że ograniczenia w iOS wam nie przeszkadzają.","pros": ["czas pracy na baterii","łatwość obsługi"],"cons": [],"helpfulYes": 2,"helpfulNo": 0,"boughtAtShop": "mediaexpert.pl","boughtPrice": 4499}],"detailFetched": true,"sourceMode": "category","searchQuery": null,"sourceUrl": "https://www.ceneo.pl/Smartfony","contentHash": "f8778a2375756011ccd69a74c0d5f047","source": "ceneo.pl","scrapedAt": "2026-09-20T12:25:00.898Z","firstSeenAt": "2026-09-20T12:25:00.898Z","previousPrice": null,"priceChange": null,"changeStatus": "NEW"}
Arrays are shortened in this example. A real record carries every offer, specification row and requested review.
Examples
Search two keywords, cheapest first:
{"searchQueries": ["ekspres do kawy", "odkurzacz bezprzewodowy"],"sortBy": "priceAsc","maxItems": 200}
Smartphones between 1,000 and 2,000 zł with all shop offers:
{"startUrls": [{ "url": "https://www.ceneo.pl/Smartfony" }],"minPrice": 1000,"maxPrice": 2000,"fetchDetails": true,"maxReviewsPerProduct": 0,"maxItems": 100}
Filtered listing from the site (brand filter) plus a single product:
{"startUrls": [{ "url": "https://www.ceneo.pl/Smartfony/p:Apple.htm" },{ "url": "https://www.ceneo.pl/157207959" }],"maxItems": 300}
Daily price monitor for a fixed product list:
{"productIds": ["157207959", "180619941", "193589952"],"fetchDetails": true,"maxReviewsPerProduct": 0,"onlyChanges": true}
💰 Pricing
You only pay for products saved to your dataset. Failed retries are never charged.
| Record type | Price per 1,000 |
|---|---|
| Product (listing data) | $0.49 |
Product with details (fetchDetails: true, and every product ID or product URL) | $2.49 |
| Products | Listing data | With details |
|---|---|---|
| 100 | ~$0.05 | ~$0.25 |
| 1,000 | ~$0.49 | ~$2.49 |
| 10,000 | ~$4.90 | ~$24.90 |
| 100,000 | ~$49.00 | ~$249.00 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Use Maximum products in the input to control your spend exactly.
Performance
| Run size | Listing data | With details |
|---|---|---|
| 100 products | under 1 minute | 3–5 minutes |
| 1,000 products | 5–8 minutes | 40–60 minutes |
| 10,000 products | 50–80 minutes | several hours; split across runs |
Known limitations
- Ceneo shows at most 50 pages per listing. Price-band splitting covers large listings, but a single price point with more than 1,500 products cannot be split further.
offerscan hold fewer entries thanofferCount. Ceneo counts a shop's size or bundle listings separately (they are inoffers.variants), and some marketplace offers are only served through pages its robots.txt closes to crawlers.- Ceneo's price history is only shown to logged-in users and is not included.
- A keyword search follows Ceneo's own routing. When Ceneo sends a query to one category, results come from that category only.
Technical details
- Source: ceneo.pl — Polish price comparison site, all categories
- Coverage: keyword search, categories, category searches, filtered listings and product pages
- Change tracking: key-value store
ceneo-scraper-history, 180-day retention - Retry: automatic retry with a fresh session on network errors, captchas and challenge pages
- Compliance: robots.txt is read at the start of every run. A keyword search makes one request to Ceneo's search page to find the matching categories; every other page follows robots.txt
Rate this actor
If this scraper does its job, a short review on the Reviews tab helps other users find it. Something not working? Open an issue on the Issues tab instead — issues get fixed.
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl