Use when building a demo, prototype, or tutorial that needs realistic remote data - "fake products/users/todos for this app", "an API I can hit while wiring up fetch", "placeholder images", "seed this UI with something that looks real", or teaching HTTP/CRUD against a live endpoint. DummyJSON is the default (rich e-commerce-shaped data, full fake CRUD, no key); JSONPlaceholder, RandomUser, and Lorem Picsum cover the rest. Do NOT use for generating local test fixtures or factories inside a test suite - use test-data-builder instead; do NOT use when the task needs real-world data (weather, prices, countries) - route through public-data-api-picker.
---
name: Test & Placeholder Data APIs
description: Use when building a demo, prototype, or tutorial that needs realistic remote data - "fake products/users/todos for this app", "an API I can hit while wiring up fetch", "placeholder images", "seed this UI with something that looks real", or teaching HTTP/CRUD against a live endpoint. DummyJSON is the default (rich e-commerce-shaped data, full fake CRUD, no key); JSONPlaceholder, RandomUser, and Lorem Picsum cover the rest. Do NOT use for generating local test fixtures or factories inside a test suite - use test-data-builder instead; do NOT use when the task needs real-world data (weather, prices, countries) - route through public-data-api-picker.
---
# Test & Placeholder Data APIs
Wire a demo against live fake data in one call. The mistake this prevents: hand-writing a 40-line mock array (or standing up a local json-server) when a keyless hosted API already serves richer, more realistic data - and the demo then never exercises real fetch/loading/error paths.
## Ranked APIs
1. **DummyJSON** (dummyjson.com) - DEFAULT. 190+ products, users, carts, posts, recipes with realistic fields; search, pagination, field selection; fake write endpoints for full CRUD demos. No key.
2. **JSONPlaceholder** (jsonplaceholder.typicode.com) - the classic minimal set (posts/comments/todos/users) when the tutorial audience expects it or you need the flattest possible shape. No key.
3. **RandomUser** (randomuser.me) - generated people with names, emails, avatars, addresses. Use for user-directory and profile-card UIs. No key.
4. **Lorem Picsum** (picsum.photos) - placeholder photos at any size. No key.
## Procedure
1. **Match the API to the demo's domain**: e-commerce/dashboard → DummyJSON products or carts; social/feed → DummyJSON posts or JSONPlaceholder; people/profiles → RandomUser; image slots → Picsum.
2. **Make pagination and search real** - DummyJSON supports it server-side, so demo the actual pattern instead of slicing a local array (templates below).
3. **Seed deterministically when it matters.** RandomUser output changes per call; pin it with `&seed=demo` so screenshots and tests reproduce. Picsum: use `/id/{n}/` URLs, not `/random`.
4. **Label fake writes.** DummyJSON's POST/PUT/DELETE return plausible responses but persist nothing - say so in the demo README/comments so nobody files a bug that "saves don't stick".
Ask the user only if missing: domain of data (default: products), row count (default: 10), whether writes are needed (default: read-only).