Mechanical Keyboard Deals avatar

Mechanical Keyboard Deals

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Mechanical Keyboard Deals

Mechanical Keyboard Deals

Daily deals on mechanical keyboards, keycaps, switches & accessories scraped from top stores worldwide.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Jason Remnant

Jason Remnant

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

12 days ago

Last modified

Categories

Share

Mechanical Keyboard Deals Scraper

Find clearance and sale deals across the best mechanical keyboard stores — keyboards, keycaps, switches, and accessories at a discount. HTTP-only Shopify API scraping means it's fast, cheap, and doesn't need Playwright.

Apify Store Python

Why this scraper?

Mechanical keyboards are expensive. Enthusiasts constantly hunt for deals across 10+ fragmented stores. No cross-store deal aggregator exists — this is the first.

Key advantages

  • HTTP-only API scraping — Uses Shopify's native JSON API. Much faster and cheaper than Playwright-based scrapers.
  • 6 stores out of the box — NovelKeys (71 clearance), CannonKeys (21 clearance), Divinikey (246 BFCM sale), KBDfans (26 clearance), Daily Clack AU (16 clearance), SwitchKeys AU + more coming.
  • Real deals only — Automatically filters out items with no actual discount (compare_at_price must exist and be higher than current price).
  • Sorted by discount — Results are sorted with the biggest discounts first.
  • Australian stores included — Daily Clack and SwitchKeys for AU-based deals (import savings).
  • Structured output — Clean JSON with title, price, discount %, product type, inventory status, store, and image URL.
  • Summary report — Aggregated breakdown by store and product category, plus average/max discount stats.

Pricing

VolumePrice
500 deals$1.00
1,000 deals$2.00
5,000 deals$5.00
10,000+ dealsCustom

Pay only for what you scrape. No monthly subscription. Runs are fast (typically <30 seconds).

How to use

Quick start (no coding needed)

  1. Select which stores you want to scrape
  2. Optionally set a minimum discount filter (e.g. 30%+ off)
  3. Run the Actor
  4. Download results as JSON, CSV, Excel, or XML

Input parameters

FieldTypeDescriptionDefault
storesarrayWhich stores to scrape (multiselect)All 6 Shopify stores
include_mk_combooleanAlso scrape MechanicalKeyboards.com (HTML-based, slower)false
min_discount_percentintegerMin discount % to include (e.g. 30 = 30%+ off). 0 = all deals.0
max_resultsintegerMax deals to return. Sorted by biggest discount first.500
output_aggregatedbooleanInclude a summary report item with store/category breakdowntrue

Example input

{
"stores": ["NovelKeys", "CannonKeys", "KBDfans", "Daily Clack"],
"min_discount_percent": 30,
"max_results": 200,
"output_aggregated": true
}

Output fields

Each deal returns:

FieldDescriptionExample
store_nameSource store"NovelKeys"
titleProduct title"GMK Olivia++ Base Kit"
variantVariant name (e.g. size/color)"Standard Base"
product_typeCategory: keycaps, switches, keyboards, accessories"keycaps"
brandManufacturer/brand"GMK"
priceCurrent sale price (USD)95.00
compare_at_priceOriginal price (USD)180.00
discount_percentDiscount percentage47.2
in_stockWhether the item is availabletrue
currencyCurrency code"USD"
image_urlProduct image URL"https://cdn.shopify.com/..."
product_urlLink to the product page"https://novelkeys.com/products/..."
scraped_atWhen the deal was scraped"2026-07-05T..."
tagsProduct tags from store["clearance", "nonreturnable"]

Summary report item

A separate dataset item with _type: "summary" containing:

FieldDescription
total_dealsTotal number of deals found
store_breakdownCount of deals per store
category_breakdownCount of deals per product category
avg_discountAverage discount percentage across all deals
max_discountMaximum discount percentage found

Sample output

{
"store_name": "NovelKeys",
"title": "wilba.tech Salvation PCB",
"variant": "WT60-D (Soldered)",
"product_type": "keyboards",
"brand": "NovelKeys, LLC",
"price": 30.0,
"compare_at_price": 60.0,
"discount_percent": 50.0,
"in_stock": true,
"currency": "USD",
"image_url": "https://cdn.shopify.com/...",
"product_url": "https://novelkeys.com/products/salvation-pcb",
"scraped_at": "2026-07-05T10:00:00+00:00",
"tags": ["nonreturnable"]
}

Use cases

  • Hobbyist deal hunting — Get notified when your favourite switch or keycap set goes on sale across multiple stores
  • Price monitoring — Track discount trends over time by running this Actor on a schedule
  • Discord/Telegram alerts — Pipe deal data into a bot to alert your community about new markdowns
  • Market research — Understand pricing patterns across the mechanical keyboard industry
  • Group buy leftovers — Find unsold group buy extras being cleared at a discount

Stores currently supported

StoreCountryMethodProducts
NovelKeysUSShopify JSON~71 clearance
CannonKeysUSShopify JSON~21 clearance
DivinikeyUSShopify JSON~246 BFCM sale
KBDfansCNShopify JSON~26 clearance
Daily ClackAUShopify JSON~16 clearance
SwitchKeysAUShopify JSONDiscount detection
MechanicalKeyboards.com (optional)USHTMLHTML scraping

Roadmap

  • More AU stores (MechStock, Keebz N Cables, Keyboard Treehouse)
  • More US stores (Kinetic Labs, Drop, PrimeKB, ClickClack)
  • Price history tracking across runs
  • Email/Discord notification integration
  • Keycap profile + switch type detection from product descriptions
  • FILCO / Realforce / Topre deal detection
  • Amazon mechanical keyboard deals

FAQ

Does this need Apify proxy? No — Shopify's JSON API is public and doesn't block. MechanicalKeyboards.com (optional HTML mode) may need a residential proxy.

How often should I run it? Daily is good. Clearance stock changes infrequently. During BFCM / holiday sales, run more often.

Can I add my own store? Yes — the stores are defined in the STORES list in src/main.py. Most keyboard stores use Shopify and expose the same /collections/{handle}/products.json endpoint.

I found a bug / a store changed its site! Open an issue on the Apify Store page. I check regularly and push fixes fast.

Support

Open an issue on the Apify Store page, or contact me through the Apify developer profile.


Built with Python + httpx for Apify. Not affiliated with any of the stores listed above.