Mock & Test Data API

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.

Endpoints (10)

MethodPathSummary
POST/v1/generateGenerate rows from a field map (seeded, locale-aware)
POST/v1/generate/json-schemaGenerate instances of a JSON Schema
POST/v1/exportBulk export generated rows as CSV, NDJSON, SQL INSERTs or JSON
GET/v1/peopleFake people: name, email, phone, birth date, job and address
GET/v1/companiesFake companies: name, catch phrase, domain, email, phone and address
GET/v1/finance/cardsPayment test cards (Stripe-published numbers) with expiry and CVC
GET/v1/finance/ibansSynthetic IBANs with valid check digits for a country
GET/v1/textLorem ipsum words, sentences or paragraphs
GET/v1/fieldsList the field types usable in field maps and x-faker
GET/v1/localesList supported locales

Quick start

Example: POST /v1/generate

cURL

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"}'

JavaScript (fetch)

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();

Python (requests)

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())

Limits

EndpointLimit
POST /v1/generatebody ≤ 32 KiB; count ≤ 1,000; ≤ 50 fields; count × fields ≤ 10,000
POST /v1/generate/json-schemabody ≤ 32 KiB; count ≤ 100; nesting ≤ 8; ≤ 500 values per instance; ≤ 20 items per array
POST /v1/exportbody ≤ 32 KiB; count ≤ 1,000; ≤ 50 fields; count × fields ≤ 10,000
GET /v1/peoplequery string ≤ 4096 bytes; count ≤ 100
GET /v1/companiesquery string ≤ 4096 bytes; count ≤ 100
GET /v1/finance/cardsquery string ≤ 4096 bytes; count ≤ 100
GET /v1/finance/ibansquery string ≤ 4096 bytes; count ≤ 100
GET /v1/textquery string ≤ 4096 bytes; count ≤ 100
GET /v1/fieldsquery string ≤ 4096 bytes; no limit parameters
GET /v1/localesquery string ≤ 4096 bytes; no parameters

Responses

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.