Custom scraper

Ceneo Scraper

Ceneo is where Polish shoppers go to find out who is cheapest, which makes one Ceneo page a map of the whole market for a product. Its programmatic access is merchant-facing. The AI scraper reads the public comparison page instead, turns it into columns you define, and runs on a schedule.

  • ceneo.pl
Three stages of a Ceneo run: paste a ceneo.pl search URL billed on the render plus residential tier at EUR 3.75 per 1,000 pages, because a plain fetch returns the homepage title instead of the search and a browser hits a consent wall; declare shop_name, offer_price and offer_rank in the Custom Schema builder; and get back one row per merchant offer.

How to scrape Ceneo.pl

Most people searching for a "Ceneo API" are looking for something that does not exist in the form they expect. Ceneo's programmatic access is merchant-facing: it is built for shops that want their offers listed on the platform, not for anyone who wants to read the market off it. There is no public read API you can sign up for, and Scrapewise does not carry a dedicated Ceneo endpoint either. What makes Ceneo worth the trouble is its shape. A comparison site collapses the whole Polish market for one product onto a single page, ranked cheapest first, with every shop named. That is a wider view than any individual retailer gives you, and it is the fastest way to see whether your price is the one buyers are being shown. Access is the hard part. We measured it on 30 September 2026: a plain fetch returned a shell with the homepage title on a category URL, and a real browser landed on a consent and challenge wall whose only body text was the cookie notice, with no listings behind it. A run therefore has to go through a rendered page from a residential exit. You paste ceneo.pl URLs into the AI scraper, declare the columns you want, and set a daily schedule. Data comes back by REST API, CSV or Excel, and you pay per page from a prepaid wallet.

What the AI scraper does with a ceneo.pl link

Three steps, same as any other site. Nothing about Ceneo is pre-built, which is why it reaches a market nobody ships an endpoint for.

  1. Paste the link

    A product comparison page, a shop's profile, or a category URL with the filters already applied. Ceneo encodes filters and sort order in the address, so a view you built by hand in the browser is a valid input.

  2. You declare the columns

    A Ceneo job usually wants one row per merchant offer: the shop name, its rank in the list, the offer price, delivery cost, the total a buyer pays, the shop's rating and its availability wording. You name those fields yourself in a Custom Schema, or start from the ready Product List schema and add to it.

  3. Schedule it and take the data out

    Run it once or daily. Pull each run by REST API or download it as CSV or Excel. The columns stay the same between runs, so a Ceneo table lines up with whatever you already collect from Allegro and your own shop.

Set it up once. The data keeps coming.

Save your search once and it runs by itself. Every run lands in your own Scrapewise database, and you pick how to read it.

  1. Set it up once

    Add your ASINs, keywords, places or apps to a scraper in the web app. New accounts get 5 free requests.

  2. Runs on your schedule

    Pick daily, weekly on the days you choose, every few days, or the first or last day of the month. Scheduled runs start at night, European time. Need it more often? Start runs from your own code.

  3. Saved in your database

    Each run adds dated rows, so this week sits next to last week. Rows are kept for 90 days.

  4. Use it your way

    Open the table in the web app and download the latest run as an Excel file. Ask your own AI assistant about it. Or pull the rows into your code with an API key.

Ask your AI assistant about your own data

Connect Claude Desktop or Claude Code with a read-only key. The assistant reads the rows you've already collected, at no extra cost on Scrapewise. With a full-access key it can start a run for you too.

  • Which of my ASINs lost the Buy Box this week?
  • Which competitor cut prices the most since Monday?
  • Show the keywords where I dropped out of the top 10.

What you send and what you get

You send a link and a column list. Which shop is cheapest today, what delivery adds and where you rank comes from the page itself.

