Micolet API & Scraper
The Micolet API returns micolet.com — the Spanish managed second-hand fashion marketplace for women, men and kids — as clean JSON in five actions: search, detail, seller, brands and categories.
🤖 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.
Micolet is a MANAGED marketplace: a private seller sends a bag, and Micolet inspects, grades, photographs and prices every garment itself, so each row is one physical piece that exists exactly once, with its own size, colour codes, season and a condition grade (new with tags, good condition, small defect). Two things make the data unusual. First, Micolet keeps SOLD garments on its listings, after the available ones, with their last price: on one day the dress category counted 1,149,515 garments of which 102,329 were available and 1,047,186 sold, and the API returns all three of the site's own counts and flags every row is_sold, so the sold side is usable as resale price evidence. Second, each of Micolet's eight storefronts keeps its OWN price list: one measured dress cost 9.49 EUR in Spain, 9.99 in Portugal and France, 10.49 in Belgium, 10.99 in Germany and the UK and 12.49 in Italy and Poland, and across twelve dresses listed on all eight storefronts the median markup over Spain ran from +5.1% (Portugal) to +33.9% (Italy and Poland). The UK and Poland then show that euro price in pounds and zloty at one exchange rate, and the API returns both the printed price and the euro list price, named apart. The same garment is priced separately on each storefront, so to compare countries you call detail with the market you want — every response states the storefront and currency it was read on. detail adds every photo in standard and zoom size, the original retail price, the pre-markdown price on reduced items, the discount both computed and as printed, availability as available, sold or reserved (in another shopper's cart), and the seller: the closet the item came from, with the parameters to open it. seller returns that closet with its own counts and the same filters. Prices on every action were checked against the item's own page: 8 of 8 matched in amount and currency across euro, pound and zloty storefronts. No login, no API key.
One garment, priced on all eight Micolet storefronts
Item 8417448, a casual dress in size M, good condition, read on 2026-10-14. Each storefront keeps its own euro price; the UK and Poland display theirs converted at one rate. Each row is one detail call with that market; every response names the market and currency it was read on.
| storefront | printed price | euro list price | vs Spain |
|---|---|---|---|
| ES · micolet.com | 9.49 EUR | 9.49 | — |
| PT · micolet.pt | 9.99 EUR | 9.99 | +5.3% |
| FR · micolet.fr | 9.99 EUR | 9.99 | +5.3% |
| BE · micolet.be | 10.49 EUR | 10.49 | +10.5% |
| DE · micolet.de | 10.99 EUR | 10.99 | +15.8% |
| GB · micolet.co.uk | £9.28 | 10.99 | +15.8% |
| IT · micolet.it | 12.49 EUR | 12.49 | +31.6% |
| PL · micolet.pl | 54.67 zł | 12.49 | +31.6% |
Measured to depend on the storefront only: the same item read from different networks and countries returned the same price on micolet.com, micolet.co.uk and micolet.pl. Reduced items are the exception to the per-country markup — a marked-down dress carried the same 5.87 EUR on the Spanish and UK storefronts.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/micolet/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"market": "ES",
"category": "3",
"condition": "new"
}
}{
"ok": true,
"meta": {
"api": "micolet",
"endpoint": "search",
"mode": "live",
"latency_ms": 1952.9,
"record_count": 48,
"bytes": 273183,
"cache_hit": false,
"market": "ES",
"currency": "EUR",
"host": "www.micolet.com",
"page": 1,
"per_page": 48,
"page_cap": 100,
"last_page": 100,
"has_more": true,
"total": 146370,
"total_available": 9534,
"total_sold": 136836,
"rows_on_page": 48,
"filters_applied": {
"category": 3,
"condition": "new"
},
"source_url": "https://www.micolet.com/newin?category=3&condition=new",
"department": "women",
"upstream_requests": 1,
"charged_credits": 3,
"version": "1.0.0",
"request_id": "f9a7295be43d4281",
"queue_ms": 1.7,
"fetched_at": "2026-10-14T18:57:28.176Z"
},
"data": {
"items": [
{
"item_id": "8462728",
"url": "https://www.micolet.com/vestidos/stradivarius/8462728",
"title": "Stradivarius Vestido casual Fluido",
"name": "Vestido casual Fluido",
"brand": "Stradivarius",
"category": "Vestidos",
"colors": [
"multicolor"
],
"size": "S",
"size_number": null,
"size_label": "Talla S",
"condition": "new",
"condition_label_en": "New with tags",
"season": "all",
"price": {
"amount": 10.99,
"currency": "EUR",
"display": "10,99 €"
},
"price_from_attribute": false,
"price_eur_list": 10.99,
"original_price": {
"amount": 29.99,
"currency": "EUR",
"display": "29,99 €"
},
"pre_markdown_price": null,
"is_marked_down": false,
"discount_pct": 63.4,
"is_sold": false,
"image": "https://d30o7qbghf97ws.cloudfront.net/itemimage/17361611/image/list-535943e3dce0b05b769e13a66409c4dd.webp",
"market": "ES",
"detail_params": {
"market": "ES",
"item_id": "8462728"
}
},
{
"item_id": "8478233",
"url": "https://www.micolet.com/vestidos/new-look/8478233",
"title": "New Look Vestido casual",
"name": "Vestido casual",
"brand": "New Look",
"category": "Vestidos",
"colors": [
"green"
],
"size": null,
"size_number": "44.0",
"size_label": "Talla 44",
"condition": "new",
"condition_label_en": "New with tags",
"season": "all",
"price": {
"amount": 12.49,
"currency": "EUR",
"display": "12,49 €"
},
"price_from_attribute": false,
"price_eur_list": 12.49,
"original_price": {
"amount": 39.99,
"currency": "EUR",
"display": "39,99 €"
},
"pre_markdown_price": null,
"is_marked_down": false,
"discount_pct": 68.8,
"is_sold": false,
"image": "https://d30o7qbghf97ws.cloudfront.net/itemimage/17392845/image/list-cd3e1df942cedd99664293ae52d38b12.webp",
"market": "ES",
"detail_params": {
"market": "ES",
"item_id": "8478233"
}
},
{
"item_id": "8146234",
"url": "https://www.micolet.com/vestidos/commense/8146234",
"title": "COMMENSE Vestido casual",
"name": "Vestido casual",
"brand": "COMMENSE",
"category": "Vestidos",
"colors": [
"pink"
],
"size": "M",
"size_number": null,
"size_label": "Talla M",
"condition": "new",
"condition_label_en": "New with tags",
"season": "all",
"price": {
"amount": 48.49,
"currency": "EUR",
"display": "48,49 €"
},
"price_from_attribute": false,
"price_eur_list": 48.49,
"original_price": {
"amount": 79.99,
"currency": "EUR",
"display": "79,99 €"
},
"pre_markdown_price": null,
"is_marked_down": false,
"discount_pct": 39.4,
"is_sold": false,
"image": "https://d30o7qbghf97ws.cloudfront.net/itemimage/16720988/image/list-60db8b1b85c6059f6e83334cf4a4f7e4.webp",
"market": "ES",
"detail_params": {
"market": "ES",
"item_id": "8146234"
}
}
]
}
}What the Micolet API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search or browse one storefront and department, 48 rows per page as the site pages them. Every row is a unique garment with its own size, condition grade and price in the storefront's currency, plus the euro list price and the original retail price. Rows come in the site's own order (no sort exists): available garments first, then sold ones, each flagged `is_sold`. The meta reports the site's own three counts (total / available / sold). Every filter here was measured biting against the unfiltered control in the same run; the ones the site silently ignores are not offered. Paging stops at the site's 100-page ceiling. | Pricing teams call search to search or browse one storefront and department, 48 rows per page as the site pages them. | market, department, page, exclude_sold, query, ... |
| detail | The full item page of one garment on one storefront: title, brand, type, the breadcrumb, colour codes, letter and numeric size, condition grade, season, the localized detail list exactly as printed, the current price in the storefront's currency with the euro list price, the original retail price and the pre-markdown price, the discount (computed AND the site's own figure), availability (available / sold / reserved), every photo in standard and zoom size, and the SELLER: the closet id and name the page shows, with the parameters to open that closet. A dead id is NOT_FOUND. Each storefront prices the same garment separately (DE/UK +18.9%, IT/PL +33.9% median over Spain), so to compare countries call `detail` once per `market`; the response states the market, currency and host it was read on. | Marketplace operators call detail to get the full item page of one garment on one storefront. | item_id, market |
| seller | A seller's public closet ('El armario de...'): the closet name, the site's own counts (total / available / sold — one measured closet: 1,146 garments, 128 available) and its garments 48 per page, filterable with the same measured filters as `search` (colour pink -> 37 of 1,146). An unknown closet id is NOT_FOUND. | Catalog enrichment teams call seller to get a seller's public closet ('El armario de...'). | seller_id, market, page, exclude_sold, query, ... |
| brands | Resolve a brand name to the id `search` filters on, straight from the site's own brand autocomplete (10 rows for 'levi', 14 for 'zara' in the measured run). Brand ids are the same on every storefront. | Retail analysts call brands to resolve a brand name to the id `search` filters on, straight from the site's own brand autoco…. | query, market |
| categories | The 15 category ids `search` accepts, with their English names, the storefront's own local sub-type tags (tag ids + local labels, read live from the storefront's menu) and which departments list each category. | Pricing teams call categories to get the 15 category ids `search` accepts, with their English names, the storefront's own local su…. | market |
Call search from your stack
curl -X POST https://api.reefapi.com/micolet/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"market":"ES","category":"3","condition":"new"}'import requests
r = requests.post(
"https://api.reefapi.com/micolet/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"market": "ES",
"category": "3",
"condition": "new"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/micolet/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"market": "ES",
"category": "3",
"condition": "new"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.micolet.search with {"market":"ES","category":"3","condition":"new"}.Who uses this API and why
- Compare what the same second-hand garment costs on Micolet's storefronts by calling detail with each market, and buy where it is cheapest.
- Use Micolet's sold listings, with their last prices, as evidence of what second-hand items of a brand and size actually sold for.
- Track a brand's available versus sold second-hand supply per category and country using the site's own counts.
- Follow a seller's closet: its available and sold garments, filtered by colour, size or price.
- Feed a resale or styling catalogue with graded, photographed one-of-a-kind garments across women's, men's and kids' departments.
Questions developers ask before integrating
Does the API return sold items?
Yes, because Micolet lists them. Its category pages show available garments first and sold ones after, and the headline count is mostly sold: 1,149,515 dresses on one day, 102,329 of them available. Every row carries is_sold, the response carries the site's three counts (total, available, sold), and exclude_sold drops the sold rows if you only want what can be bought. A sold garment's detail page still returns its last price.
Is the price the same on every Micolet storefront?
No. Each of the eight storefronts keeps its own euro price list. Across twelve dresses listed on all eight, the median markup over Spain was +5.1% in Portugal, +8.8% in France, +14.3% in Belgium, +18.9% in Germany and the UK and +33.9% in Italy and Poland. The UK and Poland display their euro price in pounds and zloty at one exchange rate. Reduced items carry the same euro price everywhere. To compare, call detail on the same item_id with each market you care about.
What is price_eur_list next to price?
price is what the storefront prints, in its own currency. price_eur_list is the storefront's euro list price that the printed one is derived from. On the six euro storefronts they are equal; on the UK and Polish storefronts the printed price is the euro list price converted (one dress: 10.99 euro list, printed £9.28 and, in Poland, 12.49 euro list, printed 54.67 zł).
Which filters can I use?
Department (women, men, kids), category, sub-type tag, brand id, colour, letter size, numeric size, condition (new with tags or small defect), season, a price range and free text. Each was measured against the unfiltered total in the same run — for example dresses 1,149,513, red ones 88,921, new-with-tags ones 146,370. The price range is in the storefront's own currency, and free text is matched in the storefront's language.
How deep can I page?
48 rows per page, up to page 100 — 4,800 rows per query. Micolet returns empty pages after that, so the API refuses a page above 100 and reports the last page and whether there is more. Narrow the filters to reach further.
Who is the seller?
Micolet sells and ships every item, and the item page also names the private seller's closet the garment came from. detail returns that closet's id and name, and seller opens the closet with its own counts — one measured closet held 1,146 garments, 128 of them available. Items from influencer closets are marked as such.
Can I sort results?
No. Micolet's storefront has no sort control, so rows come in the site's own order: available garments first, then sold ones. Filter instead, or sort the rows you receive.
Does it return measurements or a description of flaws?
No, because Micolet does not publish them per item. The condition is a grade — new with tags, good condition or small defect — and the photos show the piece. The hanger-measurements link on the site opens a general guide, not the garment's own measurements.
What is the Micolet API?
Micolet API is a ReefAPI endpoint group for spain's managed second-hand fashion marketplace as json: one-of-a-kind garments graded and priced by micolet, sold items included with their last price, and each of the eight european storefronts with its own price. It returns live JSON through POST requests under /micolet/v1.
Is the Micolet API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Micolet calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Micolet login or account?
No login to Micolet 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 Micolet 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 Micolet API use?
Micolet actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Micolet from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call micolet actions with the same key, credit pool and JSON envelope used by normal REST requests.