Screwfix APIscrewfix.com ↗
Access Screwfix product listings, pricing, specs, ratings, and category hierarchies via 4 API endpoints. Search by keyword or browse category paths.
What is the Screwfix API?
The Screwfix API provides 4 endpoints covering the full product catalog at screwfix.com — from category hierarchies to individual product specifications. Use get_category_products to pull paginated listings with pricing and star ratings, get_product_details to retrieve specs, images, and review counts for a single SKU, or search_products to query by keyword across the entire catalog.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/58a70077-9830-4202-94a9-60a5673aa987/get_top_level_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 screwfix-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.screwfix_api import Screwfix, Category, ProductSummary, Product
screwfix = Screwfix()
# Browse top-level categories
for category in screwfix.categories.list(limit=3):
print(category.name, category.navigation_path)
for child in category.children:
print(f" {child.name} ({child.id})")
# Search for products and get full details
for product_summary in screwfix.productsummaries.search(query="cordless drill", limit=3):
print(product_summary.long_description, product_summary.brand, product_summary.star_rating)
print(product_summary.price_information.current_price_inc_vat.amount, product_summary.price_information.current_price_inc_vat.currency)
# Navigate from summary to full product details
full_product = product_summary.details()
print(full_product.overview, full_product.number_of_reviews)
for spec in full_product.technical_specifications:
print(spec.name, spec.value)
# List products by category
for item in screwfix.productsummaries.list_by_category(category_url="/c/tools/drills/cat830704", limit=5):
print(item.sku_id, item.long_description, item.detail_page_url)
Get the full category hierarchy from the main navigation menu. Returns an array of top-level categories, each containing nested children subcategories with their IDs, names, and navigation paths. Use the navigationPath to browse products in a category.
No input parameters required.
{
"type": "object",
"fields": {
"categories": "array of category objects with id, name, navigationPath, and children"
},
"sample": {
"data": {
"categories": [
{
"id": "cat830034",
"name": "Tools",
"children": [
{
"id": "cat830692",
"name": "Power Tools",
"children": [
{
"id": "cat830704",
"name": "Drills",
"children": [],
"navigationPath": "/c/tools/drills/cat830704"
}
],
"navigationPath": "/c/tools/power-tools/cat830692"
}
],
"navigationPath": "/c/tools/cat830034"
}
]
},
"status": "success"
}
}About the Screwfix API
Category Navigation
The get_top_level_categories endpoint returns the complete navigation hierarchy as nested objects, each containing id, name, navigationPath, and children. These navigationPath values feed directly into get_category_products as the category_url parameter — for example, /c/tools/drills/cat830704. Using leaf-level paths yields actual product listings; intermediate category paths may return fewer or no products.
Product Listings and Pagination
get_category_products accepts a category_url and optional page integer. Each page returns up to 20 products, each with skuId, longDescription, priceInformation, brand, starRating, and detailPageUrl. The response also includes totalProducts so you can compute the full page count, plus filters (available facet options), breadcrumbs, and categoryInfo with id, name, and parentCategoryName.
Product Detail
get_product_details takes a product_url path that includes both the slug and SKU (e.g., /p/dewalt-dcd778p2t-sfgb-18v-2-x-5-0ah-li-ion-xr-brushless-combi-drill). It returns brand, skuId, an images array, bullets for key feature highlights, a full overview text, starRating, numberOfReviews, breadcrumbs, and an seoOverrides object containing title, canonicalUrl, productName, and productDescription.
Search Behavior
search_products accepts a query string and optional page. When a query maps cleanly to a category, the response returns status: 'redirect' and a redirect_url rather than a product list — you can then pass that path to get_category_products. When direct results are returned, the shape mirrors the category listing response: products, pagination, and totalProducts.
The Screwfix API is a managed, monitored endpoint for screwfix.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when screwfix.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 screwfix.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?+
- Monitor price changes across specific Screwfix SKUs using
priceInformationfromget_product_details - Build a product comparison tool for power tools using
bullets,overview, andstarRatingfields - Catalog all products under a category hierarchy by combining
get_top_level_categorieswithget_category_productspagination - Track
numberOfReviewsandstarRatingover time to identify trending or declining products - Implement a keyword search feature backed by
search_productswith redirect handling for category-mapped queries - Extract
brandandskuIdfields across categories for supplier analysis or brand coverage audits - Build a site-search autocomplete or category browser using the nested
childrenstructure fromget_top_level_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 Screwfix have an official developer API?+
What does `search_products` return when the query matches a specific category?+
status: 'redirect' and a redirect_url field instead of a product list. You can pass that URL as the category_url parameter to get_category_products to retrieve the actual product listings.Does the API expose customer review text or individual review content?+
get_product_details returns numberOfReviews and starRating as aggregates, but individual review text, reviewer names, and review dates are not included. You can fork this API on Parse and revise it to add an endpoint that fetches per-review content.Are stock availability or inventory levels included in product responses?+
priceInformation, starRating, brand, and specifications, but real-time stock or branch-level availability fields are not exposed. You can fork this API on Parse and revise it to add an endpoint targeting availability data.How does pagination work across `get_category_products` and `search_products`?+
totalProducts integer in each response lets you calculate how many pages exist. Pass the page integer parameter to step through results. The pagination object in each response also includes offset and limit values for reference.