# Hood.de API — search the German/Austrian marketplace (new and used, fixed price and auctions) and read full listings: price, UVP, stock, shipping table, seller reputation

> Search hood.de listings by `query` and/or `seller`, with the source's own filters: listing format (auction / fixed price), seller type (business / private), condition, price range, category, distance from a German postcode, and 8 sort orders. Each row: listing id, title, URL, image, price (or bid + buy-now price for auctions), crossed-out reference price, discount badge, unit price, shipping cost, 'ships now' flag, stock as displayed, units sold, the listing's purchase rating, brand, GTIN, item specifics. Plus the source's total, page count and category facets with counts. Either `query` or `seller` is required.
> ReefAPI engine `hood` · 2 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/hood/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/hood/v1/search — 3 credits
Search hood.de listings by `query` and/or `seller`, with the source's own filters: listing format (auction / fixed price), seller type (business / private), condition, price range, category, distance from a German postcode, and 8 sort orders. Each row: listing id, title, URL, image, price (or bid + buy-now price for auctions), crossed-out reference price, discount badge, unit price, shipping cost, 'ships now' flag, stock as displayed, units sold, the listing's purchase rating, brand, GTIN, item specifics. Plus the source's total, page count and category facets with counts. Either `query` or `seller` is required.

**Parameters:**
- `query` (string, optional) — Search words, matched against the listing title (German catalogue: 'fahrrad', 'lego', 'iphone 13'). At least 2 characters. Either `query` or `seller` is required; both together narrow to one seller's matching listings.
- `seller` (string, optional) — A Hood seller account name (the name in a listing's seller box, e.g. `milordbikes`). Alone it lists that seller's whole catalogue; with `query` it narrows to their matching listings.
- `category` (string, optional) — Hood category id to narrow the search, e.g. 17934 (Radsport). Ids come from `category_facets` in any search response. Hood's search answers a category alone (without query or seller) with an empty page.
- `listing_format` (enum, optional) — Only auctions or only fixed-price listings. An auction that also has a buy-now price counts in both. [one of: auction, fixed_price]
- `seller_type` (enum, optional) — Only business sellers or only private sellers. The two add up exactly to the unfiltered total. [one of: business, private]
- `condition` (enum, optional) — Item condition. `new` and `used` are the two broad classes; the other values are the source's finer used grades and overlap each other, so their counts do not sum to `used`. [one of: new, used, like_new, very_good, good, acceptable, refurbished, defective]
- `min_price` (number, optional) — Minimum price in EUR.
- `max_price` (number, optional) — Maximum price in EUR.
- `zip` (string, optional) — German 5-digit postcode; with radius_km, only listings located within that distance of it (the seller's item location, not yours).
- `radius_km` (integer, optional) — Distance in km around `zip`. Needs `zip`.
- `sort` (enum, optional, default "relevance") — Result order (Hood's own options). Price sorts are by price INCLUDING shipping, as Hood labels them. `ending_soon` works on auctions only (on a mixed search Hood returns an empty page). Hood's title sort is its own and not strictly alphabetical. [one of: relevance, price_asc, price_desc, newest, ending_soon, title_asc, title_desc]
- `page` (integer, optional, default 1) — Result page (1, 2, 3 ...). The number of rows on a page varies (measured 14-48); page until `has_more` is false. Past the last page Hood returns no rows.

**Returns:** results[]{item_id, title, url, image, listing_format (auction|fixed_price), price (fixed-price listings; null on auctions), price_is_from (true = 'ab' price of a multi-variant listing), bid_price, buy_now_price, time_left (auctions), currency, strike_price (the source's crossed-out price), discount_pct_badge, unit_price{value,unit}?, shipping_cost (0 = free, null = not printed), shipping_text, in_stock_now, stock_display (the card saturates at '10+'), sold_count, listing_rating, listing_rating_count, brand, gtin, specs{}, variants_text, badges[], shop_level, payment_methods[]} + total, pages, page, has_more, category_facets[]{category_id, name, count}

**Example request body:**
```json
{
  "query": "fahrrad",
  "listing_format": "fixed_price"
}
```

### POST https://api.reefapi.com/hood/v1/product — 2 credits
Full hood.de listing by item_id or URL: title, price or auction state (bid, bid count, buy-now price, time left, end time), crossed-out UVP / reference price, discount badge, exact stock (the page shows '10+', the listing carries the real number), units sold, condition, brand, GTIN, MPN, item specifics, variants with per-variant price and stock, category path, all images, the listing's purchase rating, the per-country shipping table (cost, carrier, transit days), return policy, item location, payment methods, the seller (name, account id, business/private, positive %, sales, shop level, shop link, business phone) and the EU product-safety block (manufacturer / responsible person as published).

**Parameters:**
- `item_id` (string, optional) — Hood listing id: the digits at the end of a listing URL (`/i/<title-slug>-89037935.htm`), as returned in every search row. Provide item_id OR url.
- `url` (string, optional) — A hood.de listing URL; alternative to item_id.

**Returns:** item{item_id, item_number, title, url, listing_format, price, price_is_from, currency, strike_price, strike_price_label (UVP|statt|...), discount_pct_badge, auction{bid_label, bid_price, bid_count, buy_now_price, time_left, ends_at_text, quantity_available}?, buyable_now, listing_status (active|not_started|ended|other), status_text, availability, stock_exact, stock_display, some_variants_out_of_stock, sold_count, condition, brand, gtin, mpn, specs{}, variants[]{option_id, values{}, price, price_display, quantity, deactivated, in_stock (false = back-order)}, category_path[], images[], listing_rating, listing_rating_count, product_review_count, other_offers{offer_count, from_price}, shipping_headline, shipping[]{destination, cost, cost_text, carrier, transit_days_min, transit_days_max, delivery_estimate_text, countries[]}, shipping_note, shipping_discount, location, delivery_note, returns{withdrawal_days, return_cost}, payment_methods[], seller{name, account_id, seller_type, positive_pct, sales_count, purchases_count, shop_level, shop_id, shop_url, all_items_url, phone}, product_safety{}, short_description}

**Example request body:**
```json
{
  "item_id": "89037935"
}
```

## 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=hood
- Human docs page: https://reefapi.com/docs/hood
- Overview page: https://reefapi.com/hood-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
