ManoMano API

Every merchant on one DIY product — price, live stock and delivery window, as JSON

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.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a ManoMano endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
M
/manomano/v1

8 active endpoints, on 1 and 2 credit tiers.

  • POST/manomano/v1/search
  • POST/manomano/v1/product/detail
  • POST/manomano/v1/product/offers
  • POST/manomano/v1/product/reviews
  • POST/manomano/v1/category/browse
  • POST/manomano/v1/category/tree
  • POST/manomano/v1/search/filters
  • +1 more

What ManoMano endpoints does ReefAPI ship?

8 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

8 endpoints

search

1 cr

Keyword search across a ManoMano storefront.

required
query
optional
country, page, limit, sort, brand, seller, category_id, min_price, max_price, min_rating, free_delivery, relay_delivery, manomano_fulfilment, eco_responsible, in_promo, attributes, resolve_attributes

product/detail

2 cr

Full product record.

required
optional
model_id, product_id, article_id, url, country, postal_code, with_delivery

product/offers

1 cr

Every competing merchant selling one product, with that merchant's own price, VAT split, eco-…

required
optional
product_id, article_id, model_id, url, country

product/reviews

1 cr

Customer reviews for a product.

required
optional
article_id, url, country, page, limit, sort, b2b_only

category/browse

2 cr

Browse a category's product grid as the storefront renders it, with price, seller, rating and…

required
category_id
optional
country, category_slug, page, include_sponsored

category/tree

1 cr

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

required
optional
country, depth

search/filters

1 cr

The filters the storefront itself offers for a query, including the technical attribute id ->…

required
query
optional
country, limit

search/suggest

1 cr

Autocomplete straight from the storefront.

required
query
optional
country, limit

Every parameter, every allowed value →

ManoMano API

5 of 8 endpoints, ready to run

View docs ↗

Every competing merchant for one product, cheapest first: merchant name and country, price with and without VAT, eco-participation, live stock count, minimum order quantity and the delivery window in days.

1 credit0 required · 5 optional
POST/manomano/v1/product/offers
idle
// Press "Try it" and this pane shows exactly what the
// live site returned this second — including an empty
// result, if that is the truth. No key, no account.

How the ManoMano API works

ManoMano is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 280 engines.

02
Call
POST /manomano/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Find who undercuts you on one reference, in every country

Four calls take a keyword to every competing merchant on the same product, in five national storefronts.

01search
POSTsearch

Call search with your keyword and country, and take model_id and product_id from the row you care about.

02product/offers
POSTproduct/offers

Call product/offers with that product_id: every competing merchant comes back cheapest first, with its own price, live stock and delivery window in days.

03product/detail
POSTproduct/detail

Call product/detail with the model_id for the EAN and the technical attribute table, so the product can be matched to your own catalogue.

04search (per country)
POSTsearch (per country)

Repeat search with the same EAN or keyword against country fr, de, es, it and gb - the catalogues and prices genuinely differ, and the UK one is priced in GBP.

Every merchant selling that reference, cheapest first, with its own price, live stock and delivery window, the EAN and attribute table to match it to your catalogue, and the same comparison repeated in France, Germany, Spain, Italy and the UK.

request
curl -X POST https://api.reefapi.com/manomano/v1/product/offers \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"product_id":"165183914","country":"fr"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "manomano",
    "endpoint": "product/offers",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

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.

What was measured on 2026-09-23

Five national storefronts, read logged out.

Storefronts

France (manomano.fr), Germany (manomano.de), Spain (manomano.es), Italy (manomano.it), United Kingdom (manomano.co.uk)

Values verified

Measured 2026-09-23. Price, seller and rating matched the storefront's own product page on 8 of 8 products checked; 6 of 6 ids taken from search resolved to the identical record.

Storefronts differ

The storefronts 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, 8,858 in the UK. UK prices are GBP, the rest EUR.

Stock

Stock is a live integer per merchant, not an in-stock flag.

EAN coverage

EAN is present on most rows but not all: 49/50 in Outillage, 50/50 in Jardin, 49/50 in Electricite, 45/50 in Plomberie, 43/50 in Salle de bain on 50-row samples.

Rating coverage

Rating coverage varies sharply by category and is not something to average: 43/50 in Outillage and 40/50 in Electricite, but 19/50 in Plomberie, 5/50 in Salle de bain and 4/50 in Jardin.

Result totals

Result totals on broad queries are the storefront's own estimate and are returned as total_estimated with total_is_exact saying whether it is exact. Narrow queries are exact.

Category paging

category/browse is capped by the source at 6,000 products per category (100 pages of 56), returned as total_reachable next to total_estimated.

Category-dependent fields

eco_participation and repairability_index are category-dependent: eco_participation was on 12 of 15 appliances but 0 of 6 hand tools, and repairability_index on 1 of 15.

Variants

An article can group several variants (up to 7 seen), so pass model_id to pin the exact one; article_id alone returns the article's default variant.

Scope

Public, logged-out marketplace listings only. No ManoMano account is used or required.

What people build with ManoMano

The jobs this data is most often used for.

8

endpoints

1/2

credits per call

01

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.

02

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.

03

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.

04

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.

What ManoMano data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 280 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/manomano/v1/product/offers \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"product_id":"165183914","country":"fr"}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/manomano/v1/product/offers",
    headers={"x-api-key": REEF_KEY},
    json={
  "product_id": "165183914",
  "country": "fr"
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up ManoMano.

Get a free key →
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.

116 E-commerce & Marketplaces APIs on the same key

One key, one credit pool, one response envelope. If you are pulling ManoMano, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 279 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-23.