Discover/Zoro API
live

Zoro APIzoro.com ↗

Search Zoro.com's industrial supply catalog via API. Returns product titles, prices, brand, ratings, and availability for up to 36 results per query.

Endpoint health
monitored
search_products
0/1 passing latest checkself-healing
Endpoints
1
Updated
3h ago

What is the Zoro API?

The Zoro.com API exposes one endpoint — search_products — that queries the Zoro industrial supply catalog and returns up to 36 matching products per call, each with 9 response fields including price, brand, manufacturer part number, rating status, and discount data. It covers millions of SKUs across industrial, maintenance, and safety categories, making it practical for price monitoring, procurement tooling, and catalog aggregation.

This call costs10 credits / call— charged only on success
Try it
Free-text search term, e.g. a product type, brand or part number.
→ api.parse.bot/scraper/2915cc70-1ba8-4286-88f9-ab5ed6cc8f84/<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/2915cc70-1ba8-4286-88f9-ab5ed6cc8f84/search_products?query=drill' \
  -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 zoro-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: Zoro.com industrial supply search — bounded, re-runnable."""
from parse_apis.zoro_com_api import Zoro, InputFormatInvalid

client = Zoro()

# Search for products and iterate the first page (limit= caps total items)
for product in client.products.search(query="drill", limit=5):
    print(product.title, product.brand, f"${product.price}")

# Scalar wrapper exposes search metadata the paginator discards
search = client.product_searches.search(query="safety glasses")
print(f"Total results: {search.total_results}, has more: {search.has_more}")
if search.corrected_query:
    print(f"Corrected to: {search.corrected_query}")

# Drill into one result for full field access
product = client.products.search(query="safety glasses", limit=1).first()
if product is not None:
    print(product.zoro_no, product.title, product.rating)
    print("Category:", " > ".join(product.category_path))
    print(f"Min order: {product.min_order_quantity}, lead time: {product.lead_time_days}d")

# Wildcard queries are rejected by the site
try:
    client.products.search(query="drill*", limit=1).first()
except InputFormatInvalid:
    print("Wildcard queries are not supported")

print("exercised: products.search / product_searches.search")
All endpoints · 1 totalmissing one? ·

