Test Data — entry 003 of 19
DummyJSON
DummyJSON is a free, keyless REST API that serves realistic placeholder data — products, carts, users, todos, recipes, quotes, posts, and comments — with full CRUD support on every resource (writes simulate success but nothing is persisted). Query parameters cover pagination (limit/skip), field selection, sorting, and full-text search, and a dedicated /auth flow issues real JWTs against its seeded users so frontend teams can exercise login and token-refresh flows without standing up a real backend.
DummyJSON is a free, keyless REST API that serves realistic placeholder data -- products, users, carts, todos, recipes, quotes, posts, and comments -- with full CRUD support on every resource (writes simulate success but nothing is persisted). A live GET this run confirmed every collection endpoint wraps its array in a `{items,total,skip,limit}` envelope rather than returning a bare array, and a dedicated `/auth/login` route issues real signed JWTs against its seeded demo users.
GreatAPIs Score
Auth quickstart
- No API key or signup required for any read endpoint. `/auth/login` (username + password against a seeded demo user, e.g. `emilys`) is optional and only needed to exercise the login/JWT flow itself -- a live POST this run returned a real signed access + refresh token pair as both JSON fields and `Secure`/`HttpOnly` cookies, on top of the same fixed rate-limit ceiling every other route shares.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Get a single product
GEThttps://dummyjson.com/products/1
{"id":1,"title":"Essence Mascara Lash Princess","description":"The Essence Mascara Lash Princess is a popular mascara known for its volumizing and lengthening effects. Achieve dramatic lashes with this long-lasting and cruelty-free formula.","category":"beauty","price":9.99,"discountPercentage":10.48,"rating":2.56,"stock":99,"tags":["beauty","mascara"],"brand":"Essence","sku":"BEA-ESS-ESS-001","weight":4,"dimensions":{"width":15.14,"height":13.08,"depth":22.99},"warrantyInformation":"1 week warranty","shippingInformation":"Ships in 3-5 business days","availabilityStatus":"In Stock","reviews":[{"rating":3,"comment":"Would not recommend!","date":"2025-04-30T09:41:02.053Z","reviewerName":"Eleanor Collins","reviewerEmail":"eleanor.collins@x.dummyjson.com"},{"rating":4,"comment":"Very satisfied!","date":"2025-04-30T09:41:02.053Z","reviewerName":"Lucas Gordon","reviewerEmail":"lucas.gordon@x.dummyjson.com"},{"rating":5,"comment":"Highly impressed!","date":"2025-04-30T09:41:02.053Z","reviewerName":"Eleanor Collins","reviewerEmail":"eleanor.collins@x.dummyjson.com"}],"returnPolicy":"No return policy","minimumOrderQuantity":48,"meta":{"createdAt":"2025-04-30T09:41:02.053Z","updatedAt":"2025-04-30T09:41:02.053Z","barcode":"5784719087687","qrCode":"https://cdn.dummyjson.com/public/qr-code.png"},"images":["https://cdn.dummyjson.com/product-images/beauty/essence-mascara-lash-princess/1.webp"],"thumbnail":"https://cdn.dummyjson.com/product-images/beauty/essence-mascara-lash-princess/thumbnail.webp"}Try it
Developer reference
https://dummyjson.com- GET/products/{id}
- GET/products/search?q={query}
- GET/users
Gotchas & limits
- Every collection route -- `/products`, `/products/search`, `/users` -- wraps its array in an envelope: a live `GET /products` this run returned `{"products":[...30 items],"total":194,"skip":0,"limit":30}`, so the array sits under `products`/`users`/etc, never at the response's top level.
- `limit=0` means 'return every row', not 'return none': a live `GET /products?limit=0` this run returned `"total":194,"limit":194` with all 194 products in the array -- passing 0 to suppress results silently does the opposite.
- A not-found ID is a real HTTP 404 with a JSON error body, unlike JSONPlaceholder's silent `{}`: a live `GET /products/9999` this run returned `{"message":"Product with id '9999' not found"}` at 404.
- `/auth/login` issues genuine, verifiable JWTs, not placeholder tokens: a live POST this run with the seeded `emilys` / `emilyspass` credentials returned a real `accessToken` (1-hour expiry, both as a JSON field and a `Secure; HttpOnly` cookie) plus a longer-lived `refreshToken` -- safe to demo end-to-end, but don't mistake the seeded password for a real secret to protect.
- CORS is wide open and echoes the caller's `Origin`: a live GET with `Origin: https://greatapis.com` this run returned `access-control-allow-origin: https://greatapis.com` with `access-control-allow-credentials: true`, so browser-side calls need no proxy.