MatterHackers APImatterhackers.com ↗
Search MatterHackers products, browse filament collections by material, and retrieve detailed specs, pricing, variants, and availability via 4 REST endpoints.
What is the MatterHackers API?
The MatterHackers API provides 4 endpoints for querying the MatterHackers 3D printing store catalog, covering product search, filament listings, material collections, and full product detail pages. The get_product_details endpoint returns price, availability, color variants with swatch URLs, technical specifications, and parsed color metadata including hex codes and Pantone references — all keyed by SKU ID obtained from search or listing results.
curl -X GET 'https://api.parse.bot/scraper/46d2312a-fa20-4dce-8857-b8742488ee7d/search_products?query=PLA' \ -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 matterhackers-com-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.matterhackers_filament_api import MatterHackers, Product, ProductSummary, MaterialCollection, ProductNotFound
mh = MatterHackers()
# Browse available material collections
for collection in mh.materialcollections.list():
print(collection.name, collection.url)
# Search for PLA products
for summary in mh.productsummaries.search(query="PLA"):
print(summary.title, summary.brand, summary.price, summary.sku_id)
# List filaments filtered by material with pagination
for filament in mh.productsummaries.list(material="ABS"):
print(filament.title, filament.price, filament.tags)
# Navigate from a summary to the full product detail
first_result = next(iter(mh.productsummaries.search(query="PETG")))
detail = first_result.details()
print(detail.title, detail.price, detail.availability)
# Inspect variants and specs
for variant in detail.variants:
print(variant.color, variant.sku_id, variant.swatch_url)
print(detail.color_metadata.detected_hex_codes)
print(detail.description_preview)
# Direct product lookup by SKU
product = mh.products.get(sku_id="M3MY2VQG")
print(product.title, product.availability, product.specs)
Full-text search across all MatterHackers store products by keyword. Returns product summaries matching the query. Supports multi-word queries. Results are limited to the first page returned by the site (typically up to 20 items).
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword or phrase (e.g. 'PLA', 'Bambu Lab', 'resin'). |
{
"type": "object",
"fields": {
"query": "string — the search query echoed back",
"products": "array of product summary objects with title, brand, price, url, sku_id, and tags"
},
"sample": {
"data": {
"query": "PLA",
"products": [
{
"url": "https://www.matterhackers.com/store/l/175mm-pla-filament-black-1-kg/sk/MY6CYEZM",
"tags": [
"1.75mm",
"PLA",
"Black",
"MatterHackers",
"MH Build",
"Spools",
"1kg",
"Filament On Sale"
],
"brand": "MatterHackers",
"price": 22.99,
"title": "Black MH Build Series PLA Filament - 1.75mm (1kg)",
"sku_id": "MY6CYEZM"
}
]
},
"status": "success"
}
}About the MatterHackers API
Product Search and Filament Browsing
The search_products endpoint accepts any keyword or phrase — such as 'PLA', 'Bambu Lab', or 'resin' — and returns matching products with title, brand, price, url, sku_id, and tags. Multi-word queries are supported. The list_filaments endpoint narrows scope to filament products specifically and accepts an optional material parameter (e.g. 'ABS', 'NylonX', 'mh-build-series') that maps to a collection slug, plus a page integer for pagination through large result sets.
Material Collections and Navigation
The list_material_collections endpoint takes no inputs and returns the full list of collection objects, each with a name and url. The collection slugs it surfaces can be passed directly as the material parameter to list_filaments, making it straightforward to enumerate available categories before querying them. This is the right starting point for any workflow that needs to map MatterHackers' taxonomy before drilling into individual materials.
Product Detail and Variant Data
get_product_details accepts a sku_id (sourced from search_products or list_filaments results) and returns the richest response in the API: price in USD, availability status ('In Stock' or 'Out of Stock'), a specs object of key-value technical specifications, a description_preview of up to 500 characters, and a variants array listing each color option's color, sku_id, and swatch_url. The color_metadata field provides detected_hex_codes and detected_pantone_references arrays parsed from the product's color information.
The MatterHackers API is a managed, monitored endpoint for matterhackers.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when matterhackers.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 matterhackers.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 filament comparison tool that pulls specs and pricing for PLA, ABS, and PETG variants using list_filaments and get_product_details
- Monitor in-stock status for specific filament SKUs to trigger purchase alerts when availability changes
- Aggregate swatch_url and detected_hex_codes data to build a visual filament color catalog
- Enumerate all material collections via list_material_collections to populate a dynamic filter UI for a 3D printing materials database
- Extract technical specification key-value pairs from get_product_details to feed a materials recommendation engine
- Track price changes across filament products by polling search_products results over time
- Discover brand-specific product lines by querying search_products with a brand name like 'Bambu Lab' or 'Polymaker'
| 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 MatterHackers offer an official developer API?+
How do I filter filaments by material type, and what slugs are valid?+
material parameter to list_filaments using a collection slug such as 'PLA', 'ABS', 'PET', or 'NylonX'. To get the full current list of valid slugs, call list_material_collections first — it returns every collection's name and url, and the slug portion of the URL corresponds to what list_filaments accepts.Does get_product_details return customer reviews or ratings?+
How do variants work — does each color have its own SKU ID?+
variants array in get_product_details lists each color option as a separate object with its own sku_id, color name, and swatch_url. To get full specs for a specific color, pass that variant's sku_id back into get_product_details.Does the API cover non-filament products like printers, resins, or accessories?+
search_products endpoint searches across all store products and will return printers, resins, and accessories if they match the query. However, list_filaments and list_material_collections are scoped to filament and material collections only. Dedicated listing endpoints for printers or accessories are not currently included. You can fork the API on Parse and revise it to add collection browsing for those product categories.