Searches Zoro.com for products matching a free-text query and returns the first page of results (up to 36 products, in the site's default relevance order). Each product carries its Zoro item number, title, brand, manufacturer number, price (USD, per price_unit), first product image, product page URL, minimum order quantity, package quantity, country of origin, lead time and category path. Some queries are redirected by the site to a category landing page (e.g. 'safety glasses'); in that case the category's listing is returned and redirected_category_code names the category, otherwise it is null. Ratings come from the site's review service in one extra round trip: rating and review_count are null for products with no reviews, and ratings_available is false when that service did not answer (all ratings null). total_results is the site's total match count; has_more is true when the site holds more than the first page. seller_name is always Zoro (single-seller store) and location is always null (the site does not expose a per-product location; country_of_origin is provided instead). Queries containing wildcard characters are rejected by the site and return a 422. A query with no matches returns an empty products list with total_results 0.

Input
ParamTypeDescription
queryrequiredstringFree-text search term, e.g. a product type, brand or part number.
Response
{
  "type": "object",
  "fields": {
    "query": "echo of the search term",
    "has_more": "boolean, true when total_results exceeds the returned products",
    "products": "array of product records: zoro_no, title, brand, mfr_no, price (number), original_price (number before discount or null), currency, price_unit, product_url, image_url, rating (number 0-5 or null), review_count (integer or null), seller_name, min_order_quantity (integer), package_qty, location (always null), country_of_origin (ISO-2), is_discontinued, lead_time_days, category_path (array of category names)",
    "page_size": "integer, maximum products returned (36)",
    "did_you_mean": "array of alternative query suggestions from the site",
    "total_results": "integer, site's total number of matching products",
    "corrected_query": "site's spelling correction applied to the search, or null",
    "ratings_available": "boolean, false when the review service did not answer and every rating is null",
    "redirected_category_code": "category code the site redirected this query to, or null when a plain search was served"
  },
  "sample": {
    "data": {
      "query": "safety glasses",
      "has_more": true,
      "products": [
        {
          "brand": "Mcr Safety",
          "price": 1.39,
          "title": "BearKat (BK1), Safety Glasses, Uncoated, Clear Lens, Non-Slip Temple, Frameless",
          "mfr_no": "26G909",
          "rating": 5,
          "zoro_no": "G3600129",
          "currency": "USD",
          "location": null,
          "image_url": "https://www.zoro.com/static/cms/product/full/Z-u5xtqcpEx_.JPG",
          "price_unit": "EA",
          "package_qty": 1,
          "product_url": "https://www.zoro.com/mcr-safety-bearkat-bk1-safety-glasses-uncoated-clear-lens-non-slip-temple-frameless-26g909/i/G3600129/",
          "seller_name": "Zoro",
          "review_count": 7,
          "category_path": [
            "Safety",
            "Personal Protective Equipment (PPE)",
            "Safety Glasses"
          ],
          "lead_time_days": 1,
          "original_price": null,
          "is_discontinued": false,
          "country_of_origin": "TW",
          "min_order_quantity": 12
        }
      ],
      "page_size": 36,
      "did_you_mean": [],
      "total_results": 3342,
      "corrected_query": null,
      "ratings_available": true,
      "redirected_category_code": "6214"
    },
    "status": "success"
  }
}

About the Zoro API

What the API Returns

The search_products endpoint accepts a free-text query string — a product type, brand name, or part number — and returns a structured result set. Each product record includes zoro_no (Zoro's internal item identifier), title, brand, mfr_no (manufacturer part number), price in USD, original_price (the pre-discount price, or null when no discount applies), and currency. The response also surfaces total_results so you know the full catalog match count, and has_more (boolean) to indicate when the first page does not exhaust all matches.

Query Correction and Navigation Signals

The response includes two search-intelligence fields that mirror the site's own query handling: corrected_query returns the site's spelling correction if one was applied, or null for an unmodified query; did_you_mean is an array of alternative query suggestions. If the site resolved the query to a specific product category rather than a plain keyword search, redirected_category_code carries that category code — useful for detecting when a broad term maps to a single department.

Ratings and Coverage Notes

A ratings_available boolean signals whether the review service responded for that request. When it is false, every per-product rating field will be null, so dependent logic should check this flag before relying on review data. The endpoint returns up to 36 products per call (page_size: 36) in Zoro's default relevance order; there is no page or offset parameter, so the API covers only the first page of results for any given query.

Reliability & maintenance

The Zoro API is a managed, monitored endpoint for zoro.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when zoro.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 zoro.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.

Latest check
0/1 endpoint 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 list and sale prices for specific industrial part numbers using price and original_price fields.
  • Build a procurement comparison tool by querying multiple suppliers and matching on mfr_no.
  • Populate an internal catalog with title, brand, and zoro_no for MRO inventory management.
  • Detect query spelling errors or category redirects via corrected_query and redirected_category_code in search UX tooling.
  • Track whether a product category has active discounts by comparing price vs original_price across a batch of queries.
  • Validate brand and manufacturer part number coverage on Zoro before setting up supplier integrations using brand and mfr_no.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 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.

Frequently asked questions
Does Zoro.com have an official developer API?+
Zoro does not publish a public developer API or documented data feed for third-party use. This Parse API provides structured access to Zoro's catalog search results.
Can I retrieve results beyond the first page of search results?+
The search_products endpoint returns only the first page of results — up to 36 products in Zoro's default relevance order. The has_more field tells you when additional results exist beyond that page, but pagination parameters are not currently supported. You can fork this API on Parse and revise it to add offset or page-based pagination.
What does the `ratings_available` field tell me, and when will rating data be null?+
The ratings_available boolean indicates whether Zoro's review service returned rating data for the request. When it is false, all per-product rating fields in the response will be null. You should check this flag before using rating values in any ranking or display logic.
Can I look up a single product by its Zoro item number or get detailed product specs?+
The API currently supports keyword, brand, and part-number search via the query parameter; it does not expose a dedicated product-detail endpoint. Spec sheets, detailed descriptions, and dimension data are not returned. You can fork this API on Parse and revise it to add a product-detail endpoint using a zoro_no as input.
How fresh is the pricing data returned by `search_products`?+
Prices reflect Zoro's catalog at the time of each API call. Zoro updates pricing dynamically, so results from two calls made hours apart may differ. The API does not cache or timestamp individual price records, so treat each response as a point-in-time snapshot.
Page content last updated . Spec covers 1 endpoint from zoro.com.
Related APIs in EcommerceSee all →
us.misumi-ec.com API
Search for industrial components across MISUMI USA's catalog using keywords and browse through paginated results to find the product series you need. Quickly discover and compare available parts without having to navigate the website directly.
robotshop.com API
Access data from robotshop.com.
zazzle.com API
Browse and search Zazzle's marketplace to discover personalized and custom products, view detailed product information including pricing and specifications, and explore available product categories. Access product details to compare options and find exactly what you're looking for across Zazzle's wide selection of customizable items.
zumiez.com API
Search Zumiez products by keyword, browse products by category path, and fetch detailed product information (pricing, images, stock status, and attributes) using a product group ID.
zabars.com API
Search and browse Zabar's gourmet food products with autocomplete suggestions and detailed item information including pricing and availability. Get paginated results to easily discover specialty foods, wines, and delicacies from their curated selection.
autozone.com API
Access data from autozone.com.
boltdepot.com API
Search the Bolt Depot fastener catalog by keyword or product number to instantly find matching products and their catalog sections. Get instant access to product details from the first page of results without manually browsing the catalog.
harborfreight.com API
Search Harbor Freight Tools products by name or category to get real-time pricing, customer reviews, brand information, and detailed product specifications. Filter results using category facets to quickly find deals and compare tools across different product lines.