DeviceJuJu API
The DeviceJuJu API gives free, read-only access to the catalog for your own scripts and apps: the same manufacturers, devices, specs, images and prices the site shows. It doesn't include anything about users or what they own.
The full reference, with every field and a way to try requests, is in the interactive docs (OpenAPI spec).
Getting started
Create a key under My Account → API Keys and send it in the Authorization header:
curl -H "Authorization: Bearer djk_..." \ "https://devicejuju.com/api/public/v1/devices?limit=10"
/manufacturers | Manufacturers |
/categories | Categories, each with the attributes its devices describe |
/devices | Devices with specs, attribute values, images, aliases, lineage, battery platforms, kits and prices. Filter by manufacturer_id or category_id (subcategories included), or fetch up to 100 by ids |
/kits | Kits and what's in the box. Filter by manufacturer_id or device_id |
/battery-platforms | Battery platforms and which packs fit which tools |
/vendors | Retailers prices come from |
/recalls | Recall notices. Filter by device_id |
/changes | What changed since a cursor |
Each list also has a /{id} route for one item.
Limits
Each key can make 5 requests a second, in bursts of up to 20, and 50,000 requests a UTC day, image downloads included. Every response says where you stand in RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset. A 429 response says how many seconds to wait in Retry-After.
Paging
Lists return { data, next_cursor, has_more }. Pass next_cursor back as cursor to get the next page, and set limit (up to 100) for the page size. Cursors don't expire, and changes made between pages don't shift them.
Staying in sync
- Before a full download, save a cursor from
/changes/cursor. - Page through the lists you need.
- From then on, call
/changes?cursor=…with your saved cursor, refetch what it lists (/devices?ids=…takes up to 100 at once), and save thenext_cursorit returns. An item markeddeletedis gone or no longer public. - Changes are kept for 90 days. A cursor older than that gets a
410withcursor_expired; start over with a new cursor and a full download.
Compatibility
Within /v1, fields may be added but are never renamed or removed. Ignore fields you don't recognize.
API terms of use
Last updated: November 2026
- Free, with limits. Keys cost nothing. Stay within the limits, and don't use extra keys or accounts to get around them.
- Keys are yours. Keep your key secret and don't share it. If one leaks, revoke it and create another.
- Others' rights. Product names, model numbers, images and trademarks belong to their manufacturers. Your use of them is up to you and those rules.
- As is. The data is gathered with care but may be incomplete or wrong; check anything important, like a recall, with the manufacturer. The API is provided without warranty and may change, slow down or stop.
- Revocation. We may revoke keys that break these terms or put load on the site, with or without notice.
Questions or need more than the limits allow? Get in touch.