Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the ManoMano API page →
E-commerce & Marketplaces

ManoMano API & Scraper

The ManoMano API turns Europe's largest DIY, home-improvement and gardening marketplace into clean JSON across eight actions: search, product/detail, product/offers, product/reviews, category/browse, category/tree, search/filters and search/suggest.

8 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

ManoMano is a marketplace, so the same reference is sold by many merchants at once, and product/offers is the action most people buy this for: give it a product and it returns every competing merchant with that merchant's own price (with and without VAT), its live stock count, its eco-participation, its country, and its delivery window in days, sorted cheapest first. On one Bosch drill on 2026-09-23 that was 15 competing merchants in 5 countries, asking between 137.99 and 309.83 EUR while the buy-box sat at 107.10 with 81 units in stock. search takes a keyword in the storefront's own language, offers the site's own sorts and thirteen filters that were each measured to change the result count, and returns rows carrying the ids, title, URL, brand, price with and without VAT, the struck reference price and discount, EAN, seller name and country, rating, delivery flags and the technical attribute ids. product/detail adds the EAN, the full technical attribute table with names and units (25 to 31 attributes on the products sampled), the description, the live stock integer, the delivery promise with carrier and date window for a postcode you choose, the eco-participation, the images, the documents, the Q&A and how many other merchants sell the same product. category/browse walks the catalogue tree 56 server-rendered rows at a time, leaving out the paid placements (counted, and returned flagged on request). search/filters publishes the storefront's own filter set, including the table that turns a search row's numeric attribute ids into readable names with units. The five country storefronts sit behind one country parameter and they are genuinely different shops: the same query returned 50,259 results in France, 23,029 in Germany, 22,562 in Italy, 18,842 in Spain and 8,858 in the United Kingdom, with different merchants, different prices and GBP instead of EUR in the UK. In a live check, price, seller and rating matched the storefront's own product page on 8 of 8 products, and 6 of 6 ids taken from search resolved to the identical record. No ManoMano account, no browser, one ReefAPI key and the standard { ok, data, meta, error } envelope.

Reference

One product, fifteen merchants: the price spread is the point

ManoMano is a marketplace, so a single reference is sold by many merchants, each with its own price, its own stock and its own delivery window. product/offers returns all of them, cheapest first, with the merchant's country. Measured on 2026-09-23 for one Bosch GSR 12V-15 (product_id 165183914), whose buy-box was Maxoutil in France at 107.10 EUR with 81 units in stock.

Merchantcountryprice (EUR, VAT incl.)stockdelivery (days)
GOTOOLSDE137.99222-5
HaushaltsparadiesAT150.30337-9
CstoreFR154.111232-5
BadplanetAT169.32311
TFTNFR169.4993-5
LatiendadeelectricidadES309.8365-9