You give
  • Link to a ceneo.pl product, shop or category pagerequired

    Set your filters and sort order in the browser first, then copy the address. Ceneo encodes them in the URL, so a view you built by hand is a valid input.

    https://www.ceneo.pl/;szukaj-philips+hue
  • Your column listrequired

    Start from the ready Product List schema or name your own fields in a Custom Schema. The AI fills the fields you declared.

    Custom Schema, 12 fields
  • How often it runsoptional
    • On demand
    • Daily
    • Weekly
    • Monthly

    Daily is the fastest cadence available, and enough to catch the day a competitor takes the top row off you.

You get

One row per merchant offer on the product, 12 columns each

  • offer_rank
  • shop_name
  • offer_price
  • delivery_cost
  • total_price
  • shop_rating
  • availability
  • product_title
  • brand
  • best_price_on_page
  • offer_count
  • checked_at

REST API, CSV or Excel. The column set stays the same between runs, so a Ceneo table lines up with your other Polish channels.

The columns a ceneo.pl run gives you

We are not going to print a table of invented merchant offers and call it real output. Ceneo returns a shell to a plain fetch and a consent wall to an ordinary browser, so a run has to go through the residential tier. This is the column list you declare before the run, and the column list every run comes back with.

offer_rankPosition of the offer in Ceneo's list, cheapest first by default
shop_nameMerchant behind this offer
offer_priceHeadline price, before delivery
delivery_costDelivery cost as the page states it
total_priceOffer price plus delivery
shop_ratingShop rating, when Ceneo displays one
availabilityStock wording the shop publishes for the offer
product_titleProduct title as Ceneo writes it
brandBrand shown on the product
best_price_on_pageCheapest offer across every merchant on the page
offer_countHow many merchant offers the product carried on this run
checked_atWhen this run collected the page (UTC)

The columns are yours, not ours. Add, rename or drop any of them in a Custom Schema and every future run returns exactly your set.

What a ceneo.pl page costs

Pay-as-you-go from your wallet. No plan, no monthly fee, no seat count.

Render plus residential tier€3.75per 1,000 pages

Measured on 30 September 2026, not assumed. A plain fetch of a ceneo.pl search URL came back at 200, which looks like success until you read it: 21 KB carrying the Ceneo homepage title rather than the search, a body of stylesheet variables, no structured product data and no price anywhere in it. Ceneo answers the request and withholds the page. Loading the same URL in a real browser landed on a consent and challenge wall whose entire body text was the cookie notice. A browser alone is not enough here, so budget for a rendered page coming out of a residential exit.

Worked example

150 ceneo.pl product pages checked once a day for a month is 4,500 pages.

about EUR 16.88 for the month at this tier

You are charged for the tier a run actually used, not the tier it was expected to need, and your balance never expires.

See the full price list →

What this page is not promising

We would rather say this here than in a support ticket.

  • No dedicated Ceneo endpoint

    There is no Ceneo data API in our catalogue and no pre-built Ceneo schema. The AI scraper reads the page you point it at, and that is the whole mechanism.

  • This is the expensive tier

    Ceneo returns a shell to a plain fetch and a consent wall to a plain browser, so every run goes through a rendered page from a residential exit at EUR 3.75 per 1,000 pages. If the page count matters to you, scope it before you switch it on rather than after.

  • No merchant-account data

    Anything behind Ceneo's merchant login, your feed status, your clicks, your spend, is not reachable by a scraper reading public pages.

  • Deep offer lists are extra pages

    A product with a hundred shops on it is a paginated list, not one request. Covering all of it changes the page count and the cost.

  • Daily, not real time

    Daily is the fastest schedule. There is no real-time feed, no per-minute polling and no price-drop alerting.

  • No price history, no SKU matching

    We store nothing about Ceneo prices on our side, so a price curve starts the day you switch the scraper on. You get Ceneo's rows as Ceneo presents them, mapping them to your catalogue is a separate job, and we are not lawyers, so check Ceneo's terms before you run anything.

Typical fields the AI scraper extracts from a ceneo.pl page

A starting point, not a fixed schema. What comes back is whatever the page actually shows on the day of the run.

Merchant offers

