ScavioScavio
Pricing
Tools
Sign InsGet Startedg
Blog
Harbor freight6 min readNov 2, 2026

How to Track Harbor Freight Prices and Coupons With an API: Sale, Clearance and Member Deals for 50 Items a Call

Use Scavio's Harbor Freight API: send up to 50 item numbers to /prices and get the sale, clearance, coupon and member price with end dates, 1 credit a call.

Scavio Team

Nov 2, 2026

Try the Harbor Freight API free
scavio
Price monitoring / Coupons
Harbor freight

To track Harbor Freight prices and coupons programmatically, use Scavio's Harbor Freight API. POST /api/v1/harborfreight/prices with up to 50 item numbers returns, for each one, the shelf price, the regular price, the sale price and the date it ends, the clearance flag, the public coupon and the Inside Track Club member price with its expiry and per-customer limit. /search finds the item numbers, /clearance lists markdowns, and /availability says which nearby stores have an item. Every call costs 1 credit, about $0.002 on the Growth plan billed yearly.

Harbor Freight has no public API, and its deals sit on separate pages: sales on the product page, member prices behind the Inside Track Club, coupons on its coupon site. These five steps put all of them in one stored row per item.

Step 1: Find the item numbers

Bash
curl -s https://api.scavio.dev/api/v1/harborfreight/search \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "floor jack", "page_size": 48}'

On November 2, 2026, "floor jack" followed Harbor Freight's own redirect to its Floor Jacks category, so the call returned every jack in it:

JSON
{
  "query": "floor jack",
  "category_id": "2084",
  "redirect": {
    "url": "/automotive/jacks-jack-stands/floor-jacks.html",
    "category_id": "2084",
    "category_name": "Floor Jacks"
  },
  "total_results": 20,
  "total_pages": 1,
  "count": 20
}

Each row carries sku, the Harbor Freight item number. Position 4 was the DAYTONA 3 ton long-reach jack, item 64781, at "price": 269.99 with a member deal. Search returns the full price block too, so a category check can double as a price check; sort: "member_price_low" orders a category by member price.

Step 2: Price your watchlist in one call

Bash
curl -s https://api.scavio.dev/api/v1/harborfreight/prices \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"skus": ["56641", "64874", "01142"]}'

We sent the 48 item numbers on the first page of Harbor Freight's coupon site this way. The call returned 47 products in 8.0 s for 1 credit, and item 01142, a cable tie pack the coupon page lists under three numbers, came back in "not_found": ["01142"] instead of an error. Two of the rows, as captured:

JSON
{
  "sku": "56641",
  "id": 14039,
  "title": "3 Ton Long-Reach Low-Profile Professional Floor Jack with RAPID PUMP, Blue",
  "brand": "DAYTONA",
  "price": 269.99,
  "regular_price": 269.99,
  "on_sale": false,
  "clearance": false,
  "sale": null,
  "coupon": null,
  "member_deal": {
    "code": "31928177",
    "price": 179.99,
    "was_price": 269.99,
    "savings": "$90",
    "expires": "2026-12-03",
    "limit": 1,
    "members_only": true
  },
  "compare_at": {
    "brand": "K TOOL INTERNATIONAL",
    "model": "XD63105",
    "price": 324.77,
    "savings": "$54.78"
  }
}
JSON
{
  "sku": "64874",
  "id": 13532,
  "title": "2 Ton Compact Trolley Jack",
  "brand": "PITTSBURGH",
  "price": 39.99,
  "regular_price": 49.99,
  "on_sale": true,
  "clearance": false,
  "sale": {
    "price": 39.99,
    "ends_at": "2026-11-25 23:59:59",
    "savings": "20%",
    "banner_code": "EBF",
    "clearance": false
  },
  "coupon": null,
  "member_deal": null
}

The URL and the badges, sold_in, in_store_only and online_only fields are trimmed. Note the difference: a sale lowers price, but a member deal does not. The jack's price stays at $269.99 for everyone, and the $179.99 member price lives only in member_deal. Of the 47 coupon-page deals, 27 were member deals like this one, so storing price alone would miss more than half of them. coupon is the public coupon price when Harbor Freight runs one; it was null on every item we priced that day.