Stock is a live integer, not an in-stock flag, and it is per merchant. The same product's buy-box was 107.10 EUR, so the buy-box is not simply the median of the other offers. Where a product carries an eco-participation (DEEE), it is already inside the price and is returned separately as eco_participation with price_includes_eco_participation true, never added on top.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/manomano/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "perceuse",
    "country": "fr"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "manomano",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 1739.4,
    "record_count": 24,
    "bytes": 418684,
    "cache_hit": false,
    "total_is_exact": false,
    "country": "fr",
    "upstream_requests": 2,
    "charged_credits": 1,
    "version": "1.0.0"
  },
  "data": {
    "query": "perceuse",
    "country": "fr",
    "currency": "EUR",
    "sort": "relevance",
    "page": 1,
    "per_page": 24,
    "total_estimated": 253264,
    "total_is_exact": false,
    "results": [
      {
        "article_id": 78566961,
        "product_id": "91993112",
        "model_id": 71825035,
        "offer_id": "f6af2f29-529a-42fb-8d83-6f1da3362644",
        "mm_id": 335023853460,
        "title": "Perceuse visseuse MAKITA DDF484Z 18V Li-Ion Ø 13 mm (Produit seul)",
        "slug": "makita-perceuse-visseuse-18v-3x3ah-ddf484rf3j",
        "url": "https://www.manomano.fr/p/makita-perceuse-visseuse-18v-3x3ah-ddf484rf3j-78566961",
        "brand": {
          "id": 16,
          "name": "MAKITA",
          "logo": "https://cdn.manomano.com/images/brands/028c5538-0219-446e-8b80-574e9cd93a1a.png"
        },
        "sku": "4205",
        "ean": "0088381826310",
        "gtins": [
          "0088381826310",
          "9005426756792"
        ],
        "price": 104,
        "price_ex_vat": 86.67,
        "currency": "EUR",
        "reference_price": 109.82,
        "reference_price_ex_vat": 91.52,
        "discount_percent": 5,
        "discount_percent_computed": 5.3,
        "unit_price_label": null,
        "price_basis": "per_item",
        "rating": 4.6,
        "rating_count": 371,
        "seller": {
          "id": 5816269,
          "name": "Brico Mania MF",
          "country": "FR",
          "is_b2b": false
        },
        "delivery": {
          "free": true,
          "relay_point": true,
          "shipping_cost": 0
        },
        "image": "https://cdn.manomano.com/pim-media/images/medium/44b766475fcb9a804d995e1eb1ef9641e6663828.jpg",
        "images": [
          "https://cdn.manomano.com/pim-media/images/medium/44b766475fcb9a804d995e1eb1ef9641e6663828.jpg",
          "https://cdn.manomano.com/pim-media/images/medium/757b0eff4cb553578086a994ff701528f1022221.jpg",
          "https://cdn.manomano.com/pim-media/images/medium/21e1c2d7ef3dbf78bb10d28345719c9e0e9d7cd5.jpg"
        ],
        "categories": {
          "l0": "Outillage",
          "l0_id": 463,
          "l1": "Outillage électroportatif",
          "l1_id": 464,
          "last": "Perceuse",
          "last_id": 1146,
          "slug": "perceuse"
        },
        "attributes_raw": {
          "1": [
            "[trimmed-depth]"
          ],
          "2": [
            "[trimmed-depth]"
          ],
          "3": [
            "[trimmed-depth]"
          ],
          "7": [
            "[trimmed-depth]"
          ],
          "12": [
            "[trimmed-depth]"
          ],
          "14": [
            "[trimmed-depth]"
          ],
          "23": [
            "[trimmed-depth]"
          ],
          "26": [
            "[trimmed-depth]"
          ],
          "32": [
            "[trimmed-depth]",
            "[trimmed-depth]",
            "[trimmed-depth]"
          ],
          "34": [
            "[trimmed-depth]"
          ],
          "46": [
            "[trimmed-depth]"
          ],
          "83": [
            "[trimmed-depth]"
          ],
          "84": [
            "[trimmed-depth]"
          ],
          "97": [
            "[trimmed-depth]"
          ],
          "99": [
            "[trimmed-depth]"
          ],
          "462": [
            "[trimmed-depth]"
          ],
          "535": [
            "[trimmed-depth]"
          ],
          "537": [
            "[trimmed-depth]"
          ],
          "634": [
            "[trimmed-depth]"
          ],
          "1619": [
            "[trimmed-depth]"
          ],
          "3919": [
            "[trimmed-depth]"
          ],
          "3920": [
            "[trimmed-depth]"
          ],
          "5571": [
            "[trimmed-depth]"
          ],
          "6488": [
            "[trimmed-depth]"
          ],
          "9454": [
            "[trimmed-depth]"
          ],
          "11714": [
            "[trimmed-depth]"
          ],
          "13880": [
            "[trimmed-depth]"
          ],
          "14515": [
            "[trimmed-depth]"
          ],
          "14584": [
            "[trimmed-depth]"
          ],
          "14585": [
            "[trimmed-depth]"
          ],
          "18786": [
            "[trimmed-depth]"
          ],
          "18799": [
            "[trimmed-depth]"
          ],
          "22130": false,
          "22793": true
        },
        "top_attribute_values": [
          "Sans fil"
        ],
        "min_quantity": 1,
        "promotion": {
          "tags": [
            "[trimmed-depth]"
          ],
          "ends_at": 1793401140000
        },
        "flags": {
          "manomano_fulfilment": true,
          "top_sales": false,
          "eco_responsible": true,
          "local_seller": false,
          "competitive": true,
          "pro_conditions": false,
          "b2b": false
        }
      },
      {
        "article_id": 78565019,
        "product_id": "2391646",
        "model_id": 1443118,
        "offer_id": "affdee09-a529-44e5-90e9-79a7d99ab972",
        "mm_id": 778538064158,
        "title": "Perceuse visseuse à percussion MAKITA DHP482RMJ - 18V - 4.0Ah - 2 batteries - Chargeur - Coffret",
        "slug": "makita-perceuse-visseuse-a-percussion-18v-li-ion-3ah-diam-13mm-62nm-dhp482rfe",
        "url": "https://www.manomano.fr/p/makita-perceuse-visseuse-a-percussion-18v-li-ion-3ah-diam-13mm-62nm-dhp482rfe-78565019",
        "brand": {
          "id": 16,
          "name": "MAKITA",
          "logo": "https://cdn.manomano.com/images/brands/028c5538-0219-446e-8b80-574e9cd93a1a.png"
        },
        "sku": "VOA25047",
        "ean": "0088381810340",
        "gtins": [
          "0088381810340"
        ],
        "price": 229,
        "price_ex_vat": 190.83,
        "currency": "EUR",
        "reference_price": 284.15,
        "reference_price_ex_vat": 236.79,
        "discount_percent": 19,
        "discount_percent_computed": 19.41,
        "unit_price_label": null,
        "price_basis": "per_item",
        "rating": 4.46,
        "rating_count": 619,
        "seller": {
          "id": 12,
          "name": "Maxoutil",
          "country": "FR",
          "is_b2b": false
        },
        "delivery": {
          "free": true,
          "relay_point": true,
          "shipping_cost": 0
        },
        "image": "https://cdn.manomano.com/pim-media/images/medium/1a4b3c1f60b7503762fa5db71c44828ef338778f.jpg",
        "images": [
          "https://cdn.manomano.com/pim-media/images/medium/1a4b3c1f60b7503762fa5db71c44828ef338778f.jpg",
          "https://cdn.manomano.com/pim-media/images/medium/87fd42214db7bd182bfff164537c9b15fff65424.jpg",
          "https://cdn.manomano.com/pim-media/images/medium/304adbcdc318367f9c2f746a2c95a871e36aabb4.jpg"
        ],
        "categories": {
          "l0": "Outillage",
          "l0_id": 463,
          "l1": "Outillage électroportatif",
          "l1_id": 464,
          "last": "Perceuse",
          "last_id": 1146,
          "slug": "perceuse"
        },
        "attributes_raw": {
          "1": [
            "[trimmed-depth]"
          ],
          "2": [
            "[trimmed-depth]"
          ],
          "3": [
            "[trimmed-depth]"
          ],
          "7": [
            "[trimmed-depth]"
          ],
          "12": [
            "[trimmed-depth]"
          ],
          "14": [
            "[trimmed-depth]"
          ],
          "26": [
            "[trimmed-depth]"
          ],
          "34": [
            "[trimmed-depth]"
          ],
          "46": [
            "[trimmed-depth]"
          ],
          "83": [
            "[trimmed-depth]"
          ],
          "84": [
            "[trimmed-depth]"
          ],
          "97": [
            "[trimmed-depth]"
          ],
          "99": [
            "[trimmed-depth]"
          ],
          "102": [
            "[trimmed-depth]"
          ],
          "462": [
            "[trimmed-depth]"
          ],
          "537": [
            "[trimmed-depth]"
          ],
          "3919": [
            "[trimmed-depth]"
          ],
          "3920": [
            "[trimmed-depth]"
          ],
          "6488": [
            "[trimmed-depth]"
          ],
          "8865": [
            "[trimmed-depth]"
          ],
          "11714": [
            "[trimmed-depth]"
          ],
          "13880": [
            "[trimmed-depth]"
          ],
          "15651": [
            "[trimmed-depth]"
          ],
          "18786": [
            "[trimmed-depth]"
          ],
          "18799": [
            "[trimmed-depth]"
          ],
          "22130": true,
          "22761": true
        },
        "top_attribute_values": [
          "Sans fil"
        ],
        "min_quantity": 1,
        "promotion": {
          "tags": [
            "[trimmed-depth]"
          ],
          "ends_at": 1793401140000
        },
        "flags": {
          "manomano_fulfilment": false,
          "top_sales": false,
          "eco_responsible": false,
          "local_seller": false,
          "competitive": false,
          "pro_conditions": false,
          "b2b": false
        }
      },
      {
        "article_id": 78567295,
        "product_id": "15944295",
        "model_id": 52787165,
        "offer_id": "2416bf01-ed86-403e-a390-780419427847",
        "mm_id": 446745571350,
        "title": "Perceuse visseuse à percussion MAKITA DHP458Z - 18V - Li-Ion - Ø13 mm - Sans batterie, ni chargeur",
        "slug": "perceuse-visseuse-a-percussion-18v-li-ion-lxt-machine-seule-makita-dhp458z",
        "url": "https://www.manomano.fr/p/perceuse-visseuse-a-percussion-18v-li-ion-lxt-machine-seule-makita-dhp458z-78567295",
        "brand": {
          "id": 16,
          "name": "MAKITA",
          "logo": "https://cdn.manomano.com/images/brands/028c5538-0219-446e-8b80-574e9cd93a1a.png"
        },
        "sku": "VOA25054",
        "ean": "0088381653831",
        "gtins": [
          "0088381653831",
          "4019518050663"
        ],
        "price": 145.51,
        "price_ex_vat": 121.26,
        "currency": "EUR",
        "reference_price": 211.03,
        "reference_price_ex_vat": 175.86,
        "discount_percent": 31,
        "discount_percent_computed": 31.05,
        "unit_price_label": null,
        "price_basis": "per_item",
        "rating": 4.47,
        "rating_count": 289,
        "seller": {
          "id": 5307819,
          "name": "Maxoutil.",
          "country": "FR",
          "is_b2b": false
        },
        "delivery": {
          "free": true,
          "relay_point": true,
          "shipping_cost": 0
        },
        "image": "https://cdn.manomano.com/pim-media/images/medium/5672a0c5e6848b7f598c86315416bb1f2b9e218e.jpg",
        "images": [
          "https://cdn.manomano.com/pim-media/images/medium/5672a0c5e6848b7f598c86315416bb1f2b9e218e.jpg",
          "https://cdn.manomano.com/pim-media/images/medium/05e60afdfeb61e9d08851368e0b74b0866a3046a.jpg",
          "https://cdn.manomano.com/pim-media/images/medium/60e7295804786c0ca10cf5129b940de65649d03e.jpg"
        ],
        "categories": {
          "l0": "Outillage",
          "l0_id": 463,
          "l1": "Outillage électroportatif",
          "l1_id": 464,
          "last": "Perceuse",
          "last_id": 1146,
          "slug": "perceuse"
        },
        "attributes_raw": {
          "1": [
            "[trimmed-depth]"
          ],
          "2": [
            "[trimmed-depth]"
          ],
          "3": [
            "[trimmed-depth]"
          ],
          "7": [
            "[trimmed-depth]"
          ],
          "12": [
            "[trimmed-depth]"
          ],
          "14": [
            "[trimmed-depth]"
          ],
          "26": [
            "[trimmed-depth]"
          ],
          "32": [
            "[trimmed-depth]",
            "[trimmed-depth]",
            "[trimmed-depth]"
          ],
          "34": [
            "[trimmed-depth]",
            "[trimmed-depth]",
            "[trimmed-depth]"
          ],
          "46": [
            "[trimmed-depth]"
          ],
          "83": [
            "[trimmed-depth]"
          ],
          "84": [
            "[trimmed-depth]"
          ],
          "97": [
            "[trimmed-depth]"
          ],
          "99": [
            "[trimmed-depth]"
          ],
          "462": [
            "[trimmed-depth]"
          ],
          "537": [
            "[trimmed-depth]"
          ],
          "634": [
            "[trimmed-depth]"
          ],
          "3919": [
            "[trimmed-depth]"
          ],
          "3920": [
            "[trimmed-depth]"
          ],
          "6488": [
            "[trimmed-depth]"
          ],
          "11714": [
            "[trimmed-depth]"
          ],
          "13880": [
            "[trimmed-depth]"
          ],
          "14515": [
            "[trimmed-depth]"
          ],
          "18786": [
            "[trimmed-depth]"
          ],
          "18799": [
            "[trimmed-depth]"
          ],
          "22130": true,
          "22761": false,
          "22793": true
        },
        "top_attribute_values": [
          "Sans fil"
        ],
        "min_quantity": 1,
        "promotion": null,
        "flags": {
          "manomano_fulfilment": true,
          "top_sales": false,
          "eco_responsible": false,
          "local_seller": false,
          "competitive": false,
          "pro_conditions": false,
          "b2b": false
        }
      }
    ]
  }
}
Actions