The reason to scrape a comparison site: one page, every shop selling the product, ranked.

  • Shop name and rank in the list
  • Offer price, before delivery
  • Delivery cost and the total a buyer pays
  • Shop rating and review count, where Ceneo shows them
  • Availability wording the shop publishes
  • Number of offers on the product

Ranking and visibility

On a comparison site your rank is your traffic, so the position is as interesting as the price.

  • Cheapest offer across the whole page
  • Your own shop's rank, where you appear
  • Sponsored or promoted placement, where the page marks it
  • Position of the product in a category listing

Product and identity

Ceneo maintains its own product records, so titles and specs are Ceneo's rather than any one merchant's.

  • Product title as Ceneo writes it
  • Brand
  • Category breadcrumb
  • Specification table values, where the page prints one
  • Product rating and review count
  • Product image URL

The column list is one you write: name each field, give it a type and a line telling the AI what to look for. The schema belongs to your account, so a Ceneo field set can be reused on Idealo or on the next comparison site you point us at. How Custom Schema works →

What it cannot give you The scraper cannot invent a field the page does not render. Ceneo paginates long offer lists, so a popular product with a hundred shops is several pages rather than one. Delivery cost is frequently conditional on basket value and is stated as a rule rather than a number, which means the total price column is only as precise as what the shop published. Historical prices are not on the page and are not stored on our side.

What people use Ceneo data for

01

Seeing the whole Polish market on one page

A Ceneo product page names every shop selling the product and ranks them. Scraping it daily gives you the market price band, not a sample of it, which is a much harder thing to assemble retailer by retailer.

02

Tracking your own rank, not just your price

On a comparison site position is traffic. Knowing you slipped from row one to row four last Tuesday is more actionable than knowing a competitor is two zloty cheaper.

03

Finding sellers you did not appoint

Comparison sites surface merchants a brand has never heard of, because a shop only needs a feed to appear. One scrape of your own products names every one of them.

04

Delivery-inclusive price comparison

The cheapest offer on Ceneo is often not the cheapest total. Pulling offer price, delivery cost and total as separate columns is the only way to compare honestly against your own shop.

05

Reseller and distributor compliance

If you set recommended prices in Poland, this is where you find out whether they held. The scraper gives you the observation with a timestamp; the conversation is yours.

06

Feeding your own repricing rules

The export is a normal REST API or CSV, so it drops into whatever repricing logic you already run. Scrapewise supplies the observation; your rules decide what to do with it.

What makes ceneo.pl harder than an ordinary storefront

Comparison sites are the most valuable pages to read and among the most defended. Ceneo is both.

Access

  • A plain fetch returns 200 with the homepage title on a search URL, so a status check alone will fool you
  • That response carries no structured product data and no prices at all
  • A real browser lands on a consent and challenge wall rather than the comparison page
  • Runs have to go through a rendered page from a residential exit, which is the most expensive tier
  • Success is high but not guaranteed on any individual run

Offer lists

  • One product carries a list of shop offers, each with its own price, delivery and availability
  • Long lists are paginated, so a popular product is several pages rather than one request
  • Sponsored placements sit in the same list and are easy to read as organic ranking
  • Delivery cost is often a rule tied to basket value rather than a single number

Comparison-site semantics

  • Ceneo maintains its own product records, so its title is not any merchant's title
  • A product can be listed more than once when merchants map their feeds differently
  • The cheapest offer on the page is not always in stock, so price without availability is misleading

Scheduling and delivery

  • Daily is the fastest cadence, which matches how often retail prices meaningfully move
  • Every run is retrievable by REST API, or downloadable as CSV or Excel
  • Columns stay stable between runs, so downstream jobs do not need to re-map fields
FAQ

Ceneo.pl scraping — questions

What people ask before pointing the scraper at ceneo.pl.

No. Ceneo's programmatic access is merchant-facing, built for shops that want their offers listed on the platform rather than for anyone who wants to read the market off it. There is no public read API you can sign up for, and no Ceneo endpoint in our catalogue either.

Ready to pull Ceneo data into your stack?

Start free — or talk to our team about your exact fields, refresh cadence and volume.