π‘ We check CrudCrud (and 36 other public mock/testing services) with a plain GET every 30 minutes β see the live status page.
CrudCrud deserves real credit for one thing: it has the fastest start in the entire category. You load the homepage and your endpoint already exists β no signup, no button, no curl. POST any JSON to any resource name and it's stored. For a ten-minute tutorial, that's genuinely great.
Then you hit the walls. All of this verified hands-on on a fresh endpoint, August 28, 2026:
HTTP 400 with the plain-text body Endpoint has exceeded allowed number of requests (100).?name=Nope, ?page=2, ?limit=1 β all return the complete unfiltered list. There is no filtering, no pagination, no sorting, no search.Mockbird does the same instant-CRUD job β free, no signup, no expiry, 10,000 requests/day per project β and the query toolkit actually works.
CrudCrud has no export UI, but the list endpoint is the export. Pipe it straight into Mockbird's db.json import (costs you exactly one of your remaining CrudCrud requests):
curl https://crudcrud.com/api/YOUR_ENDPOINT_ID/unicorns \
| jq '{db:{unicorns:.}}' \
| curl -X POST https://mockbird.mockbird.workers.dev/api/projects/import --data-binary @-
# β {"id":"74kgkgag4h","adminKey":"β¦","resources":[{"name":"unicorns","records":2,β¦}]}
Your records arrive verbatim β the Mongo-style _id strings are kept as a field, and each record gets a numeric id for clean REST URLs. Verified round trip:
curl https://mockbird.mockbird.workers.dev/m/PROJECT_ID/unicorns/1
# β {"_id":"6a913109cdcd3f03e824b787","name":"Sparkle","age":3,"id":1}
curl -X POST https://mockbird.mockbird.workers.dev/api/projects \
-H 'content-type: application/json' -d '{"name":"my api"}'
# response includes your project id + adminKey β save both
Then POST to any resource exactly like CrudCrud β but everything CrudCrud ignores actually works:
# create (same shape as CrudCrud, minus the expiry anxiety)
curl -X POST https://mockbird.mockbird.workers.dev/m/PROJECT_ID/unicorns \
-H 'content-type: application/json' -d '{"name":"Moonbeam","age":1}'
# filtering β real, not silently ignored
curl "https://mockbird.mockbird.workers.dev/m/PROJECT_ID/unicorns?name=Moonbeam"
curl "https://mockbird.mockbird.workers.dev/m/PROJECT_ID/unicorns?age_gte=4"
# pagination + sorting
curl "https://mockbird.mockbird.workers.dev/m/PROJECT_ID/unicorns?page=2&limit=1"
curl "https://mockbird.mockbird.workers.dev/m/PROJECT_ID/unicorns?sortBy=age&order=desc"
# PATCH exists here
curl -X PATCH https://mockbird.mockbird.workers.dev/m/PROJECT_ID/unicorns/1 \
-H 'content-type: application/json' -d '{"age":4}'
All of the above were run against a live project before this page was published.
| CrudCrud | Mockbird |
|---|---|
| Endpoint id (from the homepage) | Project id (one curl, or the one-click dashboard) β no expiry |
POST /<resource> β any JSON stored | Same; or define typed resources and get seeded realistic fake data (names, emails, pricesβ¦) |
Mongo-style string _id | Numeric id (imported _id values are preserved as a field) |
| GET / GET one / PUT / DELETE | Same, plus PATCH (partial update) and nested routes |
| Query params silently ignored | Filters (exact, _gte/_lte/_ne/_like), q= search, page/limit, sortBy/order, ?select=, _expand/_embed relations |
| 100 requests total, then HTTP 400 | 10,000 requests per day, per project |
| Endpoint dies after 24 h ($2+ to extend) | No expiry, no paid tier |
| No export | db.json eject, OpenAPI, Postman, TypeScript/Zod types |
| No failure simulation | ?mock_status=503, ?mock_delay=3000, ?mock_chaos=0.3 on any endpoint (guide) |
| No request log | Request inspector β last 50 requests, live, headers + body |
| No auth simulation | Mock JWT auth + optional protected mode |
Bias disclosed β this page is written by the Mockbird maker. Two honest points for CrudCrud: nothing on the internet starts faster β the endpoint exists before you've asked for it, while Mockbird needs one curl (or one click) first. And its schemaless anything-goes writes are the whole API β there's no concept of resources or fields to even think about. If your entire need is "store three JSON objects for the next hour", CrudCrud is a perfectly good answer β its CORS is wide open (Access-Control-Allow-Origin: *) and the semantics are clean. The walls only matter the moment your tutorial becomes a project. (One trap to know: POST without a content-type: application/json header answers HTTP 500, which confuses beginners using fetch without headers.)
# one curl β a whole seeded e-commerce mock (products, orders, customers, reviews):
curl -X POST "https://mockbird.mockbird.workers.dev/api/projects" \
-H 'content-type: application/json' -d '{"name":"my api","preset":"ecommerce"}'
Or try the shared demo with zero setup: curl https://mockbird.mockbird.workers.dev/m/demo/products/1
Facts checked hands-on Aug 28, 2026 on a fresh crudcrud.com endpoint: 100-request counter (reads included) on the endpoint dashboard, 24-hour expiry timer, the exact HTTP 400 over-limit body, ignored query params, PATCH 404, PUT full-replace, $2/$3/$5 top-up tiers. If CrudCrud changes its free tier, re-check their site.
Full API reference in the docs. More guides: JSONPlaceholder alternative Β· mockapi.io alternative Β· CSV β REST API Β· restful-api.dev alternative. Create your API β