Thomann APIthomann.pt ↗
Access Thomann Portugal's B-Stock inventory via 6 endpoints. Browse categories, list discounted products, retrieve specs, search by keyword, and fetch daily deals.
What is the Thomann API?
The Thomann.pt B-Stock API provides 6 endpoints covering the full blowout and discounted inventory on Thomann's Portuguese storefront. Starting with get_bstock_categories, you can walk the category tree down to individual product listings, then call get_bstock_product_detail to retrieve fields like brand, article number, availability, specs, and an images array for any specific item.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/1fc71e45-f253-405a-a47f-b038b4040111/get_bstock_categories' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace thomann-pt-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.thomann_portugal_b_stock___blowouts_api import Thomann, Category, ProductSummary, Product, Listing, DailyDeal, ProductSort
thomann = Thomann()
# Browse daily deals
for deal in thomann.dailydeals.list():
print(deal.name, deal.price, deal.url)
# List all top-level blowout categories
for cat in thomann.categories.list():
print(cat.name, cat.count)
# Drill into a category's subcategories
guitars = thomann.category(url="https://www.thomann.pt/blowouts_GF_guitarras_e_baixos.html")
for subcat in guitars.subcategories.list():
print(subcat.name, subcat.count)
# List products in a subcategory sorted by price ascending
electric = thomann.subcategory(url="https://www.thomann.pt/blowouts_GF_guitarras_electricas.html")
for product in electric.products.list(sort=ProductSort.PRICE_ASC, limit=5):
print(product.name, product.price, product.rating, product.review_count)
# Get full product details from a summary
detail = product.details()
print(detail.name, detail.price, detail.availability, detail.article_number)
# Search for B-Stock products by keyword
for listing in thomann.listings.search(query="Fender", limit=3):
print(listing.name, listing.manufacturer, listing.price, listing.is_bstock)
Fetches all top-level B-Stock/Discounted Bargains categories from the Thomann Portugal blowouts page. Returns a list of category names with item counts and URLs. Categories represent instrument families and equipment types available in the blowouts section.
No input parameters required.
{
"type": "object",
"fields": {
"items": "array of category objects with name, count, and url"
},
"sample": {
"data": {
"items": [
{
"url": "https://www.thomann.pt/blowouts_GF_guitarras_e_baixos.html",
"name": "Guitarras e Baixos",
"count": 2106
},
{
"url": "https://www.thomann.pt/blowouts_GF_software.html",
"name": "Software",
"count": 23
}
]
},
"status": "success"
}
}About the Thomann API
Category and Product Navigation
get_bstock_categories returns the top-level blowout taxonomy — each object carries a name, item count, and url. Pass any of those URLs to get_bstock_subcategories to get narrower groupings within that category, using the same three-field shape. From there, get_bstock_products accepts a category or subcategory url, an optional page integer for pagination, and an optional sort parameter that accepts popularity, price_asc, price_desc, rating, or latest. It returns a data object containing a products array, the current page, and a total_count so you can calculate how many pages to iterate.
Product Detail and Search
get_bstock_product_detail takes a product URL from either get_bstock_products or search_bstock_products and returns the full record: name, price, article_number, brand, availability, description_type, an images array, a specs array, and the canonical url. search_bstock_products accepts a query string — a keyword like "Fender" or "microphone" — and returns an array of matching B-Stock items, each with name, article_number, manufacturer, price, availability, is_bstock boolean, rating, review_count, and url. The is_bstock field lets you confirm the result is a blowout item rather than a standard listing.
Daily Deals
get_blowouts_daily_deal takes no parameters and returns the current "Oportunidade do dia" (Deal of the Day) products from the Thomann Portugal blowouts page. Each deal object includes name, price, url, and image_url. This endpoint is useful for monitoring time-sensitive price drops without iterating through the full category tree.
The Thomann API is a managed, monitored endpoint for thomann.pt — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when thomann.pt changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official thomann.pt API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track daily price drops on B-Stock musical instruments using
get_blowouts_daily_deal - Build a B-Stock price-alert tool by polling
get_bstock_productswithsort=price_ascand comparing against stored prices - Index Thomann Portugal's full discounted catalog for a deal-aggregation site using the category + subcategory endpoints
- Look up availability and full specs for a specific blowout item by passing its URL to
get_bstock_product_detail - Search by instrument brand or type using
search_bstock_productsand filter results by theis_bstockfield - Analyze category-level inventory depth by comparing the
countfield across categories returned byget_bstock_categories
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Thomann have an official public developer API?+
What does `get_bstock_product_detail` return beyond the price?+
name, article_number, brand, availability, description_type, an images array (multiple product images), a specs array (structured technical specifications), and the product's canonical url. It does not include user reviews; review counts are available in search_bstock_products results.Does the search endpoint cover the full Thomann catalog or only B-Stock items?+
is_bstock boolean you can use to confirm discount status. Standard new-product listings from the full Thomann catalog are not covered by this API. You can fork it on Parse and revise to add an endpoint targeting the full catalog search.Is the data specific to Thomann Portugal or does it cover other regional storefronts?+
Does the API expose seller ratings or customer review text for B-Stock products?+
rating and review_count are available in get_bstock_products and search_bstock_products results. Individual review text, reviewer names, and per-review scores are not exposed by any current endpoint. You can fork it on Parse and revise to add a review-detail endpoint for a specific product URL.