What the ManoMano API does

ActionDescriptionConcrete use caseKey params
searchKeyword search across a ManoMano storefront. Returns the product rows with price (with and without VAT), reference price, seller, EAN, rating, delivery flags and the technical attribute ids.Pricing teams call search to get keyword search across a ManoMano storefront.query, country, page, limit, sort, ...
product/detailFull product record: price with and without VAT, reference price, eco-participation, EAN, brand, seller, live stock, delivery promise, the technical attribute table, images, documents and the Q&A. Pass model_id to pin the exact variant a search row referred to.Marketplace operators call product/detail to get full product record.model_id, product_id, article_id, url, country, ...
product/offersEvery competing merchant selling one product, with that merchant's own price, VAT split, eco-participation, live stock, minimum quantity and delivery window. This is the marketplace view.Catalog enrichment teams call product/offers to get every competing merchant selling one product, with that merchant's own price, VAT split, eco-….product_id, article_id, model_id, url, country
product/reviewsCustomer reviews for a product: rating, text, date, reviewer display name and country, votes and photos.Retail analysts call product/reviews to get customer reviews for a product.article_id, url, country, page, limit, ...
category/browseBrowse a category's product grid as the storefront renders it, with price, seller, rating and stock per row. Paid placements are dropped and counted unless you ask for them.Pricing teams call category/browse to get browse a category's product grid as the storefront renders it, with price, seller, rating and….category_id, country, category_slug, page, include_sponsored
category/treeThe storefront's category tree with ids and slugs, up to three levels.Marketplace operators call category/tree to get the storefront's category tree with ids and slugs, up to three levels..country, depth
search/filtersThe filters the storefront itself offers for a query, including the technical attribute id -> name table (with units) that turns a search row's numeric attribute ids into readable specs.Catalog enrichment teams call search/filters to get the filters the storefront itself offers for a query, including the technical attribute id ->….query, country, limit
search/suggestAutocomplete straight from the storefront: query suggestions, brands, categories and advice articles for a prefix.Retail analysts call search/suggest to get autocomplete straight from the storefront.query, country, limit
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/manomano/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"perceuse","country":"fr"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.manomano.search with {"query":"perceuse","country":"fr"}.
Use cases

