bahco.com APIwww.bahco.com ↗
Retrieve product listings from Bahco Australia's catalog by category. Returns SKU, product name, series, and detail page URL for every item in a category.
curl -X GET 'https://api.parse.bot/scraper/a06cbb2a-1c30-4be6-ad6c-eab4c5e23d72/list_category_products?category_path=%2Fau_en%2Fproducts%2Fwrenches%2Fadjustable-wrenches.html' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed Python client. Install the CLI, sign in, then pull this API’s generated client:
pip install parse-sdk parse login parse add --marketplace bahco-com-api
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.
"""Walkthrough: Bahco Australia Products SDK — list products from any category."""
from parse_apis.Bahco_Australia_Products_API import Bahco, CategoryNotFound
client = Bahco()
# List products from a category page — returns a typed Category object.
category = client.categories.list_products(
category_path="/au_en/products/wrenches/adjustable-wrenches.html"
)
print(f"Category: {category.category} ({category.total_items} items)")
# Iterate typed Product objects, reading attributes directly.
for product in category.products[:5]:
print(f" {product.ordering_number}: {product.name} (series={product.series})")
print(f" URL: {product.product_url}")
# Typed error handling: catch CategoryNotFound for invalid paths.
try:
client.categories.list_products(
category_path="/au_en/products/nonexistent-category.html"
)
except CategoryNotFound as exc:
print(f"Category not found: {exc.category_path}")
print("exercised: categories.list_products / Product attribute access / CategoryNotFound error")
Lists every product shown on a given Bahco Australia product category page. Returns the ordering number (part number/SKU), full product name, model or series designation, and product detail page URL for each item. The category page itself does not display technical specifications — those are available only on individual product detail pages. Parent category pages (e.g. /au_en/products/wrenches.html) may return zero products if they contain only subcategory links rather than product listings.
| Param | Type | Description |
|---|---|---|
| category_pathrequired | string | The category page URL path on bahco.com/au_en, e.g. /au_en/products/wrenches/adjustable-wrenches.html or /au_en/products/files/engineering-files.html. A full URL (https://www.bahco.com/au_en/...) is also accepted. |
{
"type": "object",
"fields": {
"category": "string — the category name displayed on the page",
"products": "array of product objects with ordering_number, name, series, and product_url",
"total_items": "integer — count of products in the category"
},
"sample": {
"data": {
"category": "Adjustable Wrenches",
"products": [
{
"name": "ERGO™ Central Nut Adjustable Wrenches with Rubber Handle and Phosphate Finish",
"series": "Ergo",
"product_url": "https://www.bahco.com/au_en/ergotm-central-nut-adjustable-wrenches-with-rubber-handle-and-phosphate-finish-pb_90_.html",
"ordering_number": "90"
},
{
"name": "Central Nut Adjustable Wrenches with Phosphate Finish",
"series": "",
"product_url": "https://www.bahco.com/au_en/central-nut-adjustable-wrenches-with-phosphate-finish-pb_80_.html",
"ordering_number": "80"
}
],
"total_items": 12
},
"status": "success"
}
}About the bahco.com API
The Bahco Australia API provides 1 endpoint — list_category_products — that returns every product listed on a given Bahco Australia category page, including 4 structured fields per product: ordering number (SKU/part number), full product name, series designation, and product detail URL. It also returns the category display name and a total item count, giving developers a structured view of Bahco's tool catalog organized by category path.
What the API Returns
The list_category_products endpoint accepts a category_path parameter — the URL path under bahco.com/au_en, such as /au_en/products/wrenches/adjustable-wrenches.html — and returns all products listed on that page. Each product object includes an ordering_number (the SKU or part number used in Bahco's catalog), a name field with the full product title, a series field identifying the model or product line, and a product_url pointing to the individual product detail page on bahco.com. The response also includes a category string (the displayed category name) and total_items count.
Category Coverage
Any publicly accessible category page under bahco.com/au_en can be queried by passing its path to the category_path input. For example, passing /au_en/products/wrenches/adjustable-wrenches.html retrieves adjustable wrenches. Different subcategories — sockets, pliers, screwdrivers, cutting tools — each have their own paths and can be queried individually. The total_items field lets callers quickly check product volume before iterating deeper.
Known Limitations
The category listing pages do not expose technical specifications such as jaw capacity, torque ratings, material, or dimensions. Those details live on individual product detail pages, which are linked via the product_url field but are not fetched by this endpoint. Pagination behavior is tied to what the category page renders; categories with large product counts may require attention to confirm all items are captured.
The bahco.com API is a managed, monitored endpoint for www.bahco.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when www.bahco.com 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 www.bahco.com 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?+
- Build a parts lookup tool that maps Bahco SKUs (
ordering_number) to product names and series for procurement workflows. - Inventory a full Bahco product category to monitor which SKUs are listed under a given category path.
- Automate product catalog synchronization by polling category pages and comparing
total_itemsover time. - Extract all
product_urllinks from a category to feed into a downstream detail scraper for specs. - Generate a structured Bahco product index organized by series designation for dealer or distributor reference.
- Compare product line breadth across Bahco Australia categories by querying multiple
category_pathvalues.
| 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 | 250 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 Bahco have an official developer API?+
What does `list_category_products` return for each product?+
ordering_number (the SKU or catalog part number), name (the full product title), series (the model or product line designation), and product_url (the absolute URL to the product's detail page on bahco.com). The response wraps these in a products array alongside the category name and total_items count.Does the API return technical specifications like jaw capacity or dimensions?+
product_url of each item.Is this API specific to Bahco Australia, or does it cover other regional Bahco sites?+
bahco.com/au_en) and accepts category paths under that locale. Other Bahco regional sites (US, UK, Sweden, etc.) use different URL structures and locale prefixes, so their category pages are not covered by the current category_path input. You can fork this API on Parse and revise it to target a different regional path prefix.How should I find the correct `category_path` to query?+
category_path is the URL path component from any product listing page on bahco.com/au_en — for example, /au_en/products/wrenches/adjustable-wrenches.html. You can navigate Bahco Australia's site to locate subcategory URLs, then pass those paths directly as the input parameter.