Discover/Screwfix API
live

Screwfix APIscrewfix.com

Access Screwfix product listings, pricing, specs, ratings, and category hierarchies via 4 API endpoints. Search by keyword or browse category paths.

Endpoint health
verified 4d ago
get_product_details
get_category_products
search_products
get_top_level_categories
4/4 passing latest checkself-healing
Endpoints
4
Updated
26d ago

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.

Try it

No input parameters required.

api.parse.bot/scraper/58a70077-9830-4202-94a9-60a5673aa987/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/58a70077-9830-4202-94a9-60a5673aa987/get_top_level_categories' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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)
All endpoints · 4 totalmissing one? ·

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.

Input

No input parameters required.

Response
{
  "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.

Reliability & maintenanceVerified

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.

Last verified
4d ago
Latest check
4/4 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Monitor price changes across specific Screwfix SKUs using priceInformation from get_product_details
  • Build a product comparison tool for power tools using bullets, overview, and starRating fields
  • Catalog all products under a category hierarchy by combining get_top_level_categories with get_category_products pagination
  • Track numberOfReviews and starRating over time to identify trending or declining products
  • Implement a keyword search feature backed by search_products with redirect handling for category-mapped queries
  • Extract brand and skuId fields across categories for supplier analysis or brand coverage audits
  • Build a site-search autocomplete or category browser using the nested children structure from get_top_level_categories
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does Screwfix have an official developer API?+
Screwfix does not publish a public developer API or documented data access program for third-party use.
What does `search_products` return when the query matches a specific category?+
When the query maps to a category, the response includes 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?+
Not currently. 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?+
Not currently. The product responses cover 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`?+
Both endpoints return up to 20 products per page. The 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.
Page content last updated . Spec covers 4 endpoints from screwfix.com.
Related APIs in EcommerceSee all →