Who uses this API and why

  • Repricing against the real competition: product/offers returns every merchant on one reference with its own price, live stock and delivery window, so a seller can see exactly who undercuts them and by how much, in five countries.
  • Cross-border price arbitrage: run the same EAN across the French, German, Spanish, Italian and UK storefronts and compare - the catalogues and prices genuinely differ, and the UK one is in GBP.
  • Catalogue and PIM enrichment: EAN, brand, the 25-to-31-attribute technical table with units, images, documents and the description, keyed to your own products by EAN.
  • Stock and availability monitoring: stock is a live integer per merchant, not an in-stock flag, so you can watch a competitor draw down from 123 units and see the delivery window move with it.
  • DIY product research and comparison pages: category/browse plus search/filters give the catalogue tree, the filterable technical attributes with readable names and units, and the customer ratings and reviews behind them.
FAQ

Questions developers ask before integrating

Is a search row a product or one merchant's offer?

One merchant's offer for a product. ManoMano is a marketplace, so the same reference is listed by many merchants; a search row carries the merchant that ManoMano is showing for it, with that merchant's price, name and country. To see the competition, call product/offers with the product_id: it returns every competing merchant, sorted cheapest first, each with its own price with and without VAT, live stock count, eco-participation, country and delivery window in days. On one Bosch drill that was 15 merchants across 5 countries on 2026-09-23.

