# Mädchenflohmarkt API — live data from maedchenflohmarkt.de, Germany's second-hand women's fashion marketplace (~374,000 live items): search with brand, size, colour, condition, category and price filters, and read every item's brand, size, colours, condition grade, material, current price, the crossed-out original price, discount, shipping, likes, photos and seller. Seller profiles with rating scores, seller closets, seller reviews, similar items, the 787-node category tree, the filter vocabulary and the storefront's autocomplete. EUR. No login, no API key.

> Search or browse the live catalogue (~374,000 items). Every filter was measured biting against the unfiltered total in the same run, and the engine checks the source's own echo of what it applied: a filter the source did not apply is reported in meta.warnings. brand, size and colour take several values (OR); category and condition take one. Prices are whole euros. `total` is the source's exact count; there is no paging ceiling.
> ReefAPI engine `maedchenflohmarkt` · 9 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/maedchenflohmarkt/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/maedchenflohmarkt/v1/search — 3 credits
Search or browse the live catalogue (~374,000 items). Every filter was measured biting against the unfiltered total in the same run, and the engine checks the source's own echo of what it applied: a filter the source did not apply is reported in meta.warnings. brand, size and colour take several values (OR); category and condition take one. Prices are whole euros. `total` is the source's exact count; there is no paging ceiling.

**Parameters:**
- `query` (string, optional) — Free text, matched by the source's own search (titles, brands, types). Example: 'gucci' -> 692 live items.
- `category` (integer, optional) — ONE category id from `categories` (787 nodes; roots: 1 Mode, 406 Schuhe, 341 Taschen, 281 Accessoires, 376 Schmuck). The source applies a single category only.
- `brand` (array, optional) — One or more numeric brand ids (OR). Get ids from `suggest` (brand names -> ids) or `filters`. Measured: [605] 81 + [73] 1,540 = [605, 73] 1,621.
- `size` (array, optional) — One or more numeric size ids (OR) from `filters`. A size id is shared across categories (id 5 = '38' for clothing AND shoes), so combine with `category`.
- `color` (array, optional) — One or more colour keys (OR), closed list. Measured: black 97,277 + red 17,896 = both 115,173. [one of: beige, blue, brown, bronze, cream, yellow, gold, grey, green, khaki, purple, nude, orange, pink, red, black, silver, turquoise, white]
- `condition` (enum, optional) — ONE condition grade (the source applies a single grade): new_with_tags, new_without_tags, excellent, good, flawed. [one of: new_with_tags, new_without_tags, excellent, good, flawed]
- `min_price` (integer, optional) — Lowest price in whole euros. The source truncates decimals (99.5 -> 99), so only whole euros are accepted.
- `max_price` (integer, optional) — Highest price in whole euros.
- `sale` (boolean, optional) — true = only discounted items (230,645 of 374,045). false applies nothing.
- `shipped_by_maedchenflohmarkt` (boolean, optional) — true = only items checked and shipped by Mädchenflohmarkt itself (256,098 of 374,045). false applies nothing.
- `sort` (enum, optional) — Order. Default: newest without a query, relevance with one. price_asc, price_desc and most_liked were strictly ordered on 20/20 rows; newest follows the source's index date, which lagged a re-published item's `published_at` on 1 of 20 rows. [one of: newest, relevance, price_asc, price_desc, most_liked]
- `page` (integer, optional, default 1) — 1-based page. There is no paging ceiling.
- `limit` (integer, optional, default 50) — Rows per page, 1-100 (the source caps at 100).
- `include_pii` (boolean, optional) — Accepted for gateway compatibility; seller fields are returned as published.

**Returns:** {total, total_label, page, limit, has_more, applied{...}, items[{id, url, title, brand_id, brand_name, category{id,name,parent_id,path_ids}, size_id, size, size_label, colours[{id,name,hex}], condition, condition_id, condition_label, material, price_eur, original_price_eur, discount_label, discount_pct_computed, currency, shipping_eur, shipping_text, shipped_by_maedchenflohmarkt, available, like_count, published_at, badges[], image, images_count, seller_id, seller{id, username, profile_url, rating_total, rating_positive, item_count}}]}

