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 the next_cursor it returns. An item marked deleted is gone or no longer public.
  • Changes are kept for 90 days. A cursor older than that gets a 410 with cursor_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.

devicejuju.com — built to be useful, not monetized