Seeded, reproducible fake data in 17 locales: people, addresses, companies, finance (valid IBANs, processor test cards), from a field map or a JSON Schema, as JSON, CSV, NDJSON or SQL INSERTs.
Generate realistic test data that is the same every time you ask for it: pass a `seed` and you get byte-identical rows on every call (no seed → a random one, returned so you can reproduce it). Dates are relative to a fixed reference date (2026-01-01 unless you set `ref_date`), never to the clock. Describe rows with a field map (60+ field types: names, emails on reserved example domains, phone numbers, addresses, companies, products, IBANs with valid check digits, Stripe-published test card numbers, UUIDs, numbers, dates, lorem) or with a JSON Schema (types, formats, ranges, enums, nested objects and arrays, `x-faker` hints), and export up to 1,000 rows as JSON, CSV (RFC 4180), NDJSON or SQL INSERT statements for PostgreSQL, MySQL or SQLite.
Powered by @faker-js/faker 10.6.0 at the edge; nothing is stored, and generated data is synthetic — card numbers come from published processor test lists and never belong to real cardholders.
| Method | Path | Summary |
|---|---|---|
POST | /v1/generate | Generate rows from a field map (seeded, locale-aware) |
POST | /v1/generate/json-schema | Generate instances of a JSON Schema |
POST | /v1/export | Bulk export generated rows as CSV, NDJSON, SQL INSERTs or JSON |
GET | /v1/people | Fake people: name, email, phone, birth date, job and address |
GET | /v1/companies | Fake companies: name, catch phrase, domain, email, phone and address |
GET | /v1/finance/cards | Payment test cards (Stripe-published numbers) with expiry and CVC |
GET | /v1/finance/ibans | Synthetic IBANs with valid check digits for a country |
GET | /v1/text | Lorem ipsum words, sentences or paragraphs |
GET | /v1/fields | List the field types usable in field maps and x-faker |
GET | /v1/locales | List supported locales |
Example: POST /v1/generate
curl --request POST 'https://mock-test-data-api.p.rapidapi.com/v1/generate' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: mock-test-data-api.p.rapidapi.com' \
--header 'content-type: application/json' \
--data '{"fields":{"id":"id.sequence","name":"person.full_name","email":"internet.safe_email","city":"location.city","signup":"date.past","plan":{"type":"enum","values":["free","pro","team"]},"mrr":{"type":"finance.amount","min":0,"max":500}},"count":3,"seed":42,"locale":"en_US"}'
const res = await fetch('https://mock-test-data-api.p.rapidapi.com/v1/generate', {
method: 'POST',
headers: {
"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
"X-RapidAPI-Host": "mock-test-data-api.p.rapidapi.com",
"content-type": "application/json"
},
body: JSON.stringify({"fields":{"id":"id.sequence","name":"person.full_name","email":"internet.safe_email","city":"location.city","signup":"date.past","plan":{"type":"enum","values":["free","pro","team"]},"mrr":{"type":"finance.amount","min":0,"max":500}},"count":3,"seed":42,"locale":"en_US"}),
});
const { success, data, error } = await res.json();
import requests
resp = requests.request(
"POST",
"https://mock-test-data-api.p.rapidapi.com/v1/generate",
headers={"X-RapidAPI-Key":"YOUR_RAPIDAPI_KEY","X-RapidAPI-Host":"mock-test-data-api.p.rapidapi.com","content-type":"application/json"},
data="{\"fields\":{\"id\":\"id.sequence\",\"name\":\"person.full_name\",\"email\":\"internet.safe_email\",\"city\":\"location.city\",\"signup\":\"date.past\",\"plan\":{\"type\":\"enum\",\"values\":[\"free\",\"pro\",\"team\"]},\"mrr\":{\"type\":\"finance.amount\",\"min\":0,\"max\":500}},\"count\":3,\"seed\":42,\"locale\":\"en_US\"}",
timeout=10,
)
print(resp.json())
| Endpoint | Limit |
|---|---|
POST /v1/generate | body ≤ 32 KiB; count ≤ 1,000; ≤ 50 fields; count × fields ≤ 10,000 |
POST /v1/generate/json-schema | body ≤ 32 KiB; count ≤ 100; nesting ≤ 8; ≤ 500 values per instance; ≤ 20 items per array |
POST /v1/export | body ≤ 32 KiB; count ≤ 1,000; ≤ 50 fields; count × fields ≤ 10,000 |
GET /v1/people | query string ≤ 4096 bytes; count ≤ 100 |
GET /v1/companies | query string ≤ 4096 bytes; count ≤ 100 |
GET /v1/finance/cards | query string ≤ 4096 bytes; count ≤ 100 |
GET /v1/finance/ibans | query string ≤ 4096 bytes; count ≤ 100 |
GET /v1/text | query string ≤ 4096 bytes; count ≤ 100 |
GET /v1/fields | query string ≤ 4096 bytes; no limit parameters |
GET /v1/locales | query string ≤ 4096 bytes; no parameters |
Every response is JSON. Success: {"success":true,"data":…,"meta":{"request_id","ms","source"}}.
Errors: {"success":false,"error":{"code","message","hint","docs_url","request_id"}} with a semantically correct HTTP status — see the error catalogue.
Version 1.0.0 · We never log request bodies, query values, headers or IP addresses.