Step 3: Store every tier and alert on a change

Python
import requests, sqlite3, datetime

API_KEY = "sk_live_your_key"  # load from your secret store in real code
WATCHLIST = ["56641", "64874", "64781"]  # up to 50 per call

r = requests.post(
    "https://api.scavio.dev/api/v1/harborfreight/prices",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={"skus": WATCHLIST},
    timeout=120,
)
r.raise_for_status()
db = sqlite3.connect("hf_prices.db")
db.execute("""create table if not exists prices (sku, checked_at, price, regular,
              sale_price, sale_ends, clearance, coupon_price, member_price, member_ends)""")
now = datetime.datetime.utcnow().isoformat()
for p in r.json()["data"]["products"]:
    s, c, m = p["sale"] or {}, p["coupon"] or {}, p["member_deal"] or {}
    row = (p["sku"], now, p["price"], p["regular_price"], s.get("price"), s.get("ends_at"),
           p["clearance"], c.get("price"), m.get("price"), m.get("expires"))
    last = db.execute("select price, sale_price, coupon_price, member_price from prices "
                      "where sku = ? order by checked_at desc limit 1", (p["sku"],)).fetchone()
    if last and last != (row[2], row[4], row[7], row[8]):
        print("changed:", p["sku"], p["title"], last, "->", (row[2], row[4], row[7], row[8]))
    db.execute("insert into prices values (?,?,?,?,?,?,?,?,?,?)", row)
db.commit()

Run it once a day, or hourly for a short list. Because each deal carries its own end date, the alert can say "member price $179.99 until December 3, limit 1" rather than just "price dropped". Quote member and coupon prices separately; Harbor Freight does not stack them into one price.

Step 4: Watch clearance

Bash
curl -s https://api.scavio.dev/api/v1/harborfreight/clearance \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"page_size": 48}'

With no filter this listed 56 clearance items on November 2; add query, category_id or brand to narrow it. One row, as captured (image and URL trimmed):

JSON
{
  "position": 5,
  "sku": "71272",
  "title": "20V 5 Ah Lithium-Ion Battery and Charger Starter Kit",
  "brand": "BAUER",
  "price": 99.97,
  "regular_price": 114.99,
  "on_sale": true,
  "clearance": true,
  "sale": {
    "price": 99.97,
    "ends_at": "2026-12-03 23:59:59",
    "savings": "$15.02",
    "banner_code": "CLR",
    "clearance": true
  },
  "rating": 4.8,
  "review_count": 1221,
  "sold_in": "Store",
  "in_store_only": true
}

Harbor Freight often resets the regular price to the clearance price: on 27 of the 43 clearance items we saw that day, regular_price already equalled the clearance price. To measure a markdown, compare against the price you stored before the item went to clearance, which is one more reason to start the history early. Clearance items are often in-store only, so pair this with step 5.

Step 5: Check which nearby stores have it

Bash
curl -s https://api.scavio.dev/api/v1/harborfreight/availability \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"skus": ["64781", "64874"], "zip": "77002", "limit": 5}'

The nearest store to downtown Houston, as captured (hours trimmed):

JSON
{
  "store_id": "617",
  "name": "Houston Gulfgate, TX",
  "address": "3333 Telephone Road, Suite N",
  "distance_miles": 4.42,
  "status": "OPEN",
  "items": [
    { "sku": "64781", "stock_status": "in_stock", "stock_code": "IS", "aisle": "Aisle 7", "nearby_store_with_stock": null },
    { "sku": "64874", "stock_status": "in_stock", "stock_code": "IS", "aisle": "Aisle 7", "nearby_store_with_stock": null }
  ]
}

The long-reach jack was in stock at 4 of the 5 nearest stores and limited at Houston Federal; the trolley jack was in stock at all 5. The response said 72 stores were in range and "inventory_updated_at": "2026-11-02 10:17:08": store stock is a daily snapshot and a status, never a unit count, so tell users to confirm with the store for a same-day trip.

All seven endpoints

