Boulanger.com icon

Boulanger.com

Scrape Boulanger (boulanger.com) electronics and home-appliance products: current price plus strike-through was-price, specials, colour/capacity…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Boulanger.com at a glance

Boulanger.com is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes product id, sku, ean / gtin, product and change type (incremental mode), which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Ecommerce, Automation, Developer Tools
Pricing
$2.00 per 1,000 results (Free plan), from $1.00 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
24 options
Run success
100.0% of completed public runs in the last 30 days

Scrape Boulanger (boulanger.com) electronics and home-appliance products: current price plus strike-through was-price, specials, colour/capacity variant matrix, brand, category, full spec sheet and customer reviews with ratings. Search by keyword or paste links.

What Boulanger.com can do

  • Was-price and discount, never fabricated. When a product is marked down against boulanger.com's own reference price, both prices are captured plus the computed discount amount and percentage. With Fetch full product detail on, the exact reference price and the site's own promo label come from the product page; without it, the reference price is estimated back from the search card's rounded discount percent. A full-price product simply carries null there, nothing is guessed.
  • Specials, first-class. Turn on discounted-items-only to keep only products genuinely showing a strike-through discount right now, or paste a specials collection link (Soldes, Bons plans, ventes flash) directly in URL mode.
  • Real narrowing, not a filter that quietly does nothing. The first requested brand narrows through the site's own search facet; additional brands, a price band and discounted-items-only are re-checked against the site's real values; sort reorders the full server-side result set.
  • Colour, capacity and size variant matrix. Products sold in more than one configuration return every sibling variant, each with its own id, url, price and availability.
  • Reviews straight from the product page. Overall rating, rating count, a rating breakdown, and the page's own individual reviews (author, date, rating, title, body, verified-purchase flag where shown).
  • Flattened spec sheet. Full detail returns every characteristic the product page itself declares (capacity, dimensions, energy class, EAN and whatever else that category carries) rather than a fixed field list, so nothing category-specific is silently dropped.

Choose what to collect

These inputs let you configure Boulanger.com - Prices, Discounts, Variants & Reviews. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · required'search' finds products by keyword and/or category using boulanger.com's own search. 'url' scrapes any product or search-result-listing page URL you paste, walking pagination forward automatically.

Choices: search, url

searchTermstringFree-text keyword, e.g. 'aspirateur robot' or 'iphone'. Uses boulanger.com's own product search.
searchQueriesarrayOptional extra keywords, one per line. Each is searched in turn after the Search keyword above (which keeps working on its own); the filters, sort and category apply to every one. Max products is the total across all keywords and a product found by several keywords is returned once. Search mode only.
categorystringA category/department name, e.g. 'smartphone', 'electromenager', 'tv'. Combined with Search keyword above into boulanger.com's own free-text search (boulanger.com does not expose a separate path-based category browse the way some catalog sites do). Search mode only: it is written into boulanger.com's own search URL, so a pasted URL keeps whatever it already carries.
sortBystringboulanger.com's own sort order, verified live to reorder the full server-side result set. Search mode only: it is written into boulanger.com's own search URL, so a pasted URL keeps whatever it already carries.

Choices: RELEVANCE, PRICE_ASC, PRICE_DESC, TOP_RATED