**Example request body:**
```json
{
  "query": "gucci",
  "size": [
    5
  ],
  "sort": "price_asc",
  "limit": 24
}
```

### POST https://api.reefapi.com/maedchenflohmarkt/v1/product — 1 credit
One item, complete: everything a search row has plus the full description (measurements and details as the source writes them), every photo with its size, payment methods, the condition text, the brand block and the full seller profile. Pass `id` (from any row) or a product `url`.

**Parameters:**
- `id` (string, optional) — Product id — the `id` of any search row (e.g. 22017250). Or pass `url`.
- `url` (string, optional) — A maedchenflohmarkt.de / .at product URL instead of `id`.
- `include_pii` (boolean, optional) — Accepted for gateway compatibility; seller fields are returned as published.

**Returns:** {item: {id, url, title, brand_id, brand_name, category{id,name,parent_id,path_ids}, size_id, size, size_label, colours[{id,name,hex}], condition, condition_id, condition_label, material, price_eur, original_price_eur, discount_label, discount_pct_computed, currency, shipping_eur, shipping_text, shipped_by_maedchenflohmarkt, available, like_count, published_at, badges[], image, images_count, seller_id, seller{id, username, profile_url, rating_total, rating_positive, item_count}, description, discount_text, images[{url, url_template, width, height}], original_invoice, payment_methods[], hints[], payment_hints[], condition_description, brand{id,name,is_top_brand,is_sustainable_brand,logo}, seller{...full profile}}}

**Example request body:**
```json
{
  "id": "22017250"
}
```

### POST https://api.reefapi.com/maedchenflohmarkt/v1/similar — 2 credits
Items the source itself lists as similar to one item (measured: 13 for a leather belt).

**Parameters:**
- `id` (string, optional) — Product id — the `id` of any search row (e.g. 22017250). Or pass `url`.
- `url` (string, optional) — A maedchenflohmarkt.de / .at product URL instead of `id`.
- `limit` (integer, optional, default 50) — Rows per page, 1-100 (the source caps at 100).
- `include_pii` (boolean, optional) — Accepted for gateway compatibility; seller fields are returned as published.

**Returns:** {product_id, total, items[{id, url, title, brand_id, brand_name, category{id,name,parent_id,path_ids}, size_id, size, size_label, colours[{id,name,hex}], condition, condition_id, condition_label, material, price_eur, original_price_eur, discount_label, discount_pct_computed, currency, shipping_eur, shipping_text, shipped_by_maedchenflohmarkt, available, like_count, published_at, badges[], image, images_count, seller_id, seller{id, username, profile_url, rating_total, rating_positive, item_count}}]}

**Example request body:**
```json
{
  "id": "22017250"
}
```

### POST https://api.reefapi.com/maedchenflohmarkt/v1/seller — 1 credit
A seller account's public profile: username, active-since date, about text, item count, followers, rating total, positive count, the four rating scores (article, communication, shipping time, shipping) and, for business accounts, the business block.

**Parameters:**
- `seller_id` (string, required) — Seller account id — `seller_id` of any row, or the number in a /kleiderschrank/<id>/ URL.
- `include_pii` (boolean, optional) — Accepted for gateway compatibility; seller fields are returned as published.

**Returns:** {seller{id, username, profile_url, active_since, about, photo, is_business, business, ratings{total, positive, summary, article_score, communication_score, shipping_time_score, shipping_score}, item_count, follower_count, following_count}}

**Example request body:**
```json
{
  "seller_id": "177069"
}
```

### POST https://api.reefapi.com/maedchenflohmarkt/v1/seller_listings — 2 credits
A seller's closet: the items listed from that account. For private sellers whose items Mädchenflohmarkt checks and ships, this is the only place their items are tied to them (on the item itself the seller shown is Mädchenflohmarkt).

**Parameters:**
- `seller_id` (string, required) — Seller account id — `seller_id` of any row, or the number in a /kleiderschrank/<id>/ URL.
- `sort` (enum, optional) — Order. Default: newest without a query, relevance with one. price_asc, price_desc and most_liked were strictly ordered on 20/20 rows; newest follows the source's index date, which lagged a re-published item's `published_at` on 1 of 20 rows. [one of: newest, relevance, price_asc, price_desc, most_liked]
- `page` (integer, optional, default 1) — 1-based page. There is no paging ceiling.
- `limit` (integer, optional, default 50) — Rows per page, 1-100 (the source caps at 100).
- `include_pii` (boolean, optional) — Accepted for gateway compatibility; seller fields are returned as published.

**Returns:** {seller_id, total, page, limit, has_more, items[{id, url, title, brand_id, brand_name, category{id,name,parent_id,path_ids}, size_id, size, size_label, colours[{id,name,hex}], condition, condition_id, condition_label, material, price_eur, original_price_eur, discount_label, discount_pct_computed, currency, shipping_eur, shipping_text, shipped_by_maedchenflohmarkt, available, like_count, published_at, badges[], image, images_count, seller_id, seller{id, username, profile_url, rating_total, rating_positive, item_count}}]}

**Example request body:**
```json
{
  "seller_id": "177069",
  "limit": 20
}
```

### POST https://api.reefapi.com/maedchenflohmarkt/v1/seller_reviews — 2 credits
Written buyer reviews of a seller (positive/negative + comment + date). `rating_total` is the source's count of ALL ratings; the source lists fewer of them as rows (measured 63 rows for 551, 9 for 71).

**Parameters:**
- `seller_id` (string, required) — Seller account id — `seller_id` of any row, or the number in a /kleiderschrank/<id>/ URL.
- `page` (integer, optional, default 1) — 1-based page. There is no paging ceiling.
- `limit` (integer, optional, default 50) — Rows per page, 1-100 (the source caps at 100).
- `include_pii` (boolean, optional) — Accepted for gateway compatibility; seller fields are returned as published.

**Returns:** {seller_id, rating_total, page, limit, has_more, reviews[{id, date, rating, comment, reviewer{id, username, profile_url}}]}

**Example request body:**
```json
{
  "seller_id": "177069",
  "limit": 20
}
```

### POST https://api.reefapi.com/maedchenflohmarkt/v1/filters — 2 credits
The filter vocabulary the source publishes, optionally for one category: brand ids (the source cuts the list at 1,000, A-Z), size ids, colour keys, condition grades, price range buckets and sort options.

**Parameters:**
- `category` (integer, optional) — ONE category id from `categories` (787 nodes; roots: 1 Mode, 406 Schuhe, 341 Taschen, 281 Accessoires, 376 Schmuck). The source applies a single category only.
- `include_pii` (boolean, optional) — Accepted for gateway compatibility; seller fields are returned as published.

**Returns:** {category, total, brands[{id,name}], brands_truncated, sizes[{id,name}], colours[{key,name,hex}], conditions[{key,id,name,description}], price{min,max,ranges[]}, sorts[]}

**Example request body:**
```json
{
  "category": 406
}
```

### POST https://api.reefapi.com/maedchenflohmarkt/v1/categories — 2 credits
The category tree (787 nodes under 5 roots) with ids for `search.category`.

**Parameters:**
- `parent` (integer, optional) — Return only this category's subtree (an id from the tree).
- `depth` (integer, optional) — How many levels to return below the starting level (default all).
- `include_pii` (boolean, optional) — Accepted for gateway compatibility; seller fields are returned as published.

**Returns:** {node_count, tree[{id, name, parent_id, path_ids, depth, child_count, children[]}]}

**Example request body:**
```json
{
  "depth": 1
}
```

### POST https://api.reefapi.com/maedchenflohmarkt/v1/suggest — 1 credit
The storefront's autocomplete: brand and category suggestions for a prefix, each with the id to pass to `search`.

**Parameters:**
- `query` (string, required) — Two or more letters of a brand, category or search term.
- `include_pii` (boolean, optional) — Accepted for gateway compatibility; seller fields are returned as published.

**Returns:** {query, suggestions[{label, kind, brand_id, category_id, query}]}

**Example request body:**
```json
{
  "query": "zara"
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=maedchenflohmarkt
- Human docs page: https://reefapi.com/docs/maedchenflohmarkt
- Overview page: https://reefapi.com/maedchenflohmarkt-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
