โ† All guides

A JSONPlaceholder alternative where the data is yours

JSONPlaceholder is rightly famous: a free fake REST API you can hit from any tutorial, no signup, no setup. But everyone who uses it hits the same three walls. The dataset is fixed โ€” 100 posts, 10 users, lorem-ipsum Latin text, and that's what you get. The resources are fixed too โ€” if your app has products or invoices, there's no endpoint for them. And writes are faked: POST /posts cheerfully returns {"id": 101}, but GET /posts/101 is a 404 โ€” nothing persists, so you can't demo a create-then-list flow or test optimistic UI against reality.

Mockbird keeps everything that made JSONPlaceholder great โ€” free, no signup, CORS on, same json-server-style conventions โ€” and removes the walls: your own resources, realistic seeded data (names that look like names, prices that look like prices), and full CRUD that actually persists.

See real data in 5 seconds

The shared demo project is live right now:

curl "https://HOST/m/demo/products?limit=3"

Realistic product names, prices, image URLs, categories โ€” not "sunt aut facere repellat". (The demo is shared and resets daily; make your own project below.)

The JSONPlaceholder starter kit: posts, comments, authors โ€” but yours

One request creates a whole seeded blog backend (the blog preset: 20 posts, 40 comments with postId foreign keys, 8 authors):

curl -X POST https://HOST/api/projects \
  -H 'content-type: application/json' \
  -d '{"name":"my-blog","preset":"blog"}'
# โ†’ {"id":"abc123","adminKey":"KEY","baseUrl":"https://HOST/m/abc123", ...}

Now every convention JSONPlaceholder taught you works โ€” against your URL:

curl "https://HOST/m/abc123/posts"                # list
curl "https://HOST/m/abc123/posts/1"              # one record
curl "https://HOST/m/abc123/posts/1/comments"     # nested route
curl "https://HOST/m/abc123/posts?_page=1&_limit=5"   # pagination
curl "https://HOST/m/abc123/comments?postId=1"    # filter by field
curl "https://HOST/m/abc123/comments/1?_expand=post"  # join the parent

Writes that persist

curl -X POST "https://HOST/m/abc123/posts" \
  -H 'content-type: application/json' \
  -d '{"title":"Hello","body":"this one sticks"}'
# โ†’ 201 {"id":21, ...}

curl "https://HOST/m/abc123/posts/21"
# โ†’ 200 โ€” it's really there. PUT/PATCH/DELETE work too.

So create-then-refetch flows, optimistic-update rollback tests, delete confirmations โ€” all testable for real. Broke your data experimenting? Save a snapshot first and restore it in one call, or reseed the resource.

Not a blog? Define any schema

Presets are a shortcut, not the ceiling. Define any resource with typed fields and it's seeded instantly:

curl -X POST https://HOST/api/projects/abc123/resources \
  -H 'X-Admin-Key: KEY' -H 'content-type: application/json' \
  -d '{"name":"invoices","fields":[
        {"name":"number","type":"uuid"},
        {"name":"customer","type":"fullName"},
        {"name":"amount","type":"price"},
        {"name":"status","type":"status"},
        {"name":"dueDate","type":"futureDate"}
      ],"seed":25}'

Or skip schemas entirely: import an OpenAPI spec or upload a json-server db.json and your exact data is hosted.

Things JSONPlaceholder was never going to do

Honest comparison

JSONPlaceholderMockbird
Signup needednono (optional, to keep projects)
Resources6, fixed (posts, comments, albums, photos, todos, users)your own, any schema, or presets
Datafixed lorem-ipsum setrealistic seeded, reseedable, or your imported records
Writesfaked โ€” response only, nothing storedpersist (snapshot/reseed to reset)
Conventionsjson-server stylesame: _page/_limit, nested routes, _expand/_embed, filters
GraphQL / auth / webhooks / exportsโ€”included, free
Limitsinformal fair use10,000 requests/day per project, generous free caps

Where JSONPlaceholder still wins: it's been rock-solid for a decade, it's the URL every tutorial already uses, and if all you need is "any JSON list right now, forever-stable URL", it's unbeatable โ€” keep using it. Reach for Mockbird when you need your schema, writes that stick, or the extras above. Anonymous Mockbird projects have a per-IP daily creation cap; sign up (free) to keep projects permanently. Written by the Mockbird maker โ€” bias disclosed; JSONPlaceholder behavior re-verified July 2026.

Full API reference in the docs. More guides: json-server, hosted ยท DummyJSON alternative ยท React quickstart ยท 5 free mock-API tools compared. Create your API โ†’