ManoMano APImanomano.fr ↗
Search the ManoMano.fr catalog and retrieve full product details including price, brand, variants, EAN, images, and stock status via two REST endpoints.
What is the ManoMano API?
The ManoMano.fr API provides two endpoints — search_products and get_product_details — to query the French DIY and home improvement marketplace. search_products returns paginated summaries across the full catalog, while get_product_details resolves a product URL into 14 structured fields including EAN barcode, variant attributes, seller name, and VAT-inclusive EUR pricing.
curl -X GET 'https://api.parse.bot/scraper/4211615d-af15-45d3-9eda-48b355382937/search_products?page=0&limit=5&query=perceuse' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace manomano-fr-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.manomano_fr_scraper_api import ManoMano, ProductSummary, Product
client = ManoMano()
# Search for power drills
for product in client.productsummaries.search(query="perceuse", limit=5):
print(product.title, product.brand, product.price, product.seller)
# Get full details for each product
detail = product.details()
print(detail.description, detail.ean, detail.is_in_stock)
Full-text search over ManoMano.fr product catalog via Algolia. Returns paginated product summaries including pricing, brand, seller, category, and stock status. Pagination is zero-based. Each result includes a product URL suitable for get_product_details.
| Param | Type | Description |
|---|---|---|
| page | integer | Zero-based page number. |
| limit | integer | Number of results per page (max 50). |
| queryrequired | string | Search keyword in French (e.g. 'perceuse', 'robinet', 'peinture'). |
{
"type": "object",
"fields": {
"page": "integer current page number",
"limit": "integer results per page",
"total": "integer total matching products",
"products": "array of product summary objects with product_id, title, brand, price, url, seller, category, rating, and is_in_stock"
},
"sample": {
"data": {
"page": 0,
"limit": 5,
"total": 139617,
"products": [
{
"url": "https://www.manomano.fr/p/perceuse-visseuse-sans-fil-makita-ddf453sfe3-18-v-3-batteries-3-ah-chargeur-78567310",
"brand": "MAKITA",
"price": 187.68,
"title": "Perceuse-visseuse MAKITA Brushless LXT DDF453SFE 18V + 2 batteries 3Ah + chargeur + coffret",
"rating": 4.49,
"seller": "Maxoutil.",
"category": "Perceuse",
"currency": "EUR",
"model_id": 55916411,
"image_url": "https://cdn.manomano.com/perceuse-visseuse-makita-brushless-lxt-ddf453sfe-18v-2-batteries-3ah-chargeur-coffret-P-5307819-14708990_1.jpg",
"product_id": "14708990",
"is_in_stock": true,
"rating_count": 3891,
"retail_price": 295.45
}
]
},
"status": "success"
}
}About the ManoMano API
Search the ManoMano.fr Catalog
search_products accepts a required query string (in French, e.g. perceuse, robinet, peinture) and optional page and limit parameters. Pagination is zero-based and supports up to 50 results per call. Each item in the returned products array includes product_id, title, brand, price, seller, category, rating, is_in_stock, and a url that can be passed directly to get_product_details. The total field tells you how many matching products exist across all pages.
Detailed Product Data
get_product_details takes a full ManoMano.fr product URL and returns a single object with all available metadata for that listing: title, brand, price (EUR, VAT-inclusive), currency, seller, ean, model_id, images (array of URLs), variants (each with a model_id and associated attributes), and the canonical url. The ean field is null when the listing does not expose a barcode. The variants array captures distinct SKUs under the same product page.
Coverage and Scope
All prices are in EUR and include French VAT. Queries should use French-language keywords to match ManoMano.fr's catalog indexing. The is_in_stock flag on search results gives a quick availability signal without requiring a separate detail call. For deeper spec data, the get_product_details endpoint includes both structured variants and freeform product description content alongside the specification fields.
The ManoMano API is a managed, monitored endpoint for manomano.fr — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when manomano.fr changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official manomano.fr API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track price changes on specific tools or fixtures by polling
get_product_detailsfor a product URL over time. - Build a French DIY product feed by paginating
search_productswith category-level queries like 'carrelage' or 'isolation'. - Cross-reference EAN barcodes returned by
get_product_detailsagainst a product database to identify duplicate or equivalent listings. - Monitor
is_in_stockstatus on search result pages to trigger restock alerts for specific products. - Collect seller names from
search_productsto map which third-party merchants carry a given brand on ManoMano.fr. - Extract variant attributes from
get_product_detailsto build a structured size or colour matrix for a product comparison tool. - Aggregate ratings from
search_productsresults to identify the highest-rated products within a given DIY category.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does ManoMano have an official developer API?+
What does `search_products` return beyond the product title and price?+
search_products returns product_id, title, brand, price, url, seller, category, rating, and is_in_stock for each result. The url field is specifically formatted for use as the url input to get_product_details.Does `get_product_details` always return an EAN?+
ean field is null when the listing does not expose a barcode. Coverage varies by brand and seller. The model_id field is always present and can serve as a stable internal identifier.Are customer reviews or review text accessible through this API?+
rating scores in search results but does not expose individual review text, review counts, or reviewer metadata. You can fork this API on Parse and revise it to add a review-fetching endpoint.