How do I get the exact variant I saw in search?

Pass model_id from the search row to product/detail. A ManoMano article can group several variants (up to 7 on the products sampled) - a 800 mm and a 1.6 m guide rail share one article, with different EANs and different prices. model_id identifies exactly one variant, and product/detail refuses to return a different one. If you pass only article_id, you get the article's default variant and variants_count tells you how many exist.

Which price does the API return, and is VAT included?

Both. price is the selling price with VAT as the storefront shows it, and price_ex_vat is the same offer without VAT, because ManoMano publishes both. reference_price is the struck-through comparison price and is never returned as the current price; it is null when the storefront shows none, so the API never invents a discount. The source's own discount figure comes back as discount_percent and the one computed from the two prices as discount_percent_computed, separately, so a disagreement is visible rather than hidden. Where an eco-participation applies it is already a component of the price: measured across 9 French appliances, price and price_ex_vat differ by exactly the VAT rate, leaving no room for the fee on top.

Is the EAN there, and can I join it to my own catalogue?

Yes, and it is normalised so it joins. Measured across five categories on 50-row samples, EAN was present on 49/50 in Outillage, 50/50 in Jardin, 49/50 in Electricite, 45/50 in Plomberie and 43/50 in Salle de bain. The storefront publishes the same code in two different forms on two surfaces, a zero-padded 14-digit GTIN in search and a 13-digit EAN on the product page; the API returns the 13-digit form on both, so a search row and a detail record join on ean without any cleaning at your end.

