1 Endpoint

GET
/api/items

Returns JSON. No authentication or API key required. CORS is open — call it from any origin.

2 Parameters

All parameters are optional query-string values.

limit
integer default: 20 max: 1,000

Number of items to return per page. Capped at 1,000 — the full dataset in one shot.

page
integer default: 1 min: 1

Page number for offset pagination. Use alongside limit; check hasMore in the response to know when you've reached the end.

q
string optional max: 100 chars

Case-insensitive substring filter. Matched against name, category, and sku. Pass ?q=zzz to get an intentional empty result.

sort
string optional

Field to sort by. Accepted values: id name price category rating stock created. Any other value is ignored and results return in default order.

order
string default: asc asc / desc

Sort direction. Only meaningful when sort is also set.

delay
integer (ms) default: 0 max: 5,000

Artificial response delay in milliseconds. Useful for keeping loading spinners or skeleton screens visible long enough to test or screenshot.

3 Response shape

The envelope contains pagination metadata and an items array. price is a string to preserve decimal formatting.

{
  "success": true,
  "total":   1000,     // total matching items (after any ?q= filter)
  "page":    1,
  "limit":   20,
  "hasMore": true,     // false when you've reached the last page
  "items":   [ ... ]
}
Field Type Notes
idinteger1–1,000. Stable — same value every request.
skustringSKU-00001 format, zero-padded to 5 digits.
namestringPattern: Adjective + Noun + zero-padded number.
categorystringOne of 10: Electronics, Books, Clothing, Food, Sports, Home & Garden, Toys, Automotive, Health, Beauty.
pricestringTwo decimal places, e.g. "24.99". Range ~$2–$202. String to preserve formatting.
statusstringactive | inactive | pending
stockinteger0–499 units.
ratingnumber2.5–4.9, one decimal place.
tagsstring[]Array of 2 tags from: sale, new, bestseller, limited, refurbished, eco, organic, premium, budget, exclusive.
createdstringYYYY-MM-DD. Stable, spread daily from 2024-01-01.

4 Try it

opens raw JSON in a new tab

5 Use cases

🗂️
Data grids & tables

Fetch all 1,000 items and render them in AG Grid, TanStack Table, or any virtual-scroll component. Fields are consistently typed.

↕️
Column sorting

Use sort + order to test server-side sorting, or fetch all 1,000 and sort client-side to compare behaviour.

🔍
Search & filter testing

Pass ?q= to verify partial matches, empty result states (?q=zzz), and case-insensitive handling.

📄
Pagination

Use page + limit to test offset pagination. hasMore: false signals the final page reliably.

Loading states & skeletons

Set delay=1500 to hold your spinner or skeleton screen long enough to screenshot or assert in Playwright / Cypress.

🤖
Test data seeding

Use ?limit=1000 as a stable, free source to seed test databases or populate mock fixtures in automation scripts.

6 curl examples

Fetch all 1,000 items
curl "https://thedummysite.com/api/items?limit=1000"
Page 3, 25 per page
curl "https://thedummysite.com/api/items?page=3&limit=25"
Sort by price descending
curl "https://thedummysite.com/api/items?sort=price&order=desc&limit=20"
Search for "wireless"
curl "https://thedummysite.com/api/items?q=wireless"
Simulate a 2-second delay
curl "https://thedummysite.com/api/items?limit=5&delay=2000"