APPLIANCEAGE API
Put an appliance age finder in your app or website.
One call returns when an appliance was made, how sure we are, and whether it has been recalled in Canada or the United States. Send a brand and serial number, or just a photo of the label. We keep the serial-number rules and the recall data up to date, so you never have to.
We do the upkeep
Manufacturers change their date codes. We track hundreds of brands of appliances, furnaces, air conditioners and water heaters, review what our users report, and fix rules for everyone at once.
Recalls included
Every lookup is checked against Health Canada, U.S. CPSC and U.S. NHTSA notices, refreshed every night, including the affected model and serial ranges.
Photo or typed
Send the serial, or send a photo of the rating label and we read the brand, model and serial for you. Same price either way.
Pay for answers, not attempts
You are charged only when we find a date. No monthly minimum, no setup fee, cancel any time.
Honest results
Each answer says where the date came from and how strong the evidence is, and lists other possible years when a date code repeats.
Canada and the U.S.
Built in Canada for both markets, with the recall sources of both countries.
Built for
Home inspection and property software, real estate platforms, insurers and home warranty companies, property managers, appliance repair and HVAC services, and parts and replacement retailers.
Pricing
- Free: 15 successful lookups a month, to build and test.
- Pay as you go: US$0.10 per successful lookup after the first 15 each month, billed monthly. A lookup that finds no date is never charged.
- High volume: custom pricing, higher limits and a direct line to us. Talk to us.
Documentation
1. Get a key
Create a free account and create a key. The key is shown once; keep it secret and use it only from your server, never in a web page or app that others can download.
Send it in the Authorization header as Bearer <key>, or in an X-Api-Key header. Keys in the web address are refused.
2. Look up an appliance
GET or POST https://api.applianceage.com/v1/decode
| make | Required | The brand on the label, for example "Whirlpool". |
| serial | Required | The serial number. |
| model | Optional | The model number. Improves recall matching. |
| manufactureDate | Optional | A date printed on the label, if there is one. |
| applianceType | Optional | For example "Dishwasher". Narrows the recall search. |
curl -X POST "https://api.applianceage.com/v1/decode" \
-H "Authorization: Bearer $APPLIANCEAGE_KEY" \
-H "Content-Type: application/json" \
-d '{"make":"Whirlpool","serial":"F91720000","model":"WDT730PAHZ0"}'// JavaScript (server side)
const res = await fetch("https://api.applianceage.com/v1/decode", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.APPLIANCEAGE_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ make: "Whirlpool", serial: "F91720000" }),
});
const { result } = await res.json();
console.log(result.date.year);# Python
import os, requests
r = requests.post("https://api.applianceage.com/v1/decode",
headers={"Authorization": f"Bearer {os.environ['APPLIANCEAGE_KEY']}"},
json={"make": "Whirlpool", "serial": "F91720000"})
print(r.json()["result"]["date"]["year"])3. Or send a photo of the label
POST https://api.applianceage.com/v1/photo
Send image: the label photo as base64 (JPEG, PNG, WebP or HEIC, 8 MB or less). Add make, model, serial or applianceType if you know them. We read the brand, model and serial from the photo, then run the same lookup. The photo is deleted as soon as it has been read. Pricing is the same as a typed lookup.
curl -X POST "https://api.applianceage.com/v1/photo" \
-H "Authorization: Bearer $APPLIANCEAGE_KEY" \
-H "Content-Type: application/json" \
-d "{\"image\":\"$(base64 < label.jpg | tr -d '\n')\"}"The response
{
"result": {
"version": 1,
"status": "completed",
"identity": { "make": "Whirlpool", "model": "WDT730PAHZ0", "serial": "F91720000", ... },
"date": {
"year": 2019, "month": 4, "week": null, "ageYears": 7,
"basis": "serial_rule", "evidence": "strong",
"alternatives": [], "ambiguity": "none", "warnings": []
},
"recall": {
"state": "no_match_found", "matches": [],
"datasetDate": "2026-10-04", "regions": ["CA", "US"],
"manufacturerPage": { "company": "Whirlpool Corporation", "url": "https://www.whirlpoolcorp.com/recall.html" }
}
},
"billable": true,
"usage": { "month": "2026-10", "successful": 12, "attempts": 14 }
}date.yearis null when no date could be found. Such a lookup is not charged (billable: false).date.basis:printed_on_label,user_provided,serial_ruleornone.date.alternativeslists other possible years when a brand's date code repeats every 10 or 20 years.recall.state:match_confirmed,match_possible,no_match_found, or anot_checked_…reason. Recalls come from Health Canada, U.S. CPSC and U.S. NHTSA notices.
Other endpoints
GET https://api.applianceage.com/v1/brands— supported brands and whether each has a serial-number rule.GET https://api.applianceage.com/v1/usage— this month's successful lookups and estimated cost.
Errors
Errors return {"error": {"status": 401, "message": "…"}}.
| 400 | make or serial is missing, or the image is not valid base64. |
| 413 | The photo is larger than 8 MB. |
| 415 | The photo is not JPEG, PNG, WebP or HEIC. |
| 401 | The key is missing, wrong or revoked. |
| 429 | The free monthly allowance is used up (add a card to continue), or too many requests today. |
| 503 | The API is temporarily unavailable. |
Talk to us about volume
Planning thousands of lookups, or want the age finder in your product? Tell us about it.