What do the technical attributes look like, and can I filter on them?

product/detail returns them as a named table: 25 to 31 attributes on the products sampled, each with an id, a name, its values, its unit and whether it is numeric or textual, for example Tension electrique 18 V or Poids 1.8 kg. Search rows carry the same attributes as numeric ids to stay compact; search/filters publishes the id-to-name table with units for any query, and you can pass those ids straight back into search as attributes, for example 84:Sans fil, which narrowed a 227,697-result query to 10,438 on 2026-09-23.

Are the five country storefronts really different?

Yes, and it is worth checking rather than assuming. Measured on 2026-09-23 with the same query: France returned 50,259 results, Germany 23,029, Italy 22,562, Spain 18,842 and the United Kingdom 8,858, with different merchants, different prices and different product titles. The UK storefront prices in GBP, the other four in EUR, verified against each storefront's own product payload. Merchants sell across borders, so seller.country is its own field: a UK listing can be shipped by a merchant registered in China and a Spanish listing by a French one.

Do the filters actually work, or are they ignored?

Each one was measured unfiltered against filtered in the same run, and all thirteen changed the total. Against 227,697 unfiltered results for one query: brand cut it to 2,943, seller to 384, category to 11,200, a 50-100 price band to 22,603, minimum rating 4 to 5,714, free delivery to 194,188, pickup-point delivery to 11,710, ManoMano Fulfilment to 706, eco-responsible to 900, on-promotion to 25,604, and a technical attribute to 10,438. A brand that does not exist returns 0 rather than silently ignoring the filter. Filters the source accepts and then ignores are not exposed.

How deep can I page, and what happens to sponsored rows?

category/browse returns 56 server-rendered rows a page and the storefront caps a category at 6,000 products, 100 pages: page 100 serves rows and page 101 is reported as past the last page, not as an empty success. The response returns total_estimated alongside total_reachable so the cap is visible - one category reported 11,202 matches but only 6,000 reachable. Paid placements are left out by default and counted in sponsored_dropped (8 of 56 on the first page of one category); set include_sponsored to get them back, each flagged is_sponsored.

What is the ManoMano API?

ManoMano API is a ReefAPI endpoint group for europe's diy marketplace in 5 countries: every merchant's price, live stock and delivery window, plus ean and the technical specs. It returns live JSON through POST requests under /manomano/v1.

