harborfreight.com APIharborfreight.com ↗
Search Harbor Freight Tools products via API. Get real-time pricing, sale flags, review ratings, brand facets, and category data for any tool query.
curl -X GET 'https://api.parse.bot/scraper/701b14f9-61c8-4a0e-bb0b-2aa9a1a236a7/search_products?page=2&query=wrench+set&page_size=3' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for products on Harbor Freight. Returns product listings with pricing, reviews, brand info, variants, member deals, and category/brand facets for filtering. Handles keyword-to-category redirects automatically.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| queryrequired | string | Search query (e.g., 'drill', 'welding gloves', 'wrench set') |
| page_size | integer | Number of results per page (max 36) |
| include_reviews | string | Include review ratings and counts. Accepted values: 'true', 'false'. |
{
"type": "object",
"fields": {
"page": "integer - current page number",
"query": "string - the search query used",
"brands": "array of objects with name and count - brand facets for filtering",
"category": "string or null - resolved category name if search redirected to a category",
"products": "array of product objects with sku, name, brand, url, image_url, price, regular_price, currency, on_sale, rating, review_count, and optional compare/variant info",
"page_size": "integer - results per page",
"categories": "array of objects with name, id, and count - category facets for filtering",
"total_count": "integer - total number of matching products",
"total_pages": "integer - total pages available",
"auto_corrected_query": "string or null - auto-corrected query if spelling was adjusted"
},
"sample": {
"data": {
"page": 1,
"query": "wrench set",
"brands": [
{
"name": "PITTSBURGH",
"count": 69
}
],
"category": "Wrenches",
"products": [
{
"sku": "68790",
"url": "https://www.harborfreight.com/fully-polished-metric-combination-wrench-set-14-piece-68790.html",
"name": "Fully Polished Metric Combination Wrench Set, 14-Piece",
"brand": "PITTSBURGH",
"price": 24.99,
"is_new": false,
"rating": 4.7,
"on_sale": false,
"currency": "USD",
"image_url": "https://www.harborfreight.com/media/catalog/product/cache/aa6c321fb362164a2ed76c30e077c9a9/i/m/image_25060.jpg",
"retail_only": false,
"review_count": 1339,
"regular_price": 24.99,
"compare_savings": "22%",
"compare_at_brand": "HUSKY",
"compare_at_price": 31.97,
"eligible_channel": "All"
}
],
"page_size": 3,
"categories": [
{
"id": "1909",
"name": "Tool Sets",
"count": 102
}
],
"total_count": 127,
"total_pages": 43,
"auto_corrected_query": null
},
"status": "success"
}
}About the harborfreight.com API
The Harbor Freight Tools API exposes one endpoint, search_products, that returns up to 36 product listings per page across Harbor Freight's full tool catalog. Each response includes 14+ fields per product: SKU, name, brand, URL, image, current price, regular price, currency, on-sale flag, rating, review count, and resolved category. Brand and category facets are returned alongside results for downstream filtering.
What search_products Returns
The search_products endpoint accepts a query string — anything from 'drill' to 'welding gloves' — and returns a paginated list of matching products. Each product object includes sku, name, brand, url, image_url, price, regular_price, currency, on_sale, rating, and review_count. The on_sale flag and the difference between price and regular_price let you detect active discounts without additional parsing.
Facets and Category Handling
Every response includes two facet arrays: brands (each with name and count) and categories (each with name, id, and count). These allow you to build filter UIs or narrow subsequent queries programmatically. If Harbor Freight's own search logic redirects a keyword to a specific department, the category field in the response will contain the resolved category name rather than null.
Pagination and Query Correction
Use page and page_size (maximum 36) to walk through results. total_count and total_pages tell you the full result set size upfront. The auto_corrected_query field will be non-null when the search engine applied a spelling correction, so you can surface that correction in your own UI rather than silently using the corrected term.
Review Data
Pass include_reviews=true to attach rating and review_count to each product. If you don't need that data and want a leaner response, pass include_reviews=false. This is the only optional toggle on the endpoint.
- Track sale prices on specific tool categories by comparing
pricevsregular_priceacross daily snapshots - Build a Harbor Freight deal-finder that surfaces all products where
on_saleis true for a given query - Aggregate brand coverage across a product category using the
brandsfacet array - Monitor
review_countandratingchanges over time to detect trending or newly reviewed products - Populate a tool comparison table with SKU, price, rating, and image data for a specific search term
- Identify category redirects by checking the
categoryfield to understand how Harbor Freight classifies a keyword
| 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 | 250 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 Harbor Freight have an official developer API?+
What does the `auto_corrected_query` field contain, and when is it set?+
null when your original query was used as-is. This lets you distinguish between results for your intended term and results for a silently corrected one.Does the API return individual product detail pages, specifications, or inventory status?+
Are member pricing or club deal prices included in the response?+
price and regular_price. If a product has a member-specific discount, that information is included in the product object when available.What is the maximum number of results I can retrieve per request, and how do I paginate?+
page_size parameter caps at 36 results per request. Use page to advance through the result set, and use total_pages from the response to know when you've reached the last page. total_count gives you the full count of matching products across all pages.