Vinterior API & Scraper
Vinterior is the UK's curated marketplace for vintage, antique and design furniture, lighting, art and decor, and this API reads it as JSON with no account and no key.
🤖 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.
On 2026-10-14 it carried 438,968 live pieces, sold almost entirely by professional dealers (429,087 listings; 9,881 from private sellers), shipping from 37 countries: the United Kingdom 196,790, France 43,223, Italy 42,986, the Netherlands 24,758, Germany 23,457, Belgium 20,408, Denmark 11,851, Czechia 11,813, Poland 11,685, Spain 10,133 and 27 more. The catalogue spans nine departments: Furniture 134,340, Art 106,824, Home Decor 106,339, Lighting 64,412, Textiles 16,893, Home Fixtures 7,211 and three garden departments, organised in 266 category paths. What makes it worth an API is that the antiques vocabulary comes back as separate fields rather than words in a title: the period (Mid 20th Century 132,164, Late 20th Century 87,819, 19th Century 65,150, Early 20th Century 64,873, 21st Century 20,830, 18th Century and Earlier 14,697), the decade of manufacture (1960s 62,737, 1970s 55,234, 1950s 38,474 ...), one or more of 34 styles (Mid Century Modern, Scandinavian Modern, Art Deco, Victorian, Georgian, French Antiques ...), the maker from 454 named brands (Ercol, G Plan, Thonet, Fritz Hansen, Louis Poulsen, Venini ...) and the designer from 3,742 (Hans J Wegner, Arne Jacobsen, Poul Henningsen, Marcel Breuer ...), the main material from 106 including the woods by species, the colour from 34, the condition group (Used, Refurbished, New), furniture features such as extendable or swivel, and width, height and depth in centimetres. `search` filters on all of it plus GBP price, sale, free UK delivery, seller and the country a piece ships from, and every result is reachable by paging. `detail` returns one piece in full from its own page: the description, the dealer's condition report and extra measurements, the wear condition, every photo, both the stored price and the price the page prints, the fixed UK delivery price and the Greater London quote, and the dealer card with rating, star breakdown, sales count and years on the platform. `delivery` prices one piece to any one of the 23 destinations the page offers. `facets`, `categories`, `suggest` and `seller` complete the set.
What a Vinterior field actually contains
Fields that read differently from how they look, and the limits worth knowing before you build on them. Every row was measured against live Vinterior pages on 2026-10-14, including the ones that went against us.
| Field | What it holds |
|---|---|
| price_gbp and currency | GBP is Vinterior's only native currency, on every market. The site's euro and dollar prices are a display conversion of the GBP figure at one site-wide rate: on 6 listings read in all three currencies in the same minute, every euro figure was GBP x 1.2077 and every dollar figure GBP x 1.3511, for the item and the delivery alike, and the French and Dutch storefronts print the same converted euro number. So this API returns GBP and never a converted price. |
| price_gbp vs price_shown | Two different numbers on discounted pieces, and both are returned. price_gbp is the price the source stores and the basket uses, to the penny: a 15% cut on a 935 GBP sideboard is 794.75. price_shown is what the page prints, rounded to the whole pound: 795. The page's own structured data also says 795. On 14 listings across seven categories, price_gbp matched the stored price 14 of 14 and price_shown matched the page 14 of 14. |
| list_price_gbp, sale_price_gbp, discount_pct | list_price_gbp is the asking price before any cut; sale_price_gbp and discount_pct are filled only when the piece is on sale (64,664 of 438,968 on 2026-10-14). The discount is the source's own figure. |
| dimensions_cm | Width, height and depth in centimetres as three separate numbers, the source's own units. A dimension the dealer left blank is null, never 0 - and a maximum-size filter never admits a blank one. Depth is the field most often missing: filled on 29 to 49 of 50 newest listings depending on the department. |
| period, decade, designer, brand | As the dealer catalogued them. The source stores 'Unknown' as a value for each - designer on 115,972 listings, brand on 120,538, decade on 73,293, period on 53,436 - and this API returns those as null rather than as a word. Designer and brand are naturally sparse: 0 to 8 of 50 newest listings per department name a designer. |
| condition and wear_condition | condition is the source's group: Used 388,046, Refurbished 38,761, New 11,428. wear_condition is the finer grade on the piece's own page (Good, Excellent ...) and comes back from detail, together with the dealer's free-text condition report where they wrote one. |
| delivery destinations | The 23 destinations the listing page itself offers: the 12 UK regions, Belgium, France, Germany, Hungary, the Republic of Ireland, Italy, the Netherlands, Spain, the United States, the rest of continental Europe and the rest of the world. One call prices one destination, and the answer says where its price came from: the destination's own quote, the piece's fixed UK delivery price (which the page applies to every mainland UK region without its own quote), or 'Request a quote', which is common outside the UK. Nothing depends on where the call is made from: the same piece requested from five different countries returned an identical price and an identical delivery quote. |
| price_includes_import_taxes | True when the page states that the price includes import taxes, which it does for pieces shipping from EU-based dealers. Whether a buyer outside the UK pays a different amount is not published on the listing. |
| seller | The dealer's trading name, slug, whether they are a professional dealer, and on detail their rating, review count with the five-to-one star breakdown, sales count and the year they joined. For the 9,881 listings from private sellers the name is the one Vinterior's own search data carries, while the listing page itself prints 'Private Seller' - detail returns that label separately in seller.kind_label. |
| total and paging | total is the source's exact count for the query, and every row of it is reachable: 438,968 rows at 48 per page end on page 9,146, and a page past the end comes back empty rather than repeating the last one. has_more says when to stop. |
Measured 2026-10-14 on live Vinterior responses. Sold pieces are not available: the source keeps only live listings, and a sold or withdrawn piece answers not found.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/vinterior/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "sideboard",
"period": [
"Mid 20th Century"
],
"ships_from": [
"United Kingdom"
],
"max_price": 3000,
"page_size": 24
}
}{
"ok": true,
"meta": {
"api": "vinterior",
"endpoint": "search",
"mode": "live",
"latency_ms": 1177.4,
"record_count": 24,
"bytes": 64230,
"cache_hit": false,
"stop_reason": "max_pages",
"upstream_requests": 1,
"charged_credits": 2,
"version": "1.0.0",
"request_id": "43f734dd9c0d4dd8",
"queue_ms": 1,
"fetched_at": "2026-10-14T18:57:32.399Z"
},
"data": {
"total": 873,
"page": 1,
"page_size": 24,
"pages": 37,
"has_more": true,
"sort": "relevance",
"query": "sideboard",
"listings": [
{
"id": "2933522",
"sku": "70045069",
"url": "https://www.vinterior.co/furniture/storage/sideboards/teak-westbourne-sideboard-by-white-newton-1960s-sku70045069",
"title": "Teak Westbourne Sideboard By White & Newton, 1960s",
"currency": "GBP",
"price_gbp": 1600,
"list_price_gbp": 1600,
"sale_price_gbp": null,
"on_sale": false,
"discount_pct": null,
"category": {
"path": "Furniture > Storage > Sideboards",
"slug": "furniture/storage/sideboards",
"level1": "Furniture",
"level2": "Storage",
"level3": "Sideboards",
"level4": null
},
"product_type": "Sideboards",
"condition": "Refurbished",
"period": "Mid 20th Century",
"decade": "1960s",
"styles": [
"Vintage",
"Mid Century Modern"
],
"designer": null,
"brand": "White and Newton",
"material": "Teak",
"color": "Brown",
"country_of_origin": "United Kingdom of Great Britain and Northern Ireland",
"dimensions_cm": {
"width": 217,
"height": 70,
"depth": 44.5
},
"features": [],
"shape": null,
"seating_shapes": [],
"set_of": null,
"number_of_seats": null,
"number_of_drawers": 3,
"number_of_doors": 2,
"number_of_shelves": 1,
"art": {
"movements": [],
"subjects": [],
"signed_by_artist": false
},
"certificate_of_authenticity": false,
"professionally_refurbished": false,
"professionally_reupholstered": false,
"professionally_cleaned": false,
"lighting_safety_checked": false,
"image": "https://assets-vinterior-2.vinterior.co/uploads/listing_image/image/24283085/teak-westbourne-sideboard-by-white-newton-1960s-sku70045069_0.jpg",
"published_at": "2026-09-24T16:05:47Z",
"can_be_added_to_basket": true,
"free_uk_delivery": false,
"free_london_delivery": false,
"ships_from": {
"city": "Tideswell",
"country": "United Kingdom"
},
"seller": {
"name": "Vintage14",
"slug": "vintage14",
"url": "https://www.vinterior.co/sellers/vintage14",
"is_professional": true
}
},
{
"id": "2928701",
"sku": "52491549",
"url": "https://www.vinterior.co/furniture/storage/sideboards/vintage-g-plan-brasilia-teak-sideboard-c-1960s-sku52491549",
"title": "Vintage G Plan Brasilia Teak Sideboard C.1960s",
"currency": "GBP",
"price_gbp": 780,
"list_price_gbp": 780,
"sale_price_gbp": null,
"on_sale": false,
"discount_pct": null,
"category": {
"path": "Furniture > Storage > Sideboards",
"slug": "furniture/storage/sideboards",
"level1": "Furniture",
"level2": "Storage",
"level3": "Sideboards",
"level4": null
},
"product_type": "Sideboards",
"condition": "Used",
"period": "Mid 20th Century",
"decade": "1960s",
"styles": [
"Vintage",
"Modernist",
"Mid Century Modern"
],
"designer": null,
"brand": "G Plan",
"material": "Teak",
"color": "Oak",
"country_of_origin": null,
"dimensions_cm": {
"width": 145,
"height": 81,
"depth": 46
},
"features": [],
"shape": null,
"seating_shapes": [],
"set_of": null,
"number_of_seats": null,
"number_of_drawers": 3,
"number_of_doors": 4,
"number_of_shelves": 2,
"art": {
"movements": [],
"subjects": [],
"signed_by_artist": false
},
"certificate_of_authenticity": false,
"professionally_refurbished": false,
"professionally_reupholstered": false,
"professionally_cleaned": false,
"lighting_safety_checked": false,
"image": "https://assets-vinterior-2.vinterior.co/uploads/listing_image/image/24239656/vintage-g-plan-brasilia-teak-sideboard-c-1960s-sku52491549_0.jpg",
"published_at": "2026-09-18T13:21:17Z",
"can_be_added_to_basket": true,
"free_uk_delivery": false,
"free_london_delivery": false,
"ships_from": {
"city": "Barnwell, Peterborough",
"country": "United Kingdom"
},
"seller": {
"name": "Brick Vintage Interior",
"slug": "brick-vintage-interior",
"url": "https://www.vinterior.co/sellers/brick-vintage-interior",
"is_professional": true
}
},
{
"id": "2931225",
"sku": "73171315",
"url": "https://www.vinterior.co/furniture/storage/sideboards/g-plan-mid-century-herringbone-chevron-teak-sideboard-red-label-restored-sku73171315",
"title": "G Plan Mid Century Herringbone Chevron Teak Sideboard Red Label Restored",
"currency": "GBP",
"price_gbp": 895,
"list_price_gbp": 895,
"sale_price_gbp": null,
"on_sale": false,
"discount_pct": null,
"category": {
"path": "Furniture > Storage > Sideboards",
"slug": "furniture/storage/sideboards",
"level1": "Furniture",
"level2": "Storage",
"level3": "Sideboards",
"level4": null
},
"product_type": "Sideboards",
"condition": "Refurbished",
"period": "Mid 20th Century",
"decade": "1960s",
"styles": [
"Vintage",
"Mid Century Modern",
"Modernist"
],
"designer": "G lan",
"brand": "G Plan",
"material": "Teak",
"color": "Walnut",
"country_of_origin": "United Kingdom of Great Britain and Northern Ireland",
"dimensions_cm": {
"width": 152.5,
"height": 86,
"depth": 48.5
},
"features": [],
"shape": null,
"seating_shapes": [],
"set_of": null,
"number_of_seats": null,
"number_of_drawers": 4,
"number_of_doors": 4,
"number_of_shelves": 2,
"art": {
"movements": [],
"subjects": [],
"signed_by_artist": false
},
"certificate_of_authenticity": false,
"professionally_refurbished": false,
"professionally_reupholstered": false,
"professionally_cleaned": false,
"lighting_safety_checked": false,
"image": "https://assets-vinterior-1.vinterior.co/uploads/listing_image/image/24264975/g-plan-mid-century-herringbone-chevron-teak-sideboard-red-label-restored-sku73171315_0.jpg",
"published_at": "2026-09-22T19:39:33Z",
"can_be_added_to_basket": true,
"free_uk_delivery": false,
"free_london_delivery": false,
"ships_from": {
"city": "Sunderland",
"country": "United Kingdom"
},
"seller": {
"name": "Sakura Vinteriors",
"slug": "sakura-vinteriors",
"url": "https://www.vinterior.co/sellers/sakura-vinteriors",
"is_professional": true
}
}
]
}
}What the Vinterior API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search Vinterior's 438,968 live vintage, antique and design pieces — furniture, lighting, art, decor, textiles and garden — sold by vetted dealers in the UK and 36 other countries. Filters are the source's own: free text, the category tree, period, decade, style, material, colour, designer, maker, condition group, the country the piece ships from, furniture features, seller, GBP price, sale and free-UK-delivery flags, and width / height / depth in centimetres. Every row carries its own price in GBP (list and sale), measured dimensions, period and decade, maker and designer, where it ships from and who sells it. `total` is the source's exact count and every row of it is reachable by paging. | Pricing teams call search to search Vinterior's 438,968 live vintage, antique and design pieces. | query, category, period, decade, style, ... |
| detail | One live listing in full, from its own page: the full description, the seller's condition report and extra measurements, the wear condition, the price stored and the price printed (GBP), whether the price includes UK import taxes, period, decade, origin, maker, designer, material, dimensions, every photo, the fixed UK delivery price and the Greater London quote, the seller's estimated delivery time and collection option, and the seller card (name, professional or private, rating, review count and star breakdown, sales count, selling since, location) with the latest reviews. | Marketplace operators call detail to get one live listing in full, from its own page. | id |
| delivery | The delivery price of one live listing to ONE destination — any of the 23 the listing page offers: the 12 UK regions, eight European countries, the United States, rest of Europe and rest of the world — in GBP, exactly as the page itself resolves it: the destination's own quote, else the listing's fixed UK price for UK mainland regions, else 'Request a quote'. The answer says which. | Catalog enrichment teams call delivery to get the delivery price of one live listing to ONE destination. | id, destination |
| facets | Counts per value for any of the source's facets — category, period, decade, style, designer, brand, material, colour, condition, ships-from country, seller city, features, shape, set size, seats — over the whole catalogue or under the same filters search takes, plus GBP price and dimension statistics. | Retail analysts call facets to get counts per value for any of the source's facets. | facet, max_values, query, category, period, ... |
| categories | The source's own category tree (9 roots, 266 paths) with the live number of listings in each, the label path that search's `category` accepts and a slug. | Pricing teams call categories to get the source's own category tree (9 roots, 266 paths) with the live number of listings in each,…. | root |
| suggest | Search suggestions from the site's own suggestion index (14,869 phrases), with how popular each phrase is, how many listings it finds and its main category. | Marketplace operators call suggest to search suggestions from the site's own suggestion index (14,869 phrases), with how popular ea…. | query, page_size |
| seller | One seller's live inventory: how many pieces they list, where they ship from, whether they are a professional dealer, the split of their stock by category and period, and a page of their listings (newest first by default). | Catalog enrichment teams call seller to get one seller's live inventory. | id, sort, page, page_size |
Call search from your stack
curl -X POST https://api.reefapi.com/vinterior/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"sideboard","period":["Mid 20th Century"],"ships_from":["United Kingdom"],"max_price":3000,"page_size":24}'import requests
r = requests.post(
"https://api.reefapi.com/vinterior/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "sideboard",
"period": [
"Mid 20th Century"
],
"ships_from": [
"United Kingdom"
],
"max_price": 3000,
"page_size": 24
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/vinterior/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "sideboard",
"period": [
"Mid 20th Century"
],
"ships_from": [
"United Kingdom"
],
"max_price": 3000,
"page_size": 24
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.vinterior.search with {"query":"sideboard","period":["Mid 20th Century"],"ships_from":["United Kingdom"],"max_price":3000,"page_size":24}.Who uses this API and why
- Source stock for an interior project with real constraints: a Mid Century Modern sideboard under 220 cm wide, in teak, under 3,000 GBP, shipping from the UK, with the delivery price to the client's region.
- Price a piece before buying or listing it: facets for the minimum, maximum and average GBP price inside the same category, period and material, then search for the closest live comparables.
- Track a maker or designer across the market - every live Ercol, G Plan or Hans J Wegner piece with its price, condition, decade and dealer.
- Monitor dealers: a dealer's full live stock, its split by department and period, and its price range, refreshed as often as you need.
- Build an antiques catalogue with structured attributes - period, decade, style, material and centimetre dimensions as separate fields across 438,968 pieces.
Questions developers ask before integrating
Do I need a Vinterior account or key?
No. Everything this API returns is on Vinterior's public pages: listings, the category tree, filter values, dealer storefront stock, search suggestions and the delivery prices the listing page shows. Nothing behind a login is read.
Can I filter by period, decade, maker and material instead of by keyword?
Yes. search takes the source's own values for period (6), decade, style (34), material (106), colour (34), designer (3,742) and maker (454), plus condition, features, country shipped from, GBP price, sale, free UK delivery and width, height and depth in centimetres. An unknown value is rejected with the closest values the source does use, instead of silently returning nothing.
Which currency are prices in?
GBP, always. Vinterior's euro and dollar prices are the GBP price converted at one site-wide rate (measured 1.2077 and 1.3511 on 2026-10-14), so GBP is the only figure the source itself sets.
Why do price_gbp and price_shown differ by a few pence?
On discounted pieces the source stores the exact discounted price (794.75) and the page prints it rounded to the pound (795). Both are returned so you can use whichever you need; neither is presented as the other.
How do I get the delivery cost?
detail returns the piece's fixed UK delivery price and the Greater London quote. delivery returns the price to one destination per call - any of the 23 the page offers - and says whether it is the destination's own quote, the fixed UK price or 'Request a quote'. For several destinations, make one call each.
Can I get sold prices?
No. Vinterior keeps only live listings in its catalogue, so there are no sold comparables to read; a sold or withdrawn piece answers not found. For a live price band use facets, which returns the minimum, maximum and average GBP price for any scope search accepts.
How many results can I page through?
All of them. total is exact, every row is reachable, and a page past the end comes back empty with has_more false - it never repeats the last page.
Who are the sellers?
Mostly professional dealers: 429,087 of 438,968 listings on 2026-10-14. Rows carry the dealer's trading name and slug; seller returns a dealer's whole live stock with its split by department and period, and detail adds the rating, star breakdown, sales count and joining year.
What is the Vinterior API?
Vinterior API is a ReefAPI endpoint group for the uk's vintage, antique and design marketplace: 438,968 live pieces from dealers in 37 countries, with period, decade, style, maker, designer, material and centimetre dimensions as their own fields, prices in gbp and delivery per destination. It returns live JSON through POST requests under /vinterior/v1.
Is the Vinterior API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Vinterior calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Vinterior login or account?
No login to Vinterior 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 Vinterior 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 Vinterior API use?
Vinterior 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 Vinterior from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call vinterior actions with the same key, credit pool and JSON envelope used by normal REST requests.