Is the ManoMano API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. ManoMano calls use the same shared credit balance as every other ReefAPI engine.

Do I need a ManoMano login or account?

No login to ManoMano is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the ManoMano data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the ManoMano API use?

ManoMano actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call ManoMano from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call manomano actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / manomano

ManoMano

Europe's DIY marketplace in 5 countries: every merchant's price, live stock and delivery window, plus EAN and the technical specs.

base /manomano/v18 endpoints
post/manomano/v1/product/detail2 credits

Full product record: price with and without VAT, reference price, eco-participation, EAN, brand, seller, live stock, delivery promise, the technical attribute table, images, documents and the Q&A. Pass model_id to pin the exact variant a search row referred to.

ParameterAllowed / rangeDescription
model_idoptionalThe variant key, and the one to prefer: search returns it as model_id and it identifies exactly one variant.
product_idoptionalOffer/product id from search. Resolved upstream to its variant; never pasted into a URL.
article_idoptionalThe article id a product URL ends with. An article can group several variants (up to 7 seen), so on its own it returns the article's DEFAULT variant — check variants_count and pass model_id to pin one.
urloptionalA ManoMano product URL; the trailing id is used.
country = froptionalfr · de · es · it · gb
postal_codeoptionalCompute the delivery promise for this postcode. Without it the source uses its own default.
with_delivery = trueoptionalInclude the delivery promise (carriers and date windows). One extra upstream request.
Try in playground →
post/manomano/v1/product/offers1 credit

Every competing merchant selling one product, with that merchant's own price, VAT split, eco-participation, live stock, minimum quantity and delivery window. This is the marketplace view.

ParameterAllowed / rangeDescription
product_idoptionalProduct id from search (`product_id`).
article_idoptionalArticle id; resolved to the product id upstream.
model_idoptionalModel id; resolved to the product id upstream.
urloptionalA ManoMano product URL.
country = froptionalfr · de · es · it · gb
Try in playground →
post/manomano/v1/product/reviews1 credit

Customer reviews for a product: rating, text, date, reviewer display name and country, votes and photos.

ParameterAllowed / rangeDescription
article_idoptionalArticle id (from search or product/detail).
urloptionalA ManoMano product URL; the trailing id is used.
country = froptionalfr · de · es · it · gb
page = 1optional1–500
limit = 20optional1–100
sort = newestoptionalnewest · oldest · rating_desc · rating_asc · most_voted
b2b_only = falseoptionalOnly reviews left by trade customers.
Try in playground →
post/manomano/v1/category/browse2 credits

Browse a category's product grid as the storefront renders it, with price, seller, rating and stock per row. Paid placements are dropped and counted unless you ask for them.

ParameterAllowed / rangeDescription
category_idrequiredCategory id from category/tree or a search row.
category_slugoptionalOptional slug; the id is what resolves.
country = froptionalfr · de · es · it · gb
page = 1optional1–1001-based page. The source caps a category at 6 000 products (100 pages of 56).
include_sponsored = falseoptionalReturn paid placements too, each flagged is_sponsored.
Try in playground →
post/manomano/v1/category/tree1 credit

The storefront's category tree with ids and slugs, up to three levels.

ParameterAllowed / rangeDescription
country = froptionalfr · de · es · it · gb
depth = 2optional1–3How many levels to return.
Try in playground →
post/manomano/v1/search/filters1 credit

The filters the storefront itself offers for a query, including the technical attribute id -> name table (with units) that turns a search row's numeric attribute ids into readable specs.

ParameterAllowed / rangeDescription
queryrequiredThe query whose filter set you want.
country = froptionalfr · de · es · it · gb
limit = 40optional1–100How many attribute filters to return.
Try in playground →
post/manomano/v1/search/suggest1 credit

Autocomplete straight from the storefront: query suggestions, brands, categories and advice articles for a prefix.

ParameterAllowed / rangeDescription
queryrequiredA prefix, as typed in the search box.
country = froptionalfr · de · es · it · gb
limit = 8optional1–20
Try in playground →