Bolt Depot APIboltdepot.com ↗
Search the Bolt Depot fastener catalog by keyword or product number. Returns product IDs, titles, URLs, images, and matched catalog sections.
What is the Bolt Depot API?
The Bolt Depot API exposes 1 endpoint — search_products — that queries the Bolt Depot fastener catalog and returns up to 100 matching products along with their associated catalog sections in a single call. Each product row includes a numeric product ID, title, direct product URL, and image URL. Catalog section matches include item counts and subtitles, giving you both individual product results and category-level context in one response.
curl -X GET 'https://api.parse.bot/scraper/cc3dcd2c-5532-4d66-8e44-c11afd40d883/search_products?query=hex+bolts' \ -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 boltdepot-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.
"""Walkthrough: Bolt Depot fastener catalog search — bounded, re-runnable."""
from parse_apis.boltdepot_com_api import BoltDepot, InvalidQuery
client = BoltDepot()
# Search for hex bolts and print the first few matching products.
for product in client.products.search(query="hex bolts", limit=5):
print(product.title, "-", product.product_url)
# Drill into catalog sections that match "wood screws".
section = client.sections.search(query="wood screws", limit=1).first()
if section is not None:
print(f"Section: {section.title} ({section.product_count} products)")
print(f" Browse: {section.section_url}")
# Handle an invalid (blank) query gracefully.
try:
client.products.search(query=" ").first()
except InvalidQuery as e:
print(f"Expected error for blank query: {e.message}")
print("exercised: products.search / sections.search / InvalidQuery")
Searches the Bolt Depot catalog for a keyword or product number and returns the site's first (and only) search results page in one round trip. The result grain is one product per row under products, in the site's relevance order, capped by the site at 100 'top matching' products; total_products is the site's own count for the page (also at most 100) and no further pagination is offered by the site. Each product carries product_id (numeric string), title, product_url and image_url. The search results page does not show price, currency, rating, seller, minimum order quantity or location, so those fields are not returned. sections lists the catalog categories the site matched for the query with their product counts and URLs. A query with no matches returns an empty products list with total_products 0. A blank query is rejected as invalid input.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search text: a fastener type/description (one shape: 'hex bolts') or a Bolt Depot product number. |
{
"type": "object",
"fields": {
"query": "the search text as submitted",
"products": "array of product rows: product_id (numeric string), title, product_url, image_url",
"sections": "array of matched catalog sections: title, subtitle (nullable), product_count (integer, total products in that catalog section), section_url",
"total_products": "integer count of products shown on the results page as reported by the site (max 100)",
"total_sections": "integer count of matched catalog sections"
},
"sample": {
"data": {
"query": "hex bolts",
"products": [
{
"title": "Hex bolts, Zinc plated grade 8 steel yellow, 3/8\"-16 x 1\"",
"image_url": "https://boltdepot.com/images/catalog/hex-bolt-full-thread-grade8-small.gif",
"product_id": "613",
"product_url": "https://boltdepot.com/Product-Details?product=613"
},
{
"title": "Hex bolts, Zinc plated grade 5 steel, 3/8\"-16 x 1\"",
"image_url": "https://boltdepot.com/images/catalog/hex-bolt-full-thread-grade5-small.gif",
"product_id": "358",
"product_url": "https://boltdepot.com/Product-Details?product=358"
}
],
"sections": [
{
"title": "Hex bolts",
"subtitle": "US sizes",
"section_url": "https://boltdepot.com/Hex_bolts",
"product_count": 2510
},
{
"title": "Metric hex bolts",
"subtitle": null,
"section_url": "https://boltdepot.com/Metric_hex_bolts",
"product_count": 1310
}
],
"total_products": 100,
"total_sections": 3
},
"status": "success"
}
}About the Bolt Depot API
What the API Returns
The search_products endpoint accepts a query parameter — either a descriptive fastener term like hex bolts or a specific Bolt Depot product number — and returns a structured result covering two response layers. The products array lists individual matching items, each with a product_id (numeric string), title, product_url, and image_url. The sections array lists matched catalog sections, each with a title, nullable subtitle, and product_count reflecting the total items in that catalog section.
Coverage and Scope
Results are capped at 100 products (total_products), which mirrors Bolt Depot's own "top matching products" limit for a single results page. The total_sections field tells you how many catalog sections matched the query. This means a broad query like stainless screws will surface both individual products and multiple catalog sections (e.g. machine screws, sheet metal screws), while a precise product number query typically resolves to a single product row.
Practical Notes
The endpoint does not support pagination — it reflects what appears on the first (and only) results page Bolt Depot presents for a query. There are no filter parameters for material, finish, size, or drive type; those distinctions must be applied client-side by parsing the returned title strings. The sections response gives you a fast way to identify catalog categories relevant to a query without having to traverse the full catalog hierarchy.
The Bolt Depot API is a managed, monitored endpoint for boltdepot.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when boltdepot.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 boltdepot.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?+
- Look up Bolt Depot product IDs by fastener type to build internal procurement references
- Map keyword searches to catalog sections for category-level fastener sourcing workflows
- Retrieve product image URLs for fastener identification tools or visual catalogs
- Resolve a known Bolt Depot product number to its title and direct product URL
- Compare
product_countacross matched catalog sections to gauge catalog depth for a fastener type - Feed fastener search results into an inventory management system using
product_idas a key
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Bolt Depot offer an official developer API?+
What does the `sections` array actually represent versus the `products` array?+
products lists individual fastener SKUs matching the query — each with a product ID, title, URL, and image. sections lists catalog groupings (e.g. 'Hex Bolts – Stainless Steel') that the query matched, along with a product_count showing how many total items live in that section. A section match does not mean all products in that section are returned; only up to 100 individual products appear in products.Can I paginate through more than 100 results?+
Does the API return price or inventory data for products?+
products array returns product_id, title, product_url, and image_url — pricing and stock availability are not included in the response. You can fork this API on Parse and revise it to add a product detail endpoint that fetches pricing from an individual product page.Can I filter search results by material, size, or thread pitch within the API?+
search_products endpoint. The query string is the only input, so narrowing by material or dimension must be done by crafting a more specific query string or by filtering the returned title values client-side. You can fork this API on Parse and revise it to add parameter-based filtering logic.