EndpointWhat it returnsCredits
/api/v1/harborfreight/pricesUp to 50 item numbers: price, regular price, sale and end date, clearance, coupon, member price, compare-at price1
/api/v1/harborfreight/searchUp to 48 products a page by keyword or category, brand and clearance filters, 7 sorts, facets1
/api/v1/harborfreight/clearanceClearance items, optionally by keyword, category or brand, with end dates1
/api/v1/harborfreight/productOne item: UPC, price block, specifications, warranty, manuals, images and variants1
/api/v1/harborfreight/availabilityUp to 20 items at up to 20 stores or the stores nearest a ZIP: stock status and aisle1
/api/v1/harborfreight/storesStores near a ZIP, "City, ST" or coordinates, with hours1
/api/v1/harborfreight/reviewsHarbor Freight's own customer reviews, newest first, up to 50 a call1

An unknown item number returns 404 on product and reviews and is not charged; on prices it is listed in not_found. A comparison of every Harbor Freight price-tracking option, with a chart of the 47 coupon-page deals, is in the best Harbor Freight price tracker APIs.

Getting started

  1. Sign up at dashboard.scavio.dev/sign-up: 50 free credits, no card required.
  2. Copy your API key from the dashboard.
  3. Send a POST to /api/v1/harborfreight/prices with your item numbers in skus and your key as a Bearer token.

Try the Harbor Freight API free in the playground first, or call it from Claude and other agents through the MCP server.

Reference: Harbor Freight API overview · prices · search · clearance · availability · what happened to HF Price Tracker

Frequently asked questions

How do I track Harbor Freight prices automatically?

Keep a list of item numbers, call a prices API on a schedule and store each result with its timestamp. Scavio's /api/v1/harborfreight/prices takes up to 50 item numbers per call and returns the shelf, regular, sale, clearance, coupon and member price, so one stored row per item per check is your price history.

Where do I find a Harbor Freight item number?

It is the 3 to 8 digit number at the end of a harborfreight.com product URL and on the shelf tag, such as 64874 for the PITTSBURGH 2 ton compact trolley jack. Scavio's search endpoint returns it as sku on every row, so you can build a watchlist from a keyword or a category.

How long do Harbor Freight deals last?

Each deal carries its own end date. On November 2, 2026 the open sales on Harbor Freight's coupon page ended November 25 and the Inside Track Club member deals ended December 3, and clearance prices ended December 3. The API returns the date in sale.ends_at or member_deal.expires, so an alert can say how long is left.

Does Harbor Freight price differ by store?

No. Harbor Freight prices, sales, coupons and member prices are national, the same at every store, so there is nothing to track per store. What differs by store is stock: whether a store has the item, has limited stock or is out, and which aisle it is in, from a daily snapshot.

How much does it cost to track Harbor Freight prices with Scavio?

Every Harbor Freight endpoint costs 1 credit, about $0.002 on the Growth plan billed yearly, and a prices call covers 50 items. Checking 500 items once a day is 10 calls a day, 300 credits a month. New accounts get 50 free credits with no card.

Harbor Freight prices and deals as JSON

  • Every price tier for 50 items in one call
  • Clearance list with end dates
  • Store stock and aisle near any ZIP
Try the Harbor Freight API free

50 free credits, no credit card

On this page

  1. Step 1: Find the item numbers
  2. Step 2: Price your watchlist in one call
  3. Step 3: Store every tier and alert on a change
  4. Step 4: Watch clearance

Related articles

View all
  • scavio
    Price monitoring / Coupons
    Harbor freight
    What Happened to HF Price Tracker? Track Harbor Freight Prices Yourself With an API
  • scavio
    Comparison / Price monitoring
    Harbor freight
    5 Best Harbor Freight Price Tracker APIs in 2026: Scavio Matched All 47 Coupon-Page Deals in One Call
ScavioScavio

One scraper API for every social, search, e-commerce and real estate platform. Built for AI agents.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative
  • Serper Alternative
  • Tavily vs Scavio
  • SerpAPI vs Scavio
  • All alternatives
  • Compare Scavio vs alternatives

Search APIs

  • Google Search API
  • Amazon Product API
  • YouTube API
  • Reddit API
  • Walmart Product API
  • TikTok API
  • Instagram API

Tools

  • All Tools

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy