← All guides

A FakerAPI alternative β€” fakerapi.it is answering 502

FakerAPI (fakerapi.it) earned its popularity honestly: a free, no-auth REST API over PHP's Faker library, with ten fake-data collections (persons, products, companies, books, addresses, texts, users, places, images, credit cards) plus a custom-resource builder, and a genuinely elegant design β€” every endpoint takes the same three parameters (_quantity, _locale, _seed) and returns the same envelope ({status, code, locale, seed, total, data}). It's wired into countless frontend tutorials, workshop fixtures and prototypes.

And right now it's down. Checked August 29, 2026 β€” nine requests across the homepage, /api/v1/persons and /api/v2/persons, all the same answer:

curl -i "https://fakerapi.it/api/v2/persons?_quantity=2"
# β†’ HTTP/1.1 502 Bad Gateway
# β†’ <html>…502 Bad Gateway…nginx…</html>

Whether it comes back this time, the signal is worth reading: the source repository linked from the site (pietrantonio91/faker-api, a PHP Lumen app) has had no commits since February 2023. A generator API that's a single unmaintained deployment is a risky thing for your tutorial, demo or CI suite to depend on. You can watch its live status on our public status tracker, which checks it every 30 minutes.

Here's the same job on Mockbird β€” hosted, free, no signup β€” with the parts FakerAPI never had: records that persist, single-record URLs, filtering, and writes that actually write.

Option 0: swap the host β€” a FakerAPI-compatible drop-in

If your code already calls fakerapi.it, you don't have to change anything but the host. /m/fakerapi/api/v2/… serves the same ten resources, the same parameters and the same {status, code, locale, seed, total, data} envelope (shapes matched against FakerAPI's own open-source app, quirks included β€” down to the county_code key in addresses):

# before (502s):  curl "https://fakerapi.it/api/v2/persons?_quantity=3"
curl "https://mockbird.mockbird.workers.dev/m/fakerapi/api/v2/persons?_quantity=3"
# β†’ {"status":"OK","code":200,"locale":"en_US","seed":null,"total":3,"data":[{"id":1,"firstname":…,"address":{…},…}]}

# the custom builder works too:
curl "https://mockbird.mockbird.workers.dev/m/fakerapi/api/v2/custom?_quantity=3&id=counter&name=firstName&mail=email&signup=dateTime"

# and _seed is deterministic β€” the same seed returns the same rows, forever:
curl "https://mockbird.mockbird.workers.dev/m/fakerapi/api/v2/persons?_quantity=2&_seed=42"

All of _quantity (max 100 per call β€” theirs allows 1,000), _locale, _seed, _gender, _birthday_start/_end, _price_min/_max, _taxes, _categories_type, _characters and _type/_width/_height are honored; /api/v1/… paths answer with v1's envelope (no locale/seed keys), like the original. Three honest differences: _locale is echoed but the data stays English (their 40+ real locales are their win), text fields are generated word text rather than literature excerpts, and image URLs point at our deterministic SVG placeholders β€” which is arguably a fix, since FakerAPI's image URLs point at placeimg.com and placekitten.com, both dead in 2026 (we track that too). GET /m/fakerapi is the self-describing index.

The drop-in is stateless generation, exactly like FakerAPI. If that's all you need, you're done β€” no signup, no project. Read on for the version where the data persists.

The 60-second replacement

One request creates a project; a second adds a persons resource with typed fake fields (the same idea as FakerAPI's custom-resource builder β€” pick a name and a generator type per field):

curl -s -X POST https://mockbird.mockbird.workers.dev/api/projects \
  -H 'content-type: application/json' -d '{"name":"my-fake-api"}'
# β†’ {"id":"YOUR_ID","adminKey":"YOUR_KEY","baseUrl":…}   ← save both

curl -s -X POST https://mockbird.mockbird.workers.dev/api/projects/YOUR_ID/resources \
  -H 'x-admin-key: YOUR_KEY' -H 'content-type: application/json' -d '{
    "name": "persons", "seed": 20,
    "fields": [
      {"name":"firstname","type":"firstName"}, {"name":"lastname","type":"lastName"},
      {"name":"email","type":"email"},         {"name":"phone","type":"phone"},
      {"name":"birthday","type":"pastDate"},   {"name":"website","type":"url"},
      {"name":"image","type":"avatar"}
    ]}'

Your persons endpoint is live, CORS enabled, and the data looks like data:

curl "https://mockbird.mockbird.workers.dev/m/YOUR_ID/persons?limit=3"
# β†’ [{"id":1,"firstname":"Ruby","lastname":"Smith",
#     "email":"ruby.smith39@example.com","phone":"+1-839-611-1158",…}, …]

The full list of ~40 generator types (names, emails, uuids, prices, dates, paragraphs, avatars, enum-like oneOf, …) is in the docs. Prefer clicking to curling? This link creates a seeded e-commerce backend in the dashboard in one click.

Keep your parsing code: reproduce FakerAPI's envelope

FakerAPI clients parse {"status":"OK","code":200,…,"total":N,"data":[…]}. Mockbird's response-envelope template can serve exactly that shape, so a tutorial codebase built on FakerAPI keeps working with a base-URL change (the template below is URL-encoded {"status":"OK","code":200,"locale":"en_US","seed":null,"total":"$total","data":"$data"}):

curl "https://mockbird.mockbird.workers.dev/m/YOUR_ID/persons?limit=2&mock_envelope=%7B%22status%22%3A%22OK%22%2C%22code%22%3A200%2C%22locale%22%3A%22en_US%22%2C%22seed%22%3Anull%2C%22total%22%3A%22%24total%22%2C%22data%22%3A%22%24data%22%7D"
# β†’ {"status":"OK","code":200,"locale":"en_US","seed":null,"total":20,"data":[…2 persons…]}

Set it once as the project-wide default (PUT /api/projects/YOUR_ID/settings {"envelope":…}) and every plain GET answers in FakerAPI's shape β€” no query string needed.

FakerAPI β†’ Mockbird translation

On FakerAPIOn Mockbird
?_quantity=5 (default 10, max 1000)?limit=5 on any list GET; seed up to 100 rows per call, grow to 1,000 per resource via POST or import
?_seed=12345 β€” same rows on every requeststronger by construction: rows are generated once and stored, so every request sees the same records until you change them β€” plus named snapshots to save/restore exact datasets
?_locale=fr_FR β€” 40+ languagesno equivalent β€” our generators are English-only (honest gap; see below)
envelope {status, code, locale, seed, total, data}bare array by default; identical envelope via ?mock_envelope=… template (demo above)
/api/v2/custom?name=firstName&email=emailtyped fields on the resources API β€” same idea, and the resource persists as a real collection
GET /persons/7 β€” doesn't exist (list-only)GET /m/YOUR_ID/persons/7 β†’ that record
filtering / sorting β€” none?firstname=Ada, ?_gte/_lte/_ne/_like suffixes, ?sortBy=&order=, ?q= search, pagination with X-Total-Count
writes β€” GET-only APIfull CRUD; POST-ed records persist and show up in later GETs
schema artifactsgenerated openapi.json, Postman collection, TypeScript/Zod types, GraphQL β€” docs

The verified proof for the three rows FakerAPI can't do β€” single record, write, filter:

curl -s -X POST https://mockbird.mockbird.workers.dev/m/YOUR_ID/persons \
  -H 'content-type: application/json' \
  -d '{"firstname":"Ada","lastname":"Lovelace","email":"ada@example.com"}'
# β†’ {"firstname":"Ada",…,"id":21}

curl "https://mockbird.mockbird.workers.dev/m/YOUR_ID/persons/21"
# β†’ the same record back β€” it persisted

curl "https://mockbird.mockbird.workers.dev/m/YOUR_ID/persons?firstname=Ada"
# β†’ [ …exactly one match… ]

Honest comparison

FakerAPIMockbird
Reachable (checked every 30 min)currently 502live, free while in beta
Signupnonenone (anonymous projects, claim later)
Zero-setup generation (no project at all)yes (when up)yes β€” the /m/fakerapi drop-in, same URLs & envelope
Locales40+ (when up)English only
Rows per callup to 1,000100 seeded per call; 1,000 per resource via POST/import
Deterministic data?_seed (regenerated per request)persistent records + snapshots
Single-record GET / CRUD / filters / sortβ€”yes
Failure simulationβ€”?mock_status, ?mock_delay, ?mock_chaos, ?mock_seq
Self-hostopen source (PHP Lumen; repo dormant since Feb 2023)no (hosted service)
Free limitsfair-use10k requests/project/day, 1,000 records/resource

This page is written by the Mockbird maker β€” bias disclosed. FakerAPI's outage was verified live on August 29, 2026 (502 on the homepage, /api/v1 and /api/v2, nine requests over several minutes); its feature set above comes from its own documentation (as archived July 2026) and is credited where it wins: when it's up, its 40+ locales have no Mockbird equivalent, and it hands you 1,000 rows in one call where our drop-in caps at 100. If multilingual fake data is the job, FakerAPI (or self-hosting its open-source Lumen app) is the right tool and this page won't talk you out of it.

Full API reference in the docs. More guides: randomuser.me alternative Β· DummyJSON alternative Β· FakeStoreAPI alternative Β· JSONPlaceholder alternative. Create your API β†’

⚑ Skip the terminal: this link creates a live, seeded e-commerce backend (products, orders, customers, reviews) in one click β€” real URL, data browser already open, no signup.