urlsarrayPaste one or more boulanger.com product pages or search-result-listing pages (including specials collections such as the Soldes page). Pagination continues forward automatically from any numPage= already in the URL. Search-mode fields are ignored here. The fields in the Filters section still apply, including to a pasted product URL. Left untouched, URL mode scrapes the 8 example links shown (keyword search with page, sort and brand variants, category and parent category pages, and a product page). Pasted m.boulanger.com links are normalised to www.
brandsarrayOnly return products from this brand, e.g. 'Apple'. Narrows via boulanger.com's own search brand facet server-side. Only the first brand in the list is applied server-side; additional brands are still narrowed client-side against the site's own real brand values. Leave empty for all brands. Applies in BOTH search mode and URL mode, including a pasted product URL.
Show 17 more inputs
More input fields
InputWhat it controls
minPricenumberOnly return products priced at or above this amount, in euros. Applies in BOTH search mode and URL mode, including a pasted product URL.
maxPricenumberOnly return products priced at or below this amount, in euros. Applies in BOTH search mode and URL mode, including a pasted product URL.
specialsOnlybooleanOnly return products currently showing a genuine strike-through discount against boulanger.com's own reference price (e.g. Soldes / Bons plans) -- verified live against real price data, never a guess. Combines with the keyword/category above. To scrape a specials collection directly, paste its listing URL (e.g. the Soldes page) in URL mode instead. Applies in BOTH search mode and URL mode, including a pasted product URL.
fetchDetailsbooleanAdds full description, EAN/GTIN, breadcrumb category path, complete flattened characteristics (spec sheet -- every field the product page shows, not a fixed list), image gallery, and the colour/capacity/size variant matrix from the product page. Current price, was-price/discount, rating and card image are already included without this toggle.
fetchReviewsbooleanFetch the product's own customer reviews: overall rating, total rating count, a rating breakdown (1-5 stars, computed from the reviews returned in this run -- boulanger.com does not expose a full-population breakdown widget), and the page's own recent individual written reviews (rating, title, body, author, date, verified-purchase where shown). boulanger.com only ever surfaces its most recent reviews per product page; products with no reviews simply return an empty list.
maxReviewsPerProductintegerCap on written reviews fetched per product when 'Fetch reviews' is on, up to the site's own per-page limit.
maxPagesintegerStop after this many result pages per search/URL entry. Leave empty for no page limit -- the run stops at Max products total.
maxItemsintegerHard cap on total products returned across every search/URL entry. 0 = unlimited (still bounded by Max pages per search).
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a large crawl of products without returning or charging for products already collected there. Use this after an interrupted run, or when continuing a product pull in another run. For recurring monitoring of the same search, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or recurring monitoring. Compared: every output field of a product (price, promo price, availability, rating and review data, seller, images, etc.). A change in any of them makes a product UPDATED and lists it in changedFields. Excluded by default: scrapedAt (the run timestamp) and searchQuery (which keyword or link reached the product first, which can shift between runs). Excluded fields stay in the output. The first run returns all matching products as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED products. Turn on "Emit unchanged" or "Emit expired" only when you also want those products returned (and billed). State is kept separately for each mode/search-or-URL/filter setup; use State key when you want to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the mode, search/URL and filter settings -- different searches then never mix state with each other.
emitUnchangedbooleanOff by default. Turn on to also return products that have not changed since the last run, marked UNCHANGED. This returns -- and bills -- extra rows you already have, so leave it off unless you specifically want the full snapshot every run.
emitExpiredbooleanOff by default. Turn on to also return products that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned every tracked search/URL -- not when Max products capped it or when Resume was used. This returns -- and bills -- extra synthetic rows, so leave it off unless you need expiry tracking.
ignoreFieldsForChangesarrayField names that must NOT make a product count as UPDATED, in addition to the built-in exclusions (scrapedAt and searchQuery). Use dotted paths for nested fields, e.g. reviews.averageRating or reviews.items.date (a list level is applied to every element). The fields stay in the output; they are only skipped when comparing. Incremental mode only.
mcpConnectorsarrayOptionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify -> Settings -> Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON; the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

productIdProduct ID (text)
skuSKU (text)
eanEAN / GTIN (text)
nameProduct (text)
changeTypeChange type (incremental mode) (text)
brandBrand (text)
categoryCategory (text)
pricePrice (number)
currencyCurrency (text)
originalPriceReference price (number)
discountPercentDiscount % (number)
isOnSpecialOn discount (boolean)
Show 20 more fields
promoLabelPromo label (text)
ratingRating (number)
reviewCountRatings (number)
onlineAvailableAvailable (boolean)
conditionCondition (text)
urlURL (link)
imageImage (image)
changedFieldsChanged fields (incremental mode) (array)
firstSeenAtFirst seen (incremental mode) (date)
lastSeenAtLast seen (incremental mode) (date)
availabilityAvailability (text)
sourceSource (text)
searchQuerySearch keyword / URL (text)
scrapedAtScraped at (date)
variantsVariants (axis, name, url, price, availability) (object)
reviewsReviews (rating, counts, breakdown, per-review list) (object)
descriptionDescription (text)
breadcrumbPathBreadcrumb (array)
characteristicsCharacteristics (object)
imagesImages (array)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "productId": "8823410",
  "sku": "VLX-X200-BLK",
  "ean": "9999999999991",
  "name": "Velunox AeroClean X200 Robot Vacuum",
  "brand": "Velunox",
  "category": "Aspirateurs robots",
  "breadcrumbPath": [
    "Accueil",
    "Electromenager",
    "Aspirateurs",
    "Aspirateurs robots"
  ],
  "url": "https://www.boulanger.com/ref/8823410",
  "price": 225,
  "priceExclTax": null,
  "currency": "EUR",
  "originalPrice": 300,
  "discountAmount": 75,
  "discountPercent": 25,
  "isOnSpecial": true,
  "promoLabel": "Ancien prix",
  "onlineAvailable": true,
  "condition": "new",
  "sellerName": null,
  "unitPrice": "11.25 EUR/kg",
  "storePickupAvailable": true,
  "isBundle": false,
  "image": "https://static.example.com/000000000.jpg",
  "images": [
    "https://static.example.com/000000000.jpg"
  ],
  "description": "Sample product description as shown on the site.",
  "characteristics": {
    "Suction power": "10 000 Pa",
    "Battery life": "45 min",
    "Made in": "Sample Country"
  },
  "variants": [
    {
      "productId": "8823411",
      "axis": "couleur",
      "name": "Sample Colour",
      "url": "https://www.boulanger.com/ref/8823411",
      "price": 225,
      "available": true
    }
  ],
  "rating": 4.6,
  "reviewCount": 82,
  "reviews": {
    "averageRating": 4.6,
    "ratingCount": 82,
    "totalReviewCount": 82,
    "ratingBreakdown": {
      "1": 0,
      "2": 0,
      "3": 0,
      "4": 1,
      "5": 2
    },
    "items": [
      {
        "rating": 5,
        "title": "Sample title",
        "body": "Sample review text.",
        "author": "Jane D.",
        "date": "2026-01-01",
        "verifiedPurchase": null
      },
      {
        "rating": 4,
        "title": "Sample title two",
        "body": "Another sample review text.",
        "author": "A. M.",
        "date": "2025-12-20",
        "verifiedPurchase": null
      },
      {
        "rating": 5,
        "title": "Sample title three",
        "body": "A third sample review text.",
        "author": "L. B.",
        "date": "2025-12-05",
        "verifiedPurchase": null
      }
    ]
  }
}

Ways to use this data

  • Price and deal tracking: monitor a product line, or a whole specials collection, for price drops and new promotions.
  • Catalogue and spec-sheet aggregation: build a structured database of specifications across categories for comparison tools.
  • Review and sentiment analysis: collect ratings and written reviews to spot recurring complaints or standout products.
  • Competitive intelligence: compare Boulanger's pricing and stock against other French electronics retailers.
  • Recurring monitoring: schedule the actor to get only new and changed products from the same search or catalogue over time.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Boulanger.com return?

The documented output for Boulanger.com includes product id, sku, ean / gtin, product, change type (incremental mode), brand, category and price. Availability of each field depends on the source page and the selected mode.

How much does Boulanger.com cost?

It costs $2.00 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed products on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated products (plus reappeared ones once Emit expired has completed a full, uncapped scan), and unchanged ones are not returned or billed unless you turn on Emit unchanged.

Why did I get an empty dataset instead of an error?

A run that could not load a single page ends as failed with a clear message, never as a successful run with zero items, so a connection problem is never confused with "no matches for this search". A search that loads and finds nothing, or a pasted product link that no longer exists (logged as not found), still finishes normally. Two other situations also stop the run with a failure message: an invalid Resume from a previous run id, and combining Incremental mode with Resume when a baseline already exists for that state key. If you see the connection failure, run it again in a few minutes.

Why did a search return fewer products than expected?

A very selective combination of brand, price range or discounted-items-only can discard every product on several pages in a row. To avoid paging through an entire catalogue looking for survivors, the run gives up on that search after 5 consecutive pages whose new products all failed your filters, and says so in the log. Narrow the search or category, or widen the filters, to see more. Max pages and Max products can also cap a run before it reaches the natural end of the results.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with Boulanger.com?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.