Hood.de API & Scraper
Hood.de is a German marketplace in the style of eBay: business shops and private sellers list new and used goods at a fixed price or as auctions.
🤖 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.
This API reads it as JSON. `search` takes words and/or a seller name with Hood's own filters (auction or fixed price, business or private seller, condition, price range, category, distance from a German postcode) and seven sort orders, and returns per listing: id, title, price, or for auctions the current bid and the buy-now price, the crossed-out reference price and discount badge, unit price, shipping cost, units sold, stock as shown, the listing's purchase rating, brand, GTIN and item specifics, plus the total count and category counts. `product` returns one listing in full: exact stock, condition, variants with their own price and stock, every image, the shipping table per destination with carrier and transit days, return policy, item location, payment methods, the seller's name, type, positive share and number of sales, and the EU product-safety block.
What a Hood.de field actually contains
Fields that read differently from how they look. Every row was measured against live Hood.de pages on 2026-10-14.
| Field | What it holds |
|---|---|
| item_id | The listing number at the end of its web address (…-89037935.htm). Pass it unchanged to product; a listing URL works too. Search to product returned the same id on 14 of 14 rows. |
| price, price_is_from | price is the fixed price in euros including VAT as Hood shows it to a buyer in Germany. price_is_from is true when the listing has variants and the price is Hood's "ab" (from) price; product then lists every variant with its own price. On 12 of 12 fixed-price listings the price matched the listing page. |
| bid_price, buy_now_price | Auctions carry no price. bid_price is the current or starting bid, buy_now_price the optional Sofort-kaufen price. Both matched the listing page on 8 of 8 auctions. |
| strike_price, discount_pct_badge | strike_price is the crossed-out price Hood prints (labelled UVP on the listing page); discount_pct_badge is Hood's own red badge. They matched the listing page on 14 of 14 rows. |
| shipping_cost | Shipping to Germany as the search card prints it: 0 when Hood says free shipping, null when the card shows none. product returns the whole table: one row per destination with cost, carrier, transit days and the countries each row covers. |
| stock_display, stock_exact | Search shows stock the way Hood does, and Hood stops counting at "10+". product adds stock_exact, the real number the listing carries (259 behind a "10+" on one listing). |
| listing_rating | The average of the ratings buyers gave this listing, with their count. It is not the seller's reputation: that is in product's seller block as positive_pct and sales_count. |
| listing_status | product says active, or not_started for listings that already appear in search but cannot be bought yet; buyable_now tells you whether the listing has a buy button. |
Hood shows buyers in other EU countries the same listing with their own VAT: one listing cost 39.71 € for Germany, 40.04 € for Austria and France, 40.38 € for the Netherlands and 41.04 € for Poland on the same day. This API returns the German price, and meta.price_basis says so. Shipping and the crossed-out price did not change between countries (0 of 71 rows).
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/hood/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "fahrrad",
"listing_format": "fixed_price"
}
}{
"ok": true,
"meta": {
"api": "hood",
"endpoint": "search",
"mode": "live",
"latency_ms": 954.9,
"record_count": 48,
"bytes": 256119,
"cache_hit": false,
"total": 6389,
"pages": 134,
"price_basis": "gross EUR incl. German VAT, as hood.de shows a visitor in Germany; for EU visitors elsewhere hood.de recomputes VAT on many shop listings (AT/FR +0.8 %, NL +1.7 %, PL +3.4 % measured), shipping and crossed-out prices are not recomputed",
"pagination": {
"page": 1,
"has_more": true
},
"upstream_requests": 1,
"charged_credits": 3,
"version": "0.1.0",
"request_id": "6e35bdb8ab8f4464",
"queue_ms": 1,
"fetched_at": "2026-10-14T18:57:22.707Z"
},
"data": {
"query": {
"query": "fahrrad",
"listing_format": "fixed_price",
"sort": "relevance",
"page": 1
},
"total": 6389,
"pages": 134,
"page": 1,
"has_more": true,
"results": [
{
"item_id": "89037935",
"title": "Milord Komfort City Fahrrad Retro Mit Weidenkorb Damenfahrrad 28 Zoll 7 Gang Shimano",
"url": "https://www.hood.de/i/milord-komfort-city-fahrrad-retro-mit-weidenkorb-damenfahrrad-28-zoll-7-gang-shimano-89037935.htm",
"image": "https://i.hood.de/fit-in/396x396/images/70846/708469346.jpg",
"listing_format": "fixed_price",
"price": 309.99,
"price_is_from": false,
"buy_now_price": null,
"bid_price": null,
"time_left": null,
"currency": "EUR",
"strike_price": 399.99,
"discount_pct_badge": 23,
"unit_price": null,
"shipping_cost": 0,
"shipping_text": "Kostenloser Versand",
"in_stock_now": true,
"stock_display": "10+",
"sold_count": 448,
"listing_rating": 4.96,
"listing_rating_count": 195,
"brand": "MILORDBIKES",
"gtin": "7426854752965",
"specs": {
"Räder": "28 Zoll",
"Rahmen": "18 Zoll (46cm)",
"Gänge": "7"
},
"variants_text": "Farbe: Rosa, Weiss, Rot und weitere ...",
"badges": [
"Bestseller"
],
"shop_level": "PLATIN SHOP",
"payment_methods": [
"Paypal"
]
},
{
"item_id": "98934515",
"title": "28 Zoll Damenfahrrad MILORD Citybike Mit Weidenkorb Vintage Creme Fahrrad 7 Gänge",
"url": "https://www.hood.de/i/28-zoll-damenfahrrad-milord-citybike-mit-weidenkorb-vintage-creme-fahrrad-7-gaenge-98934515.htm",
"image": "https://i.hood.de/fit-in/396x396/images/70841/708411227.jpg",
"listing_format": "fixed_price",
"price": 309.99,
"price_is_from": false,
"buy_now_price": null,
"bid_price": null,
"time_left": null,
"currency": "EUR",
"strike_price": 369.99,
"discount_pct_badge": 16,
"unit_price": null,
"shipping_cost": 0,
"shipping_text": "Kostenloser Versand",
"in_stock_now": true,
"stock_display": "5",
"sold_count": 294,
"listing_rating": 5,
"listing_rating_count": 159,
"brand": "MILORDBIKES",
"gtin": "7426854751197",
"specs": {
"Gewicht": "16,16",
"Farbe": "Creme-Braun",
"Radgröße": "28 Zoll",
"Rahmengröße": "18 Zoll (46cm)",
"Felgen": "Aluminium"
},
"variants_text": null,
"badges": [
"Bestseller"
],
"shop_level": "PLATIN SHOP",
"payment_methods": [
"Paypal"
]
},
{
"item_id": "98934556",
"title": "26 Zoll Damenfahrrad MILORD Citybike Mit Weidenkorb Vintage Creme Fahrrad 7 Gänge",
"url": "https://www.hood.de/i/26-zoll-damenfahrrad-milord-citybike-mit-weidenkorb-vintage-creme-fahrrad-7-gaenge-98934556.htm",
"image": "https://i.hood.de/fit-in/396x396/images/70841/708411227.jpg",
"listing_format": "fixed_price",
"price": 309.99,
"price_is_from": false,
"buy_now_price": null,
"bid_price": null,
"time_left": null,
"currency": "EUR",
"strike_price": 369.99,
"discount_pct_badge": 16,
"unit_price": null,
"shipping_cost": 0,
"shipping_text": "Kostenloser Versand",
"in_stock_now": true,
"stock_display": "10+",
"sold_count": 233,
"listing_rating": 5,
"listing_rating_count": 150,
"brand": "MILORDBIKES",
"gtin": "7426854751210",
"specs": {
"Gewicht": "16,16",
"Farbe": "Creme-Braun",
"Radgröße": "26 Zoll",
"Rahmengröße": "18 Zoll (44cm)",
"Felgen": "Aluminium"
},
"variants_text": null,
"badges": [
"Bestseller"
],
"shop_level": "PLATIN SHOP",
"payment_methods": [
"Paypal"
]
}
],
"category_facets": [
{
"category_id": "17934",
"name": "Radsport",
"count": 3633
},
{
"category_id": "15112",
"name": "Camping & Outdoor",
"count": 39
},
{
"category_id": "17789",
"name": "Fitness & Jogging",
"count": 22
}
]
}
}What the Hood.de API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | 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. | Pricing teams call search to search hood.de listings by `query` and/or `seller`, with the source's own filters. | query, seller, category, listing_format, seller_type, ... |
| product | 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). | Marketplace operators call product to get full hood.de listing by item_id or URL. | item_id, url |
Call search from your stack
curl -X POST https://api.reefapi.com/hood/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"fahrrad","listing_format":"fixed_price"}'import requests
r = requests.post(
"https://api.reefapi.com/hood/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "fahrrad",
"listing_format": "fixed_price"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/hood/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "fahrrad",
"listing_format": "fixed_price"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.hood.search with {"query":"fahrrad","listing_format":"fixed_price"}.Who uses this API and why
- Track German marketplace prices for a GTIN or product name, with the crossed-out UVP and the discount Hood shows.
- Monitor a competitor's shop on Hood: every listing, price, stock and units sold, page by page.
- Find auctions ending soon in a category and compare the bid with the buy-now price.
- Compare shipping costs and transit times per destination for the same product across sellers.
- Separate private second-hand offers from business listings for a price-history dataset.
Questions developers ask before integrating
Do I need a Hood.de account?
No. Everything is read logged out, and you call reefapi.com from anywhere.
Can I search auctions only, or fixed price only?
Yes. listing_format takes auction or fixed_price. For "fahrrad" on 2026-10-14: 6,393 listings, 37 auctions, 6,382 fixed price; an auction that also has a buy-now price counts in both.
Can I separate shops from private sellers?
Yes. seller_type takes business or private, and the two add up to the full count: 6,327 business plus 66 private listings for "fahrrad".
Which filters are there?
Condition (new, used and five used grades), price range, category id, distance from a German postcode, seller name. Each was checked against the unfiltered count in the same run: 6,393 → new 6,236, used 141, 100 to 300 € 1,494, category Radsport 3,635, within 50 km of 10115 Berlin 673.
How do I list everything one seller offers?
Call search with seller and no query. One shop on 2026-10-14 had 110 listings: 48 + 48 + 14 over three pages, and the fourth page came back empty.
How deep can I page?
Page until has_more is false. Hood shows a varying number of listings per page (between 14 and 48 measured) and its total counts listings, so the rows per page do not divide the total evenly.
Do you return the auction's bid history or sold prices?
No. Hood shows the current bid and the number of bids, not who bid, and ended listings are not searchable.
Can I get the seller's full description text?
Not yet. product returns Hood's own short summary of the description; the full text sits in a separate frame that this API does not read.
What is the Hood.de API?
Hood.de API is a ReefAPI endpoint group for germany's general marketplace: new and used listings, fixed price and auctions, with price, uvp, shipping, stock and seller. It returns live JSON through POST requests under /hood/v1.
Is the Hood.de API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Hood.de calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Hood.de login or account?
No login to Hood.de 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 Hood.de 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 Hood.de API use?
Hood.de actions currently cost 2-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Hood.de from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call hood actions with the same key, credit pool and JSON envelope used